单片机编程各种实例 上百个例题(7)

2019-02-15 17:30

while(1)

; //防止程序“跑飞” }

//实例39:宏定义应用举例2

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

# define F(a,b) (a)+(a) (b)/256+(b) //带参数的宏定义,a和b为形参 void main(void) { 参 }

//实例40:宏定义应用举例2

#include #include void main(void) {

P3_0=0; //将P3.0引脚置低电平,LED点亮 P3_1=0; //将P3.0引脚置低电平,LED点亮 P3_2=0; //将P3.0引脚置低电平,LED点亮 P3_3=0; //将P3.0引脚置低电平,LED点亮 P3_4=1; //将P3.4引脚置高电平,LED熄灭 while(1) ;

unsigned char i,j,k; i=40; j=30; k=20;

P3=F(i,j+k); //i和j+k分别为实参,宏展开时,实参将替代宏定义中的形

}

P3_5=1; //将P3.5引脚置高电平,LED熄灭 P3_6=1; //将P3.7引脚置高电平,LED熄灭 P3_7=1; //将P3.7引脚置高电平,LED熄灭 while(1) ;

//实例41:宏定义应用举例3

#include //包含51单片机寄存器定义的头文件 #define MAX 100 //将MAX宏定义为字符串100 void main(void) { }

/

中断、定时器 中断、定时器 中断、定时器 中断、定时器 /

//实例42:用定时器T0查询方式P2口8位控制LED闪烁

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

#if MAX>80 //如果字符串100大于80 P3=0xf0; //P3口低四位LED点亮 #else

P3=0x0f; //否则,P3口高四位LED点亮 #endif

//结束本次编译

/ 函数功能:主函数

/ void main(void) {

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

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

TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%6; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff;

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

//实例43:用定时器T1查询方式控制单片机发出1KHz音频

#include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚

/ 函数功能:主函数

/ void main(void) {

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

while(TF0==0)

TF0=0; P2=~P2;

;

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

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

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

//实例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)//无限循环等待查询

TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%6; //定时器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)%6; //定时器T0的高8位赋初值 }

{

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

{

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

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

#include // 包含51单片机寄存器定义的头文件 sbit D1=P2^0; //将D1位定义为P2.0引脚

/ 函数功能:主函数

/ void main(void) {

EA=1; //开总中断 }

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

/ void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数 //其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式2 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%6; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 while(1)//无限循环等待中断

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

}

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

;


单片机编程各种实例 上百个例题(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:QFSN-330-2-20B发电机作业指导书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: