设振荡频率12MHz,如果用定时器/计数器T0产生周期为100ms的方波,可以选择哪几种方式?其初值分别设为多少?

作者&投稿:查庭 (若有异议请与网页底部的电邮联系)
设振荡频率为12MHz,如果用定时/计数器T0产生周期为100ms的方波,可以选择哪几种方~

查询方式和中断方式都可以实现!解释如下:

由于振荡频率为12MHz,
如果按常规标准的12分频的51系列单片机算的话,一个机器周期就是1uS。
定时器/计数器数值每加1以就是一个机器周期(这里是1uS)。
定时/计数器T0产生周期为100ms的方波,则定时器/计数器T0定时时间为50mS。
由于50mS = 50000uS 所以T0只能选择工作方式1(方式1的最大计数值为65536,大于50000)
则定时器初值为 T = 65536 - 50000 = 15536 = 3CB0H
如果这个方波由P1.0口输出,就是P1.0口每隔50mS去反一次。具体程序如下:

查询方式:
ORG 0000H
AJMP MAIN
ORG 0200H
MAIN : MOV TMOD , #01H //设置T0为定时方式,工作方式1
MOV TH0 , #3CH //给定时器T0置初值
MOV TL0 , #B0H
SETB TR0 //启动定时器T0
LOOP:JBC TF0 , NEXT //查询计数溢出没有,TF0=1时溢出则转NEXT执行
SJMP LOOP //未溢出则继续查询
NEXT :CPL P1.0 //取反,输出方波,至于你用哪个口输出,可以自己选择
SJMP LOOP

中断方式:
ORG 0000H //主程序入口地址
AJMP MAIN
ORG 000BH //中断处理程序入口地址
CPL P1.0 //取反,输出方波
MOV TH0 , #3CH //给定时器T0置初值,使之重新定时
MOV TL0 , #B0H
RETI //中断返回
ORG 0300H
MAIN : MOV TMOD , #01H //设置T0为定时方式,工作方式1
MOV TH0 , #3CH //给定时器T0置初值
MOV TL0 , #B0H
SETB EA //开中断
SETB ET0 //T0中断允许
SETB TR0 //启动定时器T0
SJMP $

希望对你有帮助!

;
ORG 0000H
MOV TMOD, #01H
SETB TR0
LOOP:
MOV TH0, #(65536 - 50000) / 256
MOV TL0, #(65536 - 50000) MOD 256
JNB TF0, $
CLR TF0
CPL P2.0
JMP LOOP

END

1、振荡频率12MHz,对于标准51单片机,指令周期为1MH。
2、最好使用中断来实现这个功能,周期100ms,也即每50ms对输出引脚进行一次取反操作,初值可赋值为65536-50000=15536=3CB0H


单片机的外部晶振为什么要用12MHz
你爱用多少用多少,即使你自己用rc+施密特搭建个振荡器都行。多数使用12m的原因是:51的一条机器语言从取址到执行完毕要用12个震荡周期。采用12m晶振能够比较好的预测时间。这也是高等cpu采用流水线避免资源浪费的原因。

单片机的振荡频率为12MHz则12分频后定时器T0最大的定时时间
12Mhz 12分频 就是1us,, 定时器有65536个计数值,最大就是65.536ms。

已知51单片机系统的外接晶体震荡器的振荡频率为12MHZ.请计算该单片机的...
一个机器周期,是 12 个振荡周期。即 12\/12MHz = 1us。

若单片机的振荡频率为12mhz,设定时器工作在方式2需要定时0.1ms,则定时...
方式2 定时器初值为 256-100=156 换成十六进制是 0x9c

已知一单片机系统的外接晶体振荡器和震荡频率为12MHz,请计算该单片机系 ...
一个机器周期,是 12 个振荡周期。即 12\/12MHz = 1us。

假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms...
定时器的初值的计算如下:在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12M晶振,则定时器的计数频率为1MHZ。假设定时时间为T,机器周期为T1,即12\/晶振频率。X为定时器初值。则 X=2^n-T\/T1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8 ...

