?? 無線識別.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 ;數(shù)據(jù)
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發(fā)送中斷標志 RI接收中斷標志
;TI=0 RI=0允許發(fā)送或接收 完畢后 硬件將其置'1' 發(fā)中斷請求 響應(yīng)后復(fù)位
MOV PCON,#80H ;SMOD=1 波特率=4800
SETB PWR ;P1.2=pwr=0休眠狀態(tài)
CLR TXEN ;P1.1=txen接收
CLR GPCS ;P1.0=cs 433.92mhz
SETB TR1 ;啟動定時器1
CLR ET1 ;禁止計時器1中斷
SETB ET0 ;允許計時器0中斷
setb IT0 ;負跳變觸發(fā)
SETB EX0 ;禁止外中斷l(xiāng)int0中斷
setb EA
CLR YJCS
LCALL YANSH200
setb YJCS
ACALL STARYJ ;調(diào)用液晶初始化
LCALL YANSH200
CC: SETB P13
ACALL OFFDIS
MOV 20H,#0
ACALL CSH ;東北林業(yè)大學(xué)
;*****************************************************
KLP: JNB 00H,KLP ;位00H=0表示無按鍵
CLR 00H
CJNE A,#12H,KLP1 ;F1有源識別 應(yīng)答器無編碼
ACALL KEYGET
MOV 40H,#41H ;應(yīng)答器無編碼
ACALL FASONG
ACALL RECIVE
ACALL XDISP
AJMP CC
KLP1: CJNE A,#13H,KLP2 ;F2有源識別 應(yīng)答器有4位編碼
MOV 40H,#42H ;應(yīng)答器有編碼
ACALL FASONG
ACALL RECIVE
ACALL XDISP
AJMP CC
KLP2: CJNE A,#18H,KLP3 ;F3無源識別 應(yīng)答器有4位編碼
ACALL WYUAN ;充電
ACALL RECIVE
ACALL XDISP
AJMP CC
KLP3: CJNE A,#19H,KLP4 ;F4有源識別 應(yīng)答器存儲數(shù)據(jù)
ACALL KEYGET
MOV 40H,#43H
ACALL FASONG
ACALL RECIVE
ACALL XDISP
AJMP CC
KLP4: CJNE A,#1AH,KLP ;ESC有源識別 應(yīng)答器上傳存儲數(shù)據(jù)
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 ;判斷是否充電結(jié)束
CLR P1.4 ;充電結(jié)束
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 ;寫一字節(jié)數(shù)據(jù)
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 工作狀態(tài)
SETB TXEN ;P2.1=txen=1發(fā)送
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 工作狀態(tài)
CLR TXEN ;P2.1=txen接收
ret
;*******************************************************
recive:
MOV SCON,#50H
CLR GPCS
SETB PWR ;P1.1=pwr=1 工作狀態(tài)
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
;*********發(fā)送A(1字節(jié))到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字節(jié))到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 ;寫入漢字個數(shù)
MOV R4,#90H ;寫入地址
MOV DPTR,#TABLE3 ;寫"正充電請等待.."
LCALL DISP
CLR YJCS
RET
;*******************************************
XSPLAY1: SETB YJCS
MOV R2,#4 ;寫入漢字個數(shù)
MOV R4,#82H ;寫入地址
MOV DPTR,#TABLE4 ;寫"充電結(jié)束"
LCALL DISP
MOV R2,#6 ;寫入漢字個數(shù)
MOV R4,#90H ;寫入地址
MOV DPTR,#TABLE5 ;寫"請輸入編碼:"
LCALL DISP
CLR YJCS
RET
;**************************************
TABLE0: DW '東','北','林','業(yè)','大','學(xué)'
TABLE1: DW '20','07','年','全','國','大','學(xué)','生'
TABLE2: DW '電','子','設(shè)','計','競','賽'
TABLE3: DW '正','準','備','請','等','待','..','..'
;********************************************************
TABLE4: DW '準','備','結(jié)','束'
TABLE5: DW '請','輸','入','編','碼',': '
TABLE7: DW '信','息','學(xué)','院'
;*******************************************
XSPLAY: SETB YJCS
MOV R2,#8 ;寫入漢字個數(shù)
MOV R4,#90H ;寫入地址
MOV DPTR,#TABLE6 ;寫"充電結(jié)束正在測試"
LCALL DISP
CLR YJCS
RET
TABLE6: DW '準','備','結(jié)','束','正','在','測','試'
;-------------------------------------
CSH: SETB YJCS
MOV R2,#6 ;寫入漢字個數(shù)
MOV R4,#81H ;寫入地址
MOV DPTR,#TABLE0 ;寫"東北林業(yè)大學(xué)"
ACALL DISP
;lcall yan20
MOV R2,#8 ;寫入漢字個數(shù)
MOV R2,#4 ;寫入漢字個數(shù)
MOV R4,#92H ;寫入地址
MOV DPTR,#TABLE7 ;寫"信息學(xué)院"
LCALL DISP
;lcall yan20
MOV R2,#8
MOV R4,#88H ;寫入地址
MOV DPTR,#TABLE1 ;寫"2007年全國大學(xué)生"
LCALL DISP
;lcall yan20
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -