51单片机中断程序大全

//实例42:用定时器T0查询方式P2口8位控制LED闪烁 #include // 包含51单片机寄存器定义的头文件 /************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

// EA=1; //开总中断

// ET0=1; //定时器T0中断允许

TMOD=0x01; //使用定时器T0的模式1

TH0=(65536-46083)/256; //定时器T0的高8位赋初值

TL0=(65536-46083)%256; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

TF0=0;

P2=0xff;

while(1)//无限循环等待查询

{

while(TF0==0)

;

TF0=0;

P2=~P2;

TH0=(65536-46083)/256; //定时器T0的高8位赋初值

TL0=(65536-46083)%256; //定时器T0的高8位赋初值

}

}

//实例43:用定时器T1查询方式控制单片机发出1KHz音频 #include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

// EA=1; //开总中断

// ET0=1; //定时器T0中断允许

TMOD=0x10; //使用定时器T1的模式1

TH1=(65536-921)/256; //定时器T1的高8位赋初值

TL1=(65536-921)%256; //定时器T1的高8位赋初值

TR1=1; //启动定时器T1

TF1=0;

while(1)//无限循环等待查询

{

while(TF1==0)

;

TF1=0;

sound=~sound; //将P3.7引脚输出电平取反

TH1=(65536-921)/256; //定时器T0的高8位赋初值

TL1=(65536-921)%256; //定时器T0的高8位赋初值

}

}

//实例44:将计数器T0计数的结果送P1口8位LED显示 #include // 包含51单片机寄存器定义的头文件

sbit S=P3^4; //将S位定义为P3.4引脚

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

// EA=1; //开总中断

// ET0=1; //定时器T0中断允许

TMOD=0x02; //使用定时器T0的模式2

TH0=256-156; //定时器T0的高8位赋初值

TL0=256-156; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

while(1)//无限循环等待查询

{

while(TF0==0) //如果未计满就等待

{

if(S==0) //按键S按下接地,电平为0

P1=TL0; //计数器TL0加1后送P1口显示

}

TF0=0; //计数器溢出后,将TF0清0

}

}

//实例45:用定时器T0的中断控制1位LED闪烁

#include // 包含51单片机寄存器定义的头文件

sbit D1=P2^0; //将D1位定义为P2.0引脚

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

EA=1; //开总中断

ET0=1; //定时器T0中断允许

TMOD=0x01; //使用定时器T0的模式2

TH0=(65536-46083)/256; //定时器T0的高8位赋初值

TL0=(65536-46083)%256; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

while(1)//无限循环等待中断

;

}

/************************************************************** 函数功能:定时器T0的中断服务程序

**************************************************************/ void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数

//其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

{

D1=~D1; //按位取反操作,将P2.0引脚输出电平取反

TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值

TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值

}

//实例46:用定时器T0的中断实现长时间定时

#include // 包含51单片机寄存器定义的头文件

sbit D1=P2^0; //将D1位定义为P2.0引脚

unsigned char Countor; //设置全局变量,储存定时器T0中断次数

/************************************************************** 函数功能:主函数

**************************************************************/

void main(void)

{

EA=1; //开总中断

ET0=1; //定时器T0中断允许

TMOD=0x01; //使用定时器T0的模式2

TH0=(65536-46083)/256; //定时器T0的高8位赋初值

TL0=(65536-46083)%256; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

Countor=0; //从0开始累计中断次数

while(1)//无限循环等待中断

;

}

/************************************************************** 函数功能:定时器T0的中断服务程序

**************************************************************/ void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数

//其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

{

Countor++; //中断次数自加1

if(Countor==20) //若累计满20次,即计时满1s

{

D1=~D1; //按位取反操作,将P2.0引脚输出电平取反

Countor=0; //将Countor清0,重新从0开始计数

}

TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值

TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值

}

//实例47:用定时器T1中断控制两个LED以不同周期闪烁 #include // 包含51单片机寄存器定义的头文件

sbit D1=P2^0; //将D1位定义为P2.0引脚

sbit D2=P2^1; //将D2位定义为P2.1引脚

unsigned char Countor1; //设置全局变量,储存定时器T1中断次数

