单片机。用汇编语言编程。 设计一软件延时1s的子程序。设晶振频率为12MHz。

如题所述

delay1000ms:(HT46R65的单片机)(注意不要开启计时中断允许位)
mov a,10000111b (设置频率和记数方式)(上升记数还是下降记数)
mov tmr0c,a (tmr0c 计数器的控制寄存器)
mov a,low(65536-31250) (设置的频率就是1S上升31250)因此是DELAY1S
mov TMR0L,a (计数器的赋予初始值的低位寄存器)
mov a,high(65536-31250)
mov TMR0h,a(计数器的赋予初始值的高位寄存器)
set tmr0c.4 (打开记数)
snz intc0.6 (是否有中断请求标志)(有就跳过)
jmp $-1 (退回一步)
clr tmr0c.4 (关闭记数)
clr intc0.6 (清除中断标志)
ret

参考资料:HT46R65/HT46c65

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
不同单片机 指令周期有所不同 下面DJNZ指令3个晶振周期
DELAY1S:
MOV R7,#000H
MOV R6,#00AH
MOV R5,#03EH
LOOP: DJNZ R7,LOOP
NOP
DJNZ R6,LOOP
NOP
DJNZ R5,LOOP
NOP
RET本回答被提问者采纳

单片机。用汇编语言编程。 设计一软件延时1s的子程序。设晶振频率为12M...
mov a,low(65536-31250) (设置的频率就是1S上升31250)因此是DELAY1S mov TMR0L,a (计数器的赋予初始值的低位寄存器)mov a,high(65536-31250)mov TMR0h,a(计数器的赋予初始值的高位寄存器)set tmr0c.4 (打开记数)snz intc0.6 (是否有中断请求标志)(有就跳过)jmp $-1 (退...

设单片机晶振频率为12MHZ,试编写一延时1s的子程序
while(1){ delay_1s(2);test = ~test;} }

51单片机用汇编语言设计1S延时子程序,晶振为12MHz。 (麻烦附上详细计算...
while(1){ Delay1S(1);} }

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

单片机延时1s怎么实现?
单片机常用的编程语言有汇编语言、C语言等。以下是使用汇编语言实现延时1s的程序:以上程序中,使用了一个8位计数器来实现延时功能。由于单片机晶振频率为12MHz,每个指令需要执行12\/4=3个机器周期(其中4代表指令周期),因此可以通过调整计数器初值来实现不同的延时时间。具体计算过程如下:每个指令需要执行...

单片机1秒钟定时汇编语言怎么编?
可以有两种方法,设晶振为12M,则 第一种方法:用延时的方法实现 DELAY: MOV R3,#10;延时子程序,延时1秒 D1: MOV R4,#200 D2: MOV R5,#250 D3: DJNZ R5,D3 DJNZ R4,D2 DJNZ R3,D1 RET END 第二种方法:用定时器的方法实现 ———MOV R1,#20 ———DLY: MOV T...

用汇编语言编写一个延时1S的子程序
; Didas=时钟嘀嗒数(1秒钟约嘀嗒18.2次,10秒钟嘀嗒182次。若延时不是秒的10数次倍,误差稍微大点)Delay1S Proc Near push dx push cx xor ax,ax int 1ah mov Times,dx mov Times[2],cx Read_Time: xor ax,ax int 1ah sub dx,Times sbb cx,Times[2]cmp dx,...

...输出1ms的方波(用定时器T1完成),晶振频率12MHz.
1ms方波的半周期 =500μs ,计数值=500μs\/1μs =500d 约定T1工作方式0,是13位计数器,2^13 =8192d -500d = 7692d =1E0Ch TH1←1EH, TL1←0CH 汇编程序如下:ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP, #60H ;;堆栈指针初值 MOV TMOD, #00H ;;T1...

单片机,汇编,延时,晶振频率为12MHZ,那么大约的延时时间是不是250X250...
此段程序延迟时间为:1 + 1 + ((1 + 1 + 2) * 250 + 2 + 1) * 250 = 250752个机器周期。晶振频率为12M,则延时时间为250752微秒,如果加上调用的CALL指令和返回的RET指令,则延迟时间为250756微秒

单片机C语言编程中,编一个延时约1s的语句
每一遍,如果是1us,才能是延时约1s。但是,晶振是12MHz,一条汇编的指令就至少是1us,C语言的语句,就要更多。在编写延时函数之前,首先确认一下系统对晶振的分频系数,从而确定每个单周期指令执行所需的时间,一般的单片机都将指令执行周期设置为1us,这样就可以写一个比较接近1秒的延时函数了。

相似回答