//实例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(); //延时
}
}
}