unsigned char Countor2; //设置全局变量,储存定时器T1中断次数

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

EA=1; //开总中断

ET1=1; //定时器T1中断允许

TMOD=0x10; //使用定时器T1的模式1

TH1=(65536-46083)/256; //定时器T1的高8位赋初值

TL1=(65536-46083)%256; //定时器T1的高8位赋初值

TR1=1; //启动定时器T1

Countor1=0; //从0开始累计中断次数

Countor2=0; //从0开始累计中断次数

while(1)//无限循环等待中断

;

}

/************************************************************** 函数功能:定时器T1的中断服务程序

**************************************************************/ void Time1(void) interrupt 3 using 0 //“interrupt”声明函数为中断服务函数

//其后的3为定时器T1的中断编号;0表示使用第0组工作寄存器

{

Countor1++; //Countor1自加1

Countor2++; //Countor2自加1

if(Countor1==2) //若累计满2次,即计时满100ms

{

D1=~D1; //按位取反操作,将P2.0引脚输出电平取反 Countor1=0; //将Countor1清0,重新从0开始计数

}

if(Countor2==8) //若累计满8次,即计时满400ms

{

D2=~D2; //按位取反操作,将P2.1引脚输出电平取反 Countor2=0; //将Countor1清0,重新从0开始计数

}

TH1=(65536-46083)/256; //定时器T1的高8位重新赋初值

TL1=(65536-46083)%256; //定时器T1的高8位重新赋初值

}

//实例50-1:输出50个矩形脉冲

#include //包含51单片机寄存器定义的头文件

sbit u=P1^4; //将u位定义为P1.4

/*************************************************

函数功能:延时约30ms (3*100*100=30 000μs =30m

*************************************************/

void delay30ms(void)

unsigned char m,n;

for(m=0;m

for(n=0;n

;

}

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

unsigned char i;

u=1; //初始化输出高电平

for(i=0;i

{

u=1;

delay30ms();

u=0;

delay30ms();

}

while(1)

; //无限循环,防止程序“跑飞”

}

//实例50-2:计数器T0统计外部脉冲数

#include //包含51单片机寄存器定义的头文件

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x06; // TMOD=0000 0110B,使用计数器T0的模式2 EA=1; //开总中断

ET0=0; //不使用定时器T0的中断

TR0=1; //启动T0

TH0=0; //计数器T0高8位赋初值

TL0=0; //计数器T0低8位赋初值

while(1) //无限循环,不停地将TL0计数结果送P1口

P1=TL0;

}

//实例51-2:定时器T0的模式2测量正脉冲宽度

#include //包含51单片机寄存器定义的头文件

sbit ui=P3^2; //将ui位定义为P3.0(INT0)引脚,表示输入电压

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x0a; // TMOD=0000 1010B,使用定时器T0的模式2,GATE置1 EA=1; //开总中断

ET0=0; //不使用定时器T0的中断

TR0=1; //启动T0

TH0=0; //计数器T0高8位赋初值

TL0=0; //计数器T0低8位赋初值

while(1) //无限循环,不停地将TL0计数结果送P1口

{

while(ui==0) //INT0为低电平,T0不能启动

;

TL0=0; //INT0为高电平,启动T0计时,所以将TL0清0 while(ui==1) //在INT0高电平期间,等待,计时

;

P1=TL0; //将计时结果送P1口显示

}

}

//实例53:用外中断0的中断方式进行数据采集

#include //包含51单片机寄存器定义的头文件

sbit S=P3^2; //将S位定义为P3.2,

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

EA=1; //开放总中断

EX0=1; //允许使用外中断

IT0=1; //选择负跳变来触发外中断

P1=0xff;

while(1)

; //无限循环, 防止程序跑飞

}

/************************************************************** 函数功能:外中断T0的中断服务程序

**************************************************************/ void int0(void) interrupt 0 using 0 //外中断0的中断编号为0

{

P1=~P1; //每产生一次中断请求,P1取反一次。

}

//实例54-1:输出负脉宽为200微秒的方波

#include //包含51单片机寄存器定义的头文件

sbit u=P1^4; //将u位定义为P1.4

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x02; //TMOD=0000 0010B,使用定时器T0的模式2 EA=1; //开总中断

