微机原理与接口技术离线作业

发布时间 : 星期五 文章微机原理与接口技术离线作业更新完毕开始阅读

ORG 0030H

MAIN: MOV R7,#05H ;十位(5个字节)计数 MOV R0,#40H ;被加数首址 MOV R1,#50H ;加数首址 MOV R2,#60H ;和数首址 CLR C ;清C标志位 ADDB:MOV A,@R0 ;取被加数 ADDC A,@R1 ;与加数相加

DA A ;进行二—十进制调整 MOV B,R0 ;保护被加数地址 MOV 20H,R2 MOV R0,20H

MOV @R0,A ;存和

MOV R2,20H ;恢复和数地址 MOV R0,B ;恢复被加数地址

INC R0 ;三个地址指针均加1 INC R1 INC R2

DJNZ R7,ADDB ;多个字节加未结束,则循环 HERE:SJMP HERE END

第6章 P177

4. 请编程实现80C51单片机产生频率为100kHz等宽矩形波(定时器/计数器T0,方式0,

定时器中断),假定80C51的晶振频率为12MHz。加上必要的伪指令,并对源程序加以注释。

答:100kHz等宽矩形波,其周期为10微秒,则定时周期为5微秒,机器周期为1微秒。TC=213-(12*106*5*10-6)/12=8187=1FFBH=0001 11111111 1011B 方式0:定时常数000 11111111 11011 TCH=FFH,TCL=1BH

ORG 0000H 0000 0130 AJMP MAIN

ORG 000BH ;定时器T0中断矢量 000B 0141 AJMP INTER ORG 0030H

0030 758900 MAIN:MOV TMOD,#00H ;写控制字,设T0为定时器,方式0 0033 758CFF MOV TH0,#0FFH ;写定时器常数,定时5微秒 0036 758A1B MOV TL0,#1BH

0039 D28C SETB TR0 ;开启定时器T0

003B D2A9 SETB ET0 ;允许定时器T0中断 003D D2AF SETB EA ;允许CPU中断 003F 013F AJMP $ ;中断等待 ;定时器T0中断服务子程序

0041 758CFF INTER:MOV TH0,#0FFH ;重写定时常数 0044 758A1B MOV TL0,#1BH

0047 B290 CPL P1.0 ;P1口作为输出端,变反输出 0049 32 RET1 ;中断返回 END

第8章 P279

2. 如何构造80C51单片机并行扩展的系统总线? 答:80C51单片机并行扩展的系统总线有三组:

1、地址总线(A0—A15):由P0口提供低8位地址A0—A7,由P0口输出的低8位地址A0—A7必须用锁存器锁存,锁存器的锁存控制信号为单片机引脚ALE输出的控制信号。由P2口提供高8位地址A8—A15。

2、数据总线(D0—D7):由P0口提供,其宽度为8位,数据总线要连到多个外围芯片上,而在同一时间里只能够有一个是有效的数据传输通道。哪个芯片的数据通道有效,则由地址线控制各个芯片的片选线来选择。

3、控制总线(CB):包括片外系统扩展用控制线和片外信号对单片机的控制线。系统扩展用控制线有ALE、PSEN、EA、WR、RD

8. 外接程序存储器的读信号为 PSEN ,外接数据存储器的读信号为 RD 。

14. 已知可编程I/O接口芯片8255A的控制寄存器的地址为BFFFH,要求设定A口为

基本输入,B口为基本输出,C口为输入方式。请编写从C口读入数据后,再从B口输出的程序段。并根据要求画出80C51与8255A连接的逻辑原理图。加上必要的伪指令,并对源程序加以注释。

答:已知可编程I/O接口芯片8255A的控制寄存器的地址为BFFFH,若地址线A0、A1被用作8255A端口选择信号,则8255A的C口地址为BFFEH,B口地址为BFFDH,A口地址BFFCH。可以选用地址线P2.6(A14)作8255A的片选线。

程序如下:

ORG 000H

MOV DPTR,#0BFFFH ;8255A控制寄存器地址 MOV A,#99H

MOVX @DPTR,A ;写控制字(PA输入、、PC输入) MOV DPTR,#0BFFEH ;C口地址 MOVX A ,@DPTR ;PC输入 MOV DPTR,#0BFFDH ;B口地址 MOVX @DPTR,A ;PB输出

22. 利用ADC0809芯片设计以80C51为控制器的巡回检测系统。请画出电路连接图,并编写进行某一路模拟量转换的源程序。加上必要的伪指令,并对源程序加以注释。

答:巡回检测系统如上图所示。8路输入通道地址国DFF8H-DFFFH。

8路输入的采样周期为0.8us,ADC0809芯片共有8路模拟量输入通道,所以每一路通道输入模拟量的采样时间为0.8s/8=0.1s=100ms。

采用定时器中断采样,每隔100ms对一路模拟量进行转换。当fosc=12MHz时,机器周期为1us,定时器/计数器方式1的最长定时时间约为65ms。现设定时间为50ms,定时中断两次即为定时100ms。

计算:(216-TC)×1us=50ms,TC=3CB0H。 ORG 0000H AJMP MAIN ORG 000BH ;定时器T0中断矢量 AJMP TIMER0_INT ORG 0030H

MAIN:MOV TMOD,#01H ;设T0为定时器、方式1 MOV TH0,#3CH ;设T0定时50ms定时常数 MOV TL0,#0B0H MOV R4,#2 ;两次中断产生100ms MOV R1,#08H ;转换8路计数器 MOV DPTR,#0DFF8H ;设通道0地址 MOV R0,#40H ;设数据存储单元首地址 SETB TR0 ;启动T0定时器 SETB ET0 ;允许T0中断 SETB EA ;允许CPU中断 AJMP $ ;定时中断等待 TIMER0-INT: DJNZ R4,AGAIN ;若50ms定时未到2次,则转AGAIN MOV R4,#02H

LOOP:MOVX @DPTR,A ;100ms定时到,则启动一路AD转换 LCALL D128us ;延时等待AD转换完成

MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R1,END1 MOV R1,#08H MOV DPTR,#0DFF8H MOV R0,#40H AGAIN:MOV TH0,#3CH MOV TL0,#B0H END1:RETI D128US:…… RET END

;读入AD转换值 ;存入AD转换值

;指向AD下一通道地址 ;指向下一数据存储单元 ;8路转换未结束,则循环 ;重置转换8路计数器 ;重置通道0地址

;重置数据存储单元首地址 ;重置定时器常数

;延时128us子程序(略)

联系合同范文客服:xxxxx#qq.com(#替换为@)