单片机编程:求8个无符号数的平均值

发布者:MindfulCreator最新更新时间:2018-05-11 来源: eefocus关键字:单片机编程  无符号数  平均值 手机看文章 扫描二维码
随时随地手机看文章

单片机编程:求8个无符号数的平均值。
有8个无符号数,存放在内部RAM以20H开始的8个单元中,要求将它们的平均值保存在R2中。
;------------------------------------------------------------------------------
最佳答案:

做这个题目,要有两个阶段,先求和,再除以8。程序如下:

;8个无符号数存放在内部RAM以20H开始的8个单元中,先求和:
;
    MOV   R0,   #20H          ;设定数据起始地址
    MOV   R1,   #8            ;共有8字节,将循环相加8次
    MOV   R2,   #0            ;R2 R3清零
    MOV   R3,   #0
LOOP:
    MOV   A,    @R0           ;取来一个数字
    ADD   A,    R3            ;和低8位相加
    MOV   R3,   A
    JNC   QQQ                 ;无进位转移
    INC   R2                  ;有则高8位加一
QQQ:
    INC   R0                  ;修改地址指针
    DJNZ  R1,   LOOP          ;循环8次
;
;至此,求和完毕,和数在R2R3中,下面就要对和数除以8,求得平均值。
;
;除以8,可以编写一段16位数除以8位数的程序,呵呵,那就太长了!
;也可以把这16位数,右移3位,也相当于除以8。
;两个字节,右移1位,就需要6条指令,右移3位,就要用18条指令,还是太长!!!
;
;且看下面,仅仅使用了5条指令,就完成了这个除以8的任务。
;
    ANL   A,    #0F8H
    ADD   A,    R2
    RL    A
    SWAP  A
    MOV   R2,   A                   ;按照要求,把平均值存R2
;
;这是世界上最简捷的16位数(共11个有效位)除以8的程序。
;
    SJMP  $
END


关键字:单片机编程  无符号数  平均值 引用地址:单片机编程:求8个无符号数的平均值

上一篇:单片机编程:找出最大数,并存入BIG单元中
下一篇:利用8031的定时/计数器T1对外部事件进行计数

推荐阅读最新更新时间:2024-03-16 16:02

