51单片机按键控制按下K1四个led灯循环亮,再按一下全灭,c程序怎么写

51单片机按键控制按下K1四个led灯循环亮,再按一下全灭,c程序怎么写,第1张

在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。

#include<reg51h>

#include<intrinsh>

仿真图效果。

户口是要填表的,其中有一份叫准迁证,又叫迁入证明,需要迁入地户籍机关根据你的申请来开具,这张表里会提到一个投靠人关系,在这里填写如你所说的子女投靠父母。拿着你的准迁证到你现在户口所在地户籍机关开具户口迁出证明,把你的户口从现所在地迁出,再带着所有资料到你迁入地户籍机关落户、办户口本。申请 书市镇派出所户籍科及镇居委会:本人,男, 年 月 日出生,户口在。系初婚。我妻子叫, 年 月 日出生,户口在 ,系初婚。我们于 年 月 日登记结婚,于 年 月 日生育一个女婴/男婴,姓名: ,根据相关规定,我们夫妻申请随父入户。申请人:或申请书派出所:本人住所地为,与住在地的和为关系,现因原因,请求将户口迁入父母家中,望批准。申请人:日期

1,你这个代码不会是20秒才能跑完的,一定是有其他部分在起作用。要查到真相,你要把全部代码发上才能分析清楚的。

2,u8g2库很费资源,这么大的图,如果是arduino uno的板子,静态显示也费劲,别说是移动了…

3,想达到移动显示效果,用显示屏自带的更底层的库去写,不要用u8g2,哪怕是用u8g也比它强。

这是我自己编过项目中的多字节运算子程序

有加法,除法,减乘更为简单类推一下吧

注释写得很详细了,出口入口地址也有标记

;n个数据相加子程序

;11,13,15为进位。12,14,16为相加结果,分别为低8位、中、高8位

;vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

ADDP: MOV 11H,#00H

MOV 12H,#00H

MOV R0,#20H ;<---"20"起始位置

MOV 12H,@R0

LOOP1: MOV A,R0

ADD A,#03H

MOV R1,A

MOV A,12H

ADD A,@R1

JNB PSW7,SI1

INC 11H

SI1: MOV 12H,A

MOV A,R1

MOV R0,A

CJNE R0,#4DH,LOOP1 ;<---"4D"终止变量,YANG YF DESIGN

MOV A,#00H

MOV 13H,#00H

MOV 14H,#00H

MOV R0,#21H ;<---"21"起始位置

MOV 14H,@R0

MOV A,14H

ADD A,11H

MOV 14H,A

LOOP2: MOV A,R0

ADD A,#03H

MOV R1,A

MOV A,14H

ADD A,@R1

JNB PSW7,SI2

INC 13H

SI2: MOV 14H,A

MOV A,R1

MOV R0,A

CJNE R0,#4EH,LOOP2 ;<---"4E"终止变量

MOV A,#00H

MOV 15H,#00H

MOV 16H,#00H

MOV R0,#22H ;<---"22"起始位置

MOV 15H,@R0

MOV A,16H

ADD A,13H

MOV 16H,A

LOOP3: MOV A,R0

ADD A,#03H

MOV R1,A

MOV A,16H

ADD A,@R1

JNB PSW7,SI3

INC 15H

SI3: MOV 16H,A

MOV A,R1

MOV R0,A

CJNE R0,#4FH,LOOP3 ;<---"4F"终止自定义位置变量 ,

MOV A,#00H

;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

;除法运算子程序

;支持被除数32位、除数24位,任意位长除法

;被除数需根据计时和累加组数预先置入,调试准确度调整亦调节此值!!!!!!!!

;17H、18H、19H为除数输入口,32H、33H、34H、35H为运算结果

;vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

SETDIV: MOV P1,#0FFH

JNB P11,MEAS_F ;当P11置1(高)为测速,置0(低)为测频

MEAS_V: MOV R2,#11111111B ;测速

MOV R3,#11101000B ;被除数R2-R5,转移至22H-25H进行变位处理

MOV R4,#00100101B ;被除数为定值,前端0的个数已知

MOV R5,#00001011B ;设被除数前端0的个数已知为y,除数前端0的个数计数为x(R0),后部循环次数为(32-y)-(24-x)=(8-y)+x

JMP STARDIV

MEAS_F: MOV R2,#00111010B ;测频 YANG YF DESIGN

MOV R3,#01100110B ;被除数R2-R5,转移至22H-25H进行变位处理

MOV R4,#00111110B ;被除数为定值,前端0的个数已知

MOV R5,#10000111B ;设被除数前端0的个数已知为y,除数前端0的个数计数为x(R0),后部循环次数为(32-y)-(24-x)=(8-y)+x

JMP STARDIV

