MC68HC908RF2在汽车远程无匙进入系统中的应用

[09-12 17:55:09]   来源:http://www.88dzw.com  单片机学习   阅读:8841

文章摘要:clr buffer4 ;clr buffer5 ;clr buffer6 ;clr crc ;clr BitCount ;clr LastRow ;clr LastCol ;clr TxCnt ;clr TEMP;WarmStartmov #DDRAInit,DDRA ;初始化PORTA口mov #PortAInit,PORTA ;bset led,portamov #DDRBInit,DDRB ;初始化PORTB口mov #PortBInit,PORTB ;mov #%00100011,INTKBSR ;mov #%00011110,INTKBIER ;BSET ACKK,INTKBSR

MC68HC908RF2在汽车远程无匙进入系统中的应用,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com
clr buffer4 ;
clr buffer5 ;
clr buffer6 ;
clr crc ;
clr BitCount ;
clr LastRow ;
clr LastCol ;
clr TxCnt ;
clr TEMP;
WarmStart
mov #DDRAInit,DDRA ;初始化PORTA口
mov #PortAInit,PORTA ;
bset led,porta
mov #DDRBInit,DDRB ;初始化PORTB口
mov #PortBInit,PORTB ;
mov #%00100011,INTKBSR ;
mov #%00011110,INTKBIER ;
BSET ACKK,INTKBSR ;
mov #%00100001,INTKBSR ;
StopProc
bclr pllen,porta
STOP
bra StopProc

KeybIRQ
brclr 7,INTKBSR,KeyboardProc ;检查是否为外部中断
jmp IRQProc ;不是有效的键盘中断,
退出
KeyboardProc bset 2,INTKBSR ;清除键盘中断标志
clrx
BCLR Led,PORTA ;电亮LED
WaitRow
lda PORTA ;读取PORTA口数据
coma ;
and #%00011110 ;
lsra ;
bne RowOk ;
dbnza $ ;
dbnzx WaitRow ;如果PORTA口数据为0,一直读取,直到延时时间到
jmp ExitKeyb 延时到

RowOk
sta LastRow ;Save Row number
clr INTKBIER ;Clear Keyboard interrupt enable bits
lda #%00011110 ;All rows to 1
ora DDRA ;
sta DDRA ;
lda #%00011110 ;
ora PORTA ;
sta PORTA ;
clrx ;
mov #$10,BitCount ;
ColLoop
lda #$40 ;
KeyLoop
dbnzx KeyLoop ;
dbnza KeyLoop ;
;组织待发射数据
SetKey
lda lastrow
lsla
lsla
lsla
lsla
sta Buffer4 ;Init Key Code
LDA ID0
STA Buffer0 ;
lda ID1 ;Init ID
sta Buffer1 ;
lda ID2 ;
sta Buffer2 ;
lda ID3 ;
sta Buffer3 ;
lda #Dly300ms ;Attendi 350ms
psha ;
clra ;
clrx ;
ToggleDly
dbnzx $ ;[3*256=768]
dbnza ToggleDly ;[256*771]
dbnz 1,SP,ToggleDly ;[197379*Dly300ms]
pula ;
lda PORTA ;Check if key still down
and #%01100000 ;
nsa ;
lsra ;
bne NoToggle ;
bset 0,Buffer0 ;键盘没有释放
NoToggle
;
lda #$01 ;
add Buffer6 ;
sta Buffer6 ;
clra ;
adc Buffer5 ;
sta Buffer5 ;
clc
lda Buffer6 ;
and #$0F ;
beq NoRotate ;
tax
NextRotate
lda Buffer5 ;
rora ;
ror Buffer0 ;
ror Buffer1 ;
ror Buffer2 ;
ror Buffer3 ;
ror Buffer4 ;
ror Buffer5 ;
dbnzx NextRotate ;
NoRotate
ldhx #Buffer0 ;
lda ,X ;
eor 1,X ;
sta 1,X ;
eor 2,X ;
sta 2,X ;
eor 3,X ;
sta 3,X ;
eor 4,X ;
sta 4,X ;
eor 5,X ;
sta 5,X ;
clr CRC ;
ldhx #Buffer0 ;
NextCRCByte LDA ,X
ADD BUFFER1
ADD BUFFER2
ADD BUFFER3
ADD BUFFER4
ADD BUFFER5
ADD BUFFER6
STA CRC
;发送程序
mov #DDRAInit,DDRA ;初始化A口方向寄存器
mov #PortAInit,PORTA ;初始化A口
mov #%00011110,INTKBIER
mov #MinTx,TxCnt ;一共发送3帧相同的数据
bset PLLEn,PORTA ;允许UHF模块
ldx #FrameDly ;
clra ;
FrameBlank
dbnza $ ;
dbnzx FrameBlank
lda #$0c
;********产生24个TE******************************* *******************
HX301
BCLR Data,PORTB
mov #%00110000,TASCR
ldhx #$0200
sthx TAMODH ;
bclr 5,TASCR ;计数器开始计数
brclr 7,TASCR,* ;Wait
BSET Data,PORTB
mov #%00110000,TASCR
ldhx #$0214
sthx TAMODH ;
bclr 5,TASCR ;计数器开始计数
brclr 7,TASCR,* ;Wait
dbnza HX301

bclr Data,portb
lda #$09
HX302 mov #%00110000,TASCR
ldhx #$023e
sthx TAMODH ;
bclr 5,TASCR ;计数器开始计数
brclr 7,TASCR,* ;Wait
dbnza HX302
NextFrame
ldhx #CRC ;指向CRC的RAM地址
psha ;
NextTxByte
lda #$08 ;
sta 1,SP ;
NextTxBit lda 0,X ;将X+0指向的地址的内容
ACC中
rora ;带进位位右移
ror 0,X ;将X+0的地址的内容带进位

上一页  [1] [2] [3]  下一页


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习
分类导航
最新更新
热门排行