当前位置:首页 > 单片机 > 单片机
[导读] 此程序为设置Led流水灯与数码管第0一位的0-16数字循环亮。不能将数码管程序放进主函数里,因为延迟函数delay,可能会在add自加到40时刚好在dalay里面,这时不会有数码管的闪烁。#include#include#defin

此程序为设置Led流水灯与数码管第0一位的0-16数字循环亮。不能将数码管程序放进主函数里,因为延迟函数delay,可能会在add自加到40时刚好在dalay里面,这时不会有数码管的闪烁。


#include

#include

#define uchar unsigned char

#define uint unsigned int


sbit wela=P2^7; //位选

sbit dula=P2^6; //段选

int num,add,temp=0xfe;

uchar code table[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(uchar n);

void main()

{


TMOD=0x01; //工作方式

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;


EA=1; //总中断打开

ET0=1; //定时器中断打开

TR0=1; //定时器打开


wela=1;

P0=0xfe;

wela=0;

dula=1;

P0=table[0];

dula=0; //数码管初始化


P1=temp; //Led灯初始化


while(1)

{


delay(100);

delay(500);

temp=_crol_(temp,1);

P1=temp;

}


}


void add_1() interrupt 1 //计时器中断函数

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

add++;

if(add==40)

{

num++;

add=0;

dula=1;

P0=table[num];

if(num==16)

num=-1;

}

}

//流水灯延迟函数

void delay(uchar n)

{

int i=0, j=0;

for(i=0; i

for(j=0; j<125; j++)

;

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