文件名称:
基于AVR+PROTEUS仿真(源程序)
开发工具:
文件大小: 4mb
下载次数: 0
上传时间: 2015-07-04
详细说明:
/* 实现模拟交通信号灯 */ #include #include #include //东西亮(某位置0为点亮) #define EW_RED_ON() PORTA &= ~_BV(PA0) //(通过使某一位(PA0)置0)等价于:PORTA =~(1<<0) #define EW_YELLOW_ON() PORTA &= ~_BV(PA1) #define EW_GREEN_ON() PORTA &= ~_BV(PA2) //东西灭(某位置1为熄灭) #define EW_RED_OFF() PORTA |= _BV(PA0) //(通过使某一位(PA0)置1) #define EW_YELLOW_OFF() PORTA |= _BV(PA1) #define EW_GREEN_OFF() PORTA |= _BV(PA2) //南北亮(某位置0为点亮) #define NS_RED_ON() PORTA &= ~_BV(PA3) #define NS_YELLOW_ON() PORTA &= ~_BV(PA4) #define NS_GREEN_ON() PORTA &= ~_BV(PA5) //南北灭(某位置1为熄灭) #define NS_RED_OFF() PORTA |= _BV(PA3) #define NS_YELLOW_OFF() PORTA |= _BV(PA4) #define NS_GREEN_OFF() PORTA |= _BV(PA5) //东西黄灯闪烁 #define EW_YELLOW_BRINK() PORTA ^= _BV(PA1) //南北黄灯闪烁 #define NS_YELLOW_BRINK() PORTA ^= _BV(PA4) int main() { int8_t status = 1; int16_t brink_times = 0; DDRA = 0xff;//设置A口为输出口 PORTA = 0xff; while(1) { switch(status) { case 1://东西通行 EW_GREEN_ON(); EW_YELLOW_OFF(); EW_RED_OFF(); NS_GREEN_OFF(); NS_YELLOW_OFF(); NS_RED_ON(); _delay_ms(5000); status = 2; break; case 2://东西通行即将结束 _delay_ms(500); EW_GREEN_OFF(); EW_YELLOW_BRINK(); if(++brink_times!=10) { break; } else { brink_times = 0; status = 3; break; } case 3://南北通行 NS_GREEN_ON(); NS_YELLOW_OFF(); NS_RED_OFF(); EW_GREEN_OFF(); EW_YELLOW_OFF(); EW_RED_ON(); _delay_ms(5000); status = 4; break; case 4://南北通行即将结束 _delay_ms(500); NS_GREEN_OFF(); NS_YELLOW_BRINK(); if(++brink_times<10) { break; } else { brink_times = 0; status = 1; break; } default: break; } } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.