好文档 - 专业文书写作范文服务资料分享网站

单片机编程100例 

天下 分享 时间: 加入收藏 我要投稿 点赞

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)%6; //定时器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)%6; //定时器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)%6; //定时器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)%6; //定时器T1的高8位重新赋初值 }

*实例48:用计数器T1的中断控制蜂鸣器发出1KHz音频 #include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚 / 函数功能:主函数 / void main(void) {

EA=1; //开总中断

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

TMOD=0x10; //TMOD=0001 000B,使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%6; //定时器T1的高8位赋初值 TR1=1; //启动定时器T1 while(1)//无限循环等待中断 ; }

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

/ void Time1(void) interrupt 3 using 0 //“interrupt”声明函数为中断服务函数 { sound=~sound;

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

*实例49:用定时器T0的中断实现\渴望\主题曲的播放 #include //包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7 unsigned int C; //储存定时器的定时常数 //以下是C调低音的音频宏定义

#define l_dao 262 //将“l_dao”宏定义为低音“1”的频率262Hz #define l_re 286 //将“l_re”宏定义为低音“2”的频率286Hz #define l_mi 311 //将“l_mi”宏定义为低音“3”的频率311Hz #define l_fa 349 //将“l_fa”宏定义为低音“4”的频率349Hz #define l_sao 392 //将“l_sao”宏定义为低音“5”的频率392Hz #define l_la 440 //将“l_a”宏定义为低音“6”的频率440Hz #define l_xi 494 //将“l_xi”宏定义为低音“7”的频率494Hz //以下是C调中音的音频宏定义

#define dao 523 //将“dao”宏定义为中音“1”的频率523Hz #define re 587 //将“re”宏定义为中音“2”的频率587Hz #define mi 659 //将“mi”宏定义为中音“3”的频率659Hz

单片机编程100例 

sbitD1=P2^0;//将D1位定义为P2.0引脚unsignedcharCountor;//设置全局变量,储存定时器T0中断次数/函数功能:主函数/voidmain(void){EA=1;//开总中断ET0=1;//定时器T0中断允许TMOD=0x01;//使用定时器T0的模式2
推荐度:
点击下载文档文档为doc格式
937r88egjx8xswm2yhl07916095eiv009an
领取福利

微信扫码领取福利

微信扫码分享