单片机最小系统
单片机最小系统_按键控制数码管显示,这个项目,主要学习单片机的键盘工作原理与显示方面的知识,电子小制作的好课题。 键盘电路作为单片机的输入部分,数码显示电路作为单片机的输出部分,由键盘电路通过单片机控制数码管显示电路的八路键控数码管电路。 按下S0到S7号按键时,数码管显示立刻显示数字0到7。电子制作的好课题下面是单片机最小系统_按键控制数码管显示原理图,实作时,按原理图焊好电路,单片机中写入程序。 ORG 0000H ; 随后的指令代码从0000H单元开始存放。 LJMP START ; 转到标号START处 ORG 0030H ; 随后的指令代码从0030H单元开始存放。START:MOV P0,#00H ; 关闭数码管,不显示任何内容。SAOMIAO:MOV P2,#0FFH ; 对P2口所有位写1,也就是处于读状态,确保读数正确。 CLR A ; 对累加器A清零。 MOV A,P2 ; 第一次读取P2口的数据,并送入累加器A中。 CPL A ; 对A按位取反,如果没有键按下, A为00H,如果有键按下,相应的位为1。JZ SAOMIAO ;如果A=00H, 说明没有键按下,跳到标号SAOMIAO处继续扫描。如果A不等于00H,说明有键按下,应该调用10MS的延时去抖子程序。 LCALL DELAY10MS ; 调用10MS的延时去抖子程序。 MOV A,P2 ; 第二次读取P2口的数据,并送入累加器A中。 CPL A ; 对A按位取反,如果没有键按下, A为00H,如果有键按下,相应的位为1。 JZ SAOMIAO ; 如果A=00H,说明没有键按下,跳到标号SAOMIAO处继续扫描。如果A不等于00H,说明确实有键按下,顺序执行下面的程序,判断是哪个键按下了。 JB ACC.0,SZ0 ; 如果S0键按下,则ACC.0=1,转去执行显示数字0,否则顺序执行。 JB ACC.1,SZ1 ; 如果S1键按下,则ACC.1=1,转去执行显示数字1,否则顺序执行。 JB ACC.2,SZ 2 ; 如果S2键按下,则ACC.2=1,转去执行显示数字2,否则顺序执行。 JB ACC.3,SZ 3 ; 如果S3键按下,则ACC.3=1,转去执行显示数字3,否则顺序执行。 JB ACC.4,SZ 4 ; 如果S4键按下,则ACC.4=1,转去执行显示数字4,否则顺序执行。 JB ACC.5,SZ 5 ; 如果S5键按下,则ACC.5=1,转去执行显示数字5,否则顺序执行。 JB ACC.6,SZ 6 ; 如果S6键按下,则ACC.6=1,转去执行显示数字6,否则顺序执行。 JB ACC.7,SZ 7 ; 如果S7键按下,则ACC.7=1,转去执行显示数字7,否则顺序执行。 LJMP SAOMIAO; 跳转到SAOMIAO处继续扫描。 SZ0:MOV P0,#3FH ; 显示数字0。 LJMP SAOMIAO; 跳转到SAOMIAO处继续扫描按键。 SZ1:MOV P0,#06H ; 显示数字1。 LJMP SAOMIAO; 跳转到SAOMIAO处继续扫描按键。 SZ2:MOV P0,#5BH ; 显示数字2。 LJMP SAOMIAO; 跳转到SAOMIAO处继续扫描按键。 SZ3:MOV P0,#4FH ; 显示数字3。 LJMP SAOMIAO; 跳转到SAOMIAO处继续扫描按键。 SZ4:MOV P0,#66H ; 显示数字4。 LJMP SAOMIAO; 跳转到SAOMIAO处继续扫描按键。 SZ5:MOV P0,#6DH ; 显示数字5。 LJMP SAOMIAO; 跳转到SAOMIAO处继续扫描按键。 SZ6:MOV P0,#7DH ; 显示数字6。 LJMP SAOMIAO; 跳转到SAOMIAO处继续扫描按键。 SZ7:MOV P0,#07H ; 显示数字7。 LJMP SAOMIAO; 跳转到SAOMIAO处继续扫描按键。DELAY10MS:MOV R7,#20 ; 从本行开始,到RET结束,为10MS延时去抖子程序。 D1:MOV R6,#250 D2JNZ R6,D2 DJNZ R7,D1 RET END 电子制作的好课题单片机最小系统_按键控制数码管显示,这个项目,主要学习单片机的键盘工作原理与显示方面的知识。 牛逼,汇编, 垃圾猪 发表于 2017-9-30 19:55牛逼,汇编,
我懂汇编,但上面这些不是我写的,只是贴来用一下。 膜拜大神,, 官修 发表于 2017-10-2 05:30
膜拜大神,,
大神不敢,只是多玩一些时间罢了 真厉害,汇编啊 daoke 发表于 2018-10-26 16:22
真厉害,汇编啊
汇编,年青时就懂的了。 进来学习,谢谢分享 好玩,学习了。 膜拜!能玩单片机的很厉害
页:
[1]
2