1、 ;;; 无线遥控电动窗帘计数程序 STL0 EQU 251 STH0 EQU 253 RXD BIT P3.0 TXD BIT P3.1 Y00 BIT P3.2 Y01 BIT P3.3 Y02 BIT P3.4 Y03 BIT P3.5 Y04 BIT P3.7 SJ_A EQU 30H SJ_B EQU 31H SJ_C EQU 32H SJ_D EQ
2、U 33H SJ_E EQU 34H BCDA EQU 35H BCDB EQU 36H SMZZ EQU 37H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG 0000H JMP CSH ORG 000BH JMP DISP ORG 0023H
3、 LJMP CJ_RX ; 跳至从机数据通讯串口中断子程序 CSH: ;;; 计时中断初始化程序 MOV SP, #50H MOV TMOD, #21H MOV TL0, #STL0 MOV TH0, #STH0 MOV TH1, #0D6H ; 波特率=9600 FDH 1200 D6H MOV TL1, #0D6H MOV SCON, #50H
4、 MOV PCON, #00H ; 波特率增倍, SMOD = 1 MOV TCON, #00H MOV BCDA, #0 MOV BCDB, #0 MOV IE, #12H LCALL KJQL ; 调用开机清零子程序 SETB EA ; 开中断 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5、 START: LCALL DELAY JMP START ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISP: ;;; 显示子程序 CLR TR0 MOV TL0, #STL0 MOV TH0, #STH0 SETB RS0 CLR
6、 RS1 PUSH ACC PUSH PSW ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETB Y00 SETB Y01 SETB Y02 SETB Y03 SETB Y04 LCALL SM_JMP ; 调用扫描子程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISP60: POP PSW
7、 POP ACC CLR RS0 CLR RS1 SETB TR0 RETI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SM_JMP: ;;; 扫描子程序 MOV A, SMZZ ; 键盘指针 RL A MOV DPTR, #SMTBL JM
8、P @A+DPTR SMTBL: AJMP SM00 AJMP SM01 AJMP SM02 AJMP SM03 AJMP SM04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SM00: MOV A, SJ_A ORL A, #0F0H SWAP A MOV P1, A CLR Y00 MOV SMZZ,
9、 #1 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SM01: MOV A, SJ_B ORL A, #0F0H SWAP A MOV P1, A CLR Y01 MOV SMZZ, #2 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SM02: MOV A, SJ_C ORL A, #0F0H
10、 SWAP A MOV P1, A CLR Y02 MOV SMZZ, #3 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SM03: MOV A, SJ_D ORL A, #0F0H SWAP A MOV P1, A CLR Y03 MOV SMZZ, #4 RET ;;;;;;;;;
11、 SM04: MOV A, SJ_E ORL A, #0F0H SWAP A MOV P1, A CLR Y04 MOV SMZZ, #0 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CJ_RX: ;;; 从机数据通讯子程序
12、CLR RI CLR ES SETB RS0 SETB RS1 PUSH ACC PUSH PSW ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLR C MOV A, BCDA ADD A, #1 MOV BCDA, A MOV A, BCDB ADDC A, #0 MOV
13、 BCDB, A LCALL BCD_S ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; POP PSW POP ACC CLR RS0 CLR RS1 SETB ES RETI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KJQL: ;;; 开机清零子程序
14、 MOV P1, #0FFH MOV P3, #0FFH MOV SMZZ, #0 MOV BCDA, #0 MOV BCDB, #0 SETB TR0 SETB TR1 CLR C RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DELAY: MO
15、V R7, #5 D01: MOV R6, #200 D02: MOV R5, #248 DJNZ R5, $ DJNZ R6, D02 DJNZ R7, D01 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BCD_S: ;;; 双字节转换子程序 MOV SJ_A, #00H M
16、OV SJ_B, #00H MOV SJ_C, #00H MOV SJ_D, #00H MOV SJ_E, #00H MOV A, BCDA MOV B, #100 DIV AB MOV SJ_C, A MOV A,#10 XCH A, B DIV AB MOV SJ_B, A MO
17、V SJ_A, B ;;; MOV A, BCDB ANL A, #0FH MOV B, #2 MUL AB ADD A, SJ_C MOV SJ_C, A MOV A, BCDB ANL A, #0FH MOV B, #5 MUL AB ADD A, SJ_B MOV
18、 SJ_B, A MOV A, BCDB ANL A, #0FH MOV B, #6 MUL AB ADD A, SJ_A MOV SJ_A, A ;;; MOV A, BCDB ANL A, #0F0H SWAP A MOV B, #4 MUL AB MOV SJ_D,
19、 A MOV A, BCDB ANL A, #0F0H SWAP A MOV B, #9 MUL AB ADD A, SJ_B MOV SJ_B, A MOV A, BCDB ANL A, #0F0H SWAP A MOV B, #6 MUL AB ADD
20、A, SJ_A MOV SJ_A, A ;;; MOV A, SJ_A MOV B, #10 DIV AB ADD A, SJ_B MOV SJ_B, A MOV SJ_A, B MOV A, SJ_B MOV B, #10 DIV AB ADD A, SJ_C MOV S
21、J_C, A MOV SJ_B, B MOV A, SJ_C MOV B, #10 DIV AB ADD A, SJ_D MOV SJ_D, A MOV SJ_C, B MOV A, SJ_D MOV B, #10 DIV AB ADD A, SJ_E MOV SJ_E, A MOV SJ_D, B RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END