STARDIV: MOV 22H,R2

MOV 23H,R3

MOV 24H,R4

MOV 25H,R5

MOV 17H,16H ;除数17H-19H,载入累加后12H、14H、16H结果

MOV 18H,14H

MOV 19H,12H

MOV 32H,#00H ;结果输出位32H-35H初置0 YANG YF DESIGN

MOV 33H,#00H

MOV 34H,#00H

MOV 35H,#00H

MOV R0,#00H

MOV R1,#00H

MOV 10H,#00H

CHECKFRONT: CLR C

MOV A,17H ;检查除数高位是否有空位0

RLC A

JNC MOVFRONT

JMP LOOPCOUNT

MOVFRONT: INC R0

CLR C ;除数高位空位为0时前移

MOV A,19H ;1)

RLC A

MOV 19H,A

MOV A,18H ;2)

RLC A

MOV 18H,A

MOV A,17H ;3)

RLC A

MOV 17H,A

JMP CHECKFRONT

LOOPCOUNT: MOV A,#09H ;

ADD A,R0

MOV 10H,A ;后部循环次数R0

JUDGSUB: MOV PSW,#00H

MOV A,R1

CJNE A,10H,JMP0

JMP RESULTDIV

JMP0: MOV A,22H

MOV C,ACC7 ;!!!!

MOV F0,C

CLR C ;!!!!

SUBB A,17H

JC CANOTSUB ;溢位

JNZ JMP1 ;WHEN ACC!=#00H THEN JUMP

MOV A,23H

CLR C

SUBB A,18H

JC CANOTSUB

JMP1: JNZ JMP2 ;WHEN ACC!=#00H THEN JUMP

MOV A,24H

CLR C

SUBB A,19H

JC CANOTSUB

JMP2: JMP SUBBPART

CANOTSUB: JNB F0,TURN1

JB F0,MOVDR

JMP SUBBPART

SUBBPART: CLR C

MOV A,25H

JNB PSW1,JMPSP1

JB ACC7,JMPSP1

SETB ACC7

MOV A,19H

INC A

MOV 19H,A

JMPSP1: MOV A,24H

SUBB A,19H

MOV 24H,A

MOV A,23H

SUBB A,18H

MOV 23H,A

MOV A,22H

SUBB A,17H

MOV 22H,A

ACALL SETCY_1

JB B0,MOVDL ;除数因条件右移后左移恢复

LJMP JUDGSUB

MOVDR: SETB B0

CLR C ;除数右移一位

MOV A,17H ;1)

RRC A

MOV 17H,A

MOV A,18H ;2)

RRC A

MOV 18H,A

MOV A,19H ;3)

RRC A

MOV 19H,A

MOV PSW1,C ;除数末尾移出暂存至F1

ACALL SETCY_0

JMP SUBBPART

MOVDL: MOV C,PSW1

MOV A,19H ;1)

RLC A

MOV 19H,A

MOV A,18H ;2)

RLC A

MOV 18H,A

MOV A,17H ;3)

RLC A

MOV 17H,A

CLR B0

SETB B1

JMP JUDGSUB

TURN1: CLR C

MOV A,25H ;1)

RLC A

MOV 25H,A

MOV A,24H ;2)

RLC A

MOV 24H,A

MOV A,23H ;3)

RLC A

MOV 23H,A

MOV A,22H ;4)

RLC A

MOV 22H,A

JB B1,JMPCALLSC0

ACALL SETCY_0

JMPCALLSC0: CLR B1

JMP JUDGSUB

SETCY_0: JB B2,JMPSE1 ;B2判断是否置1后第一次置0,是则忽略一次

INC R1 ;已计算次数计数

CLR C ;移入一位0

MOV A,35H

RLC A

MOV 35H,A ;输出地址32H-35H

MOV A,34H

RLC A

MOV 34H,A

MOV A,33H

RLC A

MOV 33H,A

MOV A,32H

RLC A

MOV 32H,A

CLR C

JMPSE1: CLR B2

RET

SETCY_1: INC R1 ;已计算次数计数 YANG YF DESIGN

SETB C ;移入一位1

MOV A,35H

RLC A

MOV 35H,A ;输出地址32H-35H

MOV A,34H

RLC A

MOV 34H,A

MOV A,33H

RLC A

MOV 33H,A

MOV A,32H

RLC A

MOV 32H,A

CLR C

SETB B2

RET

RESULTDIV: ;不可删 YANG YF DESIGN

;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

以上就是关于51单片机按键控制按下K1四个led灯循环亮,再按一下全灭,c程序怎么写全部的内容,包括:51单片机按键控制按下K1四个led灯循环亮,再按一下全灭,c程序怎么写、子女户口投靠申请书如何写、arduino for循环 时间控制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9724088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存