51单片机STC89C52 矩阵键盘数码管显示
2013-11-11 23:00
337 查看
WELA BIT P2.7 DULA BIT P2.6 DIOLA BIT P2.5 FM BIT P2.3 ORG 0000H SETB DIOLA MOV SP,#0E0H LOOP0: LCALL key_Scan JZ LOOP0 LCALL DELAY20MS LCALL key_Scan JZ LOOP0 MOV P1,A LCALL Smg HERE0: LCALL key_Scan ;等待按键释放 JZ LOOP0 LCALL DELAY20MS SJMP HERE0 key_Scan: SETB RS1 MOV P3,#0FH ORL P3,#0FH MOV A,P3 ;取低4位 行 MOV P3,#0F0H ORL P3,#0F0H MOV R0,P3 ;取高4位 列 ANL A,#0FH MOV R1,A MOV A,R0 ANL A,#0F0H ORL A,R1 CPL A JZ EXIT ;为0说明无键,退出 MOV R0,A ; 暂存完整键状态 ANL A,#0FH CJNE A,#01H,NEXT0 MOV R1,#1 SJMP NEXT4 NEXT0: CJNE A,#02H,NEXT1 MOV R1,#2 SJMP NEXT4 NEXT1: CJNE A,#04H,NEXT2 MOV R1,#3 SJMP NEXT4 NEXT2: CJNE A,#08H,NEXT3 MOV R1,#4 SJMP NEXT4 NEXT3: MOV R1,#0 ;R1保存行号 无键为0,有键1-4 CLR A ;退出前,清零累加器 SJMP EXIT NEXT4: MOV A,R0 ;开始算列 ANL A,#0F0H CJNE A,#10H,NEXT00 MOV R2,#1 SJMP NEXT40 NEXT00: CJNE A,#20H,NEXT10 MOV R2,#2 SJMP NEXT40 NEXT10: CJNE A,#40H,NEXT20 MOV R2,#3 SJMP NEXT40 NEXT20: CJNE A,#80H,NEXT30 MOV R2,#4 SJMP NEXT40 NEXT30: MOV R2,#0 ;R2保存列号,无键为0,有键1-4 CLR A ;无键退出,并清零累加器 SJMP EXIT NEXT40: MOV A,R1 SUBB A,#1 RL A RL A ADD A,R2 ;键值 0-15 EXIT: CLR RS1 RET DELAY20MS: ;延时 SETB RS0 MOV R1,#20 DELAY1: MOV R0,#0FAH DELAY0: NOP NOP DJNZ R0,DELAY0 DJNZ R1,DELAY1 CLR RS0 RET DELAY4S: ;延时 SETB RS1 MOV R3,#02H DELAY30: MOV R2,#04H DELAY20: MOV R1,#250 DELAY10: MOV R0,#250 DELAY00: NOP NOP DJNZ R0,DELAY00 DJNZ R1,DELAY10 DJNZ R2,DELAY20 DJNZ R3,DELAY30 CLR RS1 RET Smg: SETB RS1 PUSH ACC PUSH B PUSH PSW CLR DULA CLR WELA MOV P0,#00H SETB DULA CLR DULA SETB WELA CLR WELA MOV DPTR,#TABLEK DEC A MOVC A,@A+DPTR MOV P0,A SETB DULA CLR DULA POP PSW POP B POP ACC CLR RS1 RET TABLEK: ;共阴数码管 DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H END
相关文章推荐
- 51单片机的数码管和矩阵键盘
- 51 单片机 C 语言编程:矩阵键盘输入,显示在数码管
- 单片机 & 4×4矩阵键盘 & 4位串行595数码管显示
- 用扫描法读出4×4矩阵键盘,在数码管显示按键值
- n久前的51单片机4*4键盘加4数码管显示汇编程序
- 数码管显示矩阵键盘扫描程序
- C51单片机学习(三):数码管动态显示和键盘
- 51单片机:6位数码管动态显示,从600000开始,每0.5秒加1
- 51单片机单个数码管循环显示0~9
- 51单片机:在2位数码管上循环显示00-99,间隔0.5秒
- 关于X86汇编语言学习的随记-8259.8254.A/D转换.D/A转换。键盘扫描。LED7段数码管显示
- 基于tx-1c 51单片机中断使用及数码管显示的使用方法
- 51单片机(AT89C52)矩阵键盘检测程序
- 嵌入式学习笔记(8)——51单片机之矩阵键盘
- 51单片机动态数码管显示
- 51单片机矩阵扫描键盘程序(源代码)
- 基于51单片机及DS18B20温度传感器数码管显示程序
- 51单片机 数码管的显示与译码器
- 51单片机 时钟程序设计 数码管可闪烁显示数值
- 4*4矩阵按键控制数码管显示0-F