串口中断应用实例
2004-12-17 20:10
525 查看
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint j=0;
uint num=0;
uchar sl,sh,ml,mh,hl,hh;
uchar code x[13]={'0','1','2','3','4','5','6','7','8','9',':',0x0d,0x0a};
//--------------------------------------------------------------------------------------------
void Time0_int() interrupt 1 using 1
{
TH0=(65536-40000)/256;
TL0=(65536-40000)%256;
num++;
if(num>50)
{
num=0;sl++;
if(sl>9)
{
sl=0;sh++;
if(sh>5)
{
sh=0;ml++;
if(ml>9)
{
ml=0;mh++;
if(mh>5)
{
mh=0;hl++;
if(hl>9)
{
hl=0;hh++;
if(hh>5)
hh=0;
}
}
}
}
}
SBUF=x[hh];
while(TI==0);
TI=0;
SBUF=x[hl];
while(TI==0);
TI=0;
SBUF=x[10];
while(TI==0);
TI=0;
SBUF=x[mh];
while(TI==0);
TI=0;
SBUF=x[ml];
while(TI==0);
TI=0;
SBUF=x[10];
while(TI==0);
TI=0;
SBUF=x[sh];
while(TI==0);
TI=0;
SBUF=x[sl];
while(TI==0);
TI=0;
SBUF=x[11];
while(TI==0);
TI=0;
SBUF=x[12];
while(TI==0);
TI=0;
}
}
//------------------------------------------------------------------------------------------------------
main()
{
TMOD=0x21;
TH0=(65536-40000)/256; //20ms 中断周期,共中断3000次,显示1分钟
TL0=(65536-40000)%256;
TL1=0xfd;
TH1=0xfd;
SCON=0xd8;
PCON=0x00;
EA=1;
ET0=1;
TR0=1;
TR1=1;
while(1);
}
#define uchar unsigned char
#define uint unsigned int
uint j=0;
uint num=0;
uchar sl,sh,ml,mh,hl,hh;
uchar code x[13]={'0','1','2','3','4','5','6','7','8','9',':',0x0d,0x0a};
//--------------------------------------------------------------------------------------------
void Time0_int() interrupt 1 using 1
{
TH0=(65536-40000)/256;
TL0=(65536-40000)%256;
num++;
if(num>50)
{
num=0;sl++;
if(sl>9)
{
sl=0;sh++;
if(sh>5)
{
sh=0;ml++;
if(ml>9)
{
ml=0;mh++;
if(mh>5)
{
mh=0;hl++;
if(hl>9)
{
hl=0;hh++;
if(hh>5)
hh=0;
}
}
}
}
}
SBUF=x[hh];
while(TI==0);
TI=0;
SBUF=x[hl];
while(TI==0);
TI=0;
SBUF=x[10];
while(TI==0);
TI=0;
SBUF=x[mh];
while(TI==0);
TI=0;
SBUF=x[ml];
while(TI==0);
TI=0;
SBUF=x[10];
while(TI==0);
TI=0;
SBUF=x[sh];
while(TI==0);
TI=0;
SBUF=x[sl];
while(TI==0);
TI=0;
SBUF=x[11];
while(TI==0);
TI=0;
SBUF=x[12];
while(TI==0);
TI=0;
}
}
//------------------------------------------------------------------------------------------------------
main()
{
TMOD=0x21;
TH0=(65536-40000)/256; //20ms 中断周期,共中断3000次,显示1分钟
TL0=(65536-40000)%256;
TL1=0xfd;
TH1=0xfd;
SCON=0xd8;
PCON=0x00;
EA=1;
ET0=1;
TR0=1;
TR1=1;
while(1);
}
相关文章推荐
- JAVA线程的应用实例(运用2种中断线程方式,基于实现进度条为例)
- Linux 程序设计学习笔记----终端及串口编程及实例应用
- SerialApp-zigbee串口应用实例
- 基于proteus的51单片机仿真实例六十九、串口转并口器件74HC164应用实例
- 【51单片机学习过程记录】13中断 之串口中断应用前的了解过程(较详细)
- VS2010 + QT5 SerialPort 串口应用实例总结
- 基于proteus的51单片机仿真实例七十、串口转并口器件74HC164应用实例(续)
- 基于proteus的51单片机仿真实例七十一、并口转串口器件74HC165应用实例
- 【51单片机学习过程记录】16 中断之 串口中断的应用2(中断方式)
- 使用C#数组与串口编程的应用实例
- 基于proteus的51单片机仿真实例七十二、并口转串口器件74HC165应用实例(续)
- STM32W108无线射频模块外部中断接口应用实例
- 深入浅出VC++串口编程(六) 综合实例之短信应用开发
- NVIC中断优先级管理+串口通信基本原理+串口通信基于库函数的配置实例
- JAVA线程的应用实例(运用2种中断线程方式,基于实现进度条为例)
- STC89C52串口应用实例
- JAVA线程的应用实例(运用2种中断线程方式,基于实现进度条为例)
- 《手把手教你学51单片机》之十三------1602液晶与串口的应用实例
- linux设备树的gpio和gpio中断应用实例
- 51单片机外部中断编程实例2