单片机采用 12MHz 晶振,利用定时器 0 中断定时,产生频率为 10Hz,
- 教育综合
- 2024-05-03 17:44:32
单片机晶振频率为12MHZ利用T0定时器产生10ms定时中断采取哪一种工作方式比较适合
工作方式一就行。工作方式二也行。 工作方式一,程序如下, void Init_Timer() { TMOD=0x01; TH0=(-10000)/256; TL0=(-10000)%256; ET0=1; TR0=1; EA=1; } void Timer0() interrupt 1 { //在这里写你的中断代码 TH0=(-10000)/256; TL0=(-10000)%256; } 工作方式二,程序如下: void Init_Timer() { TMOD=0x02; TH0=(-250); TL0=(-250); ET0=1; TR0=1; EA=1; } void Timer0()单片机系统晶振频率为12mhz,利用工作方式1定时器0.中断方式在p2.0输出频率为10hz
根据50ms换算出计数初值,你的晶振是12mhz,那么计数周期就是1微秒,下面计算计数初值: 公司为TH0=(65536-50000)/256, TL0=(65536-50000)%256,然后启动定时器就行了,如果你看了中断还要在中断里面重新载入初值,你也可以用查询法,不断询问定时器0的中断溢出标志,定时时间到也别忘了重新赋值单片机的晶振频率为12MHz,从P1.0输出频率为10KHz的方波,使用定时计数器0,工作于方式2, 用汇编写出程序
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0ISR
ORG0030H
MAIN:
MOVTMOD,#02H
MOVTH0,#206
MOVTL0,#206
SETBTR0
SETBET0
SETBEA
SJMP$
T0ISR:
CPLP1.0
RETI
END
单片机晶振频率为12MHZ,要求定时器/计数器0产生10ms定时,试编写初始化程序
#include
voidmain()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
}
.已知51单片机系统晶振频率为12MHz,请利用定时器1工作方式1,中断方式在P2.3输出频率为10Hz的方波,写出
ORG0000H
SJMPSTART
ORG001BH;T1中断入口。
SJMPT1_INT
MOVTMOD,#10H;设置T1定时方式1
MOVTH1,#(65536-50000)/256;送入初始值。
MOVTL1,#(65536-50000)MOD256;定时50000us@12MHz
MOVIE,#10001000B;开放总中断和T1中断。
SETBTR1;启动T1
MOVTH1,#(65536-50000)/256;重新送入初始值。
MOVTL1,#(65536-50000)MOD256;定时50000us@12MHz
RETI;中断返回
END;完
功能特性
1,可以仿真63K程序空间,接近64K的16位地址空间;
2,可以仿真64Kxdata空间,全部64K的16位地址空间;
3,可以真实仿真全部32条IO脚;
4,完全兼容keilC51UV2调试环境,可以通过UV2环境进行单步,断点,全速等操作;
5,可以使用C51语言或者ASM汇编语言进行调试;
6,可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某变量上就会立即显示出它此的值;
以上内容参考:百度百科-51单片机
展开全文阅读
上一篇
楷书四大家是哪几位?
下一篇
返回列表