中断定时器与流水灯
2016-04-02 14:33
337 查看
此程序为设置Led流水灯与数码管第0一位的0-16数字循环亮。不能将数码管程序放进主函数里,因为延迟函数delay,可能会在add自加到40时刚好在dalay里面,这时不会有数码管的闪烁。
#include<reg51.h> #include<intrins.h> #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<n; i++) for(j=0; j<125; j++) ; }
相关文章推荐
- 51单片机的中断整理
- 时钟+温度+遥控设置,综合时钟例子
- 温度传感器+I2C+串口+PC上位机(pyserial)例子
- 51单片机中data,idata,xdata,pdata的区别
- 什么叫51单片机最小系统
- 用串口连接GSM手机发送和接收短消息,在应用程序中如何编程实现?
- MCU之心路分享
- 按键led
- 单片机学会释放CPU
- 单片机无线串行接口电路设计
- 单片机无线串行接口电路设计
- 单片机系统中的红外通信接口
- 单片机系统中的红外通信接口
- 单片机实现接收从电脑发送过来的字符串的方法
- 单片机IO口模拟串口程序(发送+接收
- DSP、ARM和单片机的区别
- 转:接地:数字地、模拟地、信号地、交流地、直流地、屏蔽地、浮地
- 单片机存储器之flash,eeprom,sram,dram简介
- 程序状态字(PSW)的动画说明,
- 51单片机