MCS单片机课后作业解答_第1页
MCS单片机课后作业解答_第2页
免费预览已结束,剩余29页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MCS51单片机作业解答第二章 MCS-51 单片机的结构和原理(1) MCS-51 单片机芯片包含哪些主要功能部件 ?答: CPU、4KBRO、M 128B RAM、4 个 8 位 I/O 口、2 个定时计数器、串行 I/O口、中断系统、时钟电路、位处理器、总线结构。(2) MCS-51 单片机的/EA 端有何用途?答:当/EA =0 只访问片外程序区;当/EA=1 时,先访问片内程序区,当 PC 超过片内程序容量时,自动转向外部程序区。(3) MCS-51 单片机有哪些信号需要芯片引脚以第二功能的方式提供?答: RXD、TXD、/INT0 、/INT1 、 T0、 T 1 、 /WR、/R

2、D(4) MCS-51 单片机的 4 个 I/O 口在使用上各有什么功能和特点?答:P1 口通用输入输出;P0 口数据总线、地址总线低 8 位、通用输入输出P2口地址总线高 8 位、通用输入输出P3第 2 功能信号、通用输入输出。(5) 单片机的存储器分哪几个空间?试述各空间的作用。答:程序存储器:内部 ROM 外部 ROM数据存储器:内部基本 RAM 专用寄存器区、外部 RAM简述片内 RAM3包含哪些可位寻址单元?答:20H2FH 共 16 个可寻址单元(7) 什么叫堆栈?堆栈指针 SP 的作用是什么?在程序设计中为何要对 SP 重新赋值?答:只允许数据单端输入输出的一段存储空间。SP 的

3、作用是用来存放堆栈栈顶的地址。因为 SP 的初值是 07H,后继的是寄存器区和位寻址区,为了便于编程工作,要修改 SP.(8) 程序状态字寄存器 PSW 的作用是什么?简述各位的作用。答:PSV 用来存放程序执行状态的信息,CY 加减运算的进位、借位AC 辅助进位标志,加减运算的低 4 位进位、借位(9) 位地址 65H 与字节地址 65H 如何区别?位地址 65H 具体在片内 RAM 中什么位置?答:位地址 65H 中是一位 0/1 的数据,字节地址 65H 是 8 位 0/1 的数据。位地址 65H 在片内 RAM 中 2CH 单元第 5 位。(10) 什么是振荡周期、时钟周期、机器周期和

4、指令周期?如何计算机器周期的确 切时间?答:振荡周期为单片机提供信号的振荡源的周期时钟周期振荡脉冲 2分频的信号 机器周期完成一个基本操作需要的时间,是振荡周期 /12=1T指令周期一一执行 1 条指令需要的时间 14T(11) 单片机工作时在运行出错或进入死循环时 ,如何处理?答:复位处理,在单片机的 RESE 加持续 1 段时间的高电平(12) 使单片机复位的方法有几种?复位后单片机的初始状态如何?分上电复位和手动复位。复位后 PC=0000H ALE=0 /PSEN=1(13) 开机复位后 , 单片机使用的是哪组工作寄存器?它们的地址是什么?如何改 变当前工作寄存器组?答:单片机使用的是

5、第 0 组工作寄存器R0-R7,对应的地址为 00H-07H,采用置位复位 RS1 RS0 可以改变单片机使用的工作寄存器第3章MCS-51单片机的汇编语言指令系统单片机的指令格式为: 操作码 +操作数标号: 操作码助记符 目的操作数 ,源操作数 ; 注释 答: MCS-51 单片机有 7 种寻址方式 : 立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对 寻址、位寻址。立即寻址操作数在指令中直接给出。直接寻址一一操作数存放的地址在指令中给岀。可寻址RAM128 和特殊功能寄存器寄存器寻址操作数在寄存器中。可寻址 4 组寄存器共 32 个字节即 00H 1FH 寄存器间接寻址操作数

