ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:68.73KB ,
资源ID:27061700      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27061700.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机程序.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机程序.docx

1、单片机程序1、编程将片内RAM30H单元开始的B的数据传送到片外RAM3000H开始的单元中去。解:STRAT:MOV R0,#30H MOV R7,#0FH MOV DPTR,#3000HLOOP: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R7,LOOP RET2、编程将片内RAM 40H单元中的内容送到片外RAM2000H单元中。解: ORG 0100H MOV A,40H MOV DPTR,#2000H MOVX DPTR,A END3、将内部RAM 40H开始的10个字节的数搬到外部RAM 2000H处 MOV DPTR,#2000H MOV

2、 R0,#40H MOV R2,#0AHLOOP: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,LOOP SJMP $ END4、将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。MOV DPTR,#8000HMOV R0,#10HMOV R2,#50HLOOP:MOVX A,DPTR ;取数MOVX R0,A ;存数 1NC DPTR 1NC R0 DJNZ R2,LOOP RET5片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中解 START: MOV R0,#40H ;数据块首地址

3、送R0 MOV R7,#09H ;比较次数送MOV A,R0 ;取数送LOOP: INC R0 MOV 30H,R0 ;取数送H CJNE A,30H,NEHT ;(A)与(30H)相比NEXT: JNC BIE1 (A)(30H)转BIR1MOV A,30H ;(A)(30H),大数送ABIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较MOV 50H,A ;比较结束,大数送50HRET 6.片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和256 )解ADDIO:MOV R0,30H MOV R7,#9 MOV A,R0 LOOP: INC R0 ADD

4、 A,R0 DJNZ R7,LOOP MOV 30H,A RET7、 设从内存BLOCK单元开始存放一 无符号数的数据块,其长度为LEN。试找出其最小数,并存入MIN单元。COMP: MOV A,#0FFH ;置比较的初始值MOV R2,#LEN ;置数据块长度MOV R1,#BLOCK ;置地址指针LOOP: CLR CSUBB A,R1 ;比较JC NEXT ;若小,则恢复原值MOV A,R1SJMP NEXT1NEXT: ADD A,R1NEXT1: INC R1 ;若大,则取下个数比较DJNZ : DJNZ R2,LOOPMOV MN ,A ;存最小数SJMP $8、比较存放在ONE,

5、TWO,TRE三个单元的无符号数,并将小数存放在20H单元中。MOV A,ONECJNE A,TWO,RRRR: JC SSMOV A,TWOCJNE A,TRE,TTTT: JC WWSJMP UUSS: CJNE A,TRE,VVVV: JC WWUU: MOV A,TREWW: MOV 20H,A9、设在单片机内部RAM中从STR单元开始存放有一数据块,该数据块以#00H结束,试统计其中为#0FFH的单元个数并存入NUM单元。COUNT: CLR A ;清计数单元 MOV R0,#STR ;置地址指针LOOP: CJNE #0FFH,LOOP1;数据为#0FFH则计数单元加1 INC A

6、LOOP1: INC R0 CJNE R0,#000H,LOOP;数据块取完 MOV NUM A ;存统计结果 SJMP $10、将片内RAM2单元(如20H)的内容分成两段,并将它们分别存入2单元和3单元。(高位清零)。MOV R0,#21HMOV A,20HANL A,#0FHMOV R0,AINC R0MOV A,20HSWAP AANL A,#0FHMOV R011、从1加到5,最终结果存入35H,试编写程序。解:方法(1)ORG 1000HCLR AMOV R0,#5L2:ADD A,R0DJNZ R0,L2MOV 35H,AEND方法(2)ORG 1000HCLR AMOV R0,

7、#0L1: INC R0ADD A,R0CJNE R0,#5,L1MOV 35H,AEND12.从内部RAM30H单元开始,有10个单字节数据。试编一个程序,把其中的正数、负数分别送40H和50H开始的内部RAM单元。 MOV R0,#30H MOV R1,#40H MOV A,#50H MOV R7,#10LOOP: MOV 20H,R0 JB ,FSHUZSHU: MOV R1,20H INC R1 SJMP NEXTFSHU: XCH A,R1 MOV R1,A XCH A,R1 INC ANEXT: DJNZ R7,LOOP SJMP $ 13、编一程序段,将字节地址30H3FH单元的

