在8051单片机的时钟频率为6MHz,那么定时器的计数脉冲周期就是 2uS;
sbit CP=P1^0;
void Timer0_init()
{
TMOD |=0x01; //T0定时器,方式1,采用16位定时器
TH0 = (65536-500)/256; //定时器装初值500, 即 1000uS 中断一次
TL0 = (65536-500)%256;
EA=1; ET0=1; TR0=1;
}
void timer0() interrupt 1
{
TH0 = (65536-500)/256; //定时器装初值500, 1mS 中断一次
TL0 = (65536-500)%256;
CP=~CP; //改变脉冲信号的输出状态
}
void main()
{
Timer0_init();
CP=0;
while(1) { }
}
汇编语言,才看到,算了,你别人的回答吧
2. 51单片机编程题,要求每条语句写出注释。求解答。
单片机P2口分别接8个发光二极管的阴极,阳极已经接+5V电源,试编写8灯闪烁的程序(闪烁时间间隔500ms)。
程序如下
#include <reg51.h>
//延时10ms子程序
void Delay10ms(unsigned int c)
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void main()
{
while(1)
{
P2=0x00;//P2口8个灯全亮
Delay10ms(50);//延时500ms
P2=0xff;//P2口8个灯全灭
Delay10ms(50);//延时500ms
}
}
仿真图
3. C51单片机编程题
使用AT89C51单片机的定时器工作方式2—8位自动重装值!在中断子程序中对要输出0.5MS高电平的引脚写1操作即可!程序你自己写吧!我没时间帮你写!