假设51单片机振荡频率为12MHZ,要求定时/计时器0定时100μs,则可以选择几种工作方式?其初始值为多少?

作者&投稿:吁苗 (若有异议请与网页底部的电邮联系)
假设51单片机振荡频率为12MHZ,要求定时/计数器1工作在方式2,并令P1.0端口输出周期为20~

#include
sbit pluse=P1^0;
void t1isr() interrupt 3
{
pluse=~pluse;
}
main()
{
TMOD=0x20;
TH1=156;
TL1=156;
TR1=1;
ET1=1;
EA=1;
while(1);
}

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

由于振荡频率为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 $

希望对你有帮助!

你最好用8位自动重装载模式,当然其他模式也可以,其实4种模式都可以。
初始值为:156
TMOD=0x02;
TH0=156;
TL0=156;

(1) 16bit
TMOD = 0x01; //设置定时器模式
TL0 = 0x9C; //设置定时初值
TH0 = 0xFF; //设置定时初值

(2) 13bit
TMOD 0x00; //设置定时器模式
TL0 = 0xE0; //设置定时初值
TH0 = 0xFC; //设置定时初值

(3) 8bit auto reload
TMOD = 0x02; //设置定时器模式
TL0 = 0x9C; //设置定时初值
TH0 = 0x9C; //设置定时重载值

(4) 8bit
TMOD = 0x03; //设置定时器模式
TL0 = 0x9C; //设置定时初值

#include <reg51.h>
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0FF;
TL0 = 0x9C;
EA = 1;
ET0 = 1;
TR0 = 1;
}

中断的

(1) 16bit
TMOD = 0x01; //设置定时器模式
TL0 = 0x9C; //设置定时初值
TH0 = 0xFF; //设置定时初值
(2) 13bit
TMOD 0x00; //设置定时器模式
TL0 = 0xE0; //设置定时初值
TH0 = 0xFC; //设置定时初值
(3) 8bit auto reload
TMOD = 0x02; //设置定时器模式
TL0 = 0x9C; //设置定时初值
TH0 = 0x9C; //设置定时重载值
(4) 8bit
TMOD = 0x03; //设置定时器模式
TL0 = 0x9C; //设置定时初值


为什么51单片机用的是12M晶振,但是出来的速度是相当于1M晶振的?_百度...
MCS-51的一个机器周期需要6个时钟信号即12个振荡周期。由此可知如果晶振12MHz,则机器周期频率就是1MHz,也就是你所说的“出来的速度是相当于1M晶振”,其实这个廉洁不准确,不是出来的速度是相当于1M晶振,而是机器周期频率就是1MHz。具体请参阅相关电路图。

51单片机的振荡电路有什么不同?
3、产生信号 内部时钟方式:单片机的XTAL1和XTAL2内部有一片内振荡器结构,但仍需要在XTAL1和XTAL2两端连接一个晶振和两个电容才能组成时钟电路,使用晶振配合产生信号。外部时钟方式:直接向单片机XTAL1引脚输入时钟信号方波,而XTAL2管脚悬空。

51单片机的机器周期和晶振频率有何关系?当fOSC=8MHz时,机器周期是多少...
机器周期X振荡频率= 12。当fosc=8MHz时,机器周期为1.5微秒。因为规定一个机器周期为12个振荡周期,而振荡周期是振荡频率fosc的倒数,所以一个机器周期=12\/fosc,当fosc=8MHz时,代入公式,机器周期为12\/(8MHz)s,即1.5us。

51单片机的机器周期是多少?
1.大部分51单片机1个机器周期=12个时钟周期(或振荡周期),有些增强型的1个机器周期=1个时钟周期(或振荡周期),如stc12系列,stc15系列 2.51单片机的机器周期=1\/晶振频率;当晶振频率=11.0592MHz,1个机器周期=12个时钟周期(或振荡周期)时,机器周期=12\/11.0592微秒。

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

当51单片机振荡脉冲频率为6MHz是,分别计算节拍P,状态S,机械周期T?_百 ...
节拍P(Phase) = 1\/振荡频率 = (1\/6) μs 状态S(State) = 2P = (1\/3) μs 机器周期T(Machine Cycle) = 6S = 2 μs 好好学习天天向上

假设51单片机振荡频率为12MHZ,要求定时\/计数器1工作在方式2,并令P1.0...
include<reg51.h> sbit pluse=P1^0;void t1isr() interrupt 3 { pluse=~pluse;} main(){ TMOD=0x20;TH1=156;TL1=156;TR1=1;ET1=1;EA=1;while(1);}

