试设计一个子程序,其功能为将(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单片机排序程序
推荐阅读最新更新时间:2024-03-16 16:02
51单片机实现能设置速度档位的数码管倒计时程序
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: LED-74HC595 ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200607 ---- @ModifiedTime: 20200619
[单片机]
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后还是
[单片机]
手把手教您编写第一个单片机程序
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
[单片机]
利用51单片机完成一种智能助眠机系统的设计
一、功能简介 本项目使用Proteus8.12仿真51单片机控制器,使用蜂鸣器闹铃模块、LCD1602显示模块、心率血氧模块、PCF8691 ADC模块、按键模块等。 主要功能: 系统运行后,LCD1602显示传感器采集的心率和血氧值以及当前时间;可通过K3键进入时间修改模式,K3用于切换时、分、秒,K1和K2键调节;时间修改完成后可按下K4键保存并返回主界面。 可通过K4键进入助眠和起床闹铃设置模式,K4用于切换助眠时/分,起床时/分,K1和K2键调节。闹铃设置好后可按下K3键保存并返回主界面。若当前时间到达助眠时间或起床闹钟时间,则开启蜂鸣器闹铃,可通过K2键取消正在闹铃。正常界面下,可通过K1键查阅监测心率和血氧的数
[单片机]
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
[单片机]