爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 2759|回复: 2
收起左侧

【百分数电量显示 源码】

[复制链接]
发表于 2005-8-10 00:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x

因为这个代码做的不是很规范,也没有太大的研究价值,但是ZK4321等朋友关于显示位置、可选的问题,
我没有太多时间来做,所以发个源码,大家看一下!
$Segmented
$Mod167

;0x363B64: DAB304DF DABF8087

Vmax EQU 3A44H ;0e,

;Flag EQU 3E48H;测试

DrawImageByIndex EQU 0xB3DF04
;PlaySMSTone EQU 0xB5D3FC


PatchBegin  EQU 0x1F8780 ;从0xBF8780开始
patch section code word AT PatchBegin
  TheBetter proc far
      
        MOV     [-R0],R1
           MOV     [-R0],R2
           MOV     [-R0],R3
           MOV     [-R0],R12
           MOV     [-R0],R13
           MOV     [-R0],R14
          
           ;extp        #34H,#1H
           ;mov        Flag,r8
           ;cmp        r8,#0B408H
        ;jmpr        cc_ule,Bai;如果不是在充电,用百分号
        ;calls        seg(DrawImageByIndex),sof(DrawImageByIndex);        
        ;jmpr        cc_uc,Exit
;Bai:          
           mov        r14,#22EH
        mov     r13, #0h        ;纵坐标
        mov        r12,#4BH
        calls        seg(DrawImageByIndex),sof(DrawImageByIndex);
        
        mov        r12,#0E10H ;r12为空电,r13为満电
        mov        r13,#1068H
        mov        r14,r13 ;r14=r13-r12为电容量
        sub         r14,r12
        
        extp         #0eH,#1H ;取Vmax到r13
        mov         r13,Vmax
        cmp        r13,r12 ;比较r13(Vmax)和r12(空电)
        jmpr        cc_uge,nozero;r13>=r12 差为正
        mov        r13,#0H;差为负
        jmpr        cc_uc,go
nozero:        
        sub         r13,r12 ;r13-r12=还有多少电
go:   
        
        mov        mdl,r14 ;用电容量/100
        mov         r12,#64H
        divu        r12
        mov        r12,mdl ;r12现为1百分数的数目
        
        mov        mdl,r13 ;r13(还有电量)/r12(1百分数多少格)
        divu        r12
        mov        r12,mdl ;最后得到百分数r12
       
        mov         mdl,r12
           mov        r13,#64H
           divu        r13
           mov        r1,mdl ;r1为除100的商
           jmpr        cc_z,goon
              ;为100以上时
        mov        r14,#1
        add     r14, #20Dh
        mov     r13, #0h        ;纵坐标
        mov        r12,#4BH
        calls        seg(DrawImageByIndex),sof(DrawImageByIndex);
        mov        r12,#51H
        mov     r13, #0h
        mov        r14,#20DH
        calls        seg(DrawImageByIndex),sof(DrawImageByIndex);
        mov        r12,#57H
        mov     r13, #0h
        mov        r14,#20DH
        calls        seg(DrawImageByIndex),sof(DrawImageByIndex);
        jmpr        cc_uc,Exit
        
goon:          
           mov         mdl,mdh
           mov        r13,#0AH
           divu        r13
           mov        r2,mdl;r2为除10的商
           mov        r3,mdh;r3为除1的商
           MOV     [-R0],R3
          
           mov        r14,r2
        add     r14, #20Dh
        mov     r13, #0h        ;纵坐标
        mov        r12,#51H
        calls        seg(DrawImageByIndex),sof(DrawImageByIndex);
        MOV      R3,[R0+]
        mov        r12,#57H
        mov        r14,r3
        add     r14, #20Dh
        mov     r13, #0h        ;纵坐标
        calls        seg(DrawImageByIndex),sof(DrawImageByIndex);
Exit:

           MOV      R14,[R0+]
           MOV      R13,[R0+]
           MOV      R12,[R0+]
           MOV      R3,[R0+]
           MOV      R2,[R0+]
           MOV      R1,[R0+]
             rets       
  TheBetter endp
  patch ends
End

 楼主| 发表于 2005-8-10 00:01:00 | 显示全部楼层
主要是代码精简的不好(有点急于求成!)
发表于 2005-8-10 00:02:00 | 显示全部楼层
可不可以直接显示出电压值
您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-5-19 22:30

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表