8、内容逐一取出减1,然后再放回原处,如果取出的内容为00H,则不要减1,仍将0放回原处。MOV R7,#10H MOV R1,#30HLOOP: CJNE R1,#00H,NEXT MOV R1,#00H SJMP NEXT1NEXT: DEC R1NEXT1:INC R1 DJNZ R7,LOOP SJMP $ END14、求平方子程序计算X=a2+b2先建立09的平方表(十进制),TAB为表首地址指针。子程序所完成的功能是用查表的方式求出平方值。计算X=a2+b2时只要两次调用子程序分别求出a2和b2,然后相加即可。(设X,a,b分别存于内部RAM的ONE,TWO和TRE三个单元中)。子程序

9、入口:(A)=待查表的数子程序入 口:(A)=平方值 MAIN: MOV A;ONE ;调求平方子程序 ACALL SQR MOV R1,A MOV A,TWO ACALL SQR ADD A,R1 ;求平方和 MOV TRE,A SJMP $ SQR: INC A ;修正查表偏移量(入口A) MOVC A, A+PC ;查表求平方值(出口A )RET ;返回TAB: DB: 0,1,4,9,16 ;平方表DB: 25,36,49,64,8115、编程实现字符串长度统计:设在单片机内RAM中从STR单元开始有一字符串以ASC II码存放,该字符串以$结束,试统计该字符串的长度,其结果存于LON

10、单元。 START: CLR A ;计数单元清零 MOV R0,#STR LOOP: CJNE R0,#24H,NEXT ;判断字符串是否结束 SJMP COMP NEXT: INT A INC R0 SJMP LOOP COMP: MOV LON,A ;将长度存入LON单元 SJMP $ 16、将31H、32H单元与41 H、40H单元的双字节十进制无符号数相加,结果存入32H,31H,30H单元。即(31H)(30H)+(41H)(40H) 32H、31H、30H。 MOV R0,#30HMOV R1,#40HMOV R2,#02HCLR CL1: MOV A,R0ADDC A,R1DA

