89C51单片机红绿灯程序是什么?

89C51单片机红绿灯程序是什么?,第1张

注p0口为东西红灯\x0d\x0ap1口为东西黄灯\x0d\x0ap2口为东西绿灯\x0d\x0ap3南北红灯\x0d\x0ap4南北黄灯\x0d\x0ap5南北绿灯\x0d\x0a\x0d\x0a绿灯停留3s;黄灯闪烁5次,每次0.2s,红的停留4s \x0d\x0aORG 0000H\x0d\x0aLJMP MAIN\x0d\x0aORG 0030H\x0d\x0aMAIN:MOV DPTR,#B1\x0d\x0a MOV R2,#4\x0d\x0a MOV A,#0H\x0d\x0aF3:MOV R1,A\x0d\x0a MOVC A,@A+DPTR\x0d\x0a JNB ACC.4,SS1 判断东西方向黄灯是否亮,若亮则转移到黄灯闪烁程序\x0d\x0a JNB ACC.1,SS2 判断南北方向黄灯是否亮,若亮则转移到黄灯闪烁程序\x0d\x0a MOV P1,A\x0d\x0a LCALL DY1S\x0d\x0aSS:MOV A,R1\x0d\x0a INC A\x0d\x0a DJNZ R2,F3\x0d\x0a SJMP MAIN\x0d\x0a\x0d\x0aSS1:MOV R0,#10\x0d\x0aXH1:CPL ACC.4\x0d\x0aMOV P1,A\x0d\x0aLCALL DYS\x0d\x0aDJNZ R0,XH1\x0d\x0aSJMP SS\x0d\x0aSS2:MOV R0,#10\x0d\x0aXH2:CPL ACC.1\x0d\x0aMOV P1,A\x0d\x0aLCALL DYS\x0d\x0aDJNZ R0,XH2\x0d\x0aSJMP SS\x0d\x0a\x0d\x0aDY1S:MOV R5,#30\x0d\x0aDLP0:MOV R6,#100\x0d\x0aDLP1:MOV R7,#250 F=6MHZ\x0d\x0aDLP2:DJNZ R7,DLP2 2X250X2uS=1ms\x0d\x0a DJNZ R6,DLP1 1x100=0.1S\x0d\x0aDJNZ R5,DLP0 0.1X30=3s\x0d\x0a RET\x0d\x0a\x0d\x0aDYS:MOV R6,#200\x0d\x0aDLP3:MOV R7,#250 F=6MHZ\x0d\x0aDLP4:DJNZ R7,DLP4 2X250X1uS=500us=1ms\x0d\x0a DJNZ R6,DLP3 1x200=0.2S\x0d\x0aRET\x0d\x0aB1: DB 11011110B,11101110B,11110011B,11110101B\x0d\x0aEND

在数码管依次排列好这一句话,首先取模,然后写显示函数,写完函数放置while(1)中无限循环下去

代码如下:

#include//用的是单独 *** 作,没有用总线

sbit led1 = P1^0

sbit led2 = P1^1

sbit led3 = P1^2

sbit led4 = P1^3

sbit led5 = P1^4

sbit led6 = P1^5

sbit led7 = P1^6//看清楚自己的管脚,不一定对应,这里采用P0对应段选

code unsigned char led_paly[5] = {0x76,0x79,0x38,0x38,0x5c}// H E L L O

void delay(unsigned int um)//延时函数

{

int i,j

for(i = 0i &ltumi++)

{

for(j = 0j &lt200j++)

}

}

void display()

{

P0 = led_paly[0]//显示H

led2 = 0

delay(50)

led2 = 1

P0 = led_paly[1]//显示E

led3 = 0

delay(50)

led3 = 1

P0 = led_paly[2]//显示L

led4 = 0

delay(50)

led4 = 1

P0 = led_paly[3]//显示E

led5 = 0

delay(50)

led5 = 1

P0 = led_paly[4]//显示O

led6 = 0

delay(50)

led6 = 1

}

void main(void)

{

while(1)

{

display()

}

}

扩展资料:

51单片机的接口作用

P0口:可以被定义为数据/地址的低八位,能够用于外部程序/数据存储器。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:标准输入输出I/O,P1口管脚写入1后,被内部上拉为高,可用作输入。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:既可用于标准输入输出I/O,也可用于外部程序存储器或数据存储器访问时的高八位地址。

P3口:既可以做标准输入输出I/O,也可作为AT89C51的一些特殊功能口。


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

原文地址: https://outofmemory.cn/yw/10987997.html

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

发表评论

登录后才能评论

评论列表(0条)

保存