已知某单片机系统每隔1s测一次温度 8位温度A/D值存在特殊功能寄存器SBUF中 试求其1分内的平均值 存40H。

大学 温度,寄存器,平均值 已帮助 人

已知某单片机系统每隔1s测一次温度,8位温度A/D值存在特殊功能寄存器SBUF中,试求其1分内的平均值,存40H。

热搜:8个字节含二进制位几个

答案解析

难度★★☆ 搜索
  • 程序如下:
       TAVR:MOV    40H,#0    ;商累加寄存器清0
            MOV    41H,#0    ;余数累加寄存器清0
            MOV    R2,#60    ;置平均次数
       TLOP:MOV    A,SBUF    ;读8位温度A/D值
            MOV    B,#60     ;置除数(平均次数)
            DIV    AB        ;数据除以60
            ADD    A,40H     ;商累加
            MOV    40H,A     ;回存
            MOV    A,B       ;
            ADD    A,41H     ;余数累加
            MOV    41H,A     ;回存
            CLR    C         ;
            SUBB   A,#60     ;
            JC     GON       ;余数累加<60,余数累加寄存器不变
            INC    40H       ;余数累加≥60,商累加寄存器+1
            MOV    41H,A     ;减去60后差→余数累加寄存器
       GON:LCALL   DY1s      ;延时1s
            DJNZ   R2,TLOP   ;判60次累加完否?未完继续
            MOV    A,41H     ;60次累加完毕,余数累加四舍五入
            CJNE   A,#30,NEXT ;
       NEXT:JC     GRET      ;C=1,<30,舍
            INC    40H       ;C=0,≥30,入
       GRET:RET              ;