求助!大佬帮我解释解释这些具体程序都是什么意思,急!!!!一个c51交通灯的仿真 5

#include<reg51.h>#include<stdio.h>#defineucharunsignedcharucharseg[]={0x3f,0x06,0x5b,... #include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
uchar seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar stateFlag;//当前工作模式的标志 为1时80s 为0 时 60s
uchar flag;//统计一秒钟的标志
uchar num1=0;//数码管1显示的数
uchar num2=0;//数码管2显示的数
sbit Led1_G = P1^0;
sbit Led1_Y = P1^1;
sbit Led1_R = P1^2;
sbit Led2_G = P1^3;
sbit Led2_Y = P1^4;
sbit Led2_R = P1^5;
void delay(int a);
void showNum();
void main(){
Led1_R = 0;
Led1_G = 0;
Led1_Y = 0;
Led2_R = 0;
Led2_G = 0;
Led2_Y = 0;
stateFlag = 0;
flag = 0;
TMOD=0x10;
TH1= 55536/256;
TL1=55536%256;
num1=20;
num2=23;
Led1_R = 0;
Led1_G = 1;
Led1_Y = 0;
Led2_R = 1;
Led2_G = 0;
Led2_Y = 0;
EA=1;
ET1=1;
TR1=1;
while(1){
showNum();
}
}
void int_T1(void) interrupt 3 {
flag++;
if(flag==100){
num1--;
num2--;
flag=0;
}
if(stateFlag==0){
if(num1==0){
Led1_R = 0;
Led1_G = 0;
Led1_Y = 1;
Led2_R = 1;
Led2_G = 0;
Led2_Y = 0;
num1=3;
}
if(num2==0){
num1=33;
num2=30;
Led1_R = 1;
Led1_G = 0;
Led1_Y = 0;
Led2_R = 0;
Led2_G = 1;
Led2_Y = 0;
stateFlag=1;
}
}
else{
if(num2==0){
Led1_R = 1;
Led1_G = 0;
Led1_Y = 0;
Led2_R = 0;
Led2_G = 0;
Led2_Y = 1;
num2=3;
}
if(num1==0){
num1=20;
num2=23;
Led1_R = 0;
Led1_G = 1;
Led1_Y = 0;
Led2_R = 1;
Led2_G = 0;
Led2_Y = 0;
stateFlag=0;
}
}
TH1= 55536/256;
TL1=55536%256;
}
void delay(int a){
uchar b;
for(;a>0;a--){
for(b=0;b<255;b++);
}
}
void showNum(){
P2=0x0a;
P0=seg[num1/10];
P3=seg[num2/10];
delay(10);
P2=0x05;
P0=seg[num1%10];
P3=seg[num2%10];
delay(10);
}
展开
 我来答
百度网友096feea2b
2019-10-14
知道答主
回答量:25
采纳率:0%
帮助的人:3.7万
展开全部
delay函数用于延时。
后面跟个interrupt3的函数是定时器中断函数,每个周期计数10000微秒,所以每100个周期是1秒、flag用于记录当前的周期数。flag从0加到100时给num1和num2两个红绿灯秒数加1。然后再从0开始计数。
main函数中就是初始化和循环调用showNum显示函数将秒数显示到P0和P3连接的数码管上。
学校有c语言课程的话建议你好好学习下,再做单片机会容易上手。
回答人: 小惠。
匿名用户
2019-11-09
展开全部

这个有源程序和仿真:网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式