6、的地址放在寄存器R0、R1、dptr 中R0、R1 可寻址 256B DPT 可寻址 64KB变址寻址一一操作数的地址由变址寄存器 A 和基址寄存器 DPTR PC 相加得到。可寻址 64KB 的程序区相对寻址一一实现程序的相对转移,地址范围 -128+127位寻址按位寻址,操作数的地址为位地址。可寻址 RAM 区 128bit 特殊功能区的 128bit答:对片内 RAF 可以用直接寻址和寄存器寻址方式。对片外 RAI 可以用寄存器寻址方式-答: 在对片外 RAI 单元的寻址中用 Ri 间接寻址只能寻址当前页的 256B,用 dptr 间接寻址可以直接寻址 64KB 的内 存答:( 1)立即

7、寻址 (2)直接寻址 (3)寄存器间接寻址 (4)寄存器寻址 (5)MOVC A A+DPTR 变址寻址 (6)相对寻址 (7)CLR A 立即寻址 ,CLR C 位寻址答: 这 2 条指令的操作结果相当,但是前 1 条指令速度快,指令短答:如 A= 12H (PC) = 0FFEH + 20H +3= 1021H如人=10H (PC)二0FFEH +3= 1001H第4章MCS-51单片机汇编语言程序设计解: x equ 5AHY EQU 5BHORG 0100HSTART: CJNE A,#10, START1START1: JC START_M ;X=15MOV B,A ;10=X15M

8、UL ABADD A,#8SJMP START_ENDSTART_M: MOV B,A ; X=flag; i-) if(si=0) & (si=a) & (si=A) & (si=F) tmpi = si - A + 10;elsetmpi = 0;result = result + tmpi*count;count = count*16;return result;解:#include #include typedef unsigned char bool;bool strend(unsigned char s, unsigned char t); int main

9、()unsigned char s1 = abcdefg; unsigned char s2 = ef;bool flag = strend(s1, s2); printf(the result is %dn, flag);return 0;bool strend(unsigned char s, unsigned char t)int ls = strlen(s);int lt = strlen(t);if (lt = 0)return 1;if (ls lt)return 0;return !strcmp(&sls-lt,t);解:晶振频率 12MHZ, 25ms 中断 1 次,5

10、 次中断为 125ms 移位 1 次#define uint unsigned int#define uchar unsigned charuchar temp,num;void main()TMOD=0 x10;TH1=(65536-25000)/256;TL1=(65536-25000)%256;EA=1;ET1=1;TR1=1; P1=0 xff; temp=0 xfe; while(1)P1=temp;void time1() interrupt 3TH1=(65536-25000)/256;TL1=(65536-25000)%256; num+;if(num=5)num=0;temp

11、=(temp7);答:不是, 5/9=0; 则 c=0. 改为 C= 5.0/9.0 *(F-32.0) ;第 6 章 单片机内部资源解:因为 10KHZ 勺周期为 100us,定时器中断时间可为 50us,因此有 4 中方式。13方式 0: x= 213-50*(12/12) =8192-50 =1FCEH= 1 1111 1100 1110B TH0 = FEH TL0 = 0EH方式 1: x= 216-50*(12/12) =65536-50 =FFCEH= 1111 1111 1100 1110B TH0 = FEH TL0 = CEH8方式 2: x= 28-50*(12/12)

12、=256-50 =CEH= 1100 1110B TH0 = CEH TL0 = CEH方式 3: x= 28-50*(12/12) =256-50 =CEH= 1100 1110B TL0 = CEH解: 1. 采用汇编语言定时为 50ms 采用方式 1, X=216-50000*(12/12)=3CB0HORG 000BHLJMP T0_INTMAIN: MOV TMOD, #01HMOV TH0, #3CHMOV TL0, #0B0HSETB ET0SETB IESETB TR0CLR P2.0SJMP $T0_INT: MOV TL0, #0B0HMOV TH0, #3CHCPL P2

13、.0RETI2. 采用 c51 语言定时为 50ms 采用方式 1, X=216-50000*(12/12)#include sbit P2_0 = P2A0;void main(void)TMOD = 0 x01;P2_0 = 0;TH0 = (65536- 500000)/256 ;TL0 = (65536- 500000)%256 ;EA=1 ;ET0 =1;TR0 =1;Do while (1);Void timer0(void) interrupt 1TL0 = (65536- 500000)%256 ;TH0 = (65536- 500000)/256 ;P2_0 = !P2_0;

