⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bike.asm

📁 通过霍尔传感器测量车轮转动的次数
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                MOV	A,#95H
		LCALL	SEND_I
                mov     a,3eh
                swap    a
                anl     a,#0fh
                add     a,#30h
                LCALL	SEND_D
                mov     a,3eh
                anl     a,#0fh
                add     a,#30h
                LCALL	SEND_D

                MOV	A,#96H    ;显示空白
		LCALL	SEND_I
                mov     a,#0a1h
                LCALL	SEND_D
                mov     a,#0a0h
                LCALL	SEND_D

                MOV	A,#97H    ;Km
		LCALL	SEND_I
                mov     a,#4bh
                LCALL	SEND_D
                mov     a,#6dh
                LCALL	SEND_D

out_zong_lucheng_jisuan:
                ret

sudu_jisuan:                         ;最后结果在30H,31H,32H中
                clr     c
                jb      flag1,dedao
                ljmp    out_sudu_jisuan

dedao:          mov     50h,68h   ;时间最低位预处理,结果指向30h
                call    yuchuli
                mov     30h,52h
                mov     31h,53h
                mov     32h,54h
                mov     r0,#30h
                lcall   btof

                mov     50h,69h    ;时间第二位预处理,结果指向36h
                call    yuchuli
                mov     36h,52h
                mov     37h,53h
                mov     38h,54h
                mov     r0,#36h
                lcall   btof

                mov     33h,#03h  ;第二位乘于256,结果指向36h
                mov     34h,#25h
                mov     35h,#60h
                mov     r0,#33h
                lcall   btof

                mov     r0,#36h
                mov     r1,#33h
                lcall   fmul
                mov     r1,#30h
                mov     r0,#36h
                lcall   fadd      ;加上最低位的结果,指向36h ,定时范围最高为255X256+255=65535us

              ;  lcall   ftob

                mov     50h,6ah   ;第三位预处理,结果指向3ch
                lcall   yuchuli
                mov     3ch,52h
                mov     3dh,53h
                mov     3eh,54h
                mov     r0,#3ch
                lcall   btof

                mov     39h,#05h
                mov     3ah,#65h
                mov     3bh,#53h
                mov     r0,#39h
                lcall   btof
                mov     r0,#3ch
                mov     r1,#39h
                lcall   fmul      ;乘于低位的结果,最高定时范围为255X65530=16710150us=16.71s
                                  ;此时可测的速度,以每圈2米计算,为2X3.6/16.17=0.44Km/h
                                  ;仍不能满足要求,结果指向3ch

     ;           lcall   ftob
                mov     r1,#36h
                lcall   fadd
                mov     39h,#07h
                mov     3ah,#10h
                mov     3bh,#00h
                mov     r0,#39h
                lcall   btof
                mov     r0,#3ch
                mov     r1,#39h
                lcall   fdiv        ;除以1000000,换算成秒

         ;       lcall   ftob
                mov     30h,#01h        ;自行车轮子一圈的周长
                mov     31h,#20h
                mov     32h,#90h
                mov     r0,#30h
                lcall   btof
                mov     r0,#30h
                mov     r1,#3ch
                lcall   fdiv
       ;    lcall   ftob

                mov     36h,#01h
                mov     37h,#36h
                mov     38h,#00h
                mov     r0,#36h
                lcall   btof
                mov     r0,#30h
                mov     r1,#36h
                lcall   fmul
                lcall   ftob

                mov     a,30h
                cjne    a,#02h,xiaoyu_10Kmph
                call    qing_wei8     ;后四个字位置清除

                MOV	A,#84H
		LCALL	SEND_I
                mov     a,31h
                swap    a
                anl     a,#0fh
                add     a,#30h
                LCALL	SEND_D
                mov     a,31h
                anl     a,#0fh
                add     a,#30h
                LCALL	SEND_D



                MOV	A,#85H    ;Km
		LCALL	SEND_I
                mov     a,#4bh
                LCALL	SEND_D
                mov     a,#6dh
                LCALL	SEND_D

                MOV	A,#86H    ;/h
		LCALL	SEND_I
                mov     a,#2fh
                LCALL	SEND_D
                MOV	A,#68H
		LCALL	SEND_D
                ljmp    out_sudu_jisuan

