浙江大学远程教育学院《微机原理与接口技术》课程作业姓名:学号:年级:学习中心:第2章P522.80C51单片机引脚有哪些第二功能?第一功能第二功能P0.0~P0.7 地址总线Ao~A7/数据总线D0~D7P2.0~P2.7 地址总线A8~A15P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0外部中断0)P3.3 IINT1(外部中断1)P3.4 TO(定时器/计数器0的外部输入)P3.5 T1(定时器/计数器0的外部输出)P3.6 WR(外部数据存储器或I/O的写选通)P3.7 RD外部数据存储器或I/O的读选通)4.80C51单片机的存储器在结构上有何特点?在物理上和逻辑上各有哪几种地址空间?访问片内RAM和片外RAM的指令格式有何区别?1、80C5l单片机采用哈佛结构,即将程序存储器和数据存储器截然分开,分别进行寻址。
不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有较强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围都可达64 KB。
2、在物理上设有4个存储器空间·片内程序存储器;·片外程序存储器;·片内数据存储器;.·片外数据存储器。
在逻辑上设有3个存储器地址空间●片内、片外统一的64 KB程序存储器地址空间。
●片内256字节(80C52为384字节)数据存储器地址空间。
片内数据存储器空间在物理上又包含两部分:●对于80C51型单片机,0~127字节为片内数据存储器空间;128~255字节为特殊功能寄存器(SFR)空间(实际仅占用了20多个字节)。
●对于80C52型单片机,O~127字节为片内数据存储器空间;128~255字节共128个字节是数据存储器和特殊功能寄存器地址重叠空间。
片外64 KB的数据存储器地址空间。
3、在访问3个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选通信号。
访问片内RAM采用MOV指令,访问片外RAM则一定要采用MOVX指令,因为MOVX 指令会产生控制信号RD或WR,用来访问片外RAM。
访问程序存储器地址空间,则应采用MOVC指令。
6.80C51单片机片内RAM低128个存储单元划分为哪3个主要部分?各部分主要功能是什么?80C51片内RAM的低128个存储单元划分为3个主要部分:1、寄存器区。
共4组寄存器,每组8个存储单元,各组以R0~R7作为单元编号。
常用于保存操作数及中间结果等。
:R0~R7也称为“通用工作寄存器”,占用00H~1FH共32个单元地址。
2、位寻址区。
单元地址为20H~2FH,既可作为一般RAM单元使用,按字节进行操作,也可对单元中的每一位进行位操作。
因此,称为“位寻址区”。
寻址区共有16个RAM单元,共计128位,位地址为OOH~7FH。
3、用户RAM区。
在内部RAM低128单元中,除去前面两个区,剩下80个单元,单元地址为30H~7FH。
在用户RAM区内可以设置堆栈区。
13.程序存储器指令地址、堆栈地址和外接数据存储器地址各使用什么指针?为什么?1、程序存储器指令地址使用程序计数器PC指针,PC中存放的是下一条将要从程序存储器中取出的指令的地址。
程序计数器PC变化的轨迹决定程序的流程。
PC最基本的工作方式是自动加1。
在执行条件转移或无条件转移指令时,将转移的目的地址送入程序计数器,程序流向发生变化。
在执行调用指令或响应中断时,将子程序的入口地址或者中断矢量地址送人PC,程序流向发生变化。
2、堆栈地址使用堆栈指针.SP。
SP在80C51中存放当前的堆栈栈顶所指存储单元地址,是一个8位寄存器,对数据按照“先进后出”原则进行管理。
外接数据存储器地址使用数据指针DPTR。
DPTR是一个16位特殊功能寄存器,主要功能是作为片外数据存储器或I/0寻址用的地址寄存器,这时会产生RD或wR控制信号,用于单片机对外扩的数据存储器或I/0的控制。
3、数据指针DPTR也可以作为访问程序存储器时的基址寄存器,此时是寻址程序存储器中的表格、常数等单元,而不是寻址指令。
第3章P939.MOV、MOVC、MOVX 指令有什么区别,分别用于那些场合,为什么?MOV指令用于对内部RAM的访问。
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
MOVX指令采用间接寻址方式访问外部数据存储器.有Ri和DPTR两种间接寻址方式。
执行MOVX指令时,在P3.7引脚上输出RD有效信号.或在P3.6引脚上输出WR有效信号,可以用做外部数据存储器或I/O的读/写选通信号,与单片机扩展电路有关。
15.已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。
MOV A,#55HANL A,#0FFHORL 20H,AXRL A,@R1CPL A各指令的执行结果如下:MOV A,#55H ;(A)=55HANL A,#0FFH ;(A)=55HORL 20H,A ;(20H)=FFHXRL A,@R1 ;(A)=AAHCPL A ;(A)=55H执行完程序段后,A的内容为5 5 H16.阅读下列程序,说明其功能。
MOV R0,#30HMOV A,@R0RL AMOV R1,ARL ARL AADD A,R1MOV @R0,A ;功能:将30 H中的数乘以10以后再存回30H中。
条件:30 H中的数不能大于25,25×10=250仍为一个字节。
若30H中的数大于25,则应考虑进位。
21.读下列程序,请完成下列任务:①画出P1.0~P1.3引脚上的波形图,并标出电压V-时间t坐标。
②对源程序加以注释。
ORG 0000HSTART: MOV SP,#20HMOV 30H,#01HMOV P1,#01HMLP0:ACALL D50msMOV A, 30HCJNE A, #08H,MLP1MOV A, #01HMOV DPTR,#ITABMLP2∶MOV 30H, AMOVC A,@A+DPTRMOV P1, ASJMP MLP0MLP1:INC ASJMP MLP2ITAB:DB 0,1,2,4,8DB 8,4,2,1D50ms:…RETP1.O~P1.3引脚上的波形图如图所示。
注释说明:判断表格中数据是否取完?取完,从表头开始取给出表格首地址取表格中数据表格中数据未取完,准备取下一个软件延时50 ms子程序第4章P13210.把长度为10H的字符串从内部RAM的输入缓冲区INBUF向设在外部RAM的输出缓冲区OUTBUF进行传送,一直进行到遇见字符“CR”时停止,如字符串中无字符“CR”,则整个字符串全部传送。
加上必要的伪指令,并对源程序加以注释。
程序如下:ORG 0000HAJMP MAINORG 0030HMAIN: MOV R7,#10H ;数据长度MOV R0,#INBUF ;源数据首地址MOV DPTR,#OUTBUF ;目的数据首地址LOOP: MOV A,@R0 ;把源数据的值赋给ACJNE A,#0DH,LOOPl ;判断是否为“CR”(ASCII码值为0DH) SJMP ENDl ;是“CR",则结束传送LOOPl: MOVX @DPTR,A ;把A的值赋给目的数据INC R0 ;源数据下一个地址值INC DPTR ;目的数据下一个地址值DJNZ R7,L00P ;判断数据传送是否完毕ENDI: SJMP ENDIEND14. 80C51单片机从内部RAM的31H单元开始存放一组8位带符号数,字节个数在30H中。
请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。
加上必要的伪指令,并对源程序加以注释。
程序如下:LENGTH EQU 30H ;数据长度DATA_ADR EQU 31H ;数据首地址POS_NUM EQU 20H ;正数个数ZERO_NUM EQU 21H ;0个数NEG_NUM EQU 22H ;负数个数ORG 0000HAJMP MAIN ,ORG 0030HMAIN: MOV POS_NUM,#0 ;计数单元初始化为0MOV ZERO_NUM,#0MOV NEG_NUM,#0MOV R1,#LENGTH ;数据长度MOV R0,#DATA_ADR ;数据首地址LOOP: MOV A,@R0 .JB ACC.7,INC_NEG ;符号位为1,该数为负数,跳转加1CJNE A,#0,INC_POSINC ZERO_NUM ;该数为0,0个数加1AJMP L00P1INC NEG:INC NE~_NUM ;负数个数加1AJMP LOOPl .INC_POS:INC POS_NUM ;该数为正数,正数个数加1LOOPl: INC R0 ;判断统计是否结束DJNZ R1,LOOPEND15.两个10位的无符号二一十进制数,分别从内部RAM的40H单元和50H 单元开始存放。
请编程计算该两个数的和,并从内部RAM的60H单元开始存放。
加上必要的伪指令,并对源程序加以注释。
10位的无符号二~十进制数,占5字节,每个字节存放一个压缩BCD码(2位)。
ORG 0000HAJMP MAIN0Re 0030HMAIN: MOV R7,#05H ;十位(5字节)计数MOV R0,#40H ;被加数首址MOV R1,#50H ;加数首址MOV R2,#60H ;和数首址CLR C ;清C标志位ADDB: MOV A,@R0ADDC A,@R1DA A ;二一十进制调整MOV B,R0 ;保护被加数地址MOV 20H, R2MOV R0,20HMOV @R0,A ;存和MOV R2,20H ;恢复和数地址MOV R0,B ;恢复被加数地址INC R0 ;三个地址指针均加1INC R1INC R2DJNZ R7,ADDB ;多字节加未结束,则循环HERE: SJMP HEREEND第6章P1774.请编程实现80C51单片机产生频率为100kHz等宽矩形波(定时器/计数器T0,方式0,定时器中断),假定80C51的晶振频率为12MHz。
加上必要的伪指令,并对源程序加以注释。
100 kHz等宽矩形波,周期为10us,定时周期为5us,机器周期为1 s。
计算:TC=213一(1 2 X 106 X 5 X 106)÷12=8187=1FFBH方式0:定时常数TCH=FFH,TCL=1BH。
·程序如下:ORG 0000H0000 0130 AJMP MAINORG 000BH 定时器T0中断矢量000B 0141 AJM P INTER‘ORG 0030H0030 758900 MAIN:MOV TMOD,#00H ;写控制字,设TO为定时器,方式O 0033 758CFF MOV TH0,#OFFH ;写定时常数,定时为5μ0036 7 58AIB MOV TL0,#IBH0039 D28c SETB TR0 ;开启定时器T0003B D2A9 SETB ET0 ;开定时器T0中断’003D D2AF SETB EA ;开中断003F 013F AJMP $ ;中断等待‘定时器T0中断‘0041 758CFF INTER: MOV TH0,#0FFH ;重写定时常数0044 758AIB MOV TL0,#IBH0047 B290 CPL P1.0 ;P1口作为输出端,P1.0变反输出0049 32 RETI ;中断返回END第8章P2792.如何构造80C51单片机并行扩展的系统总线?总线有:1、片内总线;2、片总线(又称元件级总线或局部总线).3、内总线(又称微型机总线或板级总一般称为系统总线)4、外总线(又称通信总线).总线的类型:1、地址总线.是微机用来传送地址的信号线.2、数据总线.传送数据和代码的总一般为双向信号线,3、控制总线.传送控制信号的总线,用来实现命令,状态传送,中断,储器传送的请求与控制信号传送,以及提供系统使用的时钟和复位信号等.8.外接程序存储器的读信号为,外接数据存储器的读信号为。