庄友谊《单片机原理及应用》单片机编程题汇总.docxVIP

庄友谊《单片机原理及应用》单片机编程题汇总.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机期末编程题汇总写在前面的话:题目是按老师划编程题的范围汇总,自己编写,已给庄老师过目,已尽可能减小错误率, 如有不周之处,欢迎留言批评指正。QQ 微信已经很少用,基本晚上才会看下一天消息框,答疑建议另寻高就。 钱燕飞 4.1已知在内部RAM中有以20H为首单元的数据区,依次存放单字节数组长度及数组内容,求这组数据的和(和小于256),并将求和结果存入40H单元中。ORG 0000HAJMP STARTORG 100HSTART:MOV R0,#21H;数据首地址CLR A;A清零LOOP:ADD A,@R0INC R0DJNZ 20H,LOOPMOV 40H,ASJMP $END解题要点:此题的20H为数组长度,21H才是数据首地址;注意初始化A清零;4.3把长度为10H的字符串以20H为首地址的内部RAM单元传送到以2000H为首地址的外部RAM单元,一直进行到遇到回车符CR或整个字符串传送完毕。ORG 0000HAJMP STARTORG 100HSTART:MOV R0,#20H;数据首地址MOV R2,#10H;存放字符串长度MOV DPTR,#2000HLOOP: MOV A,@R0 CJNE A,#0DH,SEND CJNE @R0,#0DH,SEND SJMP OVERSEND:MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,LOOPOVER:SJMP OVER;程序汇总END解题要点:此题有两个判断分支:1.遇到回车符CR结束(ASCII为0DH)2.整个字符串传送完结束,要注意程序的汇总 ;注意CJNE的命令的使用;4.5编写8位BCD数加法程序。设被加数存于内部RAM的30H~33H,加数存于40H~43H单元,相加结果存于30H~34H单元,数据按低字节在前的顺序排列。ORG 0000HAJMP STARTORG 100HSTART:MOV R0,#30H;存发加数首地址MOV R1,#40H;存发被加数首地址MOV R2,#4;存放加法次数CLR C;CY清零LOOP: MOV A,@R0ADDC A,@R1DA A;十进制调整MOV @R0,AINC R0INC R1DJNZ R2,LOOPCLR AADDC A,#00HMOV @R0,ASJMP $END解题要点:注意初始化中CY的清零; BCD加法,别忘了DA; 注意知道如何将最高进位存放在某一单元中;4.10试编写程序,找出内部RAM 20H~2FH数据区中的最小值,并存于R2中。ORG 0000HAJMP MAINORG 100HMAIN:MOVR0,#20H ;数据区首地址MOVR3,#15 ;16个数剧,挨个比需要比较15次MOVA,@R0 ;第一个数放在A中LOOP:INC R0 MOV B,@R0 CJNE A,B,NEXT ;A-B小于0,不够减,CY为1(借位)NEXT:JC JUDGE MOV A,B;当AB时JUDGE: DJNZ R3,LOOPMOV R2,ASJMP $END解题要点:真正理解CJNE的内部操作; 找最大值JC改成JNC4.13从内部RAM20H单元开始存放一组带符号数,字节个数存于1FH中,请统计其中大于0、等于0和小于0的个数,并把统计结果分别存放one、two、three、三个单元中。(期中)ONE EQU 1CHTWO EQU 1DHTHREE EQU 1EHORG 0000HAJMP MAINORG 100HMAIN:CLR A ;目的在于把one、two、three、三个单元的数据全部初始化为0MOV ONE,AMOV TWO,AMOV THREE,AMOV R0,#20HLOOP:MOV A,@R0JZ ZERO;为0转移JB ACC.7,NEGATIVE;负数转移INC ONE;正数加one1AJMP JUDGE;分支汇众ZERO:INC TWOAJMP JUDGE;分支汇总NEGATIVE:INC THREEJUDGE:INC R0 DJNZ 1FH,LOOP SJMP $END解题要点:伪指令运用(书本P63-65)熟练掌握控制转移类指令(书本P56-57) 注意选择分支汇众5.8用T0以方式1产生频率为100Hz的等宽矩形波,假定晶振频率=12MH在,请编程实现。#include 〈reg51.h〉sbit P1_0=P1^0;timer1() interrupt 1 /* T0中断服务程序 */ { P1_0=! P1_0; /* 5ms到P1.0反相*/ TH0=60536/256; /* 重载计数初值 */ TL0=60536%256; }main (){ TMOD=0x01; /*设置T0工作方式*/ TH0=6053

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档