1、单片机应用技术讲座(15)第 12 讲 用单片机实现的温度控制系统(下)源程序例 1:按键功能子程序(温度上限寄存器的设置程序)KEY: JB WD_H_KEY,L_SETLCALL DELL ;防抖动JB WD_H_KEY,L_SETINC S_H_DATAMOV A,S_H_DATACJNE A,#7FH,S_DISMOV S_H_DATA,#00HS_DIS:MOV A,S_H_DATALCALL HEX_BCD ;以下调用写 AT24C02子程序和 DIS LED显示子程序 JNB WD_H_KEY,S_REP例 2:双字节除单字节的除法子程序 DIV25MOV R3, #4MOV R
2、2,#00HMOV R4,#00HMOV R5,#00HMOV R7,#10HCHU55:MOV A,R0ADD A,R0MOV R0,AMOV A,R1ADDC A,R1MOV R1,AMOV A,R2ADDC A,R2MOV R2,AMOV A,R4ADD A,R4MOV R4,AMOV A,R5ADDC A,R5MOV R5,ACJNE R2,#4,LOOP05LOOP05:JC LOOP15MOV A,R2SUBB A,R3MOV R2,AMOV A,R4ADD A,#01HMOV R4,AMOV A,R5ADDC A,#00HMOV R5,ALOOP15:DJNZ R7,CHU55R
3、ET除法子程序 DIV25中,入口被除数放在 R0、R1 中,其中 R0为高位字节,除数放在 R3中(本例的除数等于 4),出口商数放在 R4、R5 中,其中 R4为低位字节。在以后的工程设计中,请读者注意,对于大量的诸如乘、除以及多位加减的运算,当采用汇编语言设计程序时应尽量直接调用(这些子程序一般都可在单片机的书籍中找到),读者只要知道子程序的出、入口参数即可,至于详细的算法过程没有必要掌握。例 3:HEX 至不大于 10 的 BCD 码转换子程序(HEX 到 BCD码的转换子程序 HEX_BCD)HEX_BCD:MOV B,#10DIV ABMOV R5,BMOV B,#10DIV ABMOV R6,BMOV R7,ARETHEX到 BCD码的转换子程序 HEX_BCD中,由于 AD7416的最大温度测量值是 127,因此可将欲转换的 HEX 16进制数通过两次除 10的过程完成(代码中的 DIV AB语句),该程序中的 A累加器存放 16进制数,R5、R6、R7 存放不大于 10的 BCD码以便 DIS 显示子程序调用。