Assembly 如何在ASM中为PIC18系列正确编码延时?
我编写了一个典型的例子,8个LED灯打开和关闭,然后全部打开。所有这些都在一个循环中 我得到了一张图片18F4550,并将其编码为:Assembly 如何在ASM中为PIC18系列正确编码延时?,assembly,microcontroller,pic,Assembly,Microcontroller,Pic,我编写了一个典型的例子,8个LED灯打开和关闭,然后全部打开。所有这些都在一个循环中 我得到了一张图片18F4550,并将其编码为: List P=18F4550 ;Microcontrolador a utilizar include <P18F4550.inc> ;Definiciones de constantes ;********** Palabra de conficuración ******
List P=18F4550 ;Microcontrolador a utilizar
include <P18F4550.inc> ;Definiciones de constantes
;********** Palabra de conficuración *******************************************
CONFIG FOSC = INTOSC_EC ;INTOSC_EC ; Internal oscillator
CONFIG PWRT= ON ; Power-up Timer Enable bit
CONFIG BOR=OFF ; Brown-out Reset disabled in hardware and software
CONFIG WDT=OFF ; WDT disabled
CONFIG MCLRE=ON ; MCLR pin enabled
CONFIG PBADEN=OFF ; PORTB<4:0> pins are configured as digital I/O
CONFIG LVP=OFF ; Single-Supply ICSP disabled
CONFIG DEBUG = OFF ; Background debugger disabled
CONFIG XINST = OFF ; Extended Instruction disabled
;******************************Variables***********************************
conta equ 0x00
;**********************************************************************************
org 0x0000
movlw 0x62
movwf OSCCON
clrf TRISD
CICLO
bcf PORTD,0
call RETARDO
bsf PORTD,0
bcf PORTD,1
CALL RETARDO
bcf PORTD,1
call RETARDO
bsf PORTD,1
bcf PORTD,2
CALL RETARDO
bcf PORTD,2
call RETARDO
bsf PORTD,2
bcf PORTD,3
CALL RETARDO
bcf PORTD,3
call RETARDO
bsf PORTD,3
bcf PORTD,4
CALL RETARDO
bcf PORTD,4
call RETARDO
bsf PORTD,4
bcf PORTD,5
CALL RETARDO
bcf PORTD,5
call RETARDO
bsf PORTD,5
bcf PORTD,6
CALL RETARDO
bcf PORTD,6
call RETARDO
bsf PORTD,6
bcf PORTD,7
CALL RETARDO
bcf PORTD,7
call RETARDO
bsf PORTD,7
bcf PORTD,0
CALL RETARDO
bra CICLO
RETARDO
movlw .255
movwf conta
CICLO2
DECFSZ conta,F
bra CICLO2
nop
nop
nop
nop
return
end
这是我的模拟图:
我做错了什么?我如何确保在4 MhZ下工作时的延迟为1秒?假设您在单线程环境中运行,传统的延迟精确时间的方法是忙循环:例如,您可以从1到1000000计数。您可以通过检查微控制器上的指令计时,或通过反复试验来计算延迟的确切长度 繁忙等待的缺点,特别是对于长时间(数毫秒)延迟,是它会消耗电力。如果这是一个问题,您可以看到您的系统是否具有某种形式的“空闲等待和计时器中断”功能,这将使它在您等待时进入低功耗状态
bcf PORTD,0
bcf PORTD,1
bcf PORTD,2
bcf PORTD,3
bcf PORTD,4
bcf PORTD,5
bcf PORTD,6
CALL RETARDO
bsf PORTD,1
bsf PORTD,2
bsf PORTD,3
bsf PORTD,4
bsf PORTD,5
bsf PORTD,6
bsf PORTD,7
CALL RETARDO