80C51单片机设计一个延时20ms的子程序,时钟为6MHZ.写出计算过程

作者&投稿:柞肤 (若有异议请与网页底部的电邮联系)
设计一个延时10ms的延时子程序,已知单片机的晶振为6MHZ,写出时间的计算过程。要求精确到一个机器周期~

适合STC89CXX单片机:

void Delay10ms()//@6.000MHz
{
unsigned char i, j;

i = 10;
j = 183;
do
{
while (--j);
} while (--i);
}

嘿嘿 先给你改个错误:在使用6MHz晶振时,1个机器周期为1us,是不对的。
51单片机在使用6MHz晶振时 1个机器周期=12/6MHz=2us
可以编写100ms延时子程序 调用子程序YS100MS 就可以延时100ms
YS100MS: MOV R7,#100
L1: MOV R6,#250
DJNZ R6,$;
DJNZ R7, L1
RET

延时时间=(R6*2*2us)×R7=(250*2*2us)×100=100000us=100ms

呵呵 满意 就选满意回答

把定时器设置成定时模式方式1,使用T0,则TMOD=0x01
6Mhz对应的机器周期是2us
则定时时间=(最大值-X)*2us
20ms =( 65536-X )*2us x=55536 对应的十六进制 D8F0
所以TH0=0xD8,TL0=0xF0
开中断 ET0=1;EA=1
启动定时器TR0=1


c51单片机数码管显示0到99
C51单片机是一种基于8051架构的微控制器,广泛应用于各种嵌入式系统中。它具有多个I\/O端口,这些端口可以直接与数码管的段和位相连。数码管是一种常见的显示器件,它可以显示数字和一些特定的字符。为了在数码管上显示0到99的数值,我们需要做几件事情:1. 编码:首先,我们需要为每个数字(0-9)创建...

单片机应用及C51程序设计的内容简介
(4)设计了31个大的实践项目,并提供60多个从易到难可直接运行演示的程序实例;(5)每个程序实例都有详细的说明和注释,演示内容饶有趣味,其中许多C函数可以作为模块资源来加以利用。《单片机应用及C51程序设计(第2版)》可以用做高等院校、中等职业技术学校的教材和参考书,在单片机教学、实验、实训、...

C51单片机闭环控制系统的设计
mov Minute,#0 NotOver1:jnb MinuteKey,CheckHourKey:jb HourKey,CheckAlarmA mov a,Hour add a,#1 mov Hour,a cjne a,#18h,NotOver2 mov Hour,#0 NotOver2:jnb HourKey,CheckAlarmA:jnb AlarmTimeOnA,CheckAlarmP call StartPc; call AlarmProcess ajmp ToReturn CheckAlarmP:jnb AlarmTime...

C51单片机设计一个游客流量计数器(00-99),实现对游客人数的统计。_百度...
include<reg51.h>#define uchar unsigned charuchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};\/\/0-9uchar scanled;uchar disdat[6]={0,0,0,0,0,0};uchar datin,datout,dath;display(){disdat[0]=datin\/10;disdat[1]=datin%10;disdat[2...

我需要 单片机原理与C51程序设计教程(第2版),这种热门教材百度网盘资 ...
https:\/\/pan.baidu.com\/s\/1fCxsmG0kPdEBWTS9ASoPIQ 提取码:1234 《单片机原理与C51程序设计教程(第2版)》是2014年清华大学出版社出版的图书。单片机作为微型计算机的一个重要分支,应用面很广,发展也很快。尽管单片机种类繁多,但其中最为典型、应用最广泛的仍当属Intel公司的51系列单片机。本书...

用C51单片机设计一个指示灯闪烁程序,要求:亮1秒钟,灭2秒钟
include <reg51.h> sbit led=P1^0;unsigned char a;void init(){ TMOD=0x01;TH0=(65536-50000)\/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;} void main(){ init();while(1){ if(a==60){ a=0;if(a<=20)led=0; \/\/LED亮 else led=1; \/\/LED灭 } } } void ...

