MCS51单片机课后作业解答

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

答: 在对片外RAM单元的寻址中用Ri间接寻址只能寻址当前页的256B,用dptr间接寻址可ຫໍສະໝຸດ Baidu 直接寻址64KB的内存
答:(1)立即寻址 (2)直接寻址 (3)寄存器间接寻址 (4)寄存器寻址 (5)MOVC A @A+DPTR 变址寻址 (6)相对寻址 (7)CLR A 立即寻址 ,CLR C 位寻址
ORL A, B MOVX @DPTR, A INC R0 INC DPTR DJNZ R2, ASC_TO_BCD1 RET
第5章 单片机C51程序设计
解: unsigned int htoi(unsigned char s[], unsigned int size) { unsigned int tmp[10]; unsigned int i = 0; unsigned int count = 1, result = 0; unsigned int flag = 0; if((s[i] == '0') && (s[i+1] == 'x') || (s[i+1] == 'X')) flag = 2; for(i=size-1; i>=flag; i--){ if((s[i]>='0') && (s[i]<='9')) tmp[i] = s[i] - 48; else if((s[i]>='a') && (s[i]<='f')) tmp[i] = s[i] - 'a' + 10; else if((s[i]>='A') && (s[i]<='F')) tmp[i] = s[i] - 'A' + 10; else tmp[i] = 0; result = result + tmp[i]*count; count = count*16; } return result; }
第3章 MCS-51单片机的汇编语言指令系统
单片机的指令格式为: 操作码+操作数 [标号:] 操作码助记符 [目的操作数] [,源操作数] [;注释]
答: MCS-51单片机有7种寻址方式: 立即寻址、直接寻址、寄存器寻址、寄存器间接寻 址、变址寻址、相对寻址、位寻址。 立即寻址——操作数在指令中直接给出。 直接寻址——操作数存放的地址在指令中给出。可寻址RAM128B和特殊功能寄存器 寄存器寻址——操作数在寄存器中。可寻址4组寄存器共32个字节即00H—1FH 寄存器间接寻址——操作数的地址放在寄存器 R0、R1、dptr中 @R0、R1可寻址256B @DPTR可寻址64KB 变址寻址——操作数的地址由变址寄存器A和基址寄存器DPTR、PC相加得到。 可寻址64KB的程序区 相对寻址——实现程序的相对转移,地址范围-128~+127 位寻址——按位寻址,操作数的地址为位地址。 可寻址 RAM区128bit 特殊功能区的128bit 答: 对片内RAM可以用直接寻址和寄存器寻址方式。 对片外RAM可以用寄存器寻址方式-
答: 这2条指令的操作结果相当,但是前1条指令速度快,指令短
答: 如A= 12H (PC) = 0FFEH + 20H +3= 1021H 如A= 10H (PC)= 0FFEH +3 = 1001H
第4章 MCS-51 单片机汇编语言程序设计
解:
x equ 5AH Y EQU 5BH ORG 0100H START: CJNE A,#10, START1 START1: JC START_M ;X<10 CJNE A,#15, START2 START2: JNC START_B ;X>=15 MOV B,A ;10<=X<15 MUL AB ADD A,#8 SJMP START_END START_M: MOV B,A ; X<10 MUL AB DEC A SJMP START_END START_B: MOV A,#41 START_END: MOV Y,A SJMP $
INC R1 DJNZ R2, Mult10_DATA1 MOV R0 , #DATA1 MOV R2, #10H CLR C Mult10_DATA2: MOV A, @R0 ADDC A, @R0 ;*2*2 MOV @R0, A INC R0 DJNZ R2, Mult10_DATA2 MOV R0 , #DATA1 MOV R2, #10H CLR C Mult10_DATA3: MOV A, @R0 ADDC A, @R0 ;*2*2*2 MOV @R0, A INC R0 DJNZ R2, Mult10_DATA3 MOV R0 , #DATA1 MOV R1 , # DATA2 MOV R2, #10H CLR C Mult10_DATA4: MOV A, @R0 ;*2*2*2 ADDC A, @R1 ; + *2 MOV @R0, A INC R0 INC R1 DJNZ R2, Mult10_DATA4 RET
解:
data1 equ 40h Data2 equ 50h Result equ 40h
Mult10_DATA: MOV R0 , #DATA1 MOV R1 , # DATA2 MOV R2, #10H CLR C Mult10_DATA1: MOV A, @R0 ADDC A, @R0 ;*2 MOV @R0, A MOV @R1, A INC R0
解:
#include <stdio.h> #include <string.h> typedef unsigned char bool; bool strend(unsigned char s[], unsigned char t[]); int main() { unsigned char s1[] = "abcdefg"; unsigned char s2[] = "ef"; bool flag = strend(s1, s2); printf("the result is %d\n", 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(&s[ls-lt],t); }
解:晶振频率 12MHZ, 25ms中断1次,5次中断为125ms移位1次。 #define uint unsigned int #define uchar unsigned char uchar temp,num; void main() { TMOD=0x10; TH1=(65536-25000)/256;
解:
data equ 2000H NUM EQU 100 EVEN EQU 30H ;偶数 ODD EQU 31H ;奇数 CAL_EVEN_ODD: MOV DPTR , #DATA MOV R2, #NUM CAL_EVEN_ODD2: MOVX A, @DPTR JB ACC.0, CAL_ODD ; INC EVEN SJMP CAL_EVEN_ODD1 CAL_ODD: INC ODD CAL_EVEN_ODD1: INC DPTR DJNZ R2, CAL_EVEN_ODD2 RET
TL1=(65536-25000)%256; EA=1; ET1=1; TR1=1; P1=0xff; temp=0xfe; while(1) { P1=temp; } } void time1() interrupt 3 { TH1=(65536-25000)/256; TL1=(65536-25000)%256; num++; if(num==5) { num=0; temp=(temp<<1 | temp>>7); } }
位地址65H在片内RAM中2CH单元第5位。 (10)什么是振荡周期、时钟周期、机器周期和指令周期? 如何计算机 器周期的确切时间? 答:振荡周期——为单片机提供信号的振荡源的周期 时钟周期——振荡脉冲2分频的信号 机器周期——完成一个基本操作需要的时间,是振荡周 期/12=1T 指令周期——执行1条指令需要的时间 1~4T (11)单片机工作时在运行出错或进入死循环时,如何处理? 答:复位处理,在单片机的RESET加持续1段时间的高电平 (12)使单片机复位的方法有几种?复位后单片机的初始状态如何? 分上电复位和手动复位。复位后PC=0000H ALE=0 /PSEN=1 (13)开机复位后,单片机使用的是哪组工作寄存器? 它们的地址是什 么? 如何改变当前工作寄存器组? 答: 单片机使用的是第0组工作寄存器 R0-R7, 对应的地址为 00H-07H,采用置位复位RS1、RS0,可以改变单片机使用的工作寄存 器。
MCS51单片机作业解答
第二章 MCS-51单片机的结构和原理
(1) MCS-51单片机芯片包含哪些主要功能部件? 答:CPU、4KBROM、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、T1、/WR、/RD (4)MCS-51单片机的4个I/O口在使用上各有什么功能和特点? 答:P1口通用输入输出;P0口数据总线、地址总线低8位、通用 输入输出 P2口地址总线高8位、通用输入输出 P3第2功能信号、通用输入输出。 (5)单片机的存储器分哪几个空间? 试述各空间的作用。 答:程序存储器:内部ROM、外部ROM 数据存储器:内部基本RAM、专用寄存器区、外部RAM (6)简述片内RAM中包含哪些可位寻址单元? 答:20H~2FH共16个可寻址单元 (7)什么叫堆栈? 堆栈指针SP的作用是什么? 在程序设计中为何要对SP 重新赋值? 答:只允许数据单端输入输出的一段存储空间。 SP的作用是用来存放堆栈栈顶的地址。 因为SP的初值是07H,后继的是寄存器区和位寻址区,为了 便于编程工作,要修改SP. (8)程序状态字寄存器PSW 的作用是什么?简述各位的作用。 答:PSW用来存放程序执行状态的信息, CY—加减运算的进位、借位 AC—辅助进位标志,加减运算的低4位进位、借位 (9)位地址65H 与字节地址65H 如何区别? 位地址65H具体在片内RAM 中什么位置? 答:位地址65H中是一位0/1的数据,字节地址65H是8位0/1的数 据。
解: data equ 50h Num equ 08h Result equ 54h CAL_AVE: MOV MOV MOV MOV R0, #DATA R2, #Num R3, #0 R4, #0
CLR C
CAL_AVE1: MOV A, R4 ADDC A, @R0 MOV R4, A MOV A, R3 ADDC A, #0 MOV R3 , A DJNZ R2, CAL_AVE1 MOV R2, #3 CAL_AVE2: CLR C MOV A, R3 RRC A MOV R3, A MOV A, R4 ;/2 RRC A MOV R4, A DJNZ R2, CAL_AVE2 MOV Result, R3 RET
解: DATA_ASC EQU 2000H DATA_BCD EQU 3000H NUM EQU 10 ASC_TO_BCD: MOV DPTR, #DATA_ASC MOV P2, DPH MOV R0, DPL MOV DPTR,#DATA_BCD MOV R2, #NUM ASC_TO_BCD1: MOVX A, @R0 ANL A, #0FH SWAP A MOV B, A INC R0 MOVX A, @R0 ANL A, #0FH
相关文档
最新文档