谁能帮我看一下这个单片机程序呢?

来源:百度知道 编辑:UC知道 时间:2024/05/17 07:00:02
#include "reg52.h"

sbit P1_0 = P1^0;
unsigned int i;
void time0_int(void) interrupt 1
{

TH0 = 0x63;
TL0 = 0x0c0;
P1_0 = ~P1_0; //输出电压交替取反

}

void main()
{

TMOD = 0x01; //T0方式1,
TL0 = 0x63;
TH0 = 0x0c0; //40ms
TR0 = 1;
ET0 = 1;
EA = 1;

do
{
; }
while(1);

}
这个是产生40ms方波的程序,那么如何产生0.8s方波的程序呢?

800ms方波,是40ms的20倍

先在外部设;一个变量i=0;在定时器的中断程序里i++,在主程序里循环检测i的值,在i=20的时候取反P口的值。

第一位的程序,应该在main()里初始化i的值,加一条语句: i=0;

谢谢 !

中断20次再取反就行了。
我改的程序:
#include "reg52.h"

unsigned char i;
void time0_int(void) interrupt 1
{
TH0 = 0x63;
TL0 = 0x0c0;
i++;
if(i==20){
i=0;
P1_0 = !P1_0; //输出电压交替取反
}
}

void main()
{
TMOD = 0x01; //T0方式1,
TL0 = 0x63;
TH0 = 0x0c0; //40ms
EA=ET0=TR0 = 1;

while(1);
}

中断20次再取反就是了。

定时器中断20次