這個程序有什么問題?
不能運行,請教大家!
#include "stc8h.h"
#include "plc.h"
unsigned int sess=0,ses=0;//毫秒 秒
/*******************************************************************************
* 函 數 名 : Timer0Init
* 函數功能 : 定時器0初始化
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Timer0Init()
{
TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH0=0XfC; //給定時器賦初值,定時1ms
TL0=0X18;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
}
/*******************************************************************************
* 函 數 名 : void Timer0() interrupt 1
* 函數功能 : 定時器0中斷函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Timer0() interrupt 1
{
TH1=0XfC; //給定時器賦初值,定時1ms
TL1=0X18;
sess++; //毫秒
if(sess==1000) //1000毫秒 =1s
{
sess=0; //ms 等于0
ses++; //s 加1
}
}
/*******************************************************************************
* 函 數 名 :main
* 函數功能 : 主函數
*******************************************************************************/
void main()
{
times = 1;
Timer0Init();//定時器初始化
while(1)
{
plc();
}
}
void plc()
{
// while(1)
// {
switch(times) //一開始times=1
{
case 1:
GREEN_1=1;
RED_1=0; //東西的紅綠燈
RED_2=1;
GREEN_2=0; //南北的紅綠燈
YELLOW_1=1; //東西的黃燈
YELLOW_2=1; //南北的黃燈
if(ses==2){times=2;ses=0;} //s 等于0 而且回答 跳到1語句
break;
case 2:
GREEN_2=1; //南北的綠燈 高電平滅
YELLOW_1=1; //東西的黃燈
YELLOW_2=0; //南北的黃燈
if(ses==3){times=3;ses=0;} //s 等于0 而且回答 跳到1語句
break;
case 3:
GREEN_1=0;
RED_1=1; //東西的紅綠燈
RED_2=0;
GREEN_2=1; //南北的紅綠燈
YELLOW_1=1; //東西的黃燈
YELLOW_2=1; //南北的黃燈
if(ses==4){times=4;ses=0;} //s 等于0 而且回答 跳到1語句
break;
case 4:
GREEN_1=1; //南北的綠燈 高電平滅
YELLOW_1=0; //東西的黃燈
YELLOW_2=1; //南北的黃燈
if(ses==2){times=5;ses=0;} //s 等于0 而且回答 跳到1語句
break;
case 5:
GREEN_1=1;
RED_1=0; //東西的紅綠燈
RED_2=1;
GREEN_2=0; //南北的紅綠燈
YELLOW_1=1; //東西的黃燈
YELLOW_2=1; //南北的黃燈
if(ses==2){times=6;ses=0;} //s 等于0 而且回答 跳到1語句
break;
case 6:
GREEN_1=0;
RED_1=1; //東西的紅綠燈
RED_2=0;
GREEN_2=1; //南北的紅綠燈
YELLOW_1=1; //東西的黃燈
YELLOW_2=1;
if(ses==2){times=1;ses=0;} //s 等于0 而且回答 跳到1語句
break;
}
}
|