① 单片机中从P1.1引脚输出1000hz方波 晶振频率为12MHZ 定时时间为多少 怎么计算
1000Hz 的周期T=1ms,定时为 半周期 0.5ms=500us,12MHz晶振,机械周期为 1us,定时器初值=65536-(500us/1us)=65036=0xFE0C;
若是想问定时时间,就为500us,若是想问定时器初值,就为 0xFE0C;
MOV R0,#03
MOV TMOD,#01H
SETB TR0
LOOP: MOV TH0,#FC
MOV TL0,#18
LOOP1:JNB TF0,LOOP1
CLR TF0
CPL P1.0
DJNZ R0,LOOP
MOV R0,#03
CPL P1.1
SJMP LOOP
(1)单片机晶振12mhz扩展阅读:
在电子技术中,脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号。脉冲信号之间的时间间隔称为周期;而将在单位时间(如1秒)内所产生的脉冲个数称为频率。频率是描述周期性循环信号(包括脉冲信号)在单位时间内所出现的脉冲数量多少的计量名称;
频率的标准计量单位是Hz(赫兹)。电脑中的系统时钟就是一个典型的频率相当精确和稳定的脉冲信号发生器。
② 设MCS-51单片机的晶振频率为12MHZ,试编写10ms的延时程序(要求误差不超过0.003ms)。
C语言程序:
#include
void main (void)
{
TMOD = 0x10;
TH1 = (-50000>>8);
TL1 = -50000;
TCON = 0x40;
IE = 0x88;
while(1);
}
void T1_int (void) interrupt 3
{
TH1 = (-50000>>8);
TL1 = -50000;
}
汇编程序如下:
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP T1INT
ORG 0100H
MAIN:
MOV TMOD, #10H
MOV TH1, #HIGH(-50000)
MOV TL1, #LOW(-50000)
MOV TCON, #40H
MOV IE, #88H
AJMP $
T1INT:
PUSH ACC
MOV TH1, #HIGH(-50000)
MOV TL1, #LOW(-50000)
POP ACC
RETI
Keil C51程序设计中几种精确延时方法
延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。
使用定时器/计数器实现精确延时
单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。
本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC语句。
执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。
③ STC89C52单片机为什么选用12M的晶振
个人以为,选用12M晶振主要有两个理由,一是运行速度快,二是51单片机内部是12分频,采用12M晶振可以得到1μS的的时钟周期,这样定时计算会比较方便。
④ 设单片机晶振频率为12MHz,求振荡周期、状态周期、机器周期各为多少
振荡周期:1/12 us。
状态周期:1/6 us。
机器周期:1 us。
⑤ 单片机中晶振频率为12MHZ的机器周期怎么算
1、机器周期=晶振周期*12.
2、所以单片机中晶振频率为12MHZ的机器周期=12*1/12M=1微秒.
⑥ c51单片机晶振为12Mhz怎么算delay(10000)
很简单,51单片机使用12mhz的晶振,那么机器周期就是1us执行一条延时指令。10000条延时指令估计延时10ms左右,你可以使用仿真软件试一试时间。