PIC单片机实现x ms/1s钟精确延时

2019-04-15 11:37发布

1、编写子程序DelayMS,实现延时x毫秒的功能,x由w寄存器中的值设定。

;**************DelayMS************** DelayMS ; 延时x毫秒,x由变量w寄存器设定 movwf L1 ; Loop1 movlw .39 ; movwf L2 ; Loop2 movlw .31 ; movwf L3 ; Loop3 nop ; decfsz L3, f ; goto Loop3 ; decfsz L2, f ; goto Loop2 ; decfsz L1, f ; goto Loop1 ; return ; ;------------------------------------------------------------------------------

2、编写子程序Delay1S,实现1秒钟的精确延时。

list p=16f877A ; 标明所用的处理器类型 #include <p16f877A.inc> ; 调用头文件 ;***** 变量声明******************************************************* L1 EQU 0x70 ;延时函数循环变量 L2 EQU 0x71 L3 EQU 0x72 ;********************************************************************** org 0x0000 ; 复位入口地址 ;--------------------------------Main的代码------------------------------------- main banksel TRISB; bcf TRISB, RB0; banksel PORTB; Loop bsf PORTB, RB0; movlw .100; call Delay1S; bcf PORTB, RB0; movlw .100; call Delay1S; goto Loop ; ;-----------------------------子函数------------------------- ;**************Delay1S************** Delay1S ; 延时x毫秒,x由变量w寄存器设定 movwf L1 ; Loop1 movlw .200 ; movwf L2 ; Loop2 movlw .62 ; movwf L3 ; Loop3 nop ; decfsz L3, f ; goto Loop3 ; decfsz L2, f ; goto Loop2 ; decfsz L1, f ; goto Loop1 ; return ; ;---------------------------------------------------------------------- END ; 程序结束