1、浙江大学远程教育学院微机原理与接口技术课程作业姓名: 学 号:年级: 学习中心:第 2 章 P52280C51 单片机引脚有哪些第二功能?第一功能 第二功能P0.0P0.7 地址总线 AoA7数据总线 D0D7P2.0P2.7 地址总线 A8A15P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0 外部中断 0)P3.3 IINT1(外部中断 1)P3.4 TO(定时器计数器 0 的外部输入)P3.5 T1(定时器计数器 0 的外部输出)P3.6 WR(外部数据存储器或 IO 的写选通)P3.7 RD 外部数据存储器或 IO 的读选通)480C51 单片机的存储器在
2、结构上有何特点?在物理上和逻辑上各有哪几种地址空间?访问片内 RAM 和片外 RAM 的指令格式有何区别?1、80C5l 单片机采用哈佛结构,即将程序存储器和数据存储器截然分开,分别进行寻址。不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有较强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围都可达 64 KB。2、在物理上设有 4 个存储器空间片内程序存储器;片外程序存储器;片内数据存储器; 片外数据存储器。在逻辑上设有 3 个存储器地址空间 片内、片外统一的 64 KB 程序存储器地址空间。 片内 256 字节(80C52 为 384 字节)数据存储
3、器地址空间。片内数据存储器空间在物理上又包含两部分: 对于 80C51 型单片机,0127 字节为片内数据存储器空间;128255 字节为特殊功能寄存器(SFR)空间(实际仅占用了 20 多个字节)。 对于 80C52 型单片机,O127 字节为片内数据存储器空间;128255 字节共 128个字节是数据存储器和特殊功能寄存器地址重叠空间。片外 64 KB 的数据存储器地址空间。3、在访问 3 个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选通信号。访问片内 RAM 采用 MOV 指令,访问片外 RAM 则一定要采用 MOVX 指令,因为MOVX 指令会产生控制信号 RD 或
4、WR,用来访问片外 RAM。访问程序存储器地址空间,则应采用 MOVC 指令。680C51 单片机片内 RAM 低 128 个存储单元划分为哪 3 个主要部分?各部分主要功能是什么?80C51 片内 RAM 的低 128 个存储单元划分为 3 个主要部分:1、寄存器区。共 4 组寄存器,每组 8 个存储单元,各组以 R0R7 作为单元编号。常用于保存操作数及中间结果等。:R0R7 也称为“通用工作寄存器” ,占用 00H1FH 共 32个单元地址。2、位寻址区。单元地址为 20H2FH,既可作为一般 RAM 单元使用,按字节进行操作,也可对单元中的每一位进行位操作。因此,称为“位寻址区” 。寻
5、址区共有 16 个 RAM 单元,共计 128 位,位地址为 OOH7FH。3、用户 RAM 区。在内部 RAM 低 128 单元中,除去前面两个区,剩下 80 个单元,单元地址为 30H7FH。在用户 RAM 区内可以设置堆栈区。13程序存储器指令地址、堆栈地址和外接数据存储器地址各使用什么指针?为什么?1、程序存储器指令地址使用程序计数器 PC 指针,PC 中存放的是下一条将要从程序存储器中取出的指令的地址。程序计数器 PC 变化的轨迹决定程序的流程。PC 最基本的工作方式是自动加 1。在执行条件转移或无条件转移指令时,将转移的目的地址送入程序计数器,程序流向发生变化。在执行调用指令或响应
6、中断时,将子程序的入口地址或者中断矢量地址送人 PC,程序流向发生变化。 2、堆栈地址使用堆栈指针SP。SP 在 80C51 中存放当前的堆栈栈顶所指存储单元地址,是一个 8 位寄存器,对数据按照“先进后出”原则进行管理。外接数据存储器地址使用数据指针 DPTR。DPTR 是一个 16 位特殊功能寄存器,主要功能是作为片外数据存储器或 I0寻址用的地址寄存器,这时会产生 RD 或 wR 控制信号,用于单片机对外扩的数据存储器或I0 的控制。3、数据指针 DPTR 也可以作为访问程序存储器时的基址寄存器,此时是寻址程序存储器中的表格、常数等单元,而不是寻址指令。第 3 章 P939MOV、MOV
7、C、MOVX 指令有什么区别,分别用于那些场合,为什么?MOV 指令用于对内部 RAM 的访问。MOVC 指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。MOVX 指令采用间接寻址方式访问外部数据存储器有 Ri 和 DPTR 两种间接寻址方式。执行MOVX 指令时,在 P37 引脚上输出 RD 有效信号或在 P36 引脚上输出 WR 有效信号,可以用做外部数据存储器或 IO 的读写选通信号,与单片机扩展电路有关。15已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后 A 的内容。MOV A, #55HANL A,#0FFHORL 20H,AXRL A,R1
8、CPL 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,#30H MOV A,R0 RL A MOV R1,ARL ARL AADD A,R1MOV R0,A ;功能:将 30 H 中的数乘以 10 以后再存回 30H 中。条件:30 H 中的数不能大于 25,2510=250 仍为一个字节。若 30H 中的数大于 25,则应考虑进位。21读下列程序,请完成
9、下列任务:画出 P1.0P1.3 引脚上的波形图,并标出电压 V时间 t 坐标。 对源程序加以注释。 ORG 0000HSTART: MOV SP,#20HMOV 30H,#01HMOV P1,#01HMLP0:ACALL D50msMOV A, 30HCJNE A, #08H,MLP1MOV A, #01H MOV DPTR,#ITABMLP2MOV 30H, AMOVC A,A+DPTRMOV P1, ASJMP MLP0MLP1:INC ASJMP MLP2ITAB: DB 0,1,2,4,8DB 8,4,2,1D50ms:RETP1OP13 引脚上的波形图如图所示。注释说明:判断表格中
10、数据是否取完?取完,从表头开始取给出表格首地址取表格中数据表格中数据未取完,准备取下一个软件延时 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
11、: 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 ENDIEND 14. 80C51 单片机从内部 RAM 的 31H 单元开始存放一组 8 位带符号数,字节个数在 30H 中。请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入 20H、21H 和 22H
12、 三个单元中。加上必要的伪指令,并对源程序加以注释。程序如下: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,#0 MOV NEG_NUM,#0MOV R1,#LENGTH ;数据长度MOV R0,#DATA_ADR ;数据首地址LOOP: MOV A,R0 JB ACC7,INC_N
13、EG ;符号位为 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 位的无符号二
14、十进制数,占 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 R
15、1INC R2DJNZ R7,ADDB ;多字节加未结束,则循环HERE: SJMP HEREEND第 6 章 P177 4. 请编程实现 80C51 单片机产生频率为 100kHz 等宽矩形波( 定时器/计数器T0,方式 0,定时器中断),假定 80C51 的晶振频率为 12MHz。加上必要的伪指令,并对源程序加以注释。100 kHz 等宽矩形波,周期为 10us,定时周期为 5us,机器周期为 1 s。计算:TC=2 13一(1 2 X 10 6 X 5 X 106)12=8187=1FFBH方式 0:定时常数 TCH=FFH,TCL=1BH。 程序如下: ORG 0000H0000 01
16、30 AJMP MAINORG 000BH 定时器 T0 中断矢量000B 0141 AJMP INTERORG 0030H0030 758900 MAIN:MOV TMOD,#00H ;写控制字,设 TO 为定时器,方式 O0033 758CFF MOV TH0,#OFFH ;写定时常数,定时为 50036 7 58AIB MOV TL0,#IBH0039 D28c SETB TR0 ;开启定时器 T0003B D2A9 SETB ET0 ;开定时器 T0 中断 003D D2AF SETB EA ;开中断003F 013F AJMP $ ;中断等待 定时器 T0 中断 0041 758CF
17、F INTER: MOV TH0,#0FFH ;重写定时常数0044 758AIB MOV TL0,#IBH0047 B290 CPL P10 ;P1 口作为输出端,P1.0 变反输出0049 32 RETI ;中断返回END第 8 章 P2792. 如何构造 80C51 单片机并行扩展的系统总线?总线有:1、 片内总线; 2、片总线(又称元件级总线或局部总 线). 3、内总线(又称微型机总线或板级总 一般称为系统总线)4、外总线(又称通信总线). 总线的类型:1、地址总线.是微机用来传送地址的 信号线.2、数据总线.传送数据和代码的总 一般为双向信号线,3、控制总线.传送控制信号的总线,用来
18、实现命令,状态传送,中断,储器传送的请求与控制信号传送,以及提 供系统使用的时钟和复位信号等.8. 外接程序存储器的读信号为 ,外接数据存储器的读信号为 。14. 已知可编程 I/O 接口芯片 8255A 的控制寄存器的地址为 BFFFH,要求设定 A 口为基本输入,B 口为基本输出,C 口为输入方式。请编写从 C 口读入数据后,再从 B 口输出的程序段。并根据要求画出 80C51 与 8255A 连接的逻辑原理图。加上必要的伪指令,并对源程序加以注释。1. ORG 0000HAJMP MAINORG 0030HMAIN: MOVDPTR,#2000HMOV B,20H ;设定的温度值送 BM
19、OVX A,DPTR ;取实测温度值CLR CSUBB A,BJNC LOWER ;实测温度值设定温度值,P1.0 输出低电平MOV B,20H ;取设定的温度值MOVX A,DPTR ;取实测温度值CLR CSUBB A,BJC HIGH ;实测温度值设定温度值,P1.0 输出高电平SJMP MAIN ;实测温度值=设定温度值,P1.0 输出不变LOWER: CLR P1.0SJMP MAINHIGH: SETB P1.0SJMP MAIN END2. 答: ORG0000HMOVDPTR,#2000H ;无符号数存放单元首址MOVR1,#10D ;无符号数长度MOV40H,#00H ;最大
20、值存放单元预置为最小值STEP:MOVX A,DPTR ;取数CJNE A,40H,STEP1 ;比较大小SJMP NEXT ;(A)=(40H),不交换STEP1:JC NEXT ;(A)(40H),不交换MOV40H,A ;(A)(40H),则较大值存入 40H 中NEXT:INC DPTRDJNZ R1,STEPSJMP $END22. 利用 ADC0809 芯片设计以 80C51 为控制器的巡回检测系统。请画出电路连接图,并编写进行某一路模拟量转换的源程序。加上必要的伪指令,并对源程序加以注释。巡回检测系统连接如图所示:ADC0809 的 IN0 通道地址为 7FF8H。计算:ORG
21、0000HSJMP MAINORG0030HMAIN:LOOP:MOV DPTR,#7FF8H ;A/D 通道 0 地址MOVR0,#20H ;数据存入地址MOVX DPTR,A ;启动 A/D 转换LCALL D128s ;A/D 转换等待MOVX A,DPTR ;读入 A/D 转换后的数据MOVR0,A ;存入内部 RAM ;中断返回D128s: ;延时子程序(可以直接调用)RETEND微机原理与接口技术实验作业第一部分 简答题1. 80C51 单片微机内部有哪几个常用的地址指针,它们各有什么用处。80C51 单片微机内部有三个常用的指针,即PC-程序计数器,存放下一条将要从程序存储器取出
22、的指令的地址。SP-堆栈指示器,指向堆栈栈顶。DPTR-数据指针,作为外部数据存储器或 I/O 的地址指针。2. 简述 80C51 的程序状态字 PSW 的主要功能。PSW 的主要部分是算术逻辑运算单元 ALU 的输出。有些位根据指令运算结果,由硬件自动生成。如 OV 为溢出标志位,用于指示 8 位带符号数运算后有否超出 8 位带符号数允许范围。C 标志为进位/借位标志位。多倍精度的加减法运算。3. 80C51 访问片内外不同存储空间时采用哪 3 类传送指令。MOV 传送指令用于访问片内数据存储器。MOVC 传送指令用于对程序存储器内的表格进行查表操作。MOVX 传送指令用于访问片外数据存储器
23、或 I/O,因为执行 MOVX 指令时会产生控制信号 或 。RDW4. 简述 80C51 单片微机内部 RAM 低 128 字节 4 个主要区域的特点。寄存器区:共 4 组寄存器,每组 8 个存储单元,以 R0R7 作为单元编号。位寻址区:20H2FH 中的每一位进行位操作。堆栈区:设置在用户 RAM 区内,数据先进后出。用户 RAM 区:除去前面 3 个区,剩下的所有单元。5. 简述 80C51 单片微机的并行扩展三总线(AB、DB 和 CB)如何构成及应用。AB 共 16 位,由 P0 口经锁存后得到 A0-A7、P2 口构成 A8-A15。作地址总线。DB 由 P0 口分时构成。作数据总
24、线。CB 主要有 ALE、/RD、/WR、/PSEN 等。作控制总线。6. 为什么要进行低功耗设计? 实现绿色电子,节约能源。某些场合(如野外)要求便携并由电池供电,要求功耗小。能提高应用系统可靠性,因为在低功耗下,单片微机对干扰不敏感7. 说明 80C51 单片微机的复位方式主要有哪几种。主要有上电复位方式、按键电平复位方式和外脉冲复位方式8. 80C51 芯片内部主要集成逻辑功能部件有哪些?有中央处理器、存储器、定时器/计数器、I/O 口等9. 80C51 的程序存储器中有几个特定地址。0000H 为复位后 PC 初始值,0003H 为外部中断 0 中断矢量地址,000BH 为 T0 中断
25、矢量地址,0013H 为外部中断 1 中断矢量地址,001BH 为 T1 中断矢量地址和 0023H 为串行口中断矢量地址10. 请简述如何在实验室完成实验任务,使用哪些资源?仿真软件由 WAVE 的编辑软件及 MICETEK 公司的 EasyProbe8052F 仿真软件组成,源程序在 PC 上进行编辑、编译,将编译通过后所生成的后缀名为 HEX 的机器码文件,通过 RS232 串行口下载给仿真器,仿真器采用 MICETEK 公司的EasyProbe8052F 仿真器。在仿真器上完成实验的验证、修改和完善第二部分 读程序要求:直接在源程序“;”右侧对程序加以注释。写出程序功能和运行后结果。程序 1 ORG 0000HSJMP MAINORG 0030HMAIN:MOV DPTR,#2000H ;被加数首地址MOV R0,#10H ;加数首地址MOV R1,#20H ;和首地址MOV R2,#05H ;5 字节相加CLR CADDA:MOVX A, DPTR ;取被加数ADDC A, R0 ;加上加数DA A ;二-十进制数校正MOV R1,A ;和存入INC DPTR ;修正地址INC R0INC R1DJNZ R2,ADDA ;5 字节 BCD 码数加法循环