采用冒泡法编写51单片机排序程序

发布者:创新火箭最新更新时间:2018-05-11 来源: eefocus关键字:冒泡法  51单片机  排序程序 手机看文章 扫描二维码
随时随地手机看文章

试设计一个子程序,其功能为将(R0)指出的内部RAM中6个单字节正整数按从小到大的次序重新排列。 
;========================================
最佳答案:
下列程序使用冒泡法排序,经过KEIL仿真测试通过。
    ORG 0000H
;------------------------下面先准备6个数字
    MOV 40H, #8AH
    MOV 41H, #3BH
    MOV 42H, #0B9H
    MOV 43H, #47H
    MOV 44H, #29H
    MOV 45H, #0AFH

    CALL SORT6           ;调用排序子程序

    SJMP $               ;停止,此时可以观察排序结果
;-------------------------------------
SORT6:                   ;排序子程序
    MOV R6, #5          ;6个数字,比较5次
S1:
    MOV R0, #40H        ;起始地址
    MOV B, R6
    MOV R7, B
    CLR PSW.5           ;交换标志清零
S2:
    MOV B, @R0         ;取出前一个数
    INC R0
    MOV A, @R0         ;取出后一个数
    CJNE A, B, S3        ;后-前
S3:
    JNC N_JH            ;够减就不用交换
    MOV @R0, B          ;交换存放
    DEC R0
    MOV @R0, A
    INC R0
    SETB PSW.5           ;设立交换标志位
N_JH:
    DJNZ R7, S2
    JNB PSW.5, S_END    ;没有交换过,就结束
    DJNZ R6, S1
S_END:
    RET
;-------------------------------------
END
;========================================


关键字:冒泡法  51单片机  排序程序 引用地址:采用冒泡法编写51单片机排序程序

上一篇:MCS-51单片机,编程序,计算分段函数的函数值
下一篇:计时秒表程序设计

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

