单片机c语言,流水灯,时钟的程序!

单片机c语言,流水灯,时钟的程序!,第1张

网友您好!流水灯程兄谨序如下:

#include<reg51.h>

sbit P1_0=P1^0

sbit P1_1=P1^1

sbit P1_2=P1^2

sbit P1_3=P1^3

sbit P1_4=P1^4

sbit P1_5=P1^5

sbit P1_6=P1^6

sbit P1_7=P1^7

sbit P3_0=P3^0

sbit P3_1=P3^1

sbit P3_2=P3^2

sbit P3_3=P3^3

void delay(unsigned char i)

void main()

{

while(1){

if(P3_0==0&&P3_1==0&&

P3_2==0&&P3_3==1)

{

P1_0=0,P1_1=0delay(200)

P1_0=1,P1_1=1

P1_2=0,P1_3=0delay(200)

P1_2=1,P1_3=1

P1_4=0,P1_5=0delay(200)

P1_4=1,P1_5=1

P1_6=0,P1_7=0delay(200)

P1_6=1,P1_7=1

P1_6=0,P1_7=0delay(200)

P1_6=1,P1_7=1

P1_4=0,P1_5=0delay(200)

P1_4=1,P1_5=1

P1_2=0,P1_3=0delay(200)

P1_2=1,P1_3=1

P1_0=0,P1_1=0delay(200)

P1_0=1,P1_1=1delay(200)}

else{

P1=0x00

delay(200)

P1=0xff

delay(200)}

}

}

void delay(unsigned char i)

{

unsigned char j,k

for(k=0k<ik++)

for(j=0j<255j++)

}

时钟程序如下:一

#include <reg51.h>

void delay1s()

{

unsigned char i

for(i=0i<0x0Ai++){

TH1=0x3c

TL1=0xb0

TR1=1

while(!TF1)

TF1=0

}

}二

void main()

{

unsigned char i,t

TMOD=0x10 //置T1为工作方式1

while(1)

{for(i=0i<255i++)

{t=(((i/16)<<4)|(i%16)) //将i转换为BCD码

P1=~t //计数值取反后早锋送p1口显示

delay1s()} //调用陆尘晌1s延时函数

}

}不懂的可以继续追问。谢谢

单片机不能同时执行两个程序,只能采用分时的模式完成。

首先通过定时器中断来设定一个时标,比如设定定时器0 每1ms产生一次中断,以这个1ms为基本时标,时钟和流水灯分别定义相应的计数全局变量,迹搭每次进入中断计数加1。根据这个基础,比如说时钟应用,当时钟计数值达到1000次时,说明到了1s,然后计数清零,时分秒变量增加1s。流水灯的处理也一样。另外中断服务程序尽量简洁,所以计数器+1及是否清零的判断 *** 作可在中断服务程序中,计数到后置个标志就可以退出,然后在主循环程序中做运算歼州液处理,氏物这样做比较规范,可最大程度减少误差。


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

原文地址: http://outofmemory.cn/yw/12496820.html

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

发表评论

登录后才能评论

评论列表(0条)

保存