1、 MOV A,#10011111B ;HD7279A初始化CS.CLK.DATA MOVX DPTR,A LCALL DELAY25MS ;延时落后入工作状况 MOV DATA_OUT,#10100100B ;HD7279A复位指令 LCALL SEND ;发送指令设回CS为高电平 MOVX DPTR,A/ MOV R4,#20 ;准时器一个周期内的中止数 MOV R2,#0 MOV R3,#0 MOV R4,#0 MOV R5,#0/ MOV MSECOND,#0 / MOV SECOND,#0/ MOV MINITE,#0/ MOV HOUR,#0 ;数字计数器 MOV R6,#0 ;个位
2、存放器 MOV R7,#0 ;十位存放器 MOV TMOD,#1 ;设置准时器0工作模式为方法1/ MOV TH0,#3CH ;设置准时器准时价/ MOV TL0,#0B0H MOV TH0,#0FCH ; MOV TL0,#18H SETB EA ;开总中止 SETB ET0 ;开准时器0中止 SETB EX1 SETB TR0 ;开端计时主程序MAIN: MOV A,R2 ;把数字转换为2个BCD码 MOV B,#10 DIV AB MOV R6,B ;个位放在R6 MOV R7,A ;十位放在R7 MOV DATA_OUT,#11001000B ;下载数据且按方法1译码,找到了第1个数码
3、管 LCALL SEND LCALL DELAY25 ;T4,指令与数据时光距离 MOV DATA_OUT,R1 ;指令的数据部分,显示个位 MOV A,#10011111B MOVX DPTR,A MOV DATA_OUT,#11001001B ;下载数据且按方法1译码,找到了第2个数码管 MOV DATA_OUT,R2 ; MOV DATA_OUT,#11001010B ;下载数据且按方法1译码,找到了第3个数码管 MOV DATA_OUT,R3 ;/ LCALL DELAY1MS ;显示延时 MOV A,R4 ; MOV DATA_OUT,#11001011B ;下载数据且按方法1译码,
4、找到了第4个数码管 MOV DATA_OUT,R6 ; MOV DATA_OUT,#11001100B ;下载数据且按方法1译码,找到了第5个数码管 MOV DATA_OUT,R7 ;指令的数据部分,显示十位 MOV A,R5 ; MOV DATA_OUT,#11001101B ;下载数据且按方法1译码,找到了第6个数码管 MOV DATA_OUT,#11001110B ;下载数据且按方法1译码,找到了第7个数码管 LJMP MAIN ;下一轮回 SJMP $发送子程序SEND: CLR ET0 ;加锁 MOV BIT_COUNT,#8 ;无论指令照样数据,一次只发送8位 MOV A,#000
5、11111B ;设CS为低电平 LCALL DELAY50 ;T1,从CS降低沿至CLK脉冲时光发送轮回,HD7279A采取串行方法与微处理器通信,一次发送一位SENDLOOP: MOV A,DATA_OUT ;掏动身送的指令或数据 MOV C,ACC.7 ;串行发送从高位到低位发送,故先取最高位输出到DAT位 MOV ACC.5,C SETB C ;设CLK为高电平 MOV ACC.6,C LCALL DELAY8 ;T2,传送指令时CLK脉冲宽度 CLR C ;设CLK为低电平T3,字节传送中CLK脉冲时光 MOV A,DATA_OUT ;移位待发送的指令或数据,为下一位的发送作预备 RL
6、 A MOV DATA_OUT,A DJNZ BIT_COUNT,SENDLOOP ;发送不到8位,持续轮回发送完毕,恢复DAT释放锁 RET吸收子程序(本程序顶用不到,但在添加按键操纵的时刻用于读取键值)RECEIVE: CLR ET0 ;吸收8位数据 MOV DATA_IN,#0 ;清空吸收数据缓冲存放器 MOV A,#00111111B ;设CS为低电平,同时包管DAT为高电平(输入状况) MOVX DPTR,A T5,读键盘指令中指令与数据时光距离吸收轮回,HD7279A采取串行方法与微处理器通信,一次吸收一位RECEIVELOOP:SETB ACC.6 ;设CS为高电平 LCALL
7、DELAY8 ;T6,输出键盘数据树立时光 MOV A,DATA_IN ;吸收数据缓冲存放器向左移位,预备吸收一位数据,数据的高位会先发送 MOV DATA_IN,A MOVX A,DPTR ;读取数据 MOV C,ACC.5 ;掏出数据位DAT MOV A,DATA_IN MOV ACC.0,C MOV DATA_IN,A ;数据放进吸收数据缓冲存放器T7,读键盘数据是CLK脉冲宽 DJNZ BIT_COUNT,RECEIVELOOP ;吸收不到8位,持续轮回吸收完毕,恢复DAT准时器0中止程序 TIME0: / DJNZ R4,NEXT ;准时器一个周期内里断数不敷就持续计时 INC R2
8、 ;数字加1重置准时器一个周期内里断数 CJNE R2,#100,NEXT ;数字不敷100持续加1 MOV R2,#0 ;数字到达100就清零 INC R3 CJNE R3,#10,NEXT MOV R3,#0 INC R4 CJNE R4,#60,NEXT MOV R4,#0 INC R5 CJNE R5,#60,NEXT MOV R5,#0 NEXT: MOV TH0,#0FCH ;准时器方法1中止后须要从新设置准时器准时价 RETIKBHIT: PUSH PSW PUSH ACC PUSH DPH PUSH DPL PUSH DATA_OUT PUSH BIT_COUNT MOV A,
9、R0 MOV A,R1 MOV DATA_OUT,#00010101B LCALL SEND LCALL DELAY25 LCALL RECEIVE MOV A,DATA_IN JZ START DEC A JZ STOP JZ CLEAR SJMP OUTSTART: SETB TR0 STOP: CLR TR0 CLEAR: MOV R2,#0 MOV R3,#0 MOV R5,#0OUT: POP ACC MOV R1,A POP ACC MOV R0,A POP BIT_COUNT POP DATA_OUT POP DPL POP DPH POP PSW延时25ms子程序DELAY25MS: MOV R0,#49D11: MOV R1,#253 NOPD12: DJNZ R1,D12 DJNZ R0,D11延时50s子程序DELAY50: MOV R0,#23D21: DJNZ R0,D21延时25s子程序DELAY25: MOV R0,#11D31: DJNZ R0,D31延时8s子程序DELAY8: MOV R0,#2D41: DJNZ R0,D41延时1ms子程序DELAY1MS: MOV R0,#2D51: MOV R1,#247D52: DJNZ R1,D52 DJNZ R0,D51 END
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1