51单片机实现能设置速度档位的数码管倒计时程序
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: LED-74HC595 ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200607 ---- @ModifiedTime: 20200619
[单片机]
<font color='red'>51单片机</font>实现能设置速度档位的数码管倒计时程序
51单片机学习之路 —— 1.7 独立键盘
1   作业回顾      作业               2 独立键盘概念         s2 s3 s4 s5 为独立键盘与P3^0 P3^1 P3^2 P3^3 相连接   s2 = 0 就是s2被按下的意思    3 程序编写   1 先写个简单的     要求 按下s2按键 led点亮,再次按下熄灭     代码 s2按键    分析:       1         sbit S2 =P3^4;                  在板子的原理图中,S2 接的是P3.4口不要写错了     2                    假如S2 被按下,如果10ms后还是
[单片机]
<font color='red'>51单片机</font>学习之路 —— 1.7 独立键盘
手把手教您编写第一个单片机程序
51单片机的开发环境是Keil 软件。Keil 软件虽然是一个收费软件,但从uVision2到目前的uVison4版本都有破解版,在网上都可以找到下载。笔者推荐大家使用uVisong4破解版本,好处不用多说。Keil uVision4软件的压缩包里附有安装和破解说明,本文不再赘述。 开发一个单片机程序,一般都要经过这几个步骤:建立工程- 建立C文件- 添加C文件到工程- 编写C代码- 设置目标工程的选项- 编译工程产生HEX文件- 将HEX文件下载到单片机。本文将一步一步手把手教您开发一个LED闪烁的简单且实用的C51程序。让您从0基础起步学习开发51单片机。 安装Keil uVison4之后,第一次运行出现如图1的界面,从上
[单片机]
手把手教您编写第一个单片机程序
8051单片机串行口扩展LED显示器接口与应用
在8051单片机应用系统中,可以利用串行接口来扩展并行I/O口(假定串行口工作在移位寄存器、方式0的状态下)。串行移位输出接输出移位寄存器74LS164可扩展一个8位并行输出口,用以连接一个LED数码管作静态显示。 如图所示。由6个共阳极LED数码管,编程使其显示200304。 C51软件设计: # include stdio.h //预处理 # include reg51.h unsigned char code ledcode ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88}; //字型编码 unsigned char co
[单片机]
80<font color='red'>51单片机</font>串行口扩展LED显示器接口与应用
利用51单片机完成一种智能助眠机系统的设计
一、功能简介 本项目使用Proteus8.12仿真51单片机控制器,使用蜂鸣器闹铃模块、LCD1602显示模块、心率血氧模块、PCF8691 ADC模块、按键模块等。 主要功能: 系统运行后,LCD1602显示传感器采集的心率和血氧值以及当前时间;可通过K3键进入时间修改模式,K3用于切换时、分、秒,K1和K2键调节;时间修改完成后可按下K4键保存并返回主界面。 可通过K4键进入助眠和起床闹铃设置模式,K4用于切换助眠时/分,起床时/分,K1和K2键调节。闹铃设置好后可按下K3键保存并返回主界面。若当前时间到达助眠时间或起床闹钟时间,则开启蜂鸣器闹铃,可通过K2键取消正在闹铃。正常界面下,可通过K1键查阅监测心率和血氧的数
[单片机]
利用<font color='red'>51单片机</font>完成一种智能助眠机系统的设计
51单片机有几个中断源_52单片机中断源
51单片机有5个中断源分别是: 1、INT0——外部中断0,由P3.2端口引入,低电平或下降沿引起。默认优先级最高 2、INT1——外部中断1,由P3.3端口引入,低电平或下降沿引起。默认优先级第二 3、T0——定时器/计数器0中断,由T0计数器计满回零引起。默认优先级第三 4、T1——定时器/计数器1中断,由T1计数器计满回零引起。默认优先级第四 5、T2——定时器/计数器2中断,由T2计数器计满回零引起。默认优先级第五 另外52单片机多加一个中断源 6、TI/RI——串行口中断,串行端口完成一帧字符发送/接收后引起。默认中断优先级最低 --------------------------------
[单片机]
MCS-51单片机片内RAM的空间分配
简述MCS-51单片机片内RAM的空间分配。内部RAM低128字节分为哪几个主要部分?各部分主要功能是什么? 片内数据存储器按照寻址方式,可以分为三个部分:低128字节数据区,高128字节数据区间,特殊功能寄存器区。低128字节数据区分为三个区域:工作寄存器区,位寻找区和通用数据区。工作寄存器区4组工作寄存器;位寻找区既可以做位操作,也可以字节操作;通用数据区用于堆栈和存放程序运行时的数据和中间结果。
[单片机]
51单片机与A/D转换器MAX195的接口设计
MAX195是16位逐次逼近方式的ADC。它将高精度、高速度、低电源功耗(消耗电流仅10μA)的关闭方式等性能结合在一起。内部校准电路对线性度与偏置误差进行校正,所以无需外部调整便可达到全部额定的性能指标。电容性的DAC结构使之具有特有的85kbps跟踪/保持功能,变换时间仅需9.4μs。三态串行数据输出及引脚可选的单极性(0~VREF)或双极性(-VREF~+VREF)的输入范围使之可广泛应用于便携式仪表、医用信号采集及多传感器测量等系统中。   1 MAX195引脚及说明   MAX195有16个引脚,其排列如图1所示。   2 MAX195转换原理及时序   MAX195片内含有电容性的数字模拟变换器(DAC
[单片机]
<font color='red'>51单片机</font>与A/D转换器MAX195的接口设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • Linux内核移植
    实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核下面以Linux2 6 30 4内核移植到gec2440为例:一、准备 ...
  • S5PV210 PWM定时器
    第一节 S5PV210的PWM定时器S5PV210共有5个32bit的PWM定时器,其中定时器0、1、2、3有PWM功能,定时器4没有输出引脚。PWM定时器使用PCLK_PS ...
  • S5PV210 NAND Flash
    NAND Flash关于NAND FlashS5PV210的NAND Flash控制器有如下特点:1) 支持512byte,2k,4k,8k的页大小2) 通过各种软件模式来进行NAND Fl ...
  • S5PV210串口
    串口设置之输入输出字符S5PV210 UART相关说明 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER,它用来 ...
  • S5PV210按键控制LED
    原理图如图所示:查询用户手册得到:程序例子:(完整代码见“代码下载链接”)1、轮询的方式查询按键事件 *main c* 核心代码如下:while(1 ...
  • S5PV210控制蜂鸣器
  • S5PV210的启动过程
  • S5PV210点亮LED
  • S5PV210启动过程详解
何立民专栏 单片机及嵌入式宝典

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

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