程序如下:
ORG 0000H
LOP: MOV R0,#3
LOOP: MOV P2,#14H
LCALL D10s
MOV P2,11H
LCALL D10s
DJNZ R0,LOOP
MOV P2,#05H
LCALL D10s
MOV P2,#15H
NOKEY: MOV P1,#00H
JZ NOKEY
MOV TEMP,P1
LCALL D100ms
MOV A,P1
CJNE A,TEMP,NOKEY
LJMP LOP
D10s: MOV R3,#100
D100ms: MOV R4,#100
D1ms: MOV R5,#229
DL: NOP
NOP
DJNZ R5,DL
DJNZ R4,D1ms
DJNZ R3,D100ms
RET
END
其中这段程序
NOKEY: MOV P1,#00H
JZ NOKEY
MOV TEMP,P1
LCALL D100ms
MOV A,P1
CJNE A,TEMP,NOKEY
LJMP LOP
大家看看编写有无问题,若有怎么改正
一个单片机程序问题。
1、0x38的值是56,也就是256-200的结果,说明定时器是200个周期溢出一次,12M晶振是就为200微妙。2、5000一秒,是因为定时时间是200微妙,溢出5000次,两者相乘即为1000000微妙,等于1秒。3、一个机器周期是时钟周期的12倍,所以12M晶振,机器周期是1微妙。
单片机程序跑飞的现象、原因以及解决方法
首先,数组越界或数组溢出是程序跑飞的一个重要原因。当函数内定义的数组元素个数小于实际使用时,例如定义了ucDataBuff[10],却尝试访问第11个元素,就会导致程序运行异常,最终跑飞。解决这一问题的关键在于仔细检查函数中使用的数组,确保其大小与实际需求相符。其次,中断服务程序的缺失也可能引发程序跑飞。
单片机程序出错
1、检测数码管“位”引脚是否有短路:先让“位”值只有一位有效,看看有几位数码管亮,只有一位亮说明没有短路。2、检测程序对数码管“位”的操作指令是否正确:将之前“只让一位亮”时的“位值”与源程序对比,看看是否一致。3、检测程序对“每位点亮的时间”设定是否合理。太短,闪烁不清;太长...
我自己写的一个单片机时钟程序,但是我在调节时间的时候,运行着的时钟...
1、刷新显示放在定时中断中,分割成多个部分,每次中断执行1小部分,就如动态扫描原理 2、延时程序使用刷显示的子程序代替 3、键盘检测程序优化,不要用死等待的程序结构,将键盘处理分成几个部分,主程序 每次扫描只执行其中1部分
单片机运行一段时间后,不按原程序执行怎么回事\/
1 你的软件为编写上的BUG,比如你想实现功能A,但是,因为你的程序写的有问题,例如:算法有问题,有语法上的漏洞,你思考的不全面等等,在某种条件下可以实现功能A,但是当条件有一点改变,导致程序与你执行的不一致。2 单片机硬件受到干扰,例如单片机周围有强电,或者单片机用的继电器,但是电路没处理...
单片机程序编程的问题,如何写一个让其自动运行的代码,比如说缺水了,自 ...
3)动作处理。这一步,就是单片机根据逻辑计算的结果,付诸行动,比如湿度太低了,就打开一个继电器,继电器控制着雾水泵喷雾,然后重复第1-2步,直到发现湿度符合要求了,就停止喷雾。总之,程序就按照这三步的大概逻辑写,烧录完成后,单片机就是自动的一直循环运行。如果楼主是要问具体的一个系统程序...
单片机 ,一个单片机的程序能改吗.
2.单片机编程,一般都用 汇编 和 C语言 外,还可以用机器语言(这个想是没有人用了).(这点不是太懂,见笑,我一般用C语言,用keil编译调试很方便,程序也易读).3.一般单片机都有相应的程序下载工具,这里所说的工具并不复杂,AT89S51系列用SPI下载,STC单片机都用串口下载.这两者单片机的下载工具都可以自己...
求一单片机c语言程序:两个按键控制两个led,按键按住不放led闪烁,松手...
一个按键时程序如下:while(1){ if(key==0)\/\/按键按下 { delayms(20);\/\/延时消抖 if(key==0)\/\/再次判断按键是否按下 { while(key==0)\/\/按键没有抬起 { led=!led; delayms(200);}\/\/LED闪烁 } } else led=0;}
单片机程序菜鸟问题
最后那一句就是取出最高位的进位的,也即最高位第七位。再教你一个小知识,两个数相加,结果最多只比原来数字多一位,并且多出的这位数字不会超过1,比如9+9,最多只是18,即十位是1,不会是2到9的,在比如说99+99=198,嘿嘿。懂了吧 虽然我不用汇编写程序,但是看懂还是很容易的 ...
下述单片机程序有个警告,该如何去掉,请教高手解释一下。
在编写单片机程序时,如果遇到警告提示函数没有返回值,这通常意味着所调用的函数在定义时并未指定返回类型。对于这个问题,解决方法较为直接,即在函数定义中添加返回类型。针对您提到的函数 changedata(uchar *song,uchar *diao,uchar *jie),只需修改为 void changedata(uchar *song,uchar *diao,uchar...