求编写20ms左右的延时程序,晶振频率为4MHZ
发布网友
发布时间:2022-04-23 11:21
我来回答
共5个回答
热心网友
时间:2023-10-12 06:05
嘿嘿
这个俺可以帮助你
就是编一个延时子程序,利用执行指令消耗的时间进行延时
即为软件延时
晶振频率为12mhz
则一个机器周期=1微秒
执行一条指令一般要1微秒
或
2微秒。
具体指导
可以去看百度右上角的私信。
呵呵
满意
就选满意回答啊
热心网友
时间:2023-10-12 06:05
晶振频率为4MHZ,则一个机器周期为3us.延时20ms需要的周期数为
20*10^3/3=6667
高R6(内循环)设为0FFH,则外循环需要
6667/(255*2+1+2)=13
程序如下:
D20MS: MOV R5, #0DH
D1: MOV R6, #0FFH ;一个周期
DJNZ R6, $ ;两个周期
DJNZ R5, D1
RET
热心网友
时间:2023-10-12 06:06
用定时器比较精确,
下面这个程序是51单片机的定时器中断
晶振频率为4MHZ,则一个时钟周期为25us.
延时20ms需要的周期数为800时钟周期
一个机器周期为12个时钟周期,则800/12=67
main()
{
TMOD=0x01; //设置计时器模式
EA=1; //设中断打开
ET0=1;//设计时器ET0能用
TH0=(65536-67)/256; //设置计时器计数寄存器
TL0=(65536-67)%256;
TR0=1; //启动计时器
}
void T0Int() interrupt 1 using 3 //计时器中断
{
TH0=(65536-67)/256; //重新设置计时器计数寄存器
TL0=(65536-67)%256;
}
这个中断20ms中断一次
热心网友
时间:2023-10-12 06:06
你没有说明你用什么型号的单片机,只能给你51的了。再说学校一般都是以51的讲解。
热心网友
时间:2023-10-12 06:07
sleep(20);