《湘潭大学单片机编程题(共7页).doc》由会员分享,可在线阅读,更多相关《湘潭大学单片机编程题(共7页).doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上编程题:1把8031片内RAM中起始地址为dada的数据串传送到外部RAM以buffer(16位地址)为首地址的区域,直到发现“”字符的ASCII码(24H)为止。设数据串长度为32个字节,请编程实现。解:2、 ORG 0000H START: AJMP MAINORG 001BHAJMP INTPORG 0100HMAIN: MOV TOMD,#10H MOV TH1,#0FFH MOV TL1,#83H SETB EA SETB ET1 SETB TR1 SJMP INTP:MOV TH1,#0FFH MOV TL1,#83H CPL P1.0 RETI END2
2、设8031时钟频率f=6MHz,要求利用定时器T1工作方式1产生周期为500ms的等宽脉冲,并在P1.0端输出。请编写采用中断方式完成的程序.解:1、 ORG 0000HMOV R0 ,#dadaMOV DPTR ,#bufferMOV R2,#20HLOOP: MOV A,R0 MOVX DPTR,A CJNE A ,#24H,NEXT SJMP TORETNEXT: INC R0INC DPTRDJNZ R2 ,LOOP TORET: RET RL A MOV B,A SK1: MOV DPTR,#0FF2AH MOVX DPTR,A MOV R7,#0FAH DEL: MOV R6,#0
3、FAH DEL1: NOP NOP DJNZ R6,DEL1 DJNZ R7,DEL SJMP LOOP END3、用8255扩展8031的I/O口,8255的PB口接八位发光二极管,PC口接八位拨动开关。试编写一程序,将8255的PB口编程为输出口,8255的PC口编程为输入口,当开关为全“ON”(00H)时PB口上的发光二极管轮流点亮,当开关处于非全“ON”时,则把开关状态在发光二极管上显示出来。已知条件和有关要求:单片机晶振为6MHz,8255的控制口地址为FF2BH,发光二极管点亮时间为0.5秒,采用软件延时,且计数器统一用R6和R7。提示: DJNZ direct,rel为3字节,2
4、机器周期指令,NOP为1机器周期空指令。解: ORG 0000H BEGIN:LJMP STARTORG 0030H START:MOV A,#82HMOV DPTR,#0FF2BHMOVX DPTR,AMOV B,#01H LOOP: MOV DPTR,#0FF29H MOVX A,DPTR ANL A,#0FFH CJNE A,#00H,SK1 MOV A,B 2试以一片2764 和一片6264与8031单片机组成存储器扩展系统,要求采用全译码的方法,请画出逻辑连接图,并说明各芯片的地址范围。P2.7P2.5P2.0P2.4ALEP0EAPSENRDWR8031373E地址译码器A0A7A
5、8A12CED0D7OE2764A8A12A0A7D0D7OEWECE6264解: 2764的地址范围:00001FFFH;6264的地址范围:2000H3FFFH 0 D0 D1 D2 D3 D4 D5 D6 D7 1 起始位 数据位 停止位 2、串行口方式1异步通信的字符格式:五、应用(第1小题16分,第2、3小题各10分,共36分)1根据某要求编写的程序清单给出如下:解:1、程序注释见程序边。2、 ORG 8000HBEGIN:LJMP START ORG 8013H LJMP INT-P ORG 8030START:SETB IT1 MOV A,#01H MOV IE,#84HLOOP
6、: MOV DPTR,#0CFFFH MOVX DPTR, A INC A MOV R7,#64H DEL: MOV R6,#EBH DEL1: DJNZ R6,DEL1 SJMP LOOPINT-P: MOV P1,#0FFH MOV A, P1 RETI ENDORG 8000H BEGIN: LJMP START ORG 8003HLJMP INT-PORG 8030H START: SETB IT0 ;外部中断0边沿触发 MOV A,#01H MOV IE, #81H ;开外部中断 LOOP: MOV P1,A ;P1口计数方式输出 INC A MOV R6, #0FFH ;延时DEL
7、: MOV R7, #0FFHDEL1: DJNZ R7,DEL1 DJNZ R6,DEL SJMP LOOP ;等待中断INT-P: MOV DPTR,#0CFFFH ;中断服务 MOVX A, DPTR ;读开关状态 RETI END程序中CFFFH为外设74LS244的口地址。要求:(1)阅读程序,给程序加适当的注释; (2)依照该程序,编写符合以下要求的程序:将8031的P1口作输入口,74LS377(地址为CFFFH)作输出口,8031的INT1接一单脉冲发生器,外部中断设置为边沿触发方式,累加器A作为计数器、复位的初态为1,每隔0.1秒计数器加1。计数器的值通过377输出到八位LE
8、D上显示出来。当INT1有单脉冲输入时产生一次中断,中断处理程序从P1口上读入新的值作为计数基值,以后在此值基础上计数 (fosc=6MHZ) 。2、设8155扩展芯片的Tin端输入脉冲频率为2MHZ,试编写程序,使得在Tout输出端输出周期为1ms的方波程序,假定8155命令状态口地址为100H。解:8155定时器预置初值计算如下: 8155定时器为减一计数器,预置初值为= T/Tj= 10-3/(0.5*10-6) = 2000=07D0H 根据题意要求,定时器设置工作在方式,则TC初值为47D0H, 编制程序为如下: ORG 1000H MOV DPTR, #0100H MOV A, #
9、0C0H ; 送控制字 MOVX DPTR, A MOV DPTR, #0104H MOV A, #0D0 MOVX DPTR, A INC DPTR MOV A, #47H ;送定时器初值,启动定时器 MOVX DPTR, A END3、试画出8031和2片2764和两片6264存储器芯片的连线图,要求采用全译码方式,并写出各片的基本地址范围,如有重叠地址请一同列出。解: 地址:4#:6000H-7FFFH,3#:4000H-5FFFH,2#:2000H-3FFFH,1#:0000H-1FFFH四、程序设计题(20分 每题10分)2编写一个由P1.0口周期输出高低电平各2ms的方波信号的程序
10、,系统采用12MHz晶振,由T0工作在方式定时100S,并采用中断响应方式实现2mS定时。提示: SETB TR0 MOV R5 ,#14H SJMP $ INTP:DJNZ R5 , ENDP CPL P1.0 MOV R5 , #14HENDP:RETI END解: ORG 1000H AJMP START ORG 000BH LJMP INTPSTART:MOV SP ,#60HANL TMOD ,#0F0H ORL TMOD , #02H MOV TH0 ,#9CH MOV TL0,#9CH2、利用8155扩展单片机I/O口驱动4位共阴极数码管,试完成扩展口连接,并编写程序显示字符“1
11、234”,其中8155芯片控制口地址为7FF8H,待显示的字符“1234”已经放置于首地址为BLOCK的内部RAM空间中。提示:8155控字为03H。4 ORG 2000H MOV DPTR , #7FF9H MOVX DPTR , A MOV R3 , #0FAHDLAY:DJNZ R3, DLAY MOV A , R2 JNB ACC.3 , LOOP0 RL A MOV R2 , A INC R0 SJMP LOOP1DSEG:DB 06H, 5BH, DB 4FH ,66H, 00H, END EQU BLOCK 40HMOV DPTR ,#7FF8HMOV A , #03HMOVX
12、DPTR , AMOV R0 ,#BLOCK LOOP0:MOV R2 , #0FEH LOOP1: MOV A , R2 MOV DPTR ,#7FFAH MOVX DPTR , A MOV DPTR , #DSEG MOV A , R0 MOVC A, A+DPT 2. 内部RAM 20H单元开始存放8个8位无符号二进制数,找出其中的最大数的程序如下。阅读程序后,请给程序加上适当注释,并画出该程序的流程图。 ORG START开始数据区首地址送R0数据个数送R7读第一个数送AR0-1送R0读下一个数送2AH(A)(2AH)A (2AH)R7-1=02BH A结束YNNYSTART:MOV
13、R0,#20H ;首地址送R0 MOV R7,#08H ;指定长度计数器R7 MOV A,R0 ;取第一个数送A DEC R7 ;长度计数器内容减1LOOP: INC R0 ;修改地址 MOV 2AH,R0 ;取第二个数送2AH CJNE A,2AH,CHK ;前后两个数比较CHK: JNC LOOP1 ;前者大于后者去LOOP1 MOV A,R0 ;前者小于后者,大数存ALOOP1:DJNZ R7,LOOP ;8个数没比完去LOOP MOV 2BH,A ;比完了大数存2BH SJMP $ ;等待 END ;结束 2、设8031时钟频率f=12MHz,请编出利用定时器T0在P1.0引脚上输出周
14、期为2秒的方波程序。SJMP PL0TO-INT:CLR TR0 DEC R2 MOV TH0,#0D8H MOV TL0,#0E6H SETB TR0 RETI END AND TMOD,#0F0HORL TOMD,01HMOV TH0,#0D8HMOV TL0,#0E6HSETB TR0SETB EASETB ET0 PL0: MOV R2,#10 PL1: MOV P1,#01HCJNE R2,#0,PL1CPL P1.四、简答(每小题6分,共12分)1假定异步串行通信的字符格式为一个起始位、8个数据位、一个停止位和一个偶校验位,请画出传送字符“T”的帧格式。(T的ASCII码为54H)
15、0 0 0 1 0 1 0 1 0 1 1起始位偶校验 停止位解:说明:图中数据可用D0D1D2D3D4D5D6D7代替算对。 2在MCS51单片机系统中,外部程序存储器和数据存储器共用16位地址线和8位数据线,为什么不会发生冲突 JNB ACC.5, LD1 ;6位显示完了吗? RL A ;没有,则下一位 MOV R3, A AJMP LD0LD1: RET 6位显示完了返回主程 DTAB:DB 0C0H,0F9H,0A4H ;字符表 DB 0B0H,99H ,92H, DB 82H, 0F8H,80H, DB 90H 88H, 83H, DB 0C6H, 0A1H, 86H DB 8EH,
16、0FFH,0CH, DB 89H, 7FH,0BFHDELAY:MOV R7,#02H ;延时子程序DELAY1:MOV R6, #0FFHDELAY2:DJNZ R6, DELAY2 DJNZ R7, DELAY1 RET END 答:因为在MCS51单片机系统中,对外部程序存储器和数据存储器的操作的指令不同,所以不会发生冲突。五、应用(第1小题16分,第2小题8分,共24分)18031通过8155对6位共阳极数码管LED接口的动态显示程序如下: ORG 2000HDISPLY:MOV A,#06H ;给8155送控制字 MOV DPTR,#8000HMOVX DPTR,A DISPLY1:
17、MOV R0, #70H ;指向显示缓冲区MOV R3, #0FEH MOV A, R3 LD0: MOV DPTR,#8003H ;送8155C口地址MOVX DPTR, A ;扫描初值送8155C口 MOV DPTR,#8002H ;送8155B口地址MOV A,R0 ;取待显示数ADD A, #13 ;加偏移量MOVC A,A+PC ;查段码表MOVX DPTR, A ;待显示字符送8155B口ACALL DELAY ;调用延时子程序INC R0 ;修改地址 MOV A, R3 *待显示的数据放在始址为70H的显示缓冲区。8155的命令字:D7 D6 D5 D4 D3 D2 D1 D0T
18、M2,TM1,IEB,IEA,PC2,PC1,PB,PA要求:1).阅读程序,给程序加适当的注释; 2).根据所给程序,画出硬件连接图。要求详细画出8031与8155的连线,并标注清楚,8155与显示器部分可简画; 3).指出指令“ADD A, #13”中的“13”为何意?解:1、注释见程序边P2.7IO/ALEALEP0ADRSTRST803181556位显示器PBPC2、8155与显示器部分的硬件连接图如下:3、指令ADD A,#13中的13是查表指令到段码表间的偏移量。6利用译码法设计一个具有6K扩展ROM的单片机系统 (解:目前市场无6KROM芯片,现用3片2KROM芯片EPROM27
19、16组建。和6116引脚基本相同,由此非常方便27166116(2816)等联合布线.与8051相联,-PSEN 为取信息的控制信号,连接线路如图所示)【A13、A12、A11接3-8译码器输入端;Y0、Y1、Y2分别接1#2716、2#2716、3#2716】由图可知ROM采用译码片选法,各芯片占用的地址范围(注意到MA1311=000,Y0=0, MA1311=001,Y1=0, MA1311=010,Y2=0)如下:1:0000H07FFH(基本地址) (2K) 重叠地址:4000H47FFH 8000H8FFFH C000HC7FFH 2:0800H0FFFH (基本地址) 重叠地址:4800H4FFFH 8800H8FFFH C800HCFFFH 3:1000H17FFH (基本地址) 重叠地址:5000H57FFH 9000H97FFH D000HD7FFH专心-专注-专业