MOV R4,#00H;将第一列的列值00H送入R4暂存,R4用于存放列
K3: MOV P1,R2 ;将R2的值送入P1口
L6: JB P1.0,L1 ;P1.0等于1跳转到L1 MOV A,#00H ;将第一行的行值00H送入ACC AJMP LK ;跳转到键值处理程序
L1: JB P1.1,L2 ;P1.1 MOV A,#04H ; AJMP LK ;L2: JB P1.2,L3 ;P1.2 MOV A,#08H ; AJMP LK ;L3: JB P1.3,NEXT ;P1.3 MOV A,#0cH ;LK: ADD A,R4 ; mov 38h,a ;K4: lcall display ; LCALL KS
JNZ K4 ; RET ;NEXT: INC R4 ; MOV A,R2 ;
等于1跳转到L2
将第二行的行值04H送入ACC
跳转到键值理程序进行键值处理
等于1跳转到L3
将第三行的行值08H送入ACC
跳转到键值处理程序
等于1跳转到NEXT处
将第四行的行值0CH送入ACC 行值与列值相加后的键值送入A 将A中的值送入34h暂存
调用动态显示子程序 按键没有松开继续返回检测
按键松开返回
将列值加一 将R2的值送入A
15
JNB ACC.7,key_exit;扫描完成跳至KEY处进行下一回合的扫描 RL A ;扫描未完成将A中的值右移一位进行下一列的扫描 MOV R2,A ;将ACC的值送入R2暂存 AJMP K3 ;跳转到K3继续 key_exit:
mov a,#0ffh ;无键按下则将A赋成0FFH
ret KS: MOV P1,#0FH ;将P1口高四位置0低四位值1 MOV A,P1 ;读P1口
XRL A,#0FH ;将A中的值与A中的值相异或 RET ;子程序返回 delay4ms: ;4ms延时 MOV R5,#08H L7: MOV R6,#0FAH L8: DJNZ R6,L8 DJNZ R5,L7 RET
delay100us: ;100us延时 mov r5,#50 djnz r5,$ ret tab:
16
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F' DB 3EH, 50H, 40H, 08H, 00H ;'U, r, -, -, BLANK END 程序执行结果 按键0按下显示结果
按键LED---按下结果(输入位闪烁)
17
按键D按下显示结果(d)
按键B按下显示结果(b)
七、主要元器件介绍 1)8051
51系列是基本型,包括8051、8751、8031、8951.这四个机种区别,仅在于片内程序储存器。8051为4KBROM,8751为4KBEPROM,8031
18
片内无程序储存器,8951为4KBEEPROM。其他性能结构一样,有片内128B RAM,2个16位定时器/计数器,5个中断源。其中,8031性价比较高,又易于开发,目前应用面广泛。 MCS-51单片机的内部组成。
MCS-51单片机的引脚和内部组成如图1.1所示。通常采用DIP或PLLD封装,
其内核是8051CPU,CPU的内部集成有运算器和控制器,运算器完成运算操作(包括数据运算、逻辑运算等),控制器完成取指令、对指令译码以及执行指令。MCS-51单片机的片内资源有:
图1.1 MCS-51单片机的内部组成
·中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
19