11、AMOV R0,AINC R0INC R1DJNZ R2,L1CLR AMOV ,CMOV R0,A17、 编程实现逻辑运算:Q=(U *(V+W)+Z。设UZ的位地址为00H的位地址为07H。实际中UZ可以是外部输入端口信号或软件设定的一些控制位 MOV C,01H O RL C,02H ANL C,00H MOV F0,C ;暂存U*(V+W)的值 MOV C,03H ANL C,/04H ORL C,F0 ORL C,/05H MOV 07H,C ; 保存结果18 已知一MCS51单片机系统的片内RAM 20H单元存放了一个8位无符号数7AH,片外扩展RAM的8000H存放了一个8位无符

12、号数86H,试编程完成以上两个单元中的无符号数相加,并将和值送往片外RAM的01H、00H单元中,同时将所编写程序运行完成后的数据和状态添入下表中给出的PSW的有关位以及寄存器A、DPTR和RAM单元中。 CY A DPTR 片外01H 片外00H 片外8000H 0 01H 8000H 0lH 00H 86H MOV DPTR,#8000H ;加数单元地址送DPTR MOVX A,DPTR ;取加数之一 ADD A,20H ;两数相加 MOV R0,#00H ;和值的低位送片外00H单元 MOVx R0,A INC R0 CLR A ;计算和值的高位 ADDC A,#00H MOVx R0,

13、A ;高位送片外01H单元 RET19.已知变量X存于VAR单元,函数值Y存于FUNC单元,按下式编程求Y值。Y=MOV A,VARCJNE A,#0,COMPSJMP RES ;x=0,Y=0COMP:JNC POSI ;x0,Y=1MOV A,#0FFH ;x0,Y=-1SJMP RESPOSI:MOV A,#01HRES:MOV FUNC,ARET20.已知在R2中存放一个压缩的BCD码,请将它拆成个BCD字节,结果存于SUM开始的单元(低位在前)。MOV R0,#SUM MOV A,R2 ANL A,#OFH MOV R0,A ;存低字节BCD MOV A,R2 ANL A,#0F0H

14、 SWAP A 1NC R0 MOV R0,A ;存高字节BCD RET21将A中的16进制数据(0FFH)转换为BCD码存放在30H(百位)、31H(十位)、32H(个位)HEXBCD: MOV B,#100 DIV AB MOV 30H,A MOV A,B MOV B,#10DIV AB MOV 31H,A MOV 32H,BRET22、将二位压缩的BCD码转换为二进制数,入口、出口均是A。若是非法的BCD码,则A返回值为255。SUBP:MOV R1,AANL A, #0F0HSWAP ACJNE A, #10, NEXT1NEXT1:JNC ERRORMOV B, #10MUL ABX

15、CH A, R1ANL A, #0FHCJNE A, #10,NEXT2NEXT2:JNC ERRORADD A, R1RETERROR:MOV A,#255RET 23 编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。(20分) MOV A,#01H ;灯亮初值 SHIFT: LCAIL FLASH ;调闪亮10次子程序 RR A ;右移一位 SJMP SHIFT ;循环 FLASH: MOV R2,#0AH 闪烁10次计数 FLASH1; MOV P1,A ;点亮 LCALL DELAY ;延时 MOV P1,#00H

16、 ;熄灭 LCALL DELAY ;延时 DJNZ R2,FLASH1 ;循环RET 24、用8051输出控制8个LED从LED1到LED8、再到LED1,每次一个LED发光,并不断循环。一个开关控制引起中断,电平触发,中断后8个LED一起闪5下,然后恢复前面的循环。写出完整的程序。(软件延时用循环5*126*200次控制)ORG 0000HLJMP STARTORG 3HLJMP INT00START:SETB EASETB EX0CLR IT0MOV A, #1AGAIN:MOV P1,AACALL DELAYRL ASJMP AGAINDELAY:MOV R1,#5LOOP1:MOV R

17、2,#200LOOP2:MOV R3,#126DJNZ R3,$DJNZ R2,LOOP2DJNZ R1,LOOP1RETINT00:PUSH ACCPUSH 1PUSH 2PUSH 3MOV R4,#5AGAIN:MOV P1,#0FFHACALL DELAYMOV P1,#0ACALL DELAYDJNZ R4,AGAINPOP 3POP 2POP 1POP ACCRETIEND25、利用80C51的P0口控制8个发光二极管LED。相邻的4个LED为一组,使2组每隔1s交替发光一次,周而复始。设计出硬件电路图,编写程序。解:(1)程序设计(设fosc=12MHz)ORG 0100H MOV

18、 A,#0FH ABC: MOV P0,A ACALL DELAY1S SWAP A SJMP ABC DELAY1S:MOV R5,#04DEL1:MOV R6,#250DEL2:MOV R7,#250DEL3:NOP NOP DJNZ R7,DEL3 DJNZ R6,DEL2 DJNZ R5,DEL1RETEND(2)硬件电路图如图:二、定时器 ,计数器1、若8051的晶振频率fosc为6MHz,定时器/计数器T0工作在工作方式1,要求产生10ms定时,写出定时器的方式控制字和计数初值(分别写出TH0与TL0值)。(1)T0:定时方式,工作在方式1。 方式字TMOD=01H(2)fosc=

19、6MHz,16位计数器,10ms定时,设计数初值为a, t=12/ fosc*(216 - a) 10*103=12/6 *(216 - a) a=60536=EC78H 即TH0=ECH TL0=78H所以:TMOD=01H TH0=ECH TL0=78H2、将定时器/计数器做脉冲信号发生器。编程利用定时器T0定时,在端输出周期性方波信号,方波周期为2ms,已知晶振频率为6MHz。解: 1)T0工作模式的设定: 选择模式1(16位方式)(最大定时131ms) 2)定时初值的设定: X=216-(1ms6106/12 )=65036=FE0CH,即:TH0应装0FEH,TL0应装0CH。 OR

20、G 0000HLJMP MAINORG 000BHLJMP GORG 0500HMAIN:MOV TMOD,#01H MOV TL0,#0CH MOV TH0,#0FEH SETB EA SETB ET0 SETB TR0HERE:SJMP HEREG: MOV TL0,#0CH MOV TH0,#0FEH CPL RETI END3、应用单片机内部定时器T0工作在方式1下,从输出周期为1ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。(1)计算时间常数,应用公式X=2t(f)(2)写出程序清单解:解:X=216-t(F/12)=216-1*10-3*6*106/12=OFEOCHORG

