mdsk.net
当前位置:首页 >> 设系统晶振为12mhz >>

设系统晶振为12mhz

delay1ms() { unsigned char i; for(i=0;i} delay: mov r2,#2 delay1: mov r3,#250 djnz r3,$ djnz r2,delay1 ret

ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN:MOV TMOD,#01HMOV TH0,#HIGH(65536-60000)MOV TL0,#LOW(65536-60000)SETB TR0SETB ET0SETB EASJMP $T0ISR:CLR TR0MOV TH0,#HIGH(65536-60000)MOV TL0,#LOW(65536-60000)SETB TR0CPL P1.3RETIEND

机器周期 =12/Fosc = 12/(12MHz) =1μs,4ms方波的半周期=2ms, 计数值 =2ms/1μs =2000 用单片机定时器T1,工作方式1,16位计数寄存器,计数初值 =2^16 -2000 =63536 =F830h;; T1初始化程序:MOV TMOD, #00010000b ;; T1 , 定时模式 ,

TMOD=0x10;TH1=0xFC;L1=0x18;即为高电平时间为1ms.最大定时时间:2^16毫秒t=(2^16-计数初始值)X晶振周期X12.

//----假设,系统工作于 12MHz/12T的传统51单片机下.#include <reg51.h> sbit Test = P1^0; void Delay_50ms(unsigned char Times) { while(Times -- ) { TH0 = 0x3C; //----装入初值,定时器0定时50ms TL0 = 0xB0; TR0 = 1; //-----启动定时器 while(!

这个太简单了,给你个方法,你自己弄吧,不会多看看书.1 使能定时器2 使能定时器中断3 编写中断程序 我估计你是觉得1秒的时间,定时器达不到,你可以在中断里面再自己写个计数,或者开启计数器2,这样两两相乘,时间就能到1秒钟了.要做到精确的定时,就要用计数器2,然后在Keil里可以看到时间,再对定时器进行微调就好了.

嘿嘿 这个俺可以帮助你就是编一个延时子程序,利用执行指令消耗的时间进行延时 即为软件延时晶振频率为12MHz 则一个机器周期=1微秒 执行一条指令一般要1微秒 或 2微秒.具体指导 可以去看百度右上角的私信. 呵呵 满意 就选满意回答啊

1k t=500us+500us 10k t=50us+50us 20k t=25us+25us 1k以上时,最好不要用定时器0工作方式1,里面涉及到软件延时.给你提供一个简单的20khz的方波程序.51单片机接12mhz晶振,定时器0工作方式2.将程序下载到单片机里,测试一下,

时钟周期即晶振的单位时间发出的脉冲数,12MHZ=12*10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒

DELAY1S:MOV R2,#10 DLY1:MOV R3,#200 DLY2:MOV R4,#248 DJNZ R4,$ DJNZ R3,DLY2 DJNZ R2,DLY1 RET

网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com