欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机试卷编程题参考程序.doc

    • 资源ID:1162202       资源大小:333.50KB        全文页数:8页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机试卷编程题参考程序.doc

    1、四、编程题1、使用定时/计数器1以工作方式2实现定时,在P1.0输出周期为1s的连续方波。已知晶振频率fosc=12MHz。求计数初值,方式控制字,编制相应程序。(中断方式)*分析:题目要求用定时/计数器1的工作方式2,定时/计数器1工作在方式2时是自动重装初值的8位定时/计数器。在不装初值的情况下,定时的最长时间也才t=256s,远远小于定时时间1s。可以考虑用软件计数方式来延长定时,假设定时器每250s中断一次,并且每500ms对方波取反一次,则需要重装的初值M=28-fosc/12250=6。软件计数器初值为2000,定时器溢出一次,软件计数器减1,当软件计数器减到0时,即获得500ms

    2、的定时时间。由于单片机最多只能放8位二进制数,最大也只能装28=256。所以需要用到2个软件计数器,2个计数需要嵌套才能完成2000次的定时溢出!*OVERTIME1EQU100;软件计数器溢出次数,存放100,即进行100次的溢出中断OVERTIME2EQU20;软件计数器溢出次数,存放20,即进行20次的溢出中断TIMECON1DATA30H;30H作为软件计数器1的存储单元TIMECON2DATA31H;31H作为软件计数器2的存储单元ORG0000HLJMPMAINORG001BH;定时/计数器1中断入口LJMPCTC1ORG0100HMAIN:MOVSP, #5FH;初始化堆栈指针M

    3、OVTIMECON1, #OVERTIME1;溢出次数送到软件计数器1MOVTIMECON2, #OVERTIME2;溢出次数送到软件计数器2MOVTH1,#6;送重装初值MOVTL1,#6ANL TMOD,#0FH ;为了不影响定时/计数器0的工作状态,将TMOD与0FH相与,使高4位不变,低4位清零ORL TMOD, #20H ;由TR1控制计数器开和关,GATE位为0;定时方式,即C/T位为0,M1M0为10,即方式2SETBEA;开总中断SETBET1;允许定时/计数器T1中断SETBTR1;开定时/计数器T1中断HERE: SJMP HERE ;循环等待,时间(从6加到256所用的时

    4、间)一到就进入中断CTC1:;中断从此处开始PUSHPSWDJNZTIMECON1,NEXT;软件计数器1减1不为0,跳转到NEXTMOVTIMECON1,#OVERTIME1;重装软件计数器1初值,即100DJNZTIMECON2,NEXTMOVTIMECON2,#OVERTIME2;重装软件计数器2初值,即20CPLP1.0;取反,输出周期为1s的方波NEXT:POPPSWCLRTF1;每进行一次中断都要清除一次中断标志位,以便进行下次的中断!RETI;中断返回,返回后继续进行计数:从6加到256END;程序结束伪指令2、有一低频信号从单片机8XC5X的P3.2引脚输入,如下图所示。请编写

    5、出测量该低频信号频率和脉冲宽度的程序。*此题参考教材P150*ORG0000HLJMPMAINORG100HMAIN:MOVSP,#5FHMOVTL0,#00HMOVTH0,#00HMOVTMOD,#00000001BSETBIT0JNBIE0,$SETBTR0CLRIE0JNBIE0,$CLRTR0MOVR2,TL0MOVR3,TH0MOVTL0,#00HMOVTH0,#00HANLTMOD,#0F0HORLTMOD,#000001001BWAITL:JBP3.2,WAITHSETBTR0WAITH:JNBP3.2,WAITHWAITHL:JBP3.2,WAITHLCLRTR0五、设计题:1

    6、、设计一个33行列式键盘电路并编写键盘扫描子程序,要求具有去抖动及自动重复功能。键盘电路图如下:键盘扫描子程序与延时子程序如下:keyscan:MOVP0,#11000111;P0.7和P0.6不用JMPK10;跳到K10开始扫描K10:;第一列键盘扫描开始JBP0.0,K20;判断第一列是否有键被按下,如果没有则跳到K20扫描第二列LCALLDELAY;若第一列确实有键被按下,则延时进行消抖动;下面确定是第一行的哪个键被按下K11:;判断是否第一列第一行的键被按下MOVP0,#11110111B;让第一列置“0”,其余置“1”JBP0.0,K12;是否第一行键被按下?如果不是,跳到K12检查

    7、第一行第二列的键MOVR1,#1;第一个键被按下,记这个键的键值为1K12:;判断是否第一行第二列的键被按下MOVP0,#11101111B;让第二列置“0”,其余置“1”JBP0.0,K13;是否第一行键被按下?如果不是,跳到K13检查第一行第三列的键MOVR1,#2;第二个键被按下,记这个键的键值为2K13:;判断是否第一行第三列的键被按下MOVP0,#11011111B;让第三列置“0”,其余置“1”JBP0.0,keyscan;是否第三个键被按下?如果不是,则跳到子程序开始处重新扫描,实现自动重复功能MOVR1,#3;第三个键被按下,记这个键的键值为2JMPKEND;第一行按键确认结束

    8、;以下扫描程序和上述一样K20:;第二列键盘扫描开始JBP0.1,K30LCALLDELAYK21:MOVP0,#11110111BJBP0.1,K22MOVR1,#4K22:MOVP0,#11101111BJBP0.1,K23MOVR1,#5K23:MOVP0,#11011111BJBP0.1,keyscanMOVR1,#6JMPKENDK30:;第三列键盘扫描开始JBP0.2,keyscanLCALLDELAYK31:MOVP0,#11110111BJBP0.2,K32MOVR1,#7K32:MOVP0,#11101111BJBP0.2,K33MOVR1,#8K33:MOVP0,#1101

    9、1111BJBP0.2,keyscanMOVR1,#9JMPKENDKEND:RET;扫描结束,返回C语言:/延时子程序void delay() unsigned char n, m; for (n = 100; n 0; n-) for (m = 300; m 0; m-); /按键扫描程序 P1.0-P1.2为行线 P1.3-P1.5为列线unsigned char Keycan(void) unsigned char rcode, ccode; P1 = 0x38; / 发全0行扫描码,列线输入 if(P1&0x38) != 0x38) / 若有键按下 delay();/ 延时去抖动 i

    10、f(P1&0x38) != 0x38) rcode = 0x3E; / 逐行扫描初值 while(rcode&0x08) != 0) P1 = rcode; / 输出行扫描码 if(P1&0x38) != 0x38) / 本行有键按下 ccode = (P1&0x38)|0x38; do;while(P1&0x38) != 0x38); /等待键释放 return (rcode) + (ccode); / 返回键编码 else rcode = (rcode1)|0x01; / 行扫描码左移一位 return 0; / 无键按下,返回值为02、设计一个4位数码显示电路,并用汇编语言编程使8从右到

    11、左显示一遍。*此题设计总体思路:采用查表法,但是此次查表得到的不是数码管的段码,而是数码管的位选码!原因是题中只是要求显示“8”,所以只要扫描数码管的各位即可。*ORG0000HLJMPSTARTSTART:MOVDPTR,#TABINC1:MOVR2,#0DISPLAY:MOVA,R2MOVCA,A+DPTRMOVP3,ALCALL DELAYMOVA,#10000000BMOVP0,AINC R2CJNE R2, #4, $+3JC DISPLAYLJMP INC1TAB:DB7FH,0BFH,0DFH,0EFHDELAY:MOVR7,#250D1:MOV R6,#250D2:DJNZ R

    12、6,D2 DJNZ R7,D1RETEND六、扩展作图1、6264的地址范围:4000H5FFFH2764的地址范围:2000H3FFFH2、2716的地址范围:0000H0FFFH6116的地址范围:1000H1FFFH1请将片外RAM 20H25H单元清零 MOV R0,#20H MOV R7,#06H CLR A LOOP:MOVX R0,A INC R0 DJNZ R7,LOOP 2请将ROM 3000H单元内容送R7 MOV DPTR, #3000H CLR A MOVC A,A+DPTR MOV R7,A 一、地址范围(4分)6264:C000HDFFFH2764:C000HDFF

    13、FH试将8031单片机外接一片2716 EPROM和一片6116 RAM组成一个应用系统,请画出硬件连线图,并指出扩展存储器的地址范围。(10分)答:2716是2K8位的EPROM,6116是2K8位的静态RAM,两者都仅需要11根地址线。由于没有规定地址范围,故可按最简单的方式来连接,即省去地址译码器,程序存储器的地址必须从0开始,基本地址为0000H07FFH。数据存储器的地址为0000H07FFH。控制线的连接为/PSEN控制EPROM的读出,/RD和/WR控制RAM的读写,两个芯片的片选端都固定接地,连线图如图所示。P2.2 P2.1 P2.0D7 Q7.D0 Q0G /EA7 A10. A9A0 A8/OE D7. 2764D0 /CE EEEDDEE/CEEP0 8031ALE/PSEN /EAA7 A10. A9A0 A8/OE/WE D7. 6116D0 /CE /RD /WE


    注意事项

    本文(单片机试卷编程题参考程序.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922