51单片机用多大频率的晶振好呢,11.0592m和12m有什么区别?立创商城的晶 ...
晶振的振荡频率,要根据单片机的具体应用场合来决定,并不是越高越好。11.0592MHz和12MHz的振荡频率相差不大,但如果你的单片机需要用异步串行通信功能的话,建议你选用11.0592MHz的振荡频率。因为你在进行波特率发生器的编程中,采用这个振荡频率的话,波特率计数器的计数初值可以是整数;而采用12MHz振...

单片机的晶振频率怎么确定?
根据使用需要确定,举例:如果要产生标准的串口波特率,应使用11.0592MHz,如果要让51单片机产生整数的时钟频率可使用12MHz或者24MHz单片机。另外根据单片机本身的参数,不要选择过高的频率,否则会工作不稳定。举例:Atmega8L-8PU,这个单片机后面一个8的意思就是建议最大工作频率不要超过8MHz,如果超过8MHz...

51单片机振荡电路
首先,自己在纸上画上一个反相放大器,即是那个符号是三角形前面有个圈圈的。xtal1是输入口,xtal2是输出口。接晶振时候,是需要反相放大器帮助起振动,而接外部振荡器时候,已经有振荡波了,就务必要使用反相放大器了,所以直接xtal2.

林周县15385453925: 若MCX51单片机的时钟频率为12MHZ,则状态周期为多少微秒? -
赤芸复方:[答案] 振荡周期为频率的到数1/12us,一个状态周期等于2个振荡周期,1/6us

林周县15385453925: 当80C51单片机晶振频率为12MHz时,时钟周期.机器周期各是多少? -
赤芸复方: 当80C51单片机晶振频率为12MHz时,时钟周期为(1/12)微秒,机械周期为1微秒. 时钟周期:一个时钟脉冲所需要的时间.在计算机组成原理中又叫T周期或节拍脉冲.是CPU和其他单片机的基本时间单位.它可以表示为时钟晶振频率(1秒...

林周县15385453925: 设51单片机晶振频率为12MHZ,延时1m的子程序 -
赤芸复方: 猜想你问的是1ms. 下面为你写出1ms的程序: 用的是11.0592M的,你如果真的需要是12M的,那自己直接修改成12M就可以了.调用的时候直接把uinsigned int ms改成1就是1ms.void ConfigTimer0(unsigned int ms) {unsigned long tmp;tmp =...

林周县15385453925: 已知51单片机系统的外接晶体震荡器的振荡频率为12MHZ.请计算该单片机的一个机器周期是多少? -
赤芸复方: 一个机器周期,是 12 个振荡周期. 即 12/12MHz = 1us.

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

林周县15385453925: 80C51单片机,振荡频率是12MHZ,用定时/计数器T1实现从P1.1产生周期是2s的方 -
赤芸复方: 主程序里设置:uchar a=0;TMOD=0x10;ET1=1;EA=1; TH1=(65536-50000)/256;//定时50ms 20次是1STL1=(65536-50000)%256;TR1=1; 中断程序:void timer1( ) interrupt 3{ TH1=(65536-50000)/256;//定时50ms TL1=(65536-50000)%256; a++; if(a==20} { a=0; P1.1=~P1.1; }}

林周县15385453925: 80c51单片机若晶振频率为fosc=12MHz,一个机器周期? -
赤芸复方: 单片机的晶振为6mhz,说明1s产生6 000 000个脉冲,那么1个脉冲的时间是1/6 000 000 s 即时钟周期为1/6 000 000 s,12个时钟周期=1个机器周期 所以1/6 000 000 s*12=2us即机器周期=2us

林周县15385453925: 设MCS - 51单片机的晶振频率为12MHZ,使用定时器1工作方式1中断方式在P1输出周期为100ms的方波 -
赤芸复方: ;ORG 0000HSJMP STARTORG 0001BHMOV TH1, #(65536 - 50000) / 256MOV TL1, #LOW(65536 - 50000)CPL P1.0RETI START:MOV TMOD, #10HMOV TH1, #(65536 - 50000) / 256MOV TL1, #LOW(65536 - 50000)SETB TR1MOV IE, #88HSJMP $END

林周县15385453925: 51单片机晶振频率为12MHz,利用中断在P1.1口输出50HZ的方波,C语言,哪位大侠帮帮忙,帮忙写个程序 -
赤芸复方: #include <reg51.h>sbit port=P1^1;void Timer0Init(void) //10毫秒@12.000MHz {TMOD &= 0xF0; //设置定时器模式TMOD |= 0x01; //设置定时器模式TL0 = 0xF0; //设置定时初值TH0 = 0xD8; //设置定时初值TF0 = 0; //清除TF0标志TR0...

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