程序见附件:
交通灯程序.rar
(54.29 KB, 下载次数: 22)
以下为部分程序预览:
- #include "use.h"
- #include "main.h"
- uchar code seg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar code seg_we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar BackupGreen,BackupRed,CopyLight;
- void Seg_Display(uchar number,uchar wei) //数码管动态显示程序
- {
- P0=0XFF;
- we=1;
- we=0;
- P0=seg_du[number];
- du=1;
- du=0;
- P0=seg_we[wei];
- we=1;
- we=0;
- }
- void UrgentScan() //紧急情况运行扫描
- {
- Seg_Display(BackupGreen/10,0);
- Seg_Display(BackupGreen%10,1);
- Seg_Display(BackupRed/10,2);
- Seg_Display(BackupRed%10,3);
- }
- void SetModel() //红绿灯设置模式
- {
- if(StaSysterm==NormalRun)
- {
- StaSysterm=ResetGreen; //状态机
- BackupGreen=GreenTime;
- BackupRed=RedTime;
- CopyLight=P2; //对数据进行备份
- P2=0X09;
- }
- else if(StaSysterm==ResetGreen)
- {
- StaSysterm=ResetRed;
- }
- else if(StaSysterm==ResetRed)
- {
- StaSysterm=NormalRun;
- P2=CopyLight; //恢复数据
- }
- }
- void ADDTime() //红绿灯时间加
- {
- if(StaSysterm==ResetGreen)
- {
- BackupGreen++;
- if(BackupGreen>=BackupRed) BackupGreen=BackupRed;
- }
- else if(StaSysterm==ResetRed)
- {
- BackupRed++;
- }
- }
- void SUBTime() //红绿灯时间减
- {
- if(StaSysterm==ResetGreen)
- {
- BackupGreen--;
-
- }
- else if(StaSysterm==ResetRed)
- {
- BackupRed--;
- if(BackupGreen>=BackupRed) BackupRed=BackupGreen;
- }
- }
- /****************
- void Confirm() //备用函数
- {
- if(StaSysterm!=NormalRun && StaSysterm!=UrgentRun)
- {
- GreenTime=BackupGreen;
- RedTime=BackupRed;
- StaSysterm=NormalRun;
- }
- }
- **************/
- void UrgentModel() //紧急模式
- {
- if(StaSysterm==NormalRun)
- {
- StaSysterm=UrgentRun;
- CopyLight=P2; //对数据进行备份
- P0=0XFF;
- we=1;
- we=0;
- }
- else if(StaSysterm==UrgentRun)
- {
- StaSysterm=NormalRun;
- P2=CopyLight; //恢复数据
- }
- else if(StaSysterm==ResetGreen || StaSysterm==ResetRed)
- {
- StaSysterm=NormalRun;
- GreenTime=BackupGreen;
- RedTime=BackupRed; //重新设置红绿灯时间
- }
- }
复制代码
|