用Keilc软件设计一个交通灯程序C程序

用Keilc软件设计一个交通灯程序C程序,第1张

东西和南北的时间不同步,楼主没有说得很清楚

你把时间流程说清楚我可以把代码写出来

//以下代码经过Keil C51软件调试通过

#include "reg51h" //头文件包含

//宏定义

#define uint unsigned int

#define uchar unsigned char

#define ON 0 //0的时候灯亮

#define OFF 1 //1的时候灯亮

//管脚定义

//南北道 黄灯亮3秒 红灯亮 30秒 黄灯3秒 绿灯38秒

//东西道 黄灯亮3秒 绿灯亮 28秒 黄灯3秒 红灯40秒

sbit PortDX_Yellow = P1^0; //东西方向黄灯

sbit PortDX_Red = P1^1; //东西方向红灯

sbit PortDX_Green = P1^2; //东西方向绿灯

sbit PortNB_Yellow = P1^3; //南北方向黄灯

sbit PortNB_Red = P1^4; //南北方向红灯

sbit PortNB_Green = P1^5; //南北方向绿灯

void delay(uint ms) // 毫秒级延时(AT89C52 @ 110592MHz)

{

uint ti;

while(ms--)

{

for(ti=0;ti<112;ti++){}//112

}

}

/==================== 主函数 ====================/

void main(void)

{

delay(400); //开机延时400ms

while(1)

{

PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮3秒

PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//东西黄灯亮3秒

delay(3000);

PortNB_Yellow = OFF;PortNB_Red = ON ;PortNB_Green = OFF;//南北红灯亮28秒

PortDX_Yellow = OFF;PortDX_Red = OFF;PortDX_Green = ON ;//东西绿灯亮28秒

delay(28000);

PortNB_Yellow = OFF;PortNB_Red = ON ;PortNB_Green = OFF;//南北红灯亮2秒

PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//东西黄灯亮2秒

delay(2000);

PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮1秒

PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//东西黄灯亮1秒

delay(1000);

PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮2秒

PortDX_Yellow = OFF;PortDX_Red = ON ;PortDX_Green = OFF;//东西红灯亮2秒

delay(2000);

PortNB_Yellow = OFF;PortNB_Red = OFF;PortNB_Green = ON ;//南北绿灯亮38秒

PortDX_Yellow = OFF;PortDX_Red = ON ;PortDX_Green = OFF;//东西红灯亮38秒

delay(3800);

}

}

要运行Keil编写的程序,首先应该将程序编译,然后下载到单片机中,最后通过烧录器将程序烧录到单片机中,即可运行程序。

拓展:Keil的编译器支持C、C++以及汇编语言,用户可以通过编译器将程序编译成目标文件,并下载到单片机中,最后通过烧录器将目标文件烧录到单片机中,从而实现程序的运行。

延时函数名"delayms"不一致

!!!不好意思,第15行还少个“}”哦

贴主挺爱学习单片机嘛,都1点半了还在学习 有时我也这样呵呵

#include

#include

#define uint unsigned int

#define uchar unsigned char

void delayms(uint);

uchar aa;

void main()

{

aa=0xfe;

while(1)

{

P1=aa;

delayms(10000);

aa=_crol_(aa,1);

}

}

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

芯片复位后进入的是复位中断入口地址,一般是0,并且位于FLASH中。然后在入口处放置一条跳转指令,跳转到指定的地址执行。所以如果想复位后从RAM中执行,那么必须修改bootloader,也就是最初的那段汇编代码,把跳转的地址改成RAM的地址。

以上就是关于用Keilc软件设计一个交通灯程序C程序全部的内容,包括:用Keilc软件设计一个交通灯程序C程序、keil怎么运行程序、用keil编写跑马灯程序 按L0L1--L1L2--L2L3--L3L4--L4L5--L5L6-等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9878363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存