📄 无线识别.asm
字号:
;**********2007年9月2日 无线识别************************
DAT BIT P2.7 ;HD7279
CLK BIT P2.6
CS BIT P2.5
KEY BIT P3.2
GPCS BIT P1.0 ;频头
TXEN BIT P1.2
PWR BIT P1.1
YJCS BIT P2.2 ;液晶
SID BIT P2.1 ;数据
YCLK BIT P2.0 ;时钟
P13 BIT P1.3 ;LED
NUM EQU 5FH
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP LINT0
ORG 000BH
MOV TH0,#3CH
MOV TL0,#0B0H
SETB 02H
RETI
ORG 0030H
;---------------------------------------------------
MAIN: MOV SP,#60H
MOV P1,#0FFH
MOV P2,#3EH ;CLK=DAT=0
MOV P3,#0FFH
CLR P1.4
MOV TMOD,#21H ;定时器1工作于方式2
MOV TH1,#0e8h ;faH
MOV TL1,#0e8h ;faH
MOV TH0,#3CH
MOV TL0,#0B0H
MOV SCON,#50H ;SM2=0 串行口工作于方式1
;REN=1允许接收 TI发送中断标志 RI接收中断标志
;TI=0 RI=0允许发送或接收 完毕后 硬件将其置'1' 发中断请求 响应后复位
MOV PCON,#80H ;SMOD=1 波特率=4800
SETB PWR ;P1.2=pwr=0休眠状态
CLR TXEN ;P1.1=txen接收
CLR GPCS ;P1.0=cs 433.92mhz
SETB TR1 ;启动定时器1
CLR ET1 ;禁止计时器1中断
SETB ET0 ;允许计时器0中断
setb IT0 ;负跳变触发
SETB EX0 ;禁止外中断lint0中断
setb EA
CLR YJCS
LCALL YANSH200
setb YJCS
ACALL STARYJ ;调用液晶初始化
LCALL YANSH200
CC: SETB P13
ACALL OFFDIS
MOV 20H,#0
ACALL CSH ;东北林业大学
;*****************************************************
KLP: JNB 00H,KLP ;位00H=0表示无按键
CLR 00H
CJNE A,#12H,KLP1 ;F1有源识别 应答器无编码
ACALL KEYGET
MOV 40H,#41H ;应答器无编码
ACALL FASONG
ACALL RECIVE
ACALL XDISP
AJMP CC
KLP1: CJNE A,#13H,KLP2 ;F2有源识别 应答器有4位编码
MOV 40H,#42H ;应答器有编码
ACALL FASONG
ACALL RECIVE
ACALL XDISP
AJMP CC
KLP2: CJNE A,#18H,KLP3 ;F3无源识别 应答器有4位编码
ACALL WYUAN ;充电
ACALL RECIVE
ACALL XDISP
AJMP CC
KLP3: CJNE A,#19H,KLP4 ;F4有源识别 应答器存储数据
ACALL KEYGET
MOV 40H,#43H
ACALL FASONG
ACALL RECIVE
ACALL XDISP
AJMP CC
KLP4: CJNE A,#1AH,KLP ;ESC有源识别 应答器上传存储数据
MOV 40H,#44H
ACALL FASONG
ACALL RECIVE
ACALL XDISP
AJMP CC
;****************************************************
WYUAN: ACALL OFFDIS
ACALL XSDISP
SETB P1.4 ;启动充电
SETB TR0
SETB ET0
MOV NUM,#0
;MOV B,#0
CDIAN0: JBC 02H,CDIAN1
AJMP CDIAN0
CDIAN1: INC NUM
MOV A,NUM
;JNZ CDIAN0
;INC B
;MOV A,B
CJNE A,#120,CDIAN0 ;判断是否充电结束
CLR P1.4 ;充电结束
CLR ET0 ;允许测试
CLR TR0
ACALL OFFDIS
ACALL XSPLAY
RET
;*****************************************************
KEYGET: ACALL OFFDIS
MOV R4,#80H ;写入地址
MOV R0,#41H
MOV R5,#4
K1: JNB 00H,K1 ;位00H=0表示无按键
CLR 00H
LCALL COMPARE
CJNE A,#0FFH,K2
AJMP K1
K2: ORL A,#30H
MOV @R0,A
LCALL KEYPLAY
INC R0
INC R4
DJNZ R5,K1
RET
;*******************************************
KEYPLAY: SETB YJCS
MOV A,#0F8H ;DDRAM
ACALL WRITE64
MOV A,R4 ;写入地址
ACALL WRITDAT
MOV A,#0FAH ;写一字节数据
ACALL WRITE64
MOV A,@R0
ACALL WRITDAT
ACALL DELAY1
CLR YJCS
RET
;*****************************************************
LINT0: MOV A,#15H
ACALL SEND ;键盘中断
ACALL RECEIVE ;读键值->A
SETB 00H
RETI
;*****************************************************
COMPARE: CJNE A,#0,COM1
MOV A,#0
RET
COM1: CJNE A,#1,COM2
MOV A,#1
RET
COM2: CJNE A,#2,COM3
MOV A,#2
RET
COM3: CJNE A,#3,COM4
MOV A,#3
RET
COM4: CJNE A,#8,COM5
MOV A,#4
RET
COM5: CJNE A,#9,COM6
MOV A,#5
RET
COM6: CJNE A,#0AH,COM7
MOV A,#6
RET
COM7: CJNE A,#0BH,COM8
MOV A,#7
RET
COM8: CJNE A,#10H,COM9
MOV A,#8
RET
COM9: CJNE A,#11H,COM10
MOV A,#9
RET
COM10: MOV A,#0FFH
RET
;******************************************************
fasong: MOV SCON,#40H
CLR GPCS
SETB PWR ;P2.2=pwr=1 工作状态
SETB TXEN ;P2.1=txen=1发送
lcall yansh10 ;延时10毫秒
mov r7,#5
fas6: mov a,#0aah
mov sbuf,a
fas7: jbc ti,fas8
ajmp fas7
fas8: acall yan8
djnz r7,fas6
mov a,#00h
mov sbuf,a
fas9: jbc ti,fas10
ajmp fas9
fas10: acall yan8
mov r0,#40h
mov r7,#5
fas11: mov a,@r0
mov sbuf,a
fas12: jbc ti,fas13
ajmp fas12
fas13: inc r0
acall yan8
djnz r7,fas11
MOV SCON,#50H
lcall yansh10
CLR GPCS
SETB PWR ;P2.2=pwr=1 工作状态
CLR TXEN ;P2.1=txen接收
ret
;*******************************************************
recive:
MOV SCON,#50H
CLR GPCS
SETB PWR ;P1.1=pwr=1 工作状态
CLR TXEN ;P1.2=txen接收
lcall yansh10
jsf00: mov r6,#3
jsf0: jbc ri,jsf1
ajmp jsf0
jsf1: mov a,sbuf
cjne a,#0aah,jsf00
djnz r6,jsf0
jsf2: jbc ri,jsf3
ajmp jsf2
jsf3: mov a,sbuf
cjne a,#0aah,jsf4
ajmp jsf2
jsf4: cjne a,#00h,jsf0
mov r0,#30h
mov r7,#5
jsf7: jbc ri,jsf8
ajmp jsf7
jsf8: mov a,sbuf
mov @r0,a
inc r0
djnz r7,jsf7
MOV SCON,#40H
CLR P13
lcall yansh200
ret
;*********发送A(1字节)到HD7279高位在前****************
SEND: MOV R7,#8
CLR CS
ACALL YAN50 ;延时50us
SLP: RLC A
MOV DAT,C
SETB CLK
ACALL YAN8 ;延时8us
CLR CLK
ACALL YAN8
DJNZ R7,SLP
CLR DAT
ACALL YAN50
RET
;******* 从 HD7279 接收(1字节)到A ****************
RECEIVE: MOV R7,#8
SETB DAT
ACALL YAN50
RLP: SETB CLK
ACALL YAN8 ;延时8us
MOV C,DAT
RLC A
CLR CLK
ACALL YAN8 ;延时8us
DJNZ R7,RLP
CLR DAT
RET
;*******************************************
XSDISP: SETB YJCS
MOV R2,#8 ;写入汉字个数
MOV R4,#90H ;写入地址
MOV DPTR,#TABLE3 ;写"正充电请等待.."
LCALL DISP
CLR YJCS
RET
;*******************************************
XSPLAY1: SETB YJCS
MOV R2,#4 ;写入汉字个数
MOV R4,#82H ;写入地址
MOV DPTR,#TABLE4 ;写"充电结束"
LCALL DISP
MOV R2,#6 ;写入汉字个数
MOV R4,#90H ;写入地址
MOV DPTR,#TABLE5 ;写"请输入编码:"
LCALL DISP
CLR YJCS
RET
;**************************************
TABLE0: DW '东','北','林','业','大','学'
TABLE1: DW '20','07','年','全','国','大','学','生'
TABLE2: DW '电','子','设','计','竞','赛'
TABLE3: DW '正','准','备','请','等','待','..','..'
;********************************************************
TABLE4: DW '准','备','结','束'
TABLE5: DW '请','输','入','编','码',': '
TABLE7: DW '信','息','学','院'
;*******************************************
XSPLAY: SETB YJCS
MOV R2,#8 ;写入汉字个数
MOV R4,#90H ;写入地址
MOV DPTR,#TABLE6 ;写"充电结束正在测试"
LCALL DISP
CLR YJCS
RET
TABLE6: DW '准','备','结','束','正','在','测','试'
;-------------------------------------
CSH: SETB YJCS
MOV R2,#6 ;写入汉字个数
MOV R4,#81H ;写入地址
MOV DPTR,#TABLE0 ;写"东北林业大学"
ACALL DISP
;lcall yan20
MOV R2,#8 ;写入汉字个数
MOV R2,#4 ;写入汉字个数
MOV R4,#92H ;写入地址
MOV DPTR,#TABLE7 ;写"信息学院"
LCALL DISP
;lcall yan20
MOV R2,#8
MOV R4,#88H ;写入地址
MOV DPTR,#TABLE1 ;写"2007年全国大学生"
LCALL DISP
;lcall yan20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -