|
請問為什么用的51單片機(jī)定時(shí)器在Proteus仿真時(shí),慢了10多s,不是說定時(shí)器精確嗎
單片機(jī)源程序如下:
#include <reg51.h>
typedef unsigned int u16;
sbit B_RED = P0^0;
sbit B_GRN = P0^1;
sbit B_YLW = P0^2;
sbit N_RED = P3^3;
sbit N_GRN = P3^4;
sbit N_YLW = P3^5;
sbit D_RED = P0^3;
sbit D_GRN = P0^4;
sbit D_YLW = P0^5;
sbit X_RED = P3^0;
sbit X_GRN = P3^1;
sbit X_YLW = P3^2;
u16 RED,YLW,GRN;
void main(void)
{
// Write your code here
/*初始狀態(tài)*/
B_RED = 0; N_RED = 0;
D_RED = 1;
X_RED = 1;
/*定時(shí)器*/
TMOD = 0x01; //設(shè)置定時(shí)器0為工作方式1
TH0 = (65536-50000)/256; //單片機(jī)晶振為12MHz,產(chǎn)生50ms的中斷
TL0 = (65536-50000)%256;
EA = 1; //開總中斷
ET0 = 1; //開定時(shí)器0中斷
TR0 = 1; //啟動(dòng)定時(shí)器0
while(1) //等待中斷
{
/*南北紅燈和東西紅燈的運(yùn)作方式*/
if(RED==600)
{
RED = 0;
B_RED = ~B_RED;
N_RED = ~N_RED;
D_RED = ~D_RED;
X_RED = ~X_RED;
}
/*南北綠燈和東西綠燈的運(yùn)作方式*/
}
}
void T0_time() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
RED++;
}
|
|