查看:908|回复:3
- #include< REGX52.H>
- void YellowShan2();
- void YellowShan1();
- void delay_s(num);
- void delay_ms(num);
- void delay_us(num);
- void NBX();
- void DXX();
- void Timer0_Init();
- sbit r1=P1^2;
- sbit y1=P1^3;
- sbit g1=P1^4;
- sbit r2=P1^5;
- sbit y2=P1^6;
- sbit g2=P1^7;
- unsigned int num1=0;
- unsigned int num2;
- void main()
- {
- Timer0_Init();
- r1=0;
- y1=0;
- g1=0;
- r2=0;
- y2=0;
- g2=0;
- while(1)
- {
- if (num2==0)
- {
- NBX();
- }
- else if (num2==1)
- {
- YellowShan1();
- }
- else if (num2==2)
- {
- DXX();
- }
- else if (num2==3)
- {
- YellowShan2();
- }
- }
- }
- void YellowShan1()
- {
- r1=1;
- y1=0;
- g1=0;
- r2=0;
- y2=1;
- g2=0;
- delay_ms(25);
- r1=1;
- y1=0;
- g1=0;
- r2=0;
- y2=0;
- g2=0;
- delay_ms(25);
- }
- void YellowShan2()
- {
- r1=0;
- y1=1;
- g1=0;
- r2=1;
- y2=0;
- g2=0;
- delay_ms(25);
- r1=0;
- y1=0;
- g1=0;
- r2=1;
- y2=0;
- g2=0;
- delay_ms(25);
- }
- void delay_us(unsigned int num)
- {
- unsigned int i=0,j=0;
- for(i=0;i<num;i++)
- {
- for(j=0;j<20;j++);
- }
- }
- void delay_ms(unsigned int num)
- {
- while(num--!=0)
- {
- delay_us(100);
- }
- }
- void delay_s(unsigned int num)
- {
- while(num--!=0)
- {
- delay_ms(60);
- }
- }
- void NBX()
- {
- r1=1;
- y1=0;
- g1=0;
- r2=0;
- y2=0;
- g2=1;
- }
- void DXX()
- {
- r1=0;
- y1=0;
- g1=1;
- r2=1;
- y2=0;
- g2=0;
- }
- void Timer0_Init() // 定时器0初始化函数
- {
- TMOD& = 0xF0; // 清除Timer0模式位
- TMOD |= 0x01; // 设置Timer0为模式1(16位定时/计数器模式)
- TH0 = (65536 - 50000) / 256; // 设置定时器初值,这里设置为50ms溢出一次
- TL0 = (65536 - 50000) % 256;
- ET0 = 1; // 使能Timer0中断
- EA = 1; // 使能全局中断
- TR0 = 1; // 启动Timer0
- }
- void Timer0_ISR (void) interrupt 1 // Timer0中断服务程序
- {
- static unsigned int count = 0; // 静态变量,用于计数
- TH0 = (65536 - 50000) / 256; // 重新加载定时器初值
- TL0 = (65536 - 50000) % 256;
- count++; // 计数器加1
- if (count >= 5) // 如果计数到20,即1秒到达
- {
- count = 0; // 清零计数器
- // 在这里添加需要每秒执行的操作,例如更新LED状态、打印日志等
-
- num1++;
- if(num1==50)
- {
- num2=1;
- }
- else if(num1==60)
- {
- num2=2;
- }
- else if(num1==110)
- {
- num2=3;
- }
- else if(num1==120)
- {
- num2=0;
- num1=0;
- }
- }
- }
Proteus仿真是8.17版本的,其他版本打开会报错: 交通灯.7z(193.18 KB, 下载次数: 10)
durongze 发表于 2024-6-7 00:51
STC89C52 的库文件可以分享一下吗? 我不缺例子,我缺的是STC89C52 的proteus使用的lib文件
我也是这样。请楼主给予分享。谢谢。