刚学PIC不久,很多东西不多。学校要求做一交通灯项目。现在请大家帮忙看看我做的程序和仿真图问题出哪了。谢谢
#include <pic.h>
unsigned char LED1=0;
unsigned char LED2=0;
unsigned char LED3=0;
unsigned char LED4=0;
unsigned char LED_L=0;
const unsigned char table[18]=
{0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X60,0X25,0X3c,0X23,0X34,0X74,0XF7,0XFF};
void timer1init(void) //初始化
{
T1CON=0X01; //打开定时器 1
TMR1IF=0; //清除 TMR1 中断标志
TMR1IE=1; //TMR1中断允许
TMR1H=0xF6; //赋初值,以便 TMR1每2MS左右中断一次
TMR1L=0x3D;
PIR1=0; //清除所有中断标志
PEIE=1; //允许外围总中断
GIE=1; //总中断开关打开
}
void interrupt T1(void)//中断处理
{
if(TMR1IF==1) //如果是定时器1 中断
{
TMR1IF=0; //清除定时器1中断标志
TMR1H=0XF6; //重新复初值
TMR1L=0x3D;
switch(LED_L)
{
case 0://点亮第一个数码管
RE2=1;
RE1=0;
RE0=0;
PORTB = table[LED1];
LED_L = 1;
break;
case 1://点亮第二个数码管
RE2=0;
RE1=1;
RE0=0;
PORTB = table[LED2];
LED_L = 2;
break;
case 2: //点亮第三个数码管
RE2=1;
RE1=1;
RE0=0;
PORTB = table[LED3];
LED_L = 3;
break;
case 3://点亮第四个数码管
RE2=0;
RE1=0;
RE0=1;
PORTB = table[LED4];
LED_L = 0;
break;
default://语句 d
LED_L = 0;
break;
}
}
}
delay()//延时 500ms
{
int j,k;
for(j=0;j<500;j++)
for(k=0;k<49;k++)
{}
}
delay_s(int n)//延时 n秒
{
int i;
for(i=0;i<n;i++)
{
delay();
delay();
}
}
main()//主函数
{ int i;
ADCON1=0X06; //初始化
TRISA=0X00; //南北方向交通灯控制信号输出端
TRISB=0X00; //数码管段选信号输出端
TRISC=0X00; //东西南北方向交通灯控制信号输出端
TRISE=0X00; //数码管位选信号输出端
PORTA=0X00; //RA端口清零
PORTB=0X00; //RB端口清零
PORTC=0X00; //RC端口清零
PORTE=0X00; //RE端口清零
timer1init();//定时器1 初始化
LED1=3;LED2=0;LED3=3;LED4=5;//数码管赋初值
while(1)
{
PORTA=0X01;PORTC=0X40; //东西红灯亮,南北绿灯亮
LED1=3; LED2=0;LED3=4;LED4=0;//东西倒数40S,南北倒数30S
for(i=0;i<40;i++)
{
delay_s(1);
LED2=LED2-1;
LED4--;
if(LED2==0XFF)
{LED2=9;LED1--;}
if(LED4==0XFF)
{LED4=9;LED3--;}
if(i==29)
{
PORTA=0X02; // 南北黄灯亮10S
{LED1=1;LED2=0;LED3=1;LED4=0;}
if(LED2==0XFF)
{LED2=9;LED1--;}
if(LED4==0XFF)
{LED4=9;LED3--;}
if(LED2==0XFF&LED4==0XFF)
{}
}
}
PORTA=0X04;PORTC=0X10; //东西绿灯亮,南北红灯亮
LED1=4;LED2=0; LED3=3; LED4=0;//东西倒数40S,南北倒数30S
for(i=0;i<40;i++)
{
delay_s(1);
LED4=LED4-1;
LED2--;
if(LED4==0XFF)
{LED4=9;LED3--;}
if(LED2==0XFF)
{LED2=9;LED1--;}
if(i==29)
{
PORTC=0X20; //东西黄灯亮10S
{LED1=1;LED2=0;LED3=1;LED4=0;}
if(LED4==0XFF)
{ LED4=9;LED3--;}
if(LED2==0XFF)
{LED2=9;LED1--;}
if(LED2==0XFF&LED4==0XFF)
{}
}
}
}
}
怎么上图
|