设51单片机晶振频率为12MHZ,延时1m的子程序

如题所述

猜想你问的是1ms.
下面为你写出1ms的程序:
用的是11.0592M的,你如果真的需要是12M的,那自己直接修改成12M就可以了。调用的时候直接把uinsigned int ms改成1就是1ms.

void ConfigTimer0(unsigned int ms)
{
unsigned long tmp;
tmp = 11059200/12;
tmp = (tmp * ms)/1000;
tmp = 65536 - tmp;
tmp = tmp + 18;
T0RH = (unsigned char)(tmp >> 8);
T0RL = (unsigned char)tmp;
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = T0RH;
TL0 = T0RL;
ET0 =1;
TR0 = 1;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

设51单片机晶振频率为12MHZ,延时1m的子程序
下面为你写出1ms的程序:用的是11.0592M的,你如果真的需要是12M的,那自己直接修改成12M就可以了。调用的时候直接把uinsigned int ms改成1就是1ms.void ConfigTimer0(unsigned int ms){ unsigned long tmp;tmp = 11059200\/12;tmp = (tmp * ms)\/1000;tmp = 65536 - tmp;tmp = tmp + 18...

51单片机延时一秒函数,晶振12MHZ
void delay1ms(unsigned int t){ unsigned x,y;for(x=t;x>0;x--)for(y=124;y>0;y--);} 把t 改为你要延时的数就可以了,1毫秒就把t改为1 500毫秒就把t改为500

51单片机延时函数的问题。晶振是12MHz..需要延时1秒
很明显 远远超过了1个最小指令.9秒的的误差算少的了...所以说,假如你要做1s的延迟, 最好使用内部时钟中断来做,直接在程序内部delay延时的话,占用系统资源还算不准...具体解释下上图, 为了拿这5分还真不容易...首先, 进入函数就需要5个汇编指令, 这些指令主要是入栈,备份指针的操作, 不同的...

单片机外接12M的晶振,1ms的基准延时函数用C语言怎么写?
名称:delay1ms()功能:延时1ms 晶振:12MHz 机器周期1us 时间计算:t=2+1+995+2=1000us =1.000ms ---*\/ void delay1ms(void) \/\/延时1ms子程序 { unsigned char i,j;for(i=5;i>0;i--)for(j=98;j>0;j--);} 对应汇编 \/*--- 名称:delay1ms 功能:延时1ms 晶振:12MHz ...

51单片机1us延时c语言程序 while语句 晶振12MHZ
51单片机12M晶振延时1us,只需要执行一个NOP就是了。C语言中也是如此。include<reg51.h> include<intrins.h> main(){ _nop_(); \/\/延时1us while(1);}

51单片机用汇编语言设计1S延时子程序,晶振为12MHz。 (麻烦附上详细计算...
如果要精确的延时建议采用中断:include "reg51.h"\/\/timer init void initTimer(void){ TMOD=0x2;TH0=0x6;TL0=0x6;} int T250uS;char T_mark;\/\/timer0\/counter0 interrupt void timer0(void) interrupt 1 { \/\/add your code here.T250uS++;T_mark=0;} void Delay1S(char n){ for(...

速回8051单片机的晶振为12MHz,下面是一段延时子程序,计算出该延时子程序...
R6,DEL2; 双周期2s ③这里循环20*125次,1000T DJNZ R7,DEL1; 双周期2s ④这里循环20次,40T RET; 单周期1s ⑤这里没有循环,1T 总共延时周期数=①+②+③+④+⑤=1062T 12M晶振时1T=1us,所以总延时时间=1062微妙=1.062毫秒 ...

设MCS-51单片机的晶振频率为12MHZ,使用定时器1工作方式1中断方式在P1...
;ORG 0000H SJMP START ORG 0001BH MOV TH1, #(65536 - 50000) \/ 256 MOV TL1, #LOW(65536 - 50000)CPL P1.0 RETI START:MOV TMOD, #10H MOV TH1, #(65536 - 50000) \/ 256 MOV TL1, #LOW(65536 - 50000)SETB TR1 MOV IE, #88H SJMP END ...

51单片机c语言延时函数 Void delay 1ms(unsigned int ms){un
C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。void delay_ms(unsigned int ms_number) \/\/ ms延时函数 (AT89C51 @ 11....

51单片机问题,晶振频率为12mhz,请问我的以下代码能够成功定时1秒吗?谢谢...
程序有错误,将一个16位数据送给一个8位的定时器TH0,编译都通不过。而且初始化是启动了定时器中断,但程序却采用查询方式,也会造成错误的结果。

相似回答