谁能帮我看一下这个单片机程序呢?
来源:百度知道 编辑: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方波的程序呢?
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次