程序题及其答案.docx
- 文档编号:8412847
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:16
- 大小:120.42KB
程序题及其答案.docx
《程序题及其答案.docx》由会员分享,可在线阅读,更多相关《程序题及其答案.docx(16页珍藏版)》请在冰豆网上搜索。
程序题及其答案
1、仔细阅读下图的电气原理图,请写出8个LED发光二极管的地址,并写出程序使8个发光二极管从左向右循环点亮。
include<>
unsignedcharxdata*LEDAD;
数码管没有位驱动,建议使用7406进行位驱动。
#include""
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
intcount=99;
voiddelay(intm)
{
inti;
for(i=0;i {;} } voidInt0()interrupt0 { T1作为计数,记满1000溢出。 答: 1 (1)①T0的工作方式0时: tmax=213× =213×2us= 定时10ms可达要求,则X=213- =213- =3192=C78H=6318H ②T0工作在方式1时: tmax=216× =216×2us= 定时10ms也可达要求,则X=216- =EC78H ③T0工作在方式2或3时: tmax=28× =28×2us=512us 定时500us,循环20次,X=28- =06H (2)方式0: 213-100=8092=1F9CH=FC1CH X=M-计数值 方式1: 216-100=FF9CH 方式2或3: 28-100=9CH (1)TMOD=0x00; TH0=0x63H; TL0=0x18H; TR0=1; ET0=1; EA=1; (2)TMOD=0x50; TH1=0xffH; TL1=0x9cH; TR1=1; ET1=1; EA=1; 8、对定时器0采用中断方式编程,晶振频率为12MHz,采用方式1计数,使引脚输出周期为4ms的方波,C51源程序如下。 1.写出定时器0中断服务程序2.主程序中有3个错误,请指出并改正。 #include<> sbitP1_1=P1^1; voidmain(void) { TMOD=0x00; TH0=(65536-2000)/256;TL0=(65536-2000)%256; TF0=0; IE=0X60; while (1); } 答: TMOD=0x01;;break; case0x: …..;break; default: …….;break; } 10、采用定时计数器T1,设计每秒闪烁一次的LED,其中接LED,不画电路,只需写出程序(LED共阳极)。 #include<> #defineucharunsignedchar ucharcount; sbitlight=P2^0; voidmain() { TMOD=0X10; TH1=(65536-10000*110592/120000)/256; TL1=(65536-10000*110592/120000)%256; ET1=1; EA=1; count=0; TR1=1; while (1) { ; } } voidtime1()interrupt3 { TH1=(65536-10000*110592/120000)/256; TL1=(65536-10000*110592/120000)%256; count++; if(count==50) {count=0; light=~light; } } 11、试编程对8155进行初始化,设A口为选通输出,B口为选通输入,C口作为控制联络口,并启动定时器/记数器按方式1工作,工作时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHz。 解: 算得初值=5000=1388H MOVDPTR,#7F04;定时器低八位寄存器地址DPTR MOVA,#88H;低8位初值A MOVX@DPTR,A;低8位初值低8位寄存器 INCDPTR;DPTR指向定时器高8位 MOVA,#13H;高8位初值A MOVX@DPTR,A;高8位初值高8位寄存器 MOVDPTR,#7F00H;8155命令寄存器地址DPTR MOVA,0C5H;命令字A MOVX@DPTR,A;命令字命令寄存器 12、已知如图,8155的PA口用于输出,PB口用于输入,PC口用于输出,请: (1)写出8155的各I/O口的口地址和存储器的地址范围。 (2)编写出8155初始化程序。 B155命令字格式: ? 答: 初始化程序: MOVDPTR,#0100H MOVA,#0DH MOVX@DPTR,A 13、试编程对8155进行初始化,设A口为选通输出,B口为选通输入,C口作为控制联络口,并启动定时器/记数器按方式1工作,工作时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHz。 (12分) 解: 算得初值=5000? =1388H MOVDPTR,#7F04;定时器低八位寄存器地址DPTR MOVA,#88H;低8位初值A MOVX@DPTR,A;低8位初值低8位寄存器 INCDPTR;DPTR指向定时器高8位 MOVA,#13H;高8位初值A MOVX@DPTR,A;高8位初值高8位寄存器 MOVDPTR,#7F00H;8155命令寄存器地址DPTR MOVA,0C5H;命令字A MOVX@DPTR,A;命令字命令寄存器 14、应用单片机内部定时器T0工作在方式1下,从输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。 请 (1)计算时间常数X,应用公式X=216-t(f/12) (2)写出程序清单 解: X=216-t(F/12) =216-1*10-3*6*106/12 =OFEOCH ORG3000H START: MOVTMOD,#01H MOVTL0,#OCH MOVTHO,#OFEH SETBTR0 LOOP: JBCTFO,DONE SJMPLOOP DONE: MOVTL0,#OCH MOVTHO,#OFEH CPL SJMPLOOP 15、已知一MCS—51单片机系统的片内RAM20H单元存放了一个8位无符号数7AH,片外扩展RAM的8000H存放了一个8位无符号数86H,试编程完成以上两个单元中的无符号数相加,并将和值送往片外RAM的01H、00H单元中,同时将所编写程序运行完成后的数据和状态添入下表中给出的PSW的有关位以及寄存器A、DPTR和RAM单元中。 CY A DPTR 片外01H 片外00H 片外8000H ? ? ? ? ? ? 答: CY A DPTR 片外01H 片外00H 片外8000H 0 01H 8000H 0lH 00H 86H MOVDPTR,#8000H;加数单元地址送DPTR MOVXA,@DPTR;取加数之一 ADDA,20H;两数相加 MOVR0,#00H;和值的低位送片外00H单元 MOVx@R0,A INCR0 CLRA;计算和值的高位 ADDCA,#00H MOVx@R0,A;高位送片外01H单元 RET 编程要考虑将进位位的值作为结果的一部分取出来。 采用其他编程方式也可以,但结果是不会改变的,和值=100H 16、设计一个2×2行列式键盘电路并编写键盘扫描子程序。 (20分) 解: (1)2×2行列式键盘电路如图所示。 (2)键盘扫描子程序: KEY1: ACALLKS1;调用判断有无键按下子程序 JNZLK1;有键按下,转LK1 AJMPKEY1;无键按下,返回 LK1: ACALLT12MS;调延时12ms子程序 ACALLKS1;查有无键按下 JNZLK2;若有,则为键确实按下,转逐列扫描 AJMPKEY1;无键按下,返回 LK2: MOVR4,#00H;首列号R4 MOVR2,#FEH;首列扫描字R2 LK4: MOVA,R2;列扫描字P1口 MOVP1,A;使第一列线为0 MOVA,P1;读入行状态 JB,LONE;第0行无键按下,转查第一行 MOVA,#00H;第0行有键按下,该行首键号#00HA AJMPLKP;转求键号 LONE: JB,NEXT;第一行无键按下,转查下一列 MOVA,#02;第一行有键按下,该行首键号#02A LKP: ADDA,R4;键号=首行号+列号 PUSHACC;键号进栈保护 LK3: ACALLKS1;等待键释放 JNZLK3;未释放,等待 POPAC;键释放,键号A RET;键扫描结束 NEXT: INCR4;列号加1,指向下一列 MOVA,R2;列扫描字A JNB,KND;判断2列全扫描完扫描完,转KND RLA;没扫描完,扫描字左移一位,形成下一列扫描字 MOVR2,A;扫描字R2 AJMPLK4;扫描下一列 AJMPKEY1;全扫描完,返回 MOVA,#FCH;全扫描字BA MOVP1,A;全扫描字所有行 MOVA,P1;读取列值 CPLA;取正逻辑,高电平表示有键按下 ANLA,#0C0H;屏蔽低6位,取高2位 RET;出口状态(A)! =0,有键按下 17、编制一个循环闪烁灯的程序。 有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。 画出电路图。 解 8013 D0Q0 74LS240 D7Q7 5V 本程序的硬件连接如图所示。 当输出高电平时,LED灯亮,否则不亮。 其程序如下: MOVA,#01H;灯亮初值 SHIFT: LCAILFLASH;调闪亮10次子程序 RRA;右移一位 SJMPSHIFT;循环 FLASH: MOVR2,#0AH闪烁10次计数 FLASH1;MOVP1,A;点亮 LCALLDELAY;延时 MOVP1,#00H;熄灭 LCALLDELAY;延时 DJNZR2,FLASH1;循环 RET 19、蒸汽锅炉硬件报警系统如图2所示,LED4,3,2,1分别为对应液位上限报警,液位下限报警,蒸汽压力上限报警,蒸汽压力下限报警灯。 当某一限位开关SL1,SL2,SL3,SL4闭合报警时,相应报警灯亮。 请编程(int0触发方式为沿边触发)。 ORG0000H AJMPMAIN;上电自动转主程序 ORG0003H AJMPALARM;转中断服务程序 ORG0200H MAIN: SETBIT0;置为边沿触发 SETBEX0;允许中断 SETBEA;CPU开中断 HERE: SJMPHERE;等待中断 ORG0210H ALARM: MOVA,#0FFH;设P1口为输入口 MOVP1,A MOVA,P1;取报警状态 SWAPA;(P17~4)交换(P13~0) MOVP1,A;输出报警信号 RETI End 20、已知一单片机应用系统如下图所示。 试回答问题并编写显示程序,显示“01234567”。 1.写出各口的地址和控制字 A口地址: 7F01H B口地址: 7F02H C口地址: 7F03H 控制口地址: 7F00H 控制字: 03H 2.显示程序(参考程序) ORG0 AJMPMAIN ORG0BH AJMPTO0 ORG30H MAIN: MOVSP,#40H ACALLCHUSHI MOVR4,#0FEH MOVR0,#37H MOVDPTR,#7F00H MOVA,#03H MOVX@DPTR,A MOVIE,#82H MOVTCON,#10H MOVTMOD,#0H LOOP1: AJMPLOOP1 CHUSHI: MOVA,#0H MOVR1,#30H MOVR2,#08H LOOP: MOV@R1,A INCA INCR1 DJNZR2,LOOP RET TO0: MOVA,#0H MOVDPTR,#07F02H MOVX@DPTR,A MOVA,R4 CJNEA,#7FH,LOP MOVR0,#38H LOP: RLA MOVR4,A MOVDPTR,#7F01H MOVX@DPTR,A DECR0 MOVA,@R0 ACALLXIANS INCDPTR MOVX@DPTR,A RETI XIANS: PUSHDPH PUSHDPL MOVDPTR,#TAB MOVCA,@A+DPTR POPDPL POPDPH RET TAB: DB3FH,06H,5BH,4FH,6DH,7DH,07H,7FH END 21、已知某MCS-51单片机系统是拥12MHZ的外部晶体振荡器,请问: (1)、该单片机的定时器O(TO)工作在方式2时,TO的最大定时时间为多少(2分) (2)、当单片机的定时器O(TO)工作在方式2时,要求每记满250us便生产一次定时器溢出,请问,TO中需要预置的初始值应为多少(5分) (3)、编程实现。 主程序使得所有报警发光二极管灯灭,250微秒产生报警中断,使得相应报警灯亮。 (假设发光二极管地址为0E000h,共阳极) 解: (1) (2)tl0=6h,th0=6h (3)org0000h Jmpmain Org000bh Jmpintert0 Org100h Main: movtmod,#02h Movtl0,#06h Movth0,#06h Setbea Setbet0 Setbpt0 Setbtr0 Movdptr,#0e000h Mova,#0h Movx@dptr,a Here: jmphere Org300h Intert0: mova,#0ffh Movdptr,#0e000h Movx@dptr,a Reti End
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 及其 答案