1冒泡排序的ARM汇编程序Word格式文档下载.docx

上传人:b****1 文档编号:13517364 上传时间:2022-10-11 格式:DOCX 页数:17 大小:19.58KB
下载 相关 举报
1冒泡排序的ARM汇编程序Word格式文档下载.docx_第1页
第1页 / 共17页
1冒泡排序的ARM汇编程序Word格式文档下载.docx_第2页
第2页 / 共17页
1冒泡排序的ARM汇编程序Word格式文档下载.docx_第3页
第3页 / 共17页
1冒泡排序的ARM汇编程序Word格式文档下载.docx_第4页
第4页 / 共17页
1冒泡排序的ARM汇编程序Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

1冒泡排序的ARM汇编程序Word格式文档下载.docx

《1冒泡排序的ARM汇编程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《1冒泡排序的ARM汇编程序Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

1冒泡排序的ARM汇编程序Word格式文档下载.docx

END

2ARM汇编希尔排序法对10个带符号数进行排序

Code:

voidshell(intsrc[],intl,intr){

intih;

r++;

for(ih=1;

ih<

(r-l)/9;

ih=ih*3+1);

//eax,ih

//ebx,il

//ecx,ir

//edx,cmps

_asm{

pusheax

pushebx

pushecx

pushedx

pushesi

pushedi;

貌似这堆进栈用处不大哎

movedi,src

moveax,dwordptr[ih]

LIH:

cmpeax,0

jnaEXIH

movebx,eax

decebx

LLH:

cmpebx,dwordptr[r]

jnbEXLLH

movecx,ebx

movedx,dwordptr[edi+ecx*4]

LCMP:

movesi,eax

decesi

cmpecx,esi

jnaEXCMP

subecx,eax

cmpedx,dwordptr[edi+ecx*4]

popecx

jnbEXCMP

movebx,dwordptr[edi+ecx*4]

movdwordptr[edi+ecx*4],ebx

popebx

jmpLCMP

EXCMP:

movdwordptr[edi+ecx*4],edx

incebx

jmpLLH

EXLLH:

movecx,3

cdq

idivecx

popedx

jmpLIH

EXIH:

popedi

popesi

popeax

}

}

351单片机C语言对流水灯编程,用定时中断做

#include<

reg52.h>

defineucharunsignedchar

ucharm=0,i=0;

voidmain(){TMOD|=0x01;

//定时器0工作方式为1

TH0=(65536-50000)/256;

//装初值

TL0=(65536-50000)%256;

EA=1;

//开总中断ET0=1;

//开定时器中断TR0=1;

//开启定时器

while

(1);

//等待中断

voidtimer0()interrupt1

{

m++;

if(m==5)//12M晶振定时5*50MS=250MS

{

m=0;

P1=~(0X01<

<

i);

//P1接8个LED

if(++i==8)i=0;

}

4单片机编程C语言和汇编都可以。

外部中断int0口控制p2.3口得报警器。

中断信号是开关量,就是行程开关。

本程序晶振为:

12MHZ,报警输出频率为:

100HZ

ORG0000HLJMPMAINORG0003H;

INT0中断入口

LJMPXC_INT0

ORG000BH;

T0中断入口

LJMPBJ_T0

ORG0030HMAIN:

MOVTMOD,#01H

MOVTH0,#0ECH;

定时初值,定时值为5ms

MOVTL0,#78H

SETBEA

SETBEX0

SETBET0

CLRIT0

SJMP$;

===int0外部中断子程序===

XC_INT0:

PUSHACC

PUSHPSW

SETBTR0

POPPSW

POPACC

RETI;

===报警频率产生T0中断===

BJ_T0:

CPLp2.3

MOVTH0,#0ECH

RETI

5单片机外部中断的编程

设计单片机程序,基于T0用定时中断设计秒表,秒计数结果在数码管显示,用外部中断INT0(边沿触发方式)对秒计数结果进行清零,用P3.0对秒计数进行启动和停止控制。

T0定时中断50毫秒,进行20次中断得到1秒的定时,秒计数结果送P1口进行LED显示,将外部中断设置成边沿触发方式。

/***********************************************/

reg51.h>

 

sbitshiwei=P2^0;

//定义接口

sbitgewei=P2^1;

/*********************************************/

unsignedcharcodetable[]={//数码显示表

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f};

/*******************************************/

voidmsdelay()//5ms延时

intx,y;

for(x=(65536-15)%256;

x;

x--)

for(y=(65536-15)/256;

y;

y--);

}

/***************************************/

/**************************************/

voidinit()//初始化

TMOD=0x11;

PX0=1;

TH0=(65535-50)/256;

TL0=(65535-50)%256;

TH1=(65535-100)/256;

TL1=(65535-100)%256;

EX0=1;

ET0=1;

ET1=1;

EA=1;

TR1=1;

/*****************************************/

unsignedcharpasstime=0;

//全局变量

unsignedchartimecount=0;

main()

unsignedcharcount;

count=0;

init();

while(P3^0!

=1);

msdelay();

if(P3^0==1)//确定开始或者结束

{count++;

if(count%2)

{TR0=1;

else

{TR0=0;

voidclear()interrupt0//清零

TR0=0;

timecount=0;

passtime=0;

voidtimer()interrupt2//50ms定时

timecount++;

if(timecount==20)

passtime++;

//50*20=1s

TR0=1;

voiddisplaytimer()interrupt2//用于数码管的两位显示,十位和各位

shiwei=0;

//动态显示,其中P2.0=0十位选通P2.1=各位选通

gewei=1;

P0=table[passtime/10];

//十位

shiwei=1;

gewei=0;

P0=table[passtime%10];

//各位

6.80c51单片机很简单的中断编程

试编写一段对中断系统初始化的程序,使之允许INRO(上面有一横),INT1(上面有一横),T0,串行口中断,且使T0中断为高优先级。

ORG0000H

LJMPSTART

ORG0003H

LJMP_X0_INT

ORG000BH

LJMP_T0_INT

ORG0013H

LJMP_X1_INT

ORG001BH

LJMP_T1_INT

ORG0023H

LJMP_S_INT

START:

MOVIE,#10010111B

MOVIP,#00000010B

..........

_X0_INT:

RETI

END

7.利用外部输入中断设计一个应用系统,实时显示P3.3引脚上出现的负跳变脉冲的个数。

用51单片机

AJMPSTART

ORG0013H

AJMPINT1

ORG0100H

SETBEA;

总中断允许SETBIT1;

外部中断1允许

MOVR0,#00H

HERE:

SJMPHEREI

NT1:

INCR0

8.已知89C51单片机的晶振频率为6MHz,T1扩展为第三外部终端源,用T0定时。

试编程实现T1扩展为第三外部终端源功能(每次中断就取反P1.2引脚)且由P1.0和P1.1引脚分别输出周期为3ms和600us的方波。

(用中断编程,T1用模式2、T0用模式1;

写出定时计数初值计算过程,程序的首地址从0000H开始,注释每条语句)

外部中断信号接到P3.3口,为INT0中断,程序如下

sbitX0=P1^0;

//用X0表示

P1.0sbitX1=P1^1;

//用X0表示P1.1

sbitX2=P1^2;

//用X0表示P1.2

voidmain(void)

{

P1=0x00;

//将P1口初始化位高电平,如果没有这句,初始化为低电平,这里可根据需要选择

//中断允许

IT1=1;

//触发方式为下降沿触发

EX1=1;

//外

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1