xiaoyu_10Kmph:  mov     a,30h
                cjne    a,#01h,xiaoyu_1Kmph
                call    qing_wei8     ;后四个字位置清除
                MOV	A,#84H
		LCALL	SEND_I
                mov     a,31h
                swap    a
                anl     a,#0fh
                add     a,#30h
                LCALL	SEND_D
                mov     a,#2eh
                LCALL	SEND_D

                MOV	A,#85H
		LCALL	SEND_I
                mov     a,31h
                anl     a,#0fh
                add     a,#30h
                LCALL	SEND_D

                mov     a,32h
                swap    a
                anl     a,#0fh

                add     a,#30h
                LCALL	SEND_D

                MOV	A,#86H    ;Km
		LCALL	SEND_I
                mov     a,#4bh
                LCALL	SEND_D
                mov     a,#6dh
                LCALL	SEND_D

                MOV	A,#87H    ;/h
		LCALL	SEND_I
                mov     a,#2fh
                LCALL	SEND_D
                MOV	A,#68H
		LCALL	SEND_D
                ljmp    out_sudu_jisuan

xiaoyu_1Kmph:   call    qing_wei8     ;后四个字位置清除
                MOV	A,#84H
		LCALL	SEND_I
                mov     a,#30h
                LCALL	SEND_D
                mov     a,#2eh
                LCALL	SEND_D
                MOV	A,#85H
		LCALL	SEND_I
                mov     a,#30h
                LCALL	SEND_D
                mov     a,#30h
                LCALL	SEND_D


;                MOV	A,#85H
;		LCALL	SEND_I
 ;               mov     a,31h
  ;              swap    a
   ;             anl     a,#0fh
    ;            add     a,#30h
     ;           LCALL	SEND_D
      ;          mov     a,31h
       ;         anl     a,#0fh
        ;        add     a,#30h
         ;       LCALL	SEND_D

                MOV	A,#86H    ;Km
		LCALL	SEND_I
                mov     a,#4bh
                LCALL	SEND_D
                mov     a,#6dh
                LCALL	SEND_D

                MOV	A,#87H    ;/h
		LCALL	SEND_I
                mov     a,#2fh
                LCALL	SEND_D
                MOV	A,#68H
		LCALL	SEND_D
out_sudu_jisuan:
                clr     qidong


                ret


yuchuli:        clr     c
                mov     a,50h
                subb    a,#01
                jnc     dayu0
                mov     52h,#00h
                mov     53h,#00h
                mov     54h,#00h
                ljmp    process51h
dayu0:          mov     a,50h
                subb    a,#10
                jnc     dayu10
                mov     52h,#01h
                mov     a,50h
                swap    a
                mov     53h,a
                mov     54h,#00h
                ljmp    process51h
dayu10:
                mov     a,50h
                subb    a,#100
                jnc     dayu100
                mov     52h,#02h
                mov     a,50h
                mov     b,#10
                div     ab
                rl      a
                rl      a
                rl      a
                rl      a
                mov     53h,a
                mov     a,b
                orl     53h,a
                mov     54h,#00h
                ljmp    process51h
dayu100:
                mov     52h,#03h
                mov     a,50h
                mov     b,#100
                div     ab
                rl      a
                rl      a
                rl      a
                rl      a
                mov     53h,a
                mov     a,50h
                mov     b,#100
                div     ab
                mov     a,b
                mov     b,#10
                div     ab
                orl     53h,a
                mov     a,b
                rl      a
                rl      a
                rl      a
                rl      a
                mov     54h,a
                ljmp    process51h

process51h:
                mov     a,51h
                subb    a,#00
                jnc     dayu051
                mov     58h,#00h
                mov     59h,#00h
                mov     5ah,#00h
                ret
dayu051:
                mov     a,51h
                subb    a,#10
                jnc     dayu1051
                mov     58h,#01h
                mov     a,51h
                swap    a
                mov     59h,a
                mov     5ah,#00h
                ret

dayu1051:
                mov     a,51h
                subb    a,#100
                jnc     dayu10051
                mov     58h,#02h
                mov     a,51h
                mov     b,#10
                div     ab
                rl      a
                rl      a
                rl      a
                rl      a
                mov     59h,a
                mov     a,b
                orl     59h,a
                mov     5ah,#00h
                ret
