|
程序如下,該程序已經在89C51單片機成功測試!但是proteus仿真不了,按照騰訊課堂中操作也無法解決,求大神幫忙?
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
uint time_1ms = 0;
uchar key = 0; //if進入條件
/*初始化定時器1,定時1ms*/
void Timer1(void)
{
TMOD = 0x10; //設置定時器模式 0000 1111
TL1 = 0x66; //設置定時初值
TH1 = 0xFC; //設置定時初值
TF1 = 0; //清除TF1標志
ET1 = 1; //定時計數器1溢出中斷允許控制位
TR1 = 1; //定時器1開始計時
}
void main(void)
{
P1 = 0xFE; //0xFE=1111 1110
/*初始化定時器0*/
Timer1();
EA = 1; //總中斷
while(1)
{
if(key == 1)
{
key = 0;
if(P1 == 0x00) P1 = 0xFF;
P1 = P1 << 1;
}
}
}
void Time1() interrupt 3
{
TL1 = 0x66; //設置定時初值
TH1 = 0xFC; //設置定時初值
time_1ms++;
if(time_1ms >= 2000) //達到2秒
{
key = 1;
time_1ms = 0;
}
}
|
|