|
#include <reg51.h>
// 定義端口
sbit SNG = P2^0; // 南北綠燈
sbit SNY = P2^1; // 南北黃燈
sbit SNR = P2^2; // 南北紅燈
sbit EWG = P2^3; // 東西綠燈
sbit EWY = P2^4; // 東西黃燈
sbit EWR = P2^5; // 東西紅燈
// 數(shù)碼管顯示相關(guān)
uchar code SEG[4] = {0x01, 0x02, 0x04, 0x08}; // 數(shù)碼管位選
uchar code distab[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; // 數(shù)碼管顯示0~9
uint timeG, timeY, timeR; // 各燈顯示時(shí)間
uint state; // 狀態(tài)標(biāo)志
// 延時(shí)函數(shù)
void delay_ms(uint q)
{
uint i, j;
for (i = 0; i < q; i++)
for (j = 0; j < 110; j++);
}
// 定時(shí)器0初始化
void Timer0Init(void)
{
TMOD |= 0X01; // 定時(shí)器0模式1,16位定時(shí)器
TH0 = 0XFC; // 定時(shí)1ms
TL0 = 0X18;
EA = 1; // 開(kāi)總中斷
ET0 = 1; // 開(kāi)定時(shí)器0中斷
TR0 = 1; // 啟動(dòng)定時(shí)器0
}
// 定時(shí)器0中斷服務(wù)程序
void Timer0() interrupt 1
{
static uint count = 0; // 計(jì)數(shù)器,用于控制狀態(tài)轉(zhuǎn)換
TH0 = 0XFC; // 重裝初值
TL0 = 0X18;
count++;
if (count >= 1000) // 每秒更新一次狀態(tài)
{
count = 0;
switch (state)
{
case 0: // 南北綠燈,東西紅燈
timeG--;
if (timeG == 0)
{
state = 1;
timeY = 3;
}
break;
case 1: // 南北黃燈閃爍,東西紅燈
if (timeY > 0)
timeY--;
else
{
state = 2;
timeR = 90;
}
break;
case 2: // 南北紅燈,東西綠燈
timeR--;
if (timeR == 0)
{
state = 3;
timeY = 3;
}
break;
case 3: // 南北紅燈,東西黃燈閃爍
if (timeY > 0)
timeY--;
else
{
state = 0;
timeG = 20;
}
break;
}
}
// 數(shù)碼管顯示倒計(jì)時(shí)
uchar displayDigit[4] = {0xFF, 0xFF, 0xFF, 0xFF}; // 初始化為全滅
switch (state)
{
case 0:
displayDigit[0] = distab[timeG / 10];
displayDigit[1] = distab[timeG % 10];
break;
case 1:
displayDigit[0] = distab[timeY / 10];
displayDigit[1] = distab[timeY % 10];
break;
case 2:
displayDigit[0] = distab[timeR / 10];
displayDigit[1] = distab[timeR % 10];
break;
case 3:
displayDigit[0] = distab[timeR / 10];
displayDigit[1] = distab[timeR % 10];
break;
}
for (uchar i = 0; i < 4; i++)
{
P1 = SEG[i];
P0 = displayDigit[i];
delay_ms(1);
}
}
// 主函數(shù)
void main()
{
Timer0Init(); // 定時(shí)器初始化
timeG = 20; // 初始時(shí)間設(shè)置
state = 0; // 初始狀態(tài)
while (1)
{
// 主循環(huán)可以為空,因?yàn)樗胁僮鞫荚谥袛嘀型瓿?br />
}
}
顯示4.c(9): error C129: missing ';' before 'code'。
我搜到是沒(méi)有定義就在開(kāi)頭加了
#define uchar unsigned char;
#define uint unsigned int;
結(jié)果顯示4.c(109): error C202: 'P0': undefined identifier
|
|