网站导航免费论文 原创论文 论文搜索 作业答案 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 设计资源 > 单片机 > 正文
用PIC12C508A单片机控制模型源程序
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: Admin 发布时间: 10/02/14

Description: Receive IR Remote control NEC code
list p=12C508A, f=INHX8M, r=DEC, b=8, C=80
__config (_MCLRE_OFF & _CP_ON & _WDT_OFF & _IntRC_OSC)
__idlocs H'0001'

INDF equ 0x00
TMR0 equ 0x01
PCL equ 0x02
STATUS equ 0x03
FSR equ 0x04
OSCCAL equ 0x05
GPIO equ 0x06

Bit7 equ 0x07
Bit6 equ 0x06
Bit5 equ 0x05
Bit4 equ 0x04
Bit3 equ 0x03
Bit2 equ 0x02
Bit1 equ 0x01
Bit0 equ 0x00

W equ 0x00
F equ 0x01

; STATUS Register
GPWUF equ Bit7
PA0 equ Bit5
NOT_TO equ Bit4
NOT_PD equ Bit3
Z equ Bit2
DC equ Bit1
C equ Bit0

; GPIO Register
bIRDataIn equ Bit0
bSystemPowerOut0 equ Bit1

; Configuration Bits
_MCLRE_ON equ 0x0fff
_MCLRE_OFF equ 0x0fef
_CP_ON equ 0x0ff7
_CP_OFF equ 0x0fff
_WDT_ON equ 0x0fff
_WDT_OFF equ 0x0ffb
_LP_OSC equ 0x0ffc
_XT_OSC equ 0x0ffd
_IntRC_OSC equ 0x0ffe
_ExtRC_OSC equ 0x0fff

; Macro Definition
PowerDownSystem MACRO
bcf GPIO, bSystemPowerOut0
ENDM

PowerUpSystem MACRO
bsf GPIO, bSystemPowerOut0
ENDM

; General Purpose Register
DelayCounter1 equ 0x07
DelayCounter2 equ 0x08

AddrCode equ 0x10
AddrCodeNot equ 0x11
DataCode equ 0x12
DataCodeNot equ 0x13

Result equ 0x14
PowerState equ 0x15
ButtonTemp equ 0x16

Bit equ 0x17
GetBitCounter equ 0x18
GetBitCountLo equ 0x19
GetBitCountHi equ 0x1A
PausecountLo equ 0x1B
PausecountHi equ 0x1C
errorflag equ 0x1D
; Constant Definition
cPowerOn equ 0xFF
cPowerOff equ 0x00
cPowerHi equ 0x82
cPowerLo equ 0x7D
cAddressHi equ 0xF0
cAddressLo equ 0x0F
;==============================================================================
org 0000h
movwf OSCCAL
goto main
;------------------------------------------------------------------------------
; Function: pDelay1ms
; Overview: This is a very accurate 1ms delay for a 4MHz clock.
;------------------------------------------------------------------------------
pDelay1ms:
movlw .198
movwf DelayCounter1
nop
nop
tagDelay1ms_01:
nop
nop
decfsz DelayCounter1, F
goto tagDelay1ms_01
retlw 0x00
;------------------------------------------------------------------------------
; Function: pDelay250ms
; Overview:
;------------------------------------------------------------------------------
pDelay250ms:
movlw .250
movwf DelayCounter2
tagDelay250ms_01:
call pDelay1ms
decfsz DelayCounter2, F
goto tagDelay250ms_01
retlw 0x00

;------------------------------------------------------------------------------
; Function: pGetBit
; Overview:
;------------------------------------------------------------------------------
pGetBit:
tagBitStart:
clrf errorflag
clrf GetBitCountLo
clrf GetBitCountHi

tagBitWait:
btfss GPIO, bIRDataIn
goto tagBitWait

tagBitLoop:
incfsz GetBitCountLo, F
goto tagBitNext
incf GetBitCountHi, F
movlw .3
subwf GetBitCountHi,W
btfsc STATUS,C
goto errorret
tagBitNext:
btfsc GPIO, bIRDataIn
goto tagBitLoop

movlw .1
subwf GetBitCountHi, W
btfsc STATUS, Z
goto tagBitIsOne

tagBitIsZero:
movlw 0x00
movwf Bit
goto tagBitDone
tagBitIsOne:
movlw 0xff
movwf Bit
goto tagBitDone

tagBitDone:
retlw 0x00
errorret:
bsf errorflag,Bit0
retlw 0x00
;------------------------------------------------------------------------------
;==============================================================================
; Program Main Entry.
;==============================================================================
main:
movlw B'11000111'
option

movlw B'11111101'
tris GPIO

;PowerUpSystem
movlw B'11111111'
movwf GPIO

movlw cPowerOn
movwf PowerState

initial:
clrf AddrCode
clrf AddrCodeNot
clrf DataCode
clrf DataCodeNot

doIrCheck:
btfsc GPIO, bIRDataIn
goto doIrCheck

;================================================
;call pGetBit
leaderWait:
btfss GPIO, bIRDataIn
goto leaderWait
call pGetBit
pauseWait:
;btfsc GPIO, bIRDataIn
;goto pauseWait
movf GetBitCountLo,W
movwf PausecountLo
movf GetBitCountHi,W
movwf PausecountHi
movlw 0x02
subwf PausecountHi,W
btfss STATUS,Z
;btfss PausecountHi,Bit1
got

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 电话:013574892963 QQ:3710167 邮箱:Educs@163.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 Www.myeducs.Cn All Rights Reserved
湘ICP备09003080号