资源描述:
《数字温度计汇编驱动程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、数字温度计汇编驱动程序;**************************端口的定义*************************************;*************************************************************************CONFIG12EQU7FH;DS18B20的转换精度选择(0、R1、R2、1、1、1、1、1);009位测量;0110位测量;1011位测量;1112位测量TEMPHEQU71H;高位温度原始数据的读入地址TEMPLEQU
2、70H;低位温度原始数据的读入地址ZHENGEQU73H;温度中的整数部分数据暂存空间XIAOEQU72H;温度中的小数部分数据暂存空间BAIWEIEQU77H;温度的百位数据SHIWEIEQU76H;温度的十位数据GEWEIEQU75H;温度的个位数据DIANWEIEQU74H;温度的小数点后一位数据DATEQUP1.0;DS18B20与单片机通信的口线;**********************初始化子程序和主程序******************************;***********************
3、*************************************************ORG0000HLJMPSTARTORG0030HSTART:MOVTEMPL,#0MOVTEMPH,#0LCALLINIT;调用初始化子程序MAIN:LCALLRDTEMP;调用读子程序,从DS18B20中读取出温度值LCALLDIVV;调用运算子程序LCALLDISPLAY;调用显示子程序显示当前温度值LJMPMAIN;************************数据处理子程序***********************
4、**********;***********************************************************************DIVV:;数据处理子程序,负责将温度数据转换为BCD码MOVA,TEMPLMOVB,#16DIVAB;分离温度数据低8位中的整数部分和小数部分(因为低字节第4位代表1度,但实际数值却是2的4次方=16,所以需要缩小16倍)MOVZHENG,A;将从温度数据低8位中分离出来的整数存放在整数存储空间中MOVXIAO,B;将从温度数据低8位中分离出来的小数存放在小数存储
5、空间中MOVA,XIAOMOVB,#10MULAB;将分离出的小数部分乘以10,即扩大10倍MOVB,#16DIVAB;将已经扩大了10倍的小数再除以16,以求出小数点后一位的数据(例如90/13=6余12,12*10/13=9余3,那么9就是小数点后一位)MOVDIANWEI,A;将小数点后一位数据存入小数点位MOVA,BMOVB,#10MULABMOVB,#16DIVAB;用同样的方法求出小数点后第二位CLRCSUBBA,#4;判断小数点后的第二位是否大于或等于5JCBUJIN;如果有借位说明小数点后第二位小于5,则不向小
6、数点后第一位产生进位INCDIANWEI;如果小数点后第二位大于等于5,则有借位产生,根据四舍五入原则,给小数点后第一位加1进位BUJIN:MOVA,TEMPHMOVB,#16MULAB;将温度数据高8位乘以16(因为高字节第0位代表2的4次方=16,但实际数值却是2的0次方=1,所以需要扩大16倍)ADDA,ZHENG;将温度数据高8位和低8位中代表整数的数据相加MOVZHENG,A;将最终求得的整数存放在整数存储空间中MOVA,ZHENGMOVB,#100DIVABMOVBAIWEI,A;求出整数中百位的BCD码,并存入百
7、位存储空间中MOVA,BMOVB,#10DIVABMOVSHIWEI,A;求出整数中十位的BCD码,并存入十位存储空间中MOVGEWEI,B;剩下的余数就是个位的BCD码,并存入个位存储空间中RET;***************************数据显示子程序*****************************;**********************************************************************DISPLAY:MOVDPTR,#TAB;通过查表来显示数据MO
8、VA,BAIWEI;显示百位MOVCA,@A+DPTRMOVP0,AMOVP2,#11110111BMOVR7,#0FFH;延时一下DJNZR7,$MOVA,SHIWEI;显示十位MOVCA,@A+DPTRMOVP0,AMOVP2,#11111011BMOVR7,#0FFHD