您当前的位置:首页 > 互联网教程

c51单片机c语言交通灯的程序

发布时间:2025-05-12 09:38:56    发布人:远客网络

c51单片机c语言交通灯的程序

一、c51单片机c语言交通灯的程序

uchar data sec_dx=20;//东西数默认

uchar data sec_nb=30;//南北默认值

sbit Yellow_nb=P2^5;//南北黄灯标志

sbit Yellow_dx=P2^2;//东西黄灯标志

bit set=1;//调时方向切换键标志

uchar code table[11]={//共阴极字型码

void delay(int ms);//延时子程序

P2=0Xc3;//开始默认状态,东西绿灯,南北黄灯

sec_nb=set_timenb;//从中断回复,仍显示设置过的数值

else{ P2=0xC3;sec_dx=sec_nb+5;}

buf[1]=sec_dx/10;//第1位东西秒十位

buf[2]=sec_dx%10;//第2位东西秒个位

buf[3]=sec_nb/10;//第3位南北秒十位

buf[0]=sec_nb%10;//第4位南北秒个位

void time0(void) interrupt 1 using 1//定时中断子程序

if(sec_nb<=5&&time==0)//东西黄灯闪

{ Green_dx=0;Yellow_dx=!Yellow_dx;}

if(sec_dx<=5&&time==1)//南北黄灯闪

{ Green_nb=0;Yellow_nb=!Yellow_nb;}

if(sec_dx==0&&sec_nb==5)

if(sec_nb==0&&sec_dx==5)

if(time==0&&sec_nb==0)

{ P2=0x99;time=!time;sec_nb=set_timenb;sec_dx=set_timenb+5;}

if(time==1&&sec_dx==0)

{P2=0Xc3;time=!time;sec_dx=set_timedx;sec_nb=set_timedx+5;}

void key_to1()//键盘处理子程序之+

sec_nb=set_timenb;//设置的数值赋给东西南北

void key_to2()//键盘处理子程序之-

sec_nb=set_timenb;//设置的数值赋给东西南北

void key_to3()//键盘处理之紧急车通行

void int0(void) interrupt 0 using 1//只允许东西通行

void int1(void) interrupt 2 using 1//只允许南北通行

void delay(int ms)//延时子程序

二、单片机编程语言一般有哪几种

单片机编程语言很多,大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,大部分用户已经不再便用。

汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植,因为他们的指令系统是有区别的。但懂得汇编语言可帮助了解影响川可语言效率的特殊规定。例如,懂得汇编语言指令就可以便用在片内ram作变量的优势,因为片外变量需要几条指令才能设署累加器和数据指针进行存取。同样的,当要求便用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。

单片机的C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言具有功能丰富的库函数,运算谏磨快,编译效率高,有良好的可移植性,而且可以实现直接对系统硬件的控制。此外,C语言程序具有完整的程序模块结构,从而为软件开发中栗用模块化程序设计方法提供了有力的保障。与汇编相比,有如下优点:

对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址及数据类型等细节均由编译器管理。程序有规范的结构,可分为不同的函数。这种方式可便程序结构化,将可变的选择与特殊操作组合在一起,改善了程序的可读性。

编程及程序调试时间显著缩短,从而提高效率。提供的库包含许多标准子程序,具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。

功能强而有弹性,提供的库包含许多标准子程序,具有较强的数据处理能力,能将已编好程序容易的植入新程序,因为它具有方便的模块化编程技术。

单片机C语言作为一种非常方便的语言而得到广泛的支持,(语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片翻U均不同较快地移植过来。

用单片机c语言进行程序设计,已成为单片机软件开发的一个主流,作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。

单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;由于单芯片微电脑常用于当控制器故又名single chip microcontroller,但是目前在中国大陆仍多沿用“单片机”的称呼。

三、51单片机C语言程序

//你原来的b2,b2都是死循环,这是不行的,只有主函数才可以死循环。

//为你增加了一个按键检测的函数。

//K为触动开关,reg为红灯,bice为绿灯,b1、b2各为一个方波,

//按第一次触动开关时红灯亮、b1输出,

for(x= z; x> 0; x--) for(y= 110; y> 0; y--);

if(kkk== 1) return 0;//没有按下.

if(k== kkk) return 1;//两次相等.

while(!key());//静等按下第一次.

while(!key()) b1();//没有按下第二次就循环等待.

while(!key()) b2();//没有按下第三次就循环等待.

P1= 0xfe; a= 50000; while(a--);

P1= 0xff; a= 50000; while(a--);

P1= 0xfe; a= 30000; while(a--);

P1= 0xff; a= 30000; while(a--);