在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操作即可!程序你自己寫吧!我沒時間幫你寫!