14、解: 1. 采用汇编语言定时为 100ms 采用方式 1, X=216-100000*(6/12)=3CB0H,当 中断 3 次时清 0,满 10 次重新置 1。ORG 000BHLJMP T0_INTMAIN: MOV TMOD, #01HMOV TH0, #3CHMOV TL0, #0B0HMOV R2,#0SETB ET0SETB IESETB TR0SETB P1.0SJMP $T0_INT: MOV TL0, #0B0HMOV TH0, #3CHINC R2CJNE R2,#3,T0_INT1CLR P1.0RETIT0_INT1:CJNE R2,#10, T0_INT2SETB P

15、1.0MOV R2,#0T0_INT2: RETI2. 采用 c51 语言定时为 100ms 采用方式 1, X=216-100000*(6/12)#include sbit P1_0 = P1A0;uchar NUM =0;void main(void)TMOD = 0 x01;P1_0 = 1;TH0 = (65536- 500000)/256 ;TL0 = (65536- 500000)%256 ;EA=1 ;ET0 =1;TR0 =1;Do while (1);Void timer0(void) interrupt 1TH0 = (65536- 500000)/256 ;THO = (

16、65536- 500000)/256 ;NUM+;If (NUM =3) P1_0 = 0;Else if (NUM =10)NUM =0;P1_0 =1;解: 1. 采用汇编语言定时为 100ms 采用方式 1, X=216-100000*(6/12)=3CB0H,当 中断 10 次时 清0,满 20 次重新置 1。ORG 000BHLJMP T0_INTMAIN: MOV TMOD, #01HMOV TH0, #3CHMOV TL0, #0B0HMOV R2,#0SETB ET0SETB IESETB TR0TLO = (65536- 500000)%256 ;SETB P1.7SJMP

17、$T0_INT: MOV TL0, #0B0HMOV TH0, #3CHINC R2CJNE R2,#10,T0_INT1CLR P1.7RETIT0_INT1:CJNE R2,#20, T0_INT2SETB P1.7MOV R2,#0T0_INT2: RETI2. 采用 c51 语言定时为 100ms 采用方式 1, X=216-100000*(6/12)#include sbit P1_7 = P1A7;uchar NUM =0;void main(void)TMOD = 0 x01;P1_7 = 1;TH0 = (65536- 500000)/256 ;EA=1 ;ET0 =1;TR0

18、 =1;Do while (1);Void timer0(void) interrupt 1TL0 = (65536- 500000)%256 ;TH0 = (65536- 500000)/256 ;NUM+;If (NUM =10) P1_7 = 0;Else if (NUM =20)NUM =0;P1_7 =1;解: 1. 采用汇编语言定时为 100ms 采用方式 1, X=216-100000*(6/12)=3CB0H,p1.0=0,外部 INT0 中断时 p1.0=1,启动定时器。ORG 0000H当中断 10LJMP MAINORG 0003HLJMP INT0_INTORG 000

19、BHLJMP T0_INTMAIN: MOV TMOD, #01HMOV TH0, #3CHMOV TL0, #0B0HMOV R2,#0SETB ET0SETB IESETB EX0SETB IT0SETB P1.0CLR P1.1SJMP $T0_INT: MOV TL0, #0B0HMOV TH0, #3CHINC R2CJNE R2,#10, T0_INT2SETB P1.0CLR P1.1CLR TR0T0_INT2: RETIINT0_INT: SETB TR0MOV R2,#0CLR P1.0SETB P1.1RETI2. 采用 c51 语言定时为 100ms 采用方式 1, X

20、=216-100000*(6/12)#include sbit P1_0 = P1A0;sbit P1_1 = P1A1;uchar NUM =0;void main(void)TMOD = 0 x01;P1_0 = 1;P1_1 = 0;TH0 = (65536- 500000)/256 ;TL0 = (65536- 500000)%256 ;EA=1 ;ET0 =1;EX0 =1;IT0 =1;Do while (1);Void timer0(void) interrupt 1TLO = (65536- 500000)%256 ;THO = (65536- 500000)/256 ;NUM