ET0=1; //定时器T0中断允许

TH0=256-200; //定时器T0的高8位赋初值

TL0=256-200; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

while(1) //无限循环,等待中断

;

}

/************************************************************** 函数功能:定时器T0的中断服务程序

**************************************************************/ void Time0(void) interrupt 1 using 0 //"interrupt"声明函数为中断服务函数 {

u=~u; //将P1.4引脚输出电平取反,产生方波

}

//实例54-2:测量负脉冲宽度

#include //包含51单片机寄存器定义的头文件

sbit u=P3^2; //将u位定义为P3.2

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x02; //TMOD=0000 0010B,使用定时器T0的模式2

EA=1; //开放总中断

EX0=1; //允许使用外中断

IT0=1; //选择负跳变来触发外中断

ET0=1; //允许定时器T0中断

TH0=0; //定时器T0赋初值0

TL0=0; //定时器T0赋初值0

TR0=0; //先关闭T0

while(1)

; //无限循环, 不停检测输入负脉冲宽度

}

/************************************************************** 函数功能:外中断0的中断服务程序

**************************************************************/ void int0(void) interrupt 0 using 0 //外中断0的中断编号为0

{

TR0=1; //外中断一到来,即启动T0计时

TL0=0; //从0开始计时

while(u==0) //低电平时,等待T0计时

;

P1=TL0; //将结果送P1口显示

TR0=0; //关闭T0

}

//实例55:方式0控制流水灯循环点亮

#include //包含51单片机寄存器定义的头文件

#include //包含函数_nop_()定义的头文件

unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//流水灯控制码,该数组被定义为全局变量

sbit P17=P1^7;

/************************************************************** 函数功能:延时约150ms

**************************************************************/ void delay(void)

{

unsigned char m,n;

for(m=0;m

for(n=0;n

;

}

/************************************************************** 函数功能:发送一个字节的数据

**************************************************************/ void Send(unsigned char dat)

{

P17=0; //P1.7引脚输出清0信号,对74LS164清0

_nop_(); //延时一个机器周期

_nop_(); //延时一个机器周期,保证清0完成

P17=1; //结束对74LS164的清0

SBUF=dat; //将数据写入发送缓冲器,启动发送

while(TI==0) //若没有发送完毕,等待

;

TI=0; //发送完毕,TI被置“1”,需将其清0

}

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

unsigned char i;

SCON=0x00; //SCON=0000 0000B,使串行口工作于方式0

while(1)

{

for(i=0;i

{

Send(Tab[i]); //发送数据

delay(); //延时

}

}

}

//实例42:用定时器T0查询方式P2口8位控制LED闪烁 #include // 包含51单片机寄存器定义的头文件 /************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

// EA=1; //开总中断

// ET0=1; //定时器T0中断允许

TMOD=0x01; //使用定时器T0的模式1

TH0=(65536-46083)/256; //定时器T0的高8位赋初值

TL0=(65536-46083)%256; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

TF0=0;

P2=0xff;

while(1)//无限循环等待查询

{

while(TF0==0)

;

TF0=0;

P2=~P2;

TH0=(65536-46083)/256; //定时器T0的高8位赋初值

TL0=(65536-46083)%256; //定时器T0的高8位赋初值

}

}

//实例43:用定时器T1查询方式控制单片机发出1KHz音频 #include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

// EA=1; //开总中断

// ET0=1; //定时器T0中断允许

TMOD=0x10; //使用定时器T1的模式1

TH1=(65536-921)/256; //定时器T1的高8位赋初值

TL1=(65536-921)%256; //定时器T1的高8位赋初值

TR1=1; //启动定时器T1

TF1=0;

while(1)//无限循环等待查询

{

while(TF1==0)

;

TF1=0;

sound=~sound; //将P3.7引脚输出电平取反

TH1=(65536-921)/256; //定时器T0的高8位赋初值

TL1=(65536-921)%256; //定时器T0的高8位赋初值

}

}

//实例44:将计数器T0计数的结果送P1口8位LED显示 #include // 包含51单片机寄存器定义的头文件

sbit S=P3^4; //将S位定义为P3.4引脚

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

// EA=1; //开总中断

