钻石会员
主题
帖子
积分24618
阅读权限50
注册时间2008-12-21
最后登录1970-1-1
在线时间 小时
|
从未试过代码模式,拿温度显示子程序来试一下(包含无效0消隐处理);整个改动后的程序增加了两个位标志位,因为之前不清楚空间分配,选择50、51两个比特位来用。- ;====================================================
- ;温度显示子程序
- DISPTEM: LCALL TMP
- MOV A,TEMPER_H ;温度值整数数据到ACC
- MOV B,#64H ;正温度取出百位值
- DIV AB
- MOV SJQW,A ;送第4位显示数据
- JNZ DISPTEM1 ;第4位非0跳转
- SETB XYBZ ;置零消隐标志
- MOV SJQW,#1BH ;第4位送消隐
- DISPTEM1:MOV A,B
- MOV B,#0AH ;取出十位值
- DIV AB
- MOV SJBW,A ;送第3位显示数据
- JNZ DISPTEM2 ;第3位非0跳转
- JNB HWD,DISPTEM3 ;温度不为负值则跳转
- MOV SJBW,#1AH ;第3位置负号
- SJMP DISPTEM4
- DISPTEM3:MOV SJBW,#1BH ;第3位送消隐
- SJMP DISPTEM4
- DISPTEM2:JNB HWD,DISPTEM4 ;温度不为负值则跳转
- MOV SJQW,#1AH ;第4位置负号
- DISPTEM4:MOV A,B ;第2位送到A进行小数点合并
- ORL A,#10H
- MOV SJSW,A ;送第2位显示
- MOV SJGW,TEMPER_L ;小数点后一位送第1位显示
- CLR HWD ;清负温度标志
- CLR XYBZ ;清零消隐标志
- RET
- ;*********************************************************
复制代码 |
|