结构推理 已知某单片机系统每隔1s测一次温度,8位温度A/D值存在特殊功能寄存器SBUF中,试求其1分内的平均值,存40H。
【正确答案】程序如下:
   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              ;
【答案解析】