// ET0=1; //定时器T0中断允许

TMOD=0x02; //使用定时器T0的模式2

TH0=256-156; //定时器T0的高8位赋初值

TL0=256-156; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

while(1)//无限循环等待查询

{

while(TF0==0) //如果未计满就等待

{

if(S==0) //按键S按下接地,电平为0

P1=TL0; //计数器TL0加1后送P1口显示

}

TF0=0; //计数器溢出后,将TF0清0

}

}

//实例45:用定时器T0的中断控制1位LED闪烁

#include // 包含51单片机寄存器定义的头文件

sbit D1=P2^0; //将D1位定义为P2.0引脚

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

EA=1; //开总中断

ET0=1; //定时器T0中断允许

TMOD=0x01; //使用定时器T0的模式2

TH0=(65536-46083)/256; //定时器T0的高8位赋初值

TL0=(65536-46083)%256; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

while(1)//无限循环等待中断

;

}

/************************************************************** 函数功能:定时器T0的中断服务程序

**************************************************************/ void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数

//其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

{

D1=~D1; //按位取反操作,将P2.0引脚输出电平取反

TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值

TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值

}

//实例46:用定时器T0的中断实现长时间定时

#include // 包含51单片机寄存器定义的头文件

sbit D1=P2^0; //将D1位定义为P2.0引脚

unsigned char Countor; //设置全局变量,储存定时器T0中断次数

/************************************************************** 函数功能:主函数

**************************************************************/

void main(void)

{

EA=1; //开总中断

ET0=1; //定时器T0中断允许

TMOD=0x01; //使用定时器T0的模式2

TH0=(65536-46083)/256; //定时器T0的高8位赋初值

TL0=(65536-46083)%256; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

Countor=0; //从0开始累计中断次数

while(1)//无限循环等待中断

;

}

/************************************************************** 函数功能:定时器T0的中断服务程序

**************************************************************/ void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数

//其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

{

Countor++; //中断次数自加1

if(Countor==20) //若累计满20次,即计时满1s

{

D1=~D1; //按位取反操作,将P2.0引脚输出电平取反

Countor=0; //将Countor清0,重新从0开始计数

}

TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值

TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值

}

//实例47:用定时器T1中断控制两个LED以不同周期闪烁 #include // 包含51单片机寄存器定义的头文件

sbit D1=P2^0; //将D1位定义为P2.0引脚

sbit D2=P2^1; //将D2位定义为P2.1引脚

unsigned char Countor1; //设置全局变量,储存定时器T1中断次数

unsigned char Countor2; //设置全局变量,储存定时器T1中断次数

/************************************************************** 函数功能:主函数

**************************************************************/ void main(void)

{

EA=1; //开总中断

ET1=1; //定时器T1中断允许

TMOD=0x10; //使用定时器T1的模式1

TH1=(65536-46083)/256; //定时器T1的高8位赋初值

TL1=(65536-46083)%256; //定时器T1的高8位赋初值

TR1=1; //启动定时器T1

Countor1=0; //从0开始累计中断次数

Countor2=0; //从0开始累计中断次数

while(1)//无限循环等待中断

;

}

/************************************************************** 函数功能:定时器T1的中断服务程序

**************************************************************/ void Time1(void) interrupt 3 using 0 //“interrupt”声明函数为中断服务函数

//其后的3为定时器T1的中断编号;0表示使用第0组工作寄存器

{

Countor1++; //Countor1自加1

Countor2++; //Countor2自加1

if(Countor1==2) //若累计满2次,即计时满100ms

{

D1=~D1; //按位取反操作,将P2.0引脚输出电平取反 Countor1=0; //将Countor1清0,重新从0开始计数

}

if(Countor2==8) //若累计满8次,即计时满400ms

{

D2=~D2; //按位取反操作,将P2.1引脚输出电平取反 Countor2=0; //将Countor1清0,重新从0开始计数

}

TH1=(65536-46083)/256; //定时器T1的高8位重新赋初值

TL1=(65536-46083)%256; //定时器T1的高8位重新赋初值

}

//实例50-1:输出50个矩形脉冲

#include //包含51单片机寄存器定义的头文件

