单片机编程实例大全(8)

2018-11-21 23:38

}

//实例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<100;m++) for(n=0;n<100;n++) ; }

/ 函数功能:主函数

/ void main(void) {

unsigned char i;

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

for(i=0;i<50;i++) //输出50个矩形脉冲 { 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口显示 } }

//实例52:用定时器T0控制输出高低宽度不同的矩形波

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

sbit u=P3^0; //将u位定义为P3.0,从该引脚输出矩形脉冲 unsigned char Countor; //设置全局变量,储存负跳变累计数 / 函数功能:延时约30ms (3 100 100=30 000μs =30ms)

/ void delay30ms(void) {

unsigned char m,n; for(m=0;m<100;m++) for(n=0;n<100;n++) ; }

/ 函数功能:主函数

/ void main(void) {

unsigned char i;

EA=1; //开放总中断 EX0=1; //允许使用外中断

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

for(i=0;i<100;i++) //输出100个负跳变 { u=1; delay30ms(); u=0; delay30ms(); } while(1)

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

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

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

/

Countor++; P1=Countor; }

//实例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 //\声明函数为中断服务函数 {

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)

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

/


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

下一篇:统计表教案

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

马上注册会员

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