导航:首页 > 操作系统 > 51单片机定时器0程序

51单片机定时器0程序

发布时间:2023-09-15 04:20:32

‘壹’ 51单片机中用定时器定时1毫秒,怎么编写

假设晶振为12MHz,不用中断时程序语句如下:
TMOD=0x01;//定时器0工作方式1
TH0=(65536-1000)/256;//装入初值
TL0=(65536-1000)%256;
TF0=0;//清溢出标志;
TR0=1;//启动定时器0
while(TF0==0);//等待定时时间到
TR0=0;
TF0=0;

‘贰’ 使用51单片机,晶振频率为6MHz,使用定时器0,以 方式2,在P1.0输出周期400us, 占空

#include<reg52.h>

sbit P1_1=P1^0;//PWM输出
unsigned int num;//定时器计时标志位,一次40us

/*********************************************************
主函数
**********************************************************/
void main()
{
TMOD=0x02; //设置定时器0工作方式2 (00000010)
TH0=256-20;//40us@6MHz 方式2为八位初值自动装载
TL0=256-20;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
// num = 0;//定时器计时标志位,一次40us
while(1);//等待

}

/********************************************************
中断函数
********************************************************/
void time0() interrupt 1
{
// TL0 = (65536-50) % 256;
// TH0 = (65536-50) / 256; //50us @12MHz
num++;
if(num>=10)num=0;//PWM周期为 40*10=400us
if(num<1)P1_1=0xff;
else P1_1=0x00;
}

周期为:400us,40us产生一次中断,所以占空比为1:9 。占空比为1:10则产生的波形不准确。

‘叁’ 51单片机的,这个程序该怎么整呀

当完成一个问题的编程后,编译链接没有问题,这时就可以进入调试阶段了,调试分软件调试和硬件调试
软件调试可以借助Keil软件调试界面,在运行后观察相应寄存器的值与我们预想的是否一致。
软件调试重点在寄存器的内容,或者变化,如I/O口寄存器,定时器相关寄存器,串口通信相关寄存器等。
硬件调试主要是设计一些外围调试电路用以观察或者显示执行过程。
如我可以用一个I/O口(P1.0)连接一个LED灯来测试单片机能否正常工作,在串口通信的端口串接LED等,指示是否有数据传输等等。
还有更重要的就是使用仪器进行测量调试,万用表和示波器是基本配置,用好示波器,对调试及故障排查解除有非常大的帮助
以上都将帮助我们快速将一个项目调试成功。
面包板调试
面包板调试
调试

‘肆’ 51单片机定时器的汇编语言程序编程,

LED BIT P1.0 ;定义LED的引脚
ORG 0000H

LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H ;定时器0工作模式1
MOV TH0,#HIGH(65536-50000) ;初值,50毫秒中断一次
MOV TL0,#LOW(65536-50000)
SETB TR0 ;启动定时器
SETB ET0 ;启动定时器中断
SETB EA ;开总中断
MOV R2,#40 ;中断计数初始值
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E ;R2减到0重新赋值,否则退出
MOV R2,#40
CPL LED ;LED亮灭转换
T0E:
RETI
END

‘伍’ 51单片机定时中断C语言的写法步骤,可追加分数

程序说明:51单片机定时器0工作于方式一,定时50ms中断一次
晶振为12M
#include

void
main
{
TOMD
=
0X01;
//配置定时器0工作于方式一
TH1
=
(65536-50000)/256;
//高八位装入初值
TL1
=
(65536-50000)%256;
//低八位装入初值
ET0
=
1;
//开定时器0中断
EA
=
1;
//开总中断
TR0
=
1;
//启动定时器0
while(1)
{

}
}
void
Timer0_int()
interrupt
1
{
//重新装初值
TH1
=
(65536-50000)/256;
//高八位装入初值
TL1
=
(65536-50000)%256;
//低八位装入初值
}
/***************************************************************************************************************/
上面是比较好理解的。如果实在要求简洁的话,看下面的,跟上面功能一样
#include

void
main
{
TOMD
=
0X01;
//配置定时器0工作于方式一
TH1
=
0x3c;
//高八位装入初值
TL1
=
0xb0;
//低八位装入初值
IE
=
0x82;//开总中断并开定时器0中断
TR0
=
1;
//启动定时器0
while(1)
{

}
}
void
Timer0_int()
interrupt
1
{
//重新装初值
TH1
=
0x3c;
//高八位装入初值
TL1
=
0xb0;
//低八位装入初值}

阅读全文

与51单片机定时器0程序相关的资料

热点内容
pdf阅读器官方 浏览:80
程序员那么爱心 浏览:300
字符a经过md5加密 浏览:413
绿色的小蝴蝶是个什么app 浏览:11
python编程输入数字输出年月日英文 浏览:622
程序员枪手 浏览:743
gm28服务器怎么设置 浏览:538
饿了么网站源码 浏览:328
天选程序员真的有用吗 浏览:914
微信登录服务器什么意思 浏览:349
溯源码粘碎图 浏览:133
qq绑定邮箱pop服务器地址 浏览:722
卡罗拉空调压缩机价格 浏览:891
华润it程序员 浏览:552
51单片机c语言秒表 浏览:272
php一周前的时间 浏览:851
windows文件夹输入列表 浏览:918
php做网页聊天系统 浏览:888
鼠标光学传感器读取单片机 浏览:165
食品批号的app是什么 浏览:194