sbit u=P1^4; //将u位定义为P1.4

/*************************************************

函数功能:延时约30ms (3*100*100=30 000μs =30m

*************************************************/

void delay30ms(void)

unsigned char m,n;

for(m=0;m

for(n=0;n

;

}

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

unsigned char i;

u=1; //初始化输出高电平

for(i=0;i

{

u=1;

delay30ms();

u=0;

delay30ms();

}

while(1)

; //无限循环,防止程序“跑飞”

}

//实例50-2:计数器T0统计外部脉冲数

#include //包含51单片机寄存器定义的头文件

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x06; // TMOD=0000 0110B,使用计数器T0的模式2 EA=1; //开总中断

ET0=0; //不使用定时器T0的中断

TR0=1; //启动T0

TH0=0; //计数器T0高8位赋初值

TL0=0; //计数器T0低8位赋初值

while(1) //无限循环,不停地将TL0计数结果送P1口

P1=TL0;

}

//实例51-2:定时器T0的模式2测量正脉冲宽度

#include //包含51单片机寄存器定义的头文件

sbit ui=P3^2; //将ui位定义为P3.0(INT0)引脚,表示输入电压

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x0a; // TMOD=0000 1010B,使用定时器T0的模式2,GATE置1 EA=1; //开总中断

ET0=0; //不使用定时器T0的中断

TR0=1; //启动T0

TH0=0; //计数器T0高8位赋初值

TL0=0; //计数器T0低8位赋初值

while(1) //无限循环,不停地将TL0计数结果送P1口

{

while(ui==0) //INT0为低电平,T0不能启动

;

TL0=0; //INT0为高电平,启动T0计时,所以将TL0清0 while(ui==1) //在INT0高电平期间,等待,计时

;

P1=TL0; //将计时结果送P1口显示

}

}

//实例53:用外中断0的中断方式进行数据采集

#include //包含51单片机寄存器定义的头文件

sbit S=P3^2; //将S位定义为P3.2,

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

EA=1; //开放总中断

EX0=1; //允许使用外中断

IT0=1; //选择负跳变来触发外中断

P1=0xff;

while(1)

; //无限循环, 防止程序跑飞

}

/************************************************************** 函数功能:外中断T0的中断服务程序

**************************************************************/ void int0(void) interrupt 0 using 0 //外中断0的中断编号为0

{

P1=~P1; //每产生一次中断请求,P1取反一次。

}

//实例54-1:输出负脉宽为200微秒的方波

#include //包含51单片机寄存器定义的头文件

sbit u=P1^4; //将u位定义为P1.4

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x02; //TMOD=0000 0010B,使用定时器T0的模式2 EA=1; //开总中断

ET0=1; //定时器T0中断允许

TH0=256-200; //定时器T0的高8位赋初值

TL0=256-200; //定时器T0的高8位赋初值

TR0=1; //启动定时器T0

while(1) //无限循环,等待中断

;

}

/************************************************************** 函数功能:定时器T0的中断服务程序

**************************************************************/ void Time0(void) interrupt 1 using 0 //"interrupt"声明函数为中断服务函数 {

u=~u; //将P1.4引脚输出电平取反,产生方波

}

//实例54-2:测量负脉冲宽度

#include //包含51单片机寄存器定义的头文件

sbit u=P3^2; //将u位定义为P3.2

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

TMOD=0x02; //TMOD=0000 0010B,使用定时器T0的模式2

EA=1; //开放总中断

EX0=1; //允许使用外中断

IT0=1; //选择负跳变来触发外中断

ET0=1; //允许定时器T0中断

TH0=0; //定时器T0赋初值0

TL0=0; //定时器T0赋初值0

TR0=0; //先关闭T0

while(1)

; //无限循环, 不停检测输入负脉冲宽度

}

/************************************************************** 函数功能:外中断0的中断服务程序

**************************************************************/ void int0(void) interrupt 0 using 0 //外中断0的中断编号为0

{

TR0=1; //外中断一到来,即启动T0计时

TL0=0; //从0开始计时

while(u==0) //低电平时,等待T0计时

;

P1=TL0; //将结果送P1口显示

TR0=0; //关闭T0

}

//实例55:方式0控制流水灯循环点亮

