当前位置:首页 > 单片机原理及应用第二版--李建忠
LOOP:MOV A,@DPTR MOVX @R0,A INC R0 INC DPTR
DJNZ R1,LOOP
3-22设有100个有符号数,连续存放在以2000H为首地址的存储区中,试编程统计其中正数、负数、零的个数。
ZERO EQU 20H ;零的统计
NEGETIVE EQU 21H ;负数的统计 POSITIVE EQU 22H ;正数的统计 COUNT EQU 100 ;比较个数 ORG 0000H
LJMP MAIN ORG 0040H
MOV ZERO,#0
MOV NEGETIVE,#0 MOV POSITIVE,#0 MOV R2,#0
MOV DPTR,# 2000H LOOP: MOVX A,@DPTR
CJNE A,#0,NONZERO INC ZERO AJMP NEXT NONZERO: JC NEG
INC POSITIVE AJMP NEXT
NEG: INC NEGETIVE NEXT: INC DPTR
INC R2
CJNE R2,#COUNT,LOOP SJMP $
3-23 编写一个延时1ms的子程序
TIME1MS:MOV R6, #2 TIME1:MOV R7, #248
DJNZ R7, $ ;延时498us
DJNZ R6, TIME1 ;内重循环为500 us;运行两次为1ms, 共1.002ms RET
3-24试编写一段程序,将片内30H~32H和33H~35H中的两个3字节压缩BCD码十进制数相加,将结果以单字节BCD码形式写到外部RAM的1000H~1005H单元。
CLR C
MOV R7,#3
MOV DPTR,#1000H MOV R0,#30H MOV R1,#33H LOOP:MOV A,@R0
ANL A,#0FH MOV R2,A MOV A,@R1 ANL A,#0FH ADDC A,R2 DA A
MOVX @DPTR,A INC DPTR MOV A,@R0 SWAP A ANL A,#0FH MOV R2,A MOV A,@R1 SWAP A ANL A,#0FH ADDC A,R2 DA A
MOVX @DPTR,A INC R0 INC R1 INC DPTR
DJNZ R7,LOOP
3-25 51单片机从串行口发送缓冲区首址为30H的10个ASCII码字符,最高位用于奇偶校验,采用偶校验方式,要求发送的波特率为2400波特,时钟频率?osc=12MHz,试编写串行口发送子程序。
单片机采用12 MHz晶振;设串行口工作于方式1;定时器/计数器T1用作波特率发生器,工作于方式2;PCON中的SMOD位为1;发送的波特率要求为2400。 定时器/计数器T1初值计算:
根据公式 波特率=2SMOD×溢出率/32有
溢出率=2400×16=38 400
溢出周期=1/溢出率=26 μs (此为定时器/计数器的定时值) 定时器初值=256-26=230=E6H
根据要求确定定时器/计数器的TMOD中的方式控制字为20H,串行口SCON中的控制字为40H,PCON控制字为80H。则相应的发送程序如下: TSTART:MOV TMOD,#20H ;置定时器/计数器T1工作于方 式2定时 MOV PCON, #80H
MOV TL1,#0E6H ;定时器/计数器T1置初值 MOV TH1,#E6H ;定时器/计数器T1置重装数 MOV SCON,#40H ;置串行口工作于方式1
MOV R0,#30H ;R0作地址指针,指向数据块首址 MOV R7,#10 ;R7作循环计数器,置以发送=字节数 SETB TR1 ;启动定时器/计数器T1 LOOP: MOV A,@R0 ;取待发送的一个字节
MOV C,P ;取奇偶标志,奇为1,偶为0
MOV A.7,C ;给发送的ASCII码最高位加偶校验位 MOV SBUF,A ;启动串行口发送
WAIT:JNB TI,WAIT ;等待发送完毕
CLR TI ;清TI标志,为下一个字节发送作准备 INC R0 ;指向数据块下一个待发送字节的地址 DJINZ R7,LOOP ;循环发送,直到数据块发送完毕
第四章 参考答案
4-1)何谓单片机的最小系统?
★所谓最小系统,是指一个真正可用的单片机最小配置系统。
对于片内带有程序存储器的单片机,只要在芯片上对外接时钟电路和复位电路就能达到真正可用,就是最小系统。
对于片外不带有程序存储器的单片机,除了在芯片上外接时钟电路和复位电路外,还需外接程序存储器,才能构成一个最小系统。
4-5)什么是完全译码?什么是部分译码?各有什么特点?
★所谓部分译码,就是存储器芯片的地址线与单片机系统的地址线顺序相接后,剩余的高位地址线仅用一部分参加译码。
特点:部分译码使存储器芯片的地址空间有重叠,造成系统存储器空间的浪费。 ★所谓全译码,就是存储器芯片的地址线与单片机系统的地址线顺序相接后,剩余的高位地址线全部参加译码。
★特点:存储器芯片的地址空间是唯一确定的,但译码电路相对复杂。 4-7)存储器芯片地址引脚数与容量有什么关系?
★ 地址线的数目由芯片的容量决定,容量(Q)与地址线数目(N)满足关系式:Q=2N
4-10) 采用2764(8K*8)芯片扩展程序存储器,分配的地址范围为4000H~7FFFH。采用完全译码方式,试确定所用芯片数目,分配地址范围,画出地址译码关系图,设计译码电路,画出与单片机的连接图。 ★7FFFH-4000H+1=4000H=16KB
因为2764为8K*8 所以需要2片芯片 第一片地址为范围为:4000H~5FFFH 第二片地址为范围为:6000H~7FFFH 译码关系图: p2.7 P2.6 P2.5 P2.4 p2.3 P2.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 A15 A14 A13 A12 A11 A10 A9 0 0 0 0 0 1 * * * * * * * * A8 * * A7 * * A6 * * A5 * * A4 * * A3 * * A2 * * A1 * * A0 * * 第六章 参考答案
6-9)何谓静态显示?何谓动态显示?两种显示方式各有什么优缺点?
★静态显示:LED工作在静态显示方式下,共阴极接地或共阳极接+5V;每一位的段选线(a~g,dp)与一个8位并行I/O口相连。
优点:显示器每一位可以独立显示,每一位由一个8位输出口控制段选码,故在同一个时刻各位可以独立显示不同的字符。
缺点:N位静态显示器要求有N×8根I/o口线,占用I/o口线较多,故在位数较多时
往往采用动态显示。
★ 动态显示:LED动态显示是将所有位的段选线并接在一个I/o口上,共阴极端或共
阳极端分别由相应的I/o口线控制。 优点:节约用线
缺点:每一位段选线都接在一个I/o口上,因此每送一个段选码,8位就显示同一个字符,这种显示器是不能用的。解决这个问题利用人眼的视觉停留,从段选线I/o口上按位分别送显示字符的段选码,在位控制口也按相应的次序分别选通相应的显示位(共阴极送低电平,共阳极送高电平),选通位就显示相应字符,并保持几毫秒的延时,未选通位不显示字符(保持熄灭)。
6-14)设计一个内置HD44780驱动控制器的字符型LCM与51单片机的接口电路,并编写在字符型液晶显示模块显示“HELLO”字符的程序。
6-16)ADC0809的8路输入通道是如何选择的?试举例说明。 ★ ADDC 0 0 0 0 1 1 1 1 ADDB 0 0 1 1 0 0 1 1 ADDA 0 0 0 1 0 1 0 1 选通的通道 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7
6-17) 设有一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,并依次存放在片内RAM区从30H开始的8个单元内。试编写采集一遍数据的主程序和中断服务程序。
6-24)单片机控制大功率对象时,为什么要采用隔离器进行接口?试编写一些常用的光耦器件的型号。
★由于继电器由吸合到断开的瞬间会产生一定的干扰,当吸合电流较大时,在单片机与继电器之间需要增加隔离电路。
4N25 ,4N26~4N28,TLP528,TLP124,TLP126,4N33,H11G1,H11GZ,H11G3
6-25) 单片机与继电器线圈接口时,应注意什么问题?采取什么措施解决这些问题? ★继电器由吸合到断开的瞬间会产生一定的干扰,因而使用于吸合电流很小的微型继电器
共分享92篇相关文档