分时操作系统思想在单片机编程中的实现
作 者: 杭州商学院 阮元 摘 要: 摘要 提出基于分时系统思想的单片机系统设计方案,给出一具体应用的实例以及详细的实现方法。 关键词: 分时操作系统单片机系统作业调度指针 前言   作为嵌入式系统主控单元——单片机,其软件往往是一个微观的实时操作系统,且大部分是为某种应用而专门设计的。系统程序有实时过程控制或实时信息处理的能力,要求能够及时响应随机发生的外部事件并对该事件做出快速处理。而分时操作系统却是把CPU的时间划分成长短基本相同的时间区间,即“时间片”,通过操作系统的管理,把这些时间片依次轮流地分配给各个用户使用。如果某
[工业控制]
6502单片机编程--伪指令1
**字节定义伪指令.DB** 该伪指令可以定义数据,比如字节,也可以定义 字符串,汉字等 1. 定义字节 在字节前加 $, 代表是十六进制 在字节前加 @, 代表是二进制 在字节前什么都不加,代表是十进制 例如 .ORG $0000 .DB $30,$31,$32 我们编译一下,选择 查看-内存窗口,发现地址0000开始的内容是 30 31 32 例如 .ORG $0000 .DB @00110000,@00110001,@00110010 我们编译一下,选择 查看-内存窗口,发现地址0000开始的内容是 30 31 32 例如 .ORG $0000 .DB 48,49,50 我们编译一下,选择 查看-内存窗口,发现地址0000开
[单片机]
单片机编程时关于int
在进行单片机编程时,我们经常用Int定义变量。以前学C语言时,我知道int它表示的位数跟具体的硬件结构有关。不过看了一本书中 慎用int 这节后,我对int又有了更一步的认识。 原来C语言并没有进一步明确不同硬件平台下int位宽由硬件平台决定这一点,从而导致了对int不同的理解。实际上int并没有具体的位宽限制,是由所用硬件平台(MCU)和编译器共同决定位宽为多少,通常情况下编译器会将int的位宽定为与所用MCU的位宽一致。 文中也举了两个例子说明因为对int理解的不够深入而犯的错误。一个是因为将int误理解为32位,而编译器和MCU为16位宽。一个产品需要显示开机后的时间,显示精度为秒。如果按照int为32位的话,定义secon
[单片机]
单片机学习:单片机编程入门十九
第一章 C 语言简介与Turbo C 的使用 ◎ C 语言的优点: ○ 效率高:C 语言的编译器会产生最小的程序代码。 ○ 可移植性/移植性高:经过些许的修改,可以在不同的平台使用。 ○ 功能强而有弹性。 ○ 需要记忆的东西很少,易于写作。 ◎ Turbo C 的安装:已安装在学校主机。 Turbo C 的环境设定:Turbo C 安装的目录必须设定在 PATH 的系统变量。 如: PATH=C:TC;C:DOS;...... 如此 TC 才能正常工作。 ◎ Turbo C 的使用 只要设定好 PATH 变量,在 DOS 提示号输入 TC ,就可以执行 Turbo C
[单片机]
四字节除以三字节无符号数除法程序
;看到网上有人求“四字节除以三字节”的子程序,随手把我以前写的程序改了改,发表在下面。 ;自我感觉不错,自认为是一个能够完成该功能的,_最_简_短_的程序。 ;程序如下,呵呵,献丑了。 ;=============================================================== ORG 0000H LJMP START ORG 0030H ;主程序开始 START: MOV R7, #05H ;设定一个32位的被除数 MOV R6, #0F5H ;05 F5 E0 FFH MOV R5, #0E0H ;=99 999 999 MOV R4, #0FFH ;
[单片机]
汇编和C语言相结合的51单片机编程技巧
  本文主要是关于汇编和C语言的相关介绍,并着重对汇编和C语言的不同及其编程技巧进行了详尽的阐述。   汇编和C语言   C语言和汇编语言的区别在于他们之间优缺点几乎是相反的。   C语言和汇编语言的优缺点:以c来举例   优点:   c的运行效率高;   c可以实现硬件的直接访问;   c代码的移植性好;   缺点:   c的代码复用性差;   c的代码维护性差;   c的扩展性差,即如果想增加新功能,需要修改较多的代码;   c语言的可读性差;   C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言;尽管C语言提供
[单片机]
汇编和C语言相结合的51<font color='red'>单片机编程</font>技巧
单片机编程效率的探讨
我是PC机底层编程转过来的,以前从来没接触过单片机,五个月前学习AVR,在这里学到很多东西。但也意识到电子工程师们的硬件编程思想与PC机底层编程思想上的很多不同,引发了一些思考。我说一说,供大家参考,只为学习,无意争论。 我第一次看到教程里Delay()函数的代码时我吓了一跳,竟然让单片机空转以实现和外界同步,这怎么可能? 试想,如果PC机CPU空转一秒,那么音乐会断一秒、画面会停顿一秒、下载文件会断一秒,这怎么可行? 我看到很多单片机程序,它们的单片机99.9%的工作时间都在打空转,99.9%大家可能感到有些危言耸听,那就让我们算一算: 已内部8M频的AVR单片机来说,单指令周期仅为1/8 = 0.125us,那一毫
[单片机]
单片机编程技巧-时钟中断
功能强大的时钟中断   在单片机程序设计中,设置一个好的时钟中断,将能使一个CPU发挥两个CPU的功效,大大方便和简化程序的编制,提高系统的效率与可操作性。我们可以把一些例行的及需要定时执行的程序放在时钟中断中,还可以利用时钟中断协助主程序完成定时、延时等操作。   下面以6MHz时钟的AT89C51系统为例,说明时钟中断的应用。   定时器初值与中断周期 时钟中断无需过于频繁,一般取20mS(50Hz)即可。如需要百分之一秒的时基信号,可取10mS(100Hz)。这里取20mS,用定时器T0工作于16位定时器方式(方式1)。T0的工作方式为:每过一个机器周期自动加1,当计满0FFFFh,要溢出时,便会产生中断,并由硬件设置相应的
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved