付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统编程题汇编(带答案)O从一数到十COUNTEQU0x30003100;定义变量COUNT的基地址AREAExample1,CODE,READONLY;声明代码段Examplel为只读ENTRYCODE32STARTLDRR1,=COUNTMOVR0,#0STRR0,R1储单元LOOPLDRR1,=COUNTLDRR0,R1到R0中;标识程序入口;声明32位ARM指令;将0X30003100赋给R1;执行R0=0;存储R0寄存器的数据到R1指向的存;将0X30003100赋给R1;将R1中的数值作为地址,取出此地址中的数据保存ADDR0,R0,#1CMPR0,#10MOVHSR0,#0
2、STRR0,R1址单元BLOOPEND;执行R0=R0+1;将R0与10进行比较;若R0大于等于10,则R0=0;存储R0寄存器的数据到R1指向的地;跳转到LOOP;汇编文件结束;初始化X为9;初始化N为8XEQU9nEQU8AREAExample3,CODE,READONLY;生明代码段Example3为只读ENTRY;标识程序入口路CODE32;声明32位ARM指令STARTLDRSP,=0x30003F00;把0x30003F00赋给SP(R13)LDRR0,=XLDRR1,=nBLPOW;把9赋给R0;把8赋给R1;跳转到POW,并把下一条指令地址存入到R14中HALTHALT;等待跳
3、转POWSTMFDSP!,R1-R12,LRMOVSR2,R1MOVEQR0,#1BEQPOW_ENDMOVR1,R0SUBR2,R2,#1POW_L1BLDO_MULR14中SUBSR2,R2,#1;将R1-R12入栈,满递减堆栈;将R1赋给R2,并影响标志位若Z=1,则R0=1;若2=1,跳转至ijPOW_END;将R0中值赋给R1;将R2-1的只赋给R2;跳转到DO-MUL,并把下一条指令地址存入;将R2-1的值赋给R2,并影响标志BNEPOW_ENDLDMFDDO_MULMULMOVPOW_L1SP!,R1-R12,PCR0,R1,R0PC,LR;若2=0,跳转到POW_L1;数据出栈
4、,存入到R1-R12,PC中;把R1*R0的值赋给R0;LR中的值赋给PCEND:从直加到一百;汇编结束程序清单(一)C语言实验参考程序#defineuint8unsignedchar;定义一个无符号字符常量uint8#defineuint32unsignedint;定义一个无符号整形常量unint32#defineN100;定义一个常量N=100(宏定义,100用N代替)uint32sum;定义sum为无符号整型常量(声明一个unsignedint型的变量sum)voidMain(void);主函数uint32i;定义无符号整型常量i(声明一个unsignedint型的变量i)sum=0;f
5、or(i=0;i<=N;i+)sum+=i;while(1);sum初始值为0;i在N内自增加1(i从0开始,i<=N时循环成立);把sum+i赋给sum;为真循环程序清单(二)简单的启动代码IMPORT|Image$RO$Limit|IMPORT|Image$RW$Base|IMPORT|Image$ZI$Base|IMPORT|Image$ZI$Limit|IMPORTMain;R0输出段存储区域界限;RW输出段运行时起始地址;ZI输出段运行时起始地址;ZI输出段存储区域界限;主函数AREAStart,CODE,READONLY;声明代码段start,为只读ENTRY;程序入口
6、CODE32;声明32位ARM指令ResetLDRSP,=0x40003f00;将0x40003f00赋给SPLDRR0,=|Image$RO$Limit|;将R0输出段存储区域界限赋给R0LDRR1,=|Image$RW$Base|XRW输出段运行时起始地址赋给R1LDRR3,=|Image$ZI$Base|;将21输出段运行时起始地址赋给R3CMPR0,R1BEQLOOP1LOOP0CMPR1,R3LDRCCR2,R0,#4R0=R0+4;比较R0和R1,相等Z=1,反之Z=0;Z=1,则跳到LOOP1;比较R1和R3,若R1<R3,C=0;若C=0,读取R0地址单元内容并且存入R2
7、,且STRCCR2,R1,#4;C=0,读取R2中的数据存入R1,且R1=R1+4BCCLOOP1LDRMOVLOOP0R1,=|Image$ZI$Limit|R2,#0;C=0,跳转到LOOP0;将ZI输出段存储区域赋给R1;把0赋给R2LOOP2CMPR3,R1;比较R1和R3,若R1<R3,C=0STRCCR2,R3,#4;C=0,将R2中数据保存到内存单元R3中,且R3=R3+4BCCLOOP2BMainEND;C=0,跳转到LOOP2;跳转到主程序;汇编结束实验四程序清单(一)C语言调用汇编的参考程序#defineuint8unsignedchar;定义一个无符号字符常量uin
8、t8#defineuint32unsignedint;定义一个无符号整型常量.uint32externuint32Add(uint32x,uint32y);/声明子程序Add为一个无符号整型常量,它为2个无符号整型常量x,y的和;定义sum为无符号整型常量;无返回主程序;sum等于555+168;为真循环uint32sum;voidMain(void)sum=Add(555,168);while(1);程序清单(二)汇编加法函数程序EXPORTAdd;声明子程序Add方便调用AREAStart,CODE,READONLY;声明代码段start,为只读;程序入口;声明32位ARM指令;将R0+R
9、1值赋给R0;将LR值赋给PC;汇编结束ENTRYCODE32AddADDR0,R0,R1MOVPC,LREND指令条件码列表条件码助记符标志含义EQZ=1梢等NEz=o不相等CS/H5C=L无符号数大于或等于cc/wC=Q无符号数小于MINfL负数PL20正数或零VSV=L溢出1VC;二。没有溢出HIC=l.2=0无符号数大于LSGEC=0,Z=lN二甘无符号数小于或等于带符号数大于或等于11X:=V带符号数小于GTZ=0>N=V带符号数大于LE带符号数小于或等于二任何无条件执行(指令默认条件)14、设计编程:LPC2131的P0.7引脚连接了一个蜂鸣器,编程发出等周期的滴滴声。答:#
10、defineVoidDelayNS(intm)inti;for(;m>0;m-)for(i=0;i<50000;i+)main()PINSEL0=0x00000000;IO0DIR=1<<7;while(1)(IO0SET=1<<7;DelayNS(50);IO0CLR=1<<7;DelayNS(50);)15、设计编程:LPC2131的P01:0两引脚分别连接了2个按键K1和K4;P07:6两引脚分别连接了2个指示灯LED1和LED2请编制驱动程序,使Kx按键时,LEDx灯亮。答:#definek11<<0#definek21<
11、;<1#defineLED11<<7#defineLED21<<8main()(PINSEL0=0x00000000;IO0DIR=IO0DIR&(k1);IO0DIR=IO0DIR&(k2);IO0DIR=IO0DIR|LED1;IO0DIR=IO0DIR|LED2;IO0CLR=IO0CLR|LED1|LED2;While(1)(If(IO0PIN&k1)=0)IO0SET=LED1;elseIO0SET=LED1;If(IO0PIN&k2)=0)IO0SET=LED2;elseIO0SET=LED2;)16、ARM芯片中定时器
12、结构原理如下图,试设计一个周期为2秒的方波发生器。(假设该系统的外围设备时钟频率Fpclk=10MHz)答:intmianPINSEL0=PINSEL0&(1(3<<10)|(2<<10);5T0CTCR=0x00;T0TC=0;T0PR=99;T0MCR=0x02<<3;T0MR1=Fpclk/100;T0EMR|=0xc2;T0TCR=0x01;While(1);)17、使用学过的知识设计设计一个汽车用“车速表”,写出你的设计方案并编程实现。提示:可用霍尔元件将车轮的转动转换为脉冲。车轮每转动一圈会产生一个方波脉冲。转动脉冲:void_irqIR
13、Q_Timer0(void)if(IO0SET&BEEP)=0)IO0SET=BEEP;/*关闭BEEP*/elseIO0CLR=BEEP;T0IR=0x01;/*清除中断标志*/VICVectAddr=0x00;/*通知VIC中断处理结束*/)intmain(void)intspped=1;PINSEL1=0x00000000;/*设置管脚连接GPIO*/IO0DIR=BEEP;/*设置BEEP空制口输出*/IRQEnable();/*IRQ中断使能*/*定时器0初始化*/T0TC=0;/*定时器设置为0*/T0PR=0;/*时钟不分频*/T0MCR=0x03;/*设置T0MR也配后
14、复位T0TC并产生中断标志*/T0MR0=Fpclk/spped;/*0.5秒钟定时*/T0TCR=0x01;/*启动定时器*/*设置定时器0中断IRQ*/VICIntSelect=0x00;/*所有中断通道设置为IRQ中断*/VICVectCntl0=0x20|0x04;/*设置定时器0中断通道分配最高优先级*/VICVectAddr0=(uint32)IRQ_Timer0;/*设置中断服务程序地址*/VICIntEnable=1<<0x04;/*使能定时器0中断*/while(1)if(IO0PIN&KEY1)=0)spped=10;T0MR0=Fpclk/spped;
15、/*0.5秒钟定时*/T0TC=0;/*定时器设置为0*/elseif(IO0PIN&KEY2)=0)spped=20;T0MR0=Fpclk/spped;/*0.5秒钟定时*/T0TC=0;/*定时器设置为0*/elseif(IO0PIN&KEY3)=0)spped=30;T0MR0=Fpclk/spped;/*0.5秒钟定时*/T0TC=0;/*定时器设置为0*/elseif(IO0PIN&KEY4)=0)spped=40;T0MR0=Fpclk/spped;/*0.5秒钟定时*/T0TC=0;/*定时器设置为0*/;return0;汽车车速:intmain(voi
16、d)intVx;PINSEL0=(PINSEL0&(3<<20)|(2<20);PINSEL0=PINSEL0&(0<<24);T0CTCR&=0xf0;T0TC=0;T0PR=99;T0MCR=0x03;T0MR0=Fpclk/300;T1CTCR=(T1CTCR&(0x0f)|0xf1);T1TC=0;T1MCR=0x00;T1CCR&=0x07T0TCR=0x01;T1TCR=0x01;while(1)(if(T0IR&0X01)=1)(T0IR=0x01;Vx=T1TC;T1TC=0;VtotalLen+=V
17、x;VthisLen+=Vx;Vspeed=(Vx*L*3.6)/HrN;if(IO0PIN&KClr)=0)VthisLen=0;return0;1、编写一程序,用查询的方式,对S3c2410的A/D转换器的第3通道连续进行100次A/D转换,然后将其结果求平均值。设预分频为49。注意:A/D转换器有独立的模拟信号输入引脚AIN0-AIN9。ADCCON式如下:1514136543210ECFLGPRSCENPRSCVLSEL_MUXSTDBMREAD_STAFEINABLE_STARTADCDAT0式如下:15141312111090UPDOWNAUTO_PSTXY_PST保留(0
18、)转换结果ADCCONADCDAT0地址宏定义为:#definerADCCON#definerADCDAT0#definepref#definech(*(volatileunsigned*)0x58000000)(*(volatileunsigned*)0x5800000c)493intadc(void)/查询是否已经启动转换/查询转换是否结束/读取转换结果adc_data);rADCCON=(1<<14)|(pref<<6)|(ch<<3)|1;允许预分频,启动转换while(rADCCON&0x01=1);while(rADCCON&0x
19、8000=0);returnrADCDAT0&0x3ff;voidmain()intadc_data=0,i;for(i=0;i<100;i+)adc_data+=adc();adc_data=adc_data/100;printf("adcaverageis:%dn"1、编写程序,将存储器从0x400000开始的200个字数据,传送到0x400600开始的区域。解:MOVR0,#0x400000LDRR1,=0x400600MOVR7,#200LP:LDRR2,R0,#4STRR2,R1,#4SUBSR7,R7,#1BNELPHEREBHERE2、编写一程序
20、,查找存储器从0x500000开始的200个字中为5的数目,将其结果存到0x600000中。解:MO取0,#0x500000MOVR1,#0MO决7,#200LPLDRR2,R0,#4CMRR2,#5BNENEXTADDR1,R1,#1NEXTSUBSR7,R7,#1BNE_PMOVR0,#0x600000STRR1,R0B$3、实现1+2+N0NEQU5;常量的定义AREAExample,CODE,READONLY;定义段名属性等ENTRY;程序入口CODE32;ARM代码START;行标定义LDRR0,=N;R0赋值MOVR2,R0;R2充当计数器MOVR0,#0;R00MOVR1,#0;
21、R10LOOP;行标CMPR1,R2;比较R1R2BHIADD_END;如果R1>R2跳转至UADD_END;分支的实现ADDR0,R0,R1;R0R0+R1ADDR1,R1,#1;R1R1+1BLOOP;无条件跳转至LOOP;循环的实现ADD_END;行标定义BADD_END;无条件跳转ADD_ENDEND;代码结束以实验平台PXA270为设计环境,试写出一段代码,能控制八段数码管以递减方式点亮显示(15分)#include<stdio.h>#include"register_variant.h"#defineLED_CS2C(volatileunsignedshortint*)(0x10300000)/LED1andLED2#
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高尔夫球童6S执行考核试卷含答案
- 砌筑工岗中理论水平考核试卷含答案
- 规范:黑色素瘤靶向MDT查房:黑色素瘤的TIL细胞疗法应用
- 精准:子宫内膜癌靶向护理查房:一例PTEN缺失患者全程管理
- 新版2027上海高考语文《 文学类文本语言赏析+作用题+构思题》必背知识清单
- 某纺织厂环保执行细则
- 某塑料厂物料管控办法
- 浙江工商大学杭州商学院《电工电拖》2026-2027学年第一学期期末试卷含解析
- 浙江省湖州市德清县2027届八上物理期末联考模拟试题含解析
- 2027届安徽省蚌埠实验中学数学八年级第一学期期末检测试题含解析
- 雨课堂学堂在线学堂云《舰载机结构与系统(中国人民解放军海军航空)》单元测试考核答案
- XX税务师事务所内部管理制度
- 2026 年烟花爆竹安全事故深度复盘与全链条教训总结报告
- GB/T 4982-2025真空技术夹紧型快卸连接器尺寸
- DB31∕ 757-2020 工业气体空分单位产品能源消耗限额
- 《JBT10394.1-2002 涂装设备通 用技术条件第 1 部分:钣金件》(2026年)实施指南
- 2025年大学《贸易经济-数字贸易概论》考试参考题库及答案解析
- 2025年十堰市张湾区中小学教师招聘考试试题及答案
- 福田汽车公司介绍
- 甘肃学考历史试卷及答案
- GB/T 5563-2025橡胶和塑料软管及软管组合件静液压试验方法
评论
0/150
提交评论