假设51单片机振荡频率为12MHZ,要求定时\/计时器0定时100μs,则可以选择...
你最好用8位自动重装载模式,当然其他模式也可以,其实4种模式都可以。初始值为:156 TMOD=0x02;TH0=156;TL0=156;

12个晶振的振荡周期是多少?
12*时钟周期=12*(1\/6)us。振荡周期:石英振荡器的振荡周期,为频率的导数,如石英频率为12MHz12MHz,在振荡周期为1\/12us1\/12us。状态周期:单片机完成一个最基本动作需要的时间周期,1个状态周期=2个振荡周期,单片机完成一次完整的具有一定功能的动作所需要的时间周期,1个机器周期=6个状态周期=...

一般的51系列的单片机晶振频率有6、12Mhz,为什么我们老师说其运行速度...
我举个例子吧,假如是12Mhz的晶振,那么执行速度是12分之1的晶振频率,也就是1Mhz的执行速度。而mcs 51单片机(一般指课本上那些过时的货色,像宏晶就不同,好像震荡周期最高33Mhz)最高的晶振频率就是24Mhz,这个是有数据可查的,你可以查看at89s51的数据手册,高于这个频率可能工作就不稳定或者不能...

当80C51单片机晶振频率为12MHz时,时钟周期.机器周期各是多少?_百度知 ...
当80C51单片机晶振频率为12MHz时,时钟周期为(1\/12)微秒,机械周期为1微秒。时钟周期:一个时钟脉冲所需要的时间。在计算机组成原理中又叫T周期或节拍脉冲。是CPU和其他单片机的基本时间单位。它可以表示为时钟晶振频率(1秒钟的时钟脉冲数)的倒数(也就是1s\/时钟脉冲数,比如1\/12MHz),对CPU来说,...

罗山县18144902622: 设振荡频率12MHz,如果用定时器/计数器T0产生周期为100ms的方波,可以选择哪几种方式?其初值分别设为多少? -
微怖延诺:[答案] 1、振荡频率12MHz,对于标准51单片机,指令周期为1MH. 2、最好使用中断来实现这个功能,周期100ms,也即每50ms对输出引脚进行一次取反操作,初值可赋值为65536-50000=15536=3CB0H

罗山县18144902622: 假设单片机系统的晶振频率为12MHz,要求采用定时器时50毫秒,计算计数器的计数初值. -
微怖延诺:[答案] 1、已知单片机系统机器周期为时钟周期的12倍,故每个机器周期为12/12M=1us 2、50ms=50*1000us 3、16位定时器的定时时间最长为65536us,定时50us的初值为65536-50*1000=0x3cB0 4、0x3cb0就是初值,其中TH=0x3c,TL=0xb0

罗山县18144902622: 假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms,计算出初值并写出整个 -
微怖延诺: 1.全局中断没有开启,所有中断响应将不被执行! 2.定时器/计数器0设置定时时间20000us,却没有被使能! *****************************************************/#include<at89x52.h>void main(void) { P0=0x00;P1=0x80;P2=0x00;P3=0x00; ...

罗山县18144902622: 假设单片机的晶体振荡器的频率是12mhz,利用定时器1工作方式0定时500ms -
微怖延诺: 单片机晶振12M,一个机器周期是1us,定时500ms需要500000个机器周期,一次中断无法完成定时,需要多次定时才能实现,一次中断最大定时时间是65.536ms,可以取一个整数,比如50ms,那么定时器的初值为: TH0=(65536-50000)/256;...

罗山县18144902622: 已知单片机的晶振频率为12MHZ,试利用定时器T1在P1.0引脚上输出矩形波,矩形波的高 -
微怖延诺: 晶振12M,机器周期1uS

罗山县18144902622: 如果晶振频率12MHz, 试用定时器编写程序,完成一蜂鸣器响1S,停0.5S 的程序? -
微怖延诺: 一次定时50ms,中断20次和10次就 是1S和0.5s uchar a=0; sbit fmq=P1^0; 主程序:void main( ) { TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; while(1) { fmq=1; a=20; while(a!=0);//等待20次中断 ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网