求数电交通灯课程设计..MULTISIM.

2024-12-26 04:01:33
推荐回答(3个)
回答1:

#include
unsigned i;//全局变量,用于传递时间信值
void main (void)
{

unsigned state;
WDTCTL= WDTPW + WDTHOLD; //设置看门狗控制寄存器,关看门狗
TACTL = TASSEL0 + TACLR; // 设置定时器A控制寄存器,
CCTL0 = CCIE; //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断
CCR0 =32768; //设置捕获/比较寄存器,初始值为32768,对于32768Hz的频率,相当于1s
TACTL |= MC0; //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数
_EINT(); //使能中断,这是一个C编译器支持的内部过程。
P2DIR=0XFF;
P2OUT=0XDE;
state=0;
while(1) //无限次while循环
{

if( state==0 && i==4 )
{
P2OUT=0XDE; //东西红,南北黄
state=1;

}
if(state==1 && i>=7 )
{
P2OUT=0XEE; //东西绿,南北红
state=2;

}
if( state==2 && i==4 )
{
P2OUT=0XF3; //东西黄,南北红
state=3;

}
if(state==3 && i==9 ) //东西红,南北绿
{
P2OUT=0XF5;
state=0;
i=0;
}

}
}

#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A ( void)//定时器A的CC0中断处理程序
//TIMERA0_VECTOR=6*2,等于基地址0xFFE0+12=0xFFEC
{
i++;
if (i>=20)
i=0;
}
看看你能不能用

回答2:

我给你发邮箱了,自己查看,多给点分吧~嘿嘿,你要自己在设置一下仿真的速度,,让它走快点。

回答3:

楼主资料还在吗 可不可以给我发一份 学习一下 谢谢 615724197@qq.com