1.请编写一个延时子程序,延时时间不限#include "stdafx.h"
#include
#include
const int Arsize=20;
using namespace std;
int mytime(int sec)
{
clock_t delay=sec*CLOCKS_PER_SEC;
clock_t start=clock();
while(clock()-start>name;
cout
2.晶振为6Mhz 编写一个1S延时的子程序怎么写用中断,定时器工作方式1,计数最大数为65536,那么从15536开始计数,达到65536要计50000次,6M的晶振机器周期为2微秒,那么溢出一次耗时为100000微秒,计数溢出10次即为1秒钟
ORG 000BH
AJMP TIME0
ORG 30H
MAIN:
MOV 30H,#00H;先把30H地址的数据清零,用做给溢出计数用
MOV TMOD,#00000001B
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0
LOOP:AJMP LOOP
TIME0:PUSH ACC
PUSH PSW
INC 30H;进入中断后就自增
MOV A,30H
CJNE A,#10,T_RET;看计数器的溢出到了10次没,没有就跳到T_RET再继续从15536计数
T_L1:延时1秒到了,写自己的程序吧 。
MOV 30H,#00H;记得把溢出计数器再次清零
T_RET:MOV TH0,#3CH
MOV TL0,#0B0H
POP PSW
POP ACC
RETI
END
3.单片机延时子程序【延时子程序怎么写】汇编:
DELAY: ;误差 0us
MOV R6,#0D7H
DL0:
MOV R5,#2DH
DJNZ R5,$
DJNZ R6,DL0
NOP
NOP
RET
C语言:void delay(void) //误差 0us
{
unsigned char a,b;
for(b=215;b>0;b--)
for(a=45;a>0;a--);
_nop_; //if Keil,require use intrins.h
_nop_; //if Keil,require use intrins.h
}
4.延时子程序实现原理1、比较死板的方法是自己写一个delay函数,里面用for,while等做一些循环,下面是1ms的延时函数
void delay1ms(void)
{
unsigned char i,j;
for(i=0;ifor(j=0;j}
具体算法是//(3j+2)*i=(3*33+2)*10=1010(us),但精确度不高,如果想准确点可以调节相应的参数用示波器来实
现,上面的函数适用于程序简单,对时间性要求不高,如:点led灯,单个按键操作等等 。
2,就是用定时器中断里面设定标志位来产生延时的方法,比如你可以把定时器设定为每1ms进一次中断,在中断里面
把一个标志位(如flag)置一
当你需要1ms延时的时候你可以先初始化定时器,然后查询标志位是否置一,置一则执行if后面的语句,即if(fla{};
当你需要10ms延时时,你可以把flag设置为uchar,中断里面flag++;外面查询用if(10==flag){};
以此类推,上面的方法精确度高适用地方 。
- 煜的拼音 煜的拼音怎么读音
- 郫字怎么读 郫这个字怎么读
- 宝宝皮肤过敏怎么办 皮肤过敏吃什么食物
- 福州大学厦门工艺美术学院怎么样,是几本的 福州大学厦门工艺美术学院哪个好
- 二次函数顶点式的套公式 2次函数顶点式公式怎么变
- 拉稀像拉水一样怎么办 拉稀拉成水状应该怎么办
- 怎样消除音响的滋滋声 音响有滋滋声怎么解决
- 怎么治疗假性近视 儿童假性近视怎么治疗
- 他字英文怎么写
- 怎么写工资冻结申请书