帮我看看单片机程序,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/14 00:09:16
//晶振为12M,2007/12/24
//此程序在硬件上调试通过
//此程序是应一个网友而写,希望多提宝贵意见
#include<reg51.h>
sbit output0=P3^0; //输出方波,频率为1K
sbit output1=P3^1; //输出方波,频率为1K,与 output1相位相反
sbit output3=P3^3;//一直输出高电平
//开关为P3.2这里不列出,全部用P3口,这样确保所用的四个功能脚,
//都在51单片机(40脚)的一侧
void t0int() interrupt 1 //定时器0定时50MS,
{
TR0=0;
TH0=0xfe; //0.5ms定时常数
TL0=0x0c;
TR0=1;
output1=output0;
output0=~output0;

}
void e0int() interrupt 0 //用外部中断0作控制开关
{
TR0=!TR0;//关闭或打开定时器,从而停止输出信号或继续信号
}
void main(void)
{
TMOD=0x01;
EA=1;
EX0=1;
ET0=1;
IT0=1;

TH0=0xfe; //0.5ms定时常数
TL0=0x0c;
这里设定了定时计数器的初值为0xfe0c,0xffff减0xfe0c等于500,因为晶振为12M,那么一个机器周期就是1um,500个周期就是500us,就是0.5ms

/定时器0定时50MS, 这句没有在程序中体现,
定时器0只是每0.5ms中断一次