21、+;If (NUM =10)P1_0 =1;P1_1 =0;TR0 =0;Void INT_0(void) interrupt 0P1_0 =0;P1_1 =1;TR0 =1;NUM =0;解:外部脉冲由管脚输入,可设 TO 工作于定时器方式 1,计数初值为 0,当输入 高电平时对 T0 计数,当高电平结束时,计数值乘上机器周期数就是脉冲宽度。工作方式控制字 TMOD=00001001B=09H 计数初值 TH1=0O TL0=00H汇编语言程序:ORG 0000HLJMP MAINSJMP $ENDC 语言程序:ORG 0100HMAIN: MOV TMOD ,#09HMOV TH0 ,#0

22、0HMOV TL0 ,#00HWAIT: JB P3.2 WAITSETB TR0WAIT1: JNB P3.2 ,WAIT1WAIT2: JB P3.2 ,WAIT2CLR TR0MOV 51H ,TH1MOV 50H ,TL1;T0 定时,方式 1,GATE=1;置 TH0 十数初值;置 TL0 计数初值;等待 /P3.2 引脚变为低电平;预启动 T0;等待 /P3.2 引脚变为高电平、启动计数;等待 /P3.2 引脚再变为低电平;停止计数;读取计数值,存入指定的单元#include unsigned char data *p;void main(void)TMOD=0 x09; /* T

23、0 工作在定时器方式 1,GATE=1 */TH0=0;TL0=0;do while (P3.2); /*TR0=1; /*do while (! P3.2); /*do while (P3.2); /*TR0=0; /* p=0 x50;*p=TL0;p=p+1;*p=TH0;等待 /P3.2 引脚变为低电平 */启动定时器 / 计数器 0 */等待引脚变为高电平、启动计数 */等待引脚再变为低电平 */停止计数 */方式 0: 8 位同步移位寄存器方式,波特率方式 1:10 位异步收发方式,波特率可变方式 2:11 位异步收发方式,波特率fosc/32方式 3:11 位异步收发方式,波特率

24、可变解: 有 4 种工作方式fosc/12、fosc/64解: 串口 SBUF 分接收SBU和发送SBUF占用同一地址T.tDBID甲 A解: 分析:甲、乙两机都选择方式 1: 8 位异步通信方式,最高位用作奇偶校验,波特率为 1200bps,甲机发送,乙机接收,因此甲机的串口控制字SCO!为 40H,乙机的串口控制字 SCO 为 50H。设甲、乙两机的振荡频率为 12MHZ 由于波特率为 1200。SMOD0,定时/计数器T1 选择为方式 2,则初值为:初值=256 - foscX2SMOD/(12X波特率X32)X1200X32)230=E6H根据要求定时/计数器 T1 的方式控制字 TM

25、O 为 20H。甲机的发送程序:TSTART MOV TMOD #20HMOV TL1,#0E6HMOV TH1, #0E6HMOV PCON #00HTXDKT乙&MHZMHZ丄亍MOV SCON #40HMOV R0, #30HMOV R7, #10HSETB TR1LOOP: MOV A, R0MOV SBUF, AWAIT: JNB TI ,WAITCLR TIINC R0DJINZ R7 , LOOPRET乙机接收程序:RSTAR:T MOV TMO,D #20HMOV TL1, #0E6HMOV TH1, #0E6HMOV PCO,N #00HMOV DPTR, #0030

26、HMOV R7,#10HSETB TR1 ;启动定时器 1LOOP: MOV SCON,#50HWAIT: JNB RI , WAITMOV A,SBUFMOVX DPT,RAINC R0DJNZ R7, LOOPRET包含 8051 单片机的寄存器定义头文在 RAh 区定义 16 个单元*/声明计数变量 */定义 p 为指针 */主程序 */置串行口工作方式 1 */定时器 1 为工作方式 2 */置计数初值 */计数重装值 */启动定时器 1 */开中断 */串行口开中断 */设置发送数据缓冲器区指针 */发送第一个数据 */等待中断 */#include “reg5 1 .h ”/*件 */unsigned char data ADDRA 0X30; /*unsigned char num=0;/*unsigned char *p;/*void main(void)/*SCON=0 x40;/*ThOD=0 x20;/*PCON=0 x00;/* ShOD=0 */TL1=0 xe6;/*TH1=0 xe6;/*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论