51单片机关于密码锁的毕业设计,论文
TH0=(65536-500)\/256;TL0=(65536-500)%6;TR0=1;ET0=1;EA=1;while(1){ if(cmpflag==0){ if(P3_6==0) \/\/function key { for(i=10;i>0;i--)for(j=248;j>0;j--);if(P3_6==0){ if(hibitflag==0){ funcount++;if(funcount==pslen+2){ funcount=0;cmpflag=1;}...

c51单片机c语言交通灯的程序
sbit k4=P3^0;sbit k5=P3^1;sbit Yellow_nb=P2^5; \/\/南北黄灯标志 sbit Yellow_dx=P2^2; \/\/东西黄灯标志 sbit Green_nb=P2^4;sbit Green_dx=P2^1;sbit Buzz=P3^7;bit Buzzer_Indicate;bit time=0;\/\/灯状态循环标志 bit set=1;\/\/调时方向切换键标志 uchar code table...

单片机C51设计电子密码锁的程序 goto(1,0)和按键是怎么识别的_百度知 ...
密码锁 按键一般是 矩阵键盘 ,识别键盘是通过发送扫描码,比如行扫描,发送行扫描码,依次检测列状态。goto(1,0)是不对的,因为这里goto是内部关键字,不会允许使用,程序里面是gotoxy(1,0),这应该是显示位置,比如这个,就是0行1列。

编程,单片机C51编程
可根据用户在菜单中的选择项对测点进行某些设置,或者进行某些特殊的显示,例如对某个测点的实时曲线显示等。程序设计根据需求,首先建立一个结构,并定义一个结构变量kbdtabst ruct 。结构变量就是把多个不同类型的变量结合在一起形成的一个组合型变量,构成一个结构的各个变量称为结构元素。该结构中共有6...

吴忠市17035979276: 80C51单片机设计一个延时20ms的子程序,时钟为6MHZ.写出计算过程 -
畅彬诺易: 把定时器设置成定时模式方式1,使用T0,则TMOD=0x01 6Mhz对应的机器周期是2us 则定时时间=(最大值-X)*2us20ms =( 65536-X )*2us x=55536 对应的十六进制 D8F0 所以TH0=0xD8,TL0=0xF0 开中断 ET0=1;EA=1 启动定时器TR0=1

吴忠市17035979276: 单片机80c51,用汇编,编写一个延时子程序,通过调用此程序实现在p1.0输出周期为10ms的方波 -
畅彬诺易: ORG 0000H AJMP MAIN ORG 000BH T0MS EQU NOT 5000 ; 定义定时器初值 12M晶振 5 mS = 5000 10 mS = 10000 MOV TL0, #LOW T0MS MOV TH0, #HIGH T0MS CPL P1.0 ; P1.0 取反 输出 10 mS的方波 REIT MAIN:MOV TMOD,#01H MOV TL0, #LOW T0MS MOV TH0, #HIGH T0MS SETB TR0 ; 启动定时器 SETB ET0 ; 开 T0 中断 SETB EA ; 开 总 中断 SJMP $ END

吴忠市17035979276: 80c51单片机120秒延时程序怎么编写
畅彬诺易: void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110000;y>0;y--);}调用delay(120);即可

吴忠市17035979276: 编写一段延时程序,实现5mS延时,单片机晶振频率为12MHz;编写程序,让连接在80C51单片机P1.0引脚上的LED按设定的时间(500mS)间隔闪烁,单片机晶振频率为12MHz;利用定时/计数器T0工作在方式1,使连接到P1.0引脚的发光二极管闪烁,间隔时间为1秒.晶振频率为 -
畅彬诺易: 晶振12Mhz时一个机器周期刚好是1纳秒,方便计算,你是要C语言的还是汇编的

吴忠市17035979276: 想利用51单片机做一个延迟30S的控制,求大神帮忙设计一下! -
畅彬诺易: #include<reg51.h> #include<intrins.h> #define X0 P2^0 //红外线开关输入 #define Y0 P0^0 //控制开关 void delay50ms(unsigned int i) { unsigned int j; for(i;i>0;i--) for(j=50000;j>0;j--); //该处使用的为12MHz晶振,及一周期用时1us } void main() { ...

吴忠市17035979276: 怎么用C语言做单片机的精确延时 -
畅彬诺易: 在单片机应用中,经常会遇到需要短时间延时的情况,一般都是几十到几百μs,并且需要很高的精度(比如用单片机驱动DS18B20时,误差容许的范围在十几μs以内,不然很容易出错);而某些情况下延时时间较长,用计时器往往有点小题大...

吴忠市17035979276: 请教高手一下,汇编这个延时程序是怎么延时的,那个延时时间是怎么算出来的.单片机是80C51 -
畅彬诺易: 有几个地方有错误,给你改正了,见下面的程序. delay:mov r7,#250 ;1us delay1: mov r6,#250 ;1us djnz r6,$ ;250*2(这条指令两个机器周期,共执行250次,所以花250*2=500us) djnz r7,delay1 ;(1+250*2+2)*250+1(外层的这个循环,包括内层的250*2,再加前后两条指令的3个机器周期,共503近似500,500*250=125000us=125ms) ret 所以整个循环程序延时了125ms

吴忠市17035979276: 求用C编写一个51单片机的延时函数,用T0定时器. -
畅彬诺易: #include <reg51.h>#define uchar unsigned char sbit LED=P1^0; uchar time; void InitTimer0(void) { TMOD = 0x01; //定时器0,工作方式1 TH0 = 0x3c; TL0 = 0xb0; //50ms中断一次 EA = 1; ET0 = 1; TR0 = 1; } void main(void) { InitTimer0(); while(1);...

吴忠市17035979276: 怎么用C语言写可以调节的延时程序,请大侠帮忙 -
畅彬诺易: 延时程序(包括asm和C程序,都是我在学单片机的过程中用到的),在单片机延时程序中应考虑所使用的晶振的频率,在51系列的单片机中我们常用的是11.0592MHz和12.0000MHz的晶振,而在AVR单片机上常用的有8.000MHz和4.000MH的...

吴忠市17035979276: 单片机80C51延迟如何计算问题 -
畅彬诺易: 用C语言编制的延时程序,怎么算延时都是不准确的.只有用汇编才能根据循环次数及循环层数,精确算出延时多少时间.C语言延时,延时时间与数据类型,编译软件,循环参数都有关系,所以不同编译器,最终结果是不一样的.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网