21、3000HSTART:MOV TMOD,#01HMOV TL0,#OCHMOV THO,#OFEHSETB TR0LOOP: JBC TFO,DONESJMP LOOPDONE: MOV TL0,#OCHMOV THO,#OFEHCPL SJMP LOOP4、应用单片机内部定时器T0工作在方式1下,从输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。(1)计算时间常数X,应用公式X=2t(f)(2)写出程序清单解:X=216-t(F/12)=216-1*10-3*6*106/12=OFEOCHORG 3000HSTART:MOV TMOD,#01HMOV TL0,#OCHMOV

22、THO,#OFEHSETB TR0LOOP: JBC TFO,DONESJMP LOOPDONE: MOV TL0,#OCHMOV THO,#OFEHCPL SJMP LOOP5、已知晶振频率为6MHz,在引脚上输出周期为500微秒的等宽矩形波,若采用T1中断,工作方式2,试写出中断初始化程序MOV TMOD, #20H MOV TL1, #06H MOV TH1, #06H SETB EA SETB ET1SETB TR1SJMP $6、按以下要求编写8051单片机定时器的初始化程序:(1) T0作为定时,定时时间为10ms.(2) T1作为计数,记满1000溢出。解(1) R7,#10H

23、MOV R1,#30H LOOP:CJNE R1,#00H,NEXT MOV R1,#00H SJMP NEXT1 NEXT: DEC R1 NEXT1: INC R1 DJNZ R7,LOOP SJMP $ END1 T0的工作方式0时: tmax=213 =2132us= 定时10ms可达要求,则X=213- =213- =3192=C78H=6318HT0工作在方式1时: tmax=216 =2162us= 定时10ms也可达要求,则X=216- =EC78HT0工作在方式2或3时: tmax=28 =282us=512us 定时500us,循环20次,X=28- =06H (2) 方式

24、0:213-100=8092=1F9CH=FC1CH X=M-计数值 方式1:216-100=FF9CH 方式2或3:28-100=9CH DELAY: MOV TMOD #00H(#01H / #10H / #11H) (MOV R3 ,#14H) MOV TH0 , #63H MOV TL0, #18H SETB TR0 LP1: JBC TF0 ,CLOSE SJMP LP1 CLOSE: SJMP $ RET 三、绘图阅读下列硬件图,补齐连接线(5分),并回答问题(各5分):1、 ALE、PSEN、WR、RD的功能 ALE作地址锁存的选通信号,以实现低八位地址的锁存,PSEN信号作扩展

25、程序存储器的读选通信号 WR、RD作为扩展数据存储器和I/O端口的读写选通信号。 2、 图中各芯片的功能 74LS373:地址锁存器,用来锁存P0口发送的地址低8位 2764 :容量为8KB的程序存储器(EPROM)用来存储程序 6264 :容量为8KB的数据存储器(RAM)用来存储数据 8031:不含程序存储器的8位单片机芯片,是不带I/O设备的微型计算机。3、2764、6264的地址范围(取”0”)2764:8000H9FFFH 6264: 4000H5FFFH1.已知如图,8155的PA口用于输出,PB口用于输入,PC口用于输出,请: (1)写出8155的各I/O口的口地址和存储器的地址

26、范围。2.已知如图并给出下列程序,请在读图并理解程序后回答下列问题: (1)程序功能为_。 (2)ADC0809的口地址为_。 (3)EOC的作用是_。 (4)程序运行结果存于_。 ADC:MOV DPTR,#7FFOH MOV R0,#0A0H MOV R2,#8 MOV A,#0 LOOP:MOVX DPTR,A JB ,$ MOVX A,DPTR MOVX R0,A 1NC DPTR 1NC R0 DJNZ R2,LOOP AJMP ADC(1)巡回采集8个通道的数据 (2)ADC0809口地址为7FF0H7FF7H(或7FF87FFFH) (3)EOC为A/D转换结束信号,用来引起中断

27、或查询,以便读取A/D的转换结果。 (4)结果存入外部RAM的A0HA7H。3、在两个8051间用模式2进行串行通信,A机并行采集外部开关的输入,然后串行传输给B机;B机接收后并行输出控制LED发光。画出连接示意图,写出完整的程序。(共 15 分) A机程序 ORG 0000HAJMP STARTORG 4100HSTART:MOV P1,#0FFHMOV SCON,#80HAGAIN1:MOV SBUF,P1JNB TI,$CLR TISJMP AGAIN1ENDB机程序 ORG 0000HAJMP STARTORG 4100HSTART:MOV SCON,#90HAGAIN1:JNB RI,$MOV P1,SBUFCLR RISJMP AGAIN1END

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

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