dayu10051:
                mov     58h,#03h
                mov     a,51h
                mov     b,#100
                div     ab
                rl      a
                rl      a
                rl      a
                rl      a
                mov     59h,a
                mov     a,51h
                mov     b,#100
                div     ab
                mov     a,b
                mov     b,#10
                div     ab
                orl     59h,a
                mov     a,b
                rl      a
                rl      a
                rl      a
                rl      a
                mov     5ah,a
                ret

qing_wei:       MOV	A,#94H
		LCALL	SEND_I
                mov     a,#0a1h
                LCALL	SEND_D
                mov     a,#0a0h
                LCALL	SEND_D

                MOV	A,#95H
		LCALL	SEND_I
                mov     a,#0a1h
                LCALL	SEND_D
                mov     a,#0a0h
                LCALL	SEND_D

                MOV	A,#96H
		LCALL	SEND_I
                mov     a,#0a1h
                LCALL	SEND_D
                mov     a,#0a0h
                LCALL	SEND_D

                MOV	A,#97H
		LCALL	SEND_I
                mov     a,#0a1h
                LCALL	SEND_D
                mov     a,#0a0h
                LCALL	SEND_D
                ret

qing_wei8:      MOV	A,#84H
		LCALL	SEND_I
                mov     a,#0a1h
                LCALL	SEND_D
                mov     a,#0a0h
                LCALL	SEND_D

                MOV	A,#85H
		LCALL	SEND_I
                mov     a,#0a1h
                LCALL	SEND_D
                mov     a,#0a0h
                LCALL	SEND_D

                MOV	A,#86H
		LCALL	SEND_I
                mov     a,#0a1h
                LCALL	SEND_D
                mov     a,#0a0h
                LCALL	SEND_D

                MOV	A,#87H
		LCALL	SEND_I
                mov     a,#0a1h
                LCALL	SEND_D
                mov     a,#0a0h
                LCALL	SEND_D
                ret

juli_genghuan:  call    du_dangqian_licheng    ;读取当前里程数据
                mov     7ah,74h
                mov     7bh,75h
                mov     7ch,76h

                mov     R1,7ah
                MOV     SLA,#0A0H
                MOV     SUBA,#06H
                CALL    IWRNBYTE
                call    delay5ms

                mov     R1,7bh
                MOV     SLA,#0A0H
                MOV     SUBA,#07H
                CALL    IWRNBYTE
                call    delay5ms

                mov     R1,7ch
                MOV     SLA,#0A0H
                MOV     SUBA,#08H
                CALL    IWRNBYTE
                call    delay5ms
                call    qing_dangqian_licheng  ;清除当前里程的存储数据
                ret

du_dangqian_licheng:
                MOV     SLA,#0A0H
                MOV     SUBA,#00H
                CALL    IRDNBYTE
                call    delay5ms
                mov     74h,a

                MOV     SLA,#0A0H
                MOV     SUBA,#01H
                CALL    IRDNBYTE
                call    delay5ms
                mov     75h,a

                MOV     SLA,#0A0H
                MOV     SUBA,#02H
                CALL    IRDNBYTE
                call    delay5ms
                mov     76h,a
                ret

du_zong_licheng:
                MOV     SLA,#0A0H
                MOV     SUBA,#03H
                CALL    IRDNBYTE
                call    delay5ms
                mov     77h,a

                MOV     SLA,#0A0H
                MOV     SUBA,#04H
                CALL    IRDNBYTE
                call    delay5ms
                mov     78h,a

                MOV     SLA,#0A0H
                MOV     SUBA,#05H
                CALL    IRDNBYTE
                call    delay5ms
                mov     79h,a
                ret

du_shangci_licheng:
                MOV     SLA,#0A0H
                MOV     SUBA,#06H
                CALL    IRDNBYTE
                call    delay5ms
                mov     7ah,a
                MOV     SLA,#0A0H
                MOV     SUBA,#07H
                CALL    IRDNBYTE
                call    delay5ms
                mov     7bh,a
                MOV     SLA,#0A0H
                MOV     SUBA,#08H
                CALL    IRDNBYTE
                call    delay5ms
                mov     7ch,a
                ret

qing_dangqian_licheng:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -