www.pudn.com > digital_duoji.rar > delay.s
.module delay.c .area text(rom, con, rel) .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\delay.c .dbfunc e delay_us _delay_us fV ; t -> R16 .even _delay_us:: .dbline -1 .dbline 10 ; ; ; #include; #include "delay.h" ; ; /*----------------------------------------------------------------------- ; delay_us :1us延时函数 ; -----------------------------------------------------------------------*/ ; void delay_us(void) ; { .dbline 11 ; unsigned char t=2; ldi R16,2 .dbline 12 ; t--; dec R16 .dbline -2 L1: .dbline 0 ; func end ret .dbsym r t 16 c .dbend .dbfunc e delay_nus _delay_nus fV ; t -> R20,R21 .even _delay_nus:: st -y,R20 st -y,R21 movw R20,R16 .dbline -1 .dbline 21 ; } ; ; /*----------------------------------------------------------------------- ; delay_nus :长延时函数 ; ; 输入参数: t :延时时间 us ; -----------------------------------------------------------------------*/ ; void delay_nus(unsigned int t) ; { xjmp L4 L3: .dbline 23 ; while (t--) ; delay_us(); xcall _delay_us L4: .dbline 22 movw R2,R20 subi R20,1 sbci R21,0 tst R2 brne L3 tst R3 brne L3 X0: .dbline -2 L2: .dbline 0 ; func end ld R21,y+ ld R20,y+ ret .dbsym r t 20 i .dbend .dbfunc e delay_ms _delay_ms fV .even _delay_ms:: .dbline -1 .dbline 30 ; } ; ; /*----------------------------------------------------------------------- ; delay_ms :1ms延时函数 ; -----------------------------------------------------------------------*/ ; void delay_ms(void) ; { .dbline 31 ; delay_nus(1000); ldi R16,1000 ldi R17,3 xcall _delay_nus .dbline -2 L6: .dbline 0 ; func end ret .dbend .dbfunc e delay_nms _delay_nms fV ; t -> R20,R21 .even _delay_nms:: st -y,R20 st -y,R21 movw R20,R16 .dbline -1 .dbline 40 ; } ; ; /*----------------------------------------------------------------------- ; delay_nms :长延时函数 ; ; 输入参数: t :延时时间 ms ; -----------------------------------------------------------------------*/ ; void delay_nms(unsigned int t) ; { xjmp L9 L8: .dbline 42 ; while (t--) ; delay_ms(); xcall _delay_ms L9: .dbline 41 movw R2,R20 subi R20,1 sbci R21,0 tst R2 brne L8 tst R3 brne L8 X1: .dbline -2 L7: .dbline 0 ; func end ld R21,y+ ld R20,y+ ret .dbsym r t 20 i .dbend ; }