单片机中断程序问题,我想P1^3亮一秒后,P1^8亮,一直交替亮下去。请问这个代码什么错误?
发布网友
发布时间:2022-04-26 04:03
我来回答
共5个回答
热心网友
时间:2023-10-05 14:58
void main()
{ int i;
TMOD= 0x01;
for(i=0;i<=20;i++)
{TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
}
和
void timer1() interrupt 1
{ int i;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
for(i=0;i<=40000;i++)
P1=0x80;
这两段代码中的for语句有什么意义啊。还有就是什么52单片机能有P1^8口?
热心网友
时间:2023-10-05 14:58
你这整的太复杂了吧,那么简单的功能让你搞成这样,哎……
给点建议吧!
1、目的,你要这程序实现什么;
2、平台:你用的是什么型号系列的单片机,它的内部寄存器、中断、引脚接口等功能的使用规定,不同型号的单片机是有区别的。电器性能(常考虑I/O的带载能力);
3、搭设硬件平台:设计单片机最小系统,先保证单片机正常工作,其次完成其余电路并验证外围电路的可用性;
4、程序流程图:最好花那么10分钟时间来画一张程序的逻辑图,在关键步骤中写好实现该步骤的源代码;
5、代码编写:预设好变量及单片机的初始化指令,之后完全投入代码的编写,逻辑一定要清晰;6、编译下载;7、上电测试:如果加电功能已经实现,就要恭喜你了。若没这么顺利的话,建议你从单片机的最小系统开始查找问题,接着查看I/O口的电压和输出逻辑是否满足设计要求,再查看外围电路的问题。
祝你成功!!
热心网友
时间:2023-10-05 14:59
#include"reg52.h"
#define uchar unsigned char
#define LED_Port P0
bit T1sFlag;
void Timer0() interrupt 1
{
static uchar t50ms=0;
TL0=0xb0;
TH0=0x3c; //50ms at 12MHz Fosc
t50ms=++t50ms%20;
if(!t50ms) T1sFlag=~T1sFlag;
}
void TimerInit()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
ET0=1;
EA=1;
}
void main()
{
TimerInit();
while(1)
{
LED_Port=0x04<<(4*T1sFlag); //高电平亮,P07 跟P03 交替
}
}
未编译,直接打的,愿上帝保佑你!
热心网友
时间:2023-10-05 14:59
while(1)
{
for(i=0;i<=30000;i++)
P1=0x04;
}
这不是在这里出不来了程序,一直循环了
热心网友
时间:2023-10-05 15:00
以下程序即可:
#include <reg52.h>
char i;
void main()
{
TMOD = 0x01;
TR0 = 1;
IE = 0x82;
P1 = 0x04;
while(1);
}
void timer1() interrupt 1
{
i++;
if (i >= 18) {i = 0; P1 ^= 0x84;}
}