#include //包含51单片机寄存器定义的头文件

#include //包含函数_nop_()定义的头文件

unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//流水灯控制码,该数组被定义为全局变量

sbit P17=P1^7;

/************************************************************** 函数功能:延时约150ms

**************************************************************/ void delay(void)

{

unsigned char m,n;

for(m=0;m

for(n=0;n

;

}

/************************************************************** 函数功能:发送一个字节的数据

**************************************************************/ void Send(unsigned char dat)

{

P17=0; //P1.7引脚输出清0信号,对74LS164清0

_nop_(); //延时一个机器周期

_nop_(); //延时一个机器周期,保证清0完成

P17=1; //结束对74LS164的清0

SBUF=dat; //将数据写入发送缓冲器,启动发送

while(TI==0) //若没有发送完毕,等待

;

TI=0; //发送完毕,TI被置“1”,需将其清0

}

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

unsigned char i;

SCON=0x00; //SCON=0000 0000B,使串行口工作于方式0

while(1)

{

for(i=0;i

{

Send(Tab[i]); //发送数据

delay(); //延时

}

}

}


相关文章

  • 跑马灯课程设计
  • 摘要:本设计使用89C51芯片,利用P0的8个端口连接8个发光二极管,通过P0.0到P0.7的值控制"跑马灯"的亮灭,以达到显示效果.设计的中断程序要对多个按键动作进行响应,灯光变换的花样有4种,用4个按键k0,k1,k ...查看


  • 单片机与PC机串行通信的毕业论文设计
  • 安徽矿业职业技术学院2015届毕业设计(论文)安徽矿业职业技术学院 毕业课题(设计) 题目单片机与PC串行通信设计 陈玉宝 自动化与信息工程系 电气自动化1201 [1**********]0 吴科良指导教师院班学姓系级号名 二〇一五年六月 ...查看


  • 毕业论文交通灯单片机
  • 毕业论文 交通灯 单 片机 题 目:LED点阵系统设计 系 部:机电工程系 专 业:机电一体化 班 级:098班 姓 名:范旭辉 学 号:2009048042 指导教师:范旭辉 目录 摘要 ......................... ...查看


  • 单片机简易计算器的设计-C语言
  • 基于AT89C51单片机简易计算器的设计 [摘 要]单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子.科技.通信.汽车.工业等.本设计是基于51系列单片机来进行的数字计算器 ...查看


  • 单片机在消防报警系统中的应用
  • 单片机在消防报警系统中的应用 林 巍,杨林冰 (福州大学数学与计算机科学学院福建福州350002) 摘要][:介绍了一种以单片机AT89C51单片机,选用集成温度传感器和气体传感器作为探测元件,利用多传感器信息融合技术,当监测到火情信息后, ...查看


  • 自动存包柜的设计与仿真
  • 自动存包柜的设计与仿真 摘 要 本课题是基于单片机的自动存包柜设计.自动存包柜是新一代的存包柜,具有功能实用.操作简单.管理方便.安全可靠等特点,能够更好的服务于不同市场的广大群众,使用者可以根据简明清晰的操作说明自行完成存包取包工作.本系 ...查看


  • 基于单片机的超声波倒车雷达
  • 摘 要 本文设计了一款基于AT89C51单片机的倒车雷达,它采用ATMEL 公司生产的 A T89C51单片机作为控制核心,片外结合T/R-40-12小型超声波传感器模块.LCD1602液晶显示器模块.报警模块.晶振电路模块以及复位电路等模 ...查看


  • 单片机中断程序
  • 单片机中断程序 单片机中断程序 |2009-07-05 11:32_woodpecker| 分类:编程语言| 浏览6268次 求高人帮我分析下这段C程序 小弟刚学单片机,对于中断定时器了解不是很好 #include // 头文件 #defi ...查看


  • 单片机多中断处理技术的应用与研究
  • 引言 PIC系列单片机中断源已经达到14个.可谓相当丰富:但同时也带来了一些难题:在处理多中断时不具备处理"高级优先处理"能力的问题,如此多的中断源在处理时很容易产生中断冲突,如何有效的处理中断到达时的时序,其算法应该如 ...查看


热门内容