您现在的位置: 主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > 中断定时器与流水灯 -
本文所属标签:
为本文创立个标签吧:

中断定时器与流水灯 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

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

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

本文引用地址: http://www.21ic.com/app/mcu/201806/764294.htm


#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++)

;

}




              查看评论 回复



 

"中断定时器与流水灯 -"的相关文章

网站地图

围观()