单片机基础课后答案.docx
- 文档编号:30060575
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:21
- 大小:22.15KB
单片机基础课后答案.docx
《单片机基础课后答案.docx》由会员分享,可在线阅读,更多相关《单片机基础课后答案.docx(21页珍藏版)》请在冰豆网上搜索。
单片机基础课后答案
单片机基础课后答案
第一章
、填空题
1.
1110
0EH
10011100
01100100
2.
3.
255
4.
输入设备
5.
84
7.位字节
字
00100100
-115
bitbtype
11011011-50
8.11111111
9.110
89
二、
单选:
DBCAB
BBCB
第二章
一、
填空
1.
PCPC
2.
反向器
晶振
两只电容
短
3.
加电手动0000H07H
第000H
4.
62
112
5.
DPTR
DPH
DPL
6.
64KB
单选题
DCCACAD
第三章
一、
填空题:
1
.1031
2
.34H
1
1
1
6.
630*8*1024
略
3.
word
07H
4.
1100H
5.
6.
30H
71H
0A5H
0A5H
75H
0A7H
0AAH
IFH
0AAH
20H
0D5H
49H
二、单选题
CCBDCA
三、其它类型题
错
错
对
错
错
错
对
错
错
错
错
对
对
对
对
错
对
对
错
对
错
错
对
(三)其它类型题
3.编写程序将RAM20H-23H单元的高4位写1,低4位写0。
分析:
就是把这四个单元写入F0H。
用一个DJNZ的循环。
ORG0000H
MOVR0,#1FH;R0指向20H单元
MOVR5,#04H;四个数
LOOP:
INCR0
MOV@R0,#0F0H;写入
DJNZR5,LOOP;循环4次
END
4.把m和m+1单元存有两个BCD数,将它们合并到m单元中,编写程序完成。
(设m=30H,高位在30H,低数在31H)
ORG0000H
MOVA,30H
ANLA,#0FH
;把它的高四位清零
SWAPA
MOV30H,A
;高低四位调一下,放回原处
MOVA,31H
ANLA,#0FH
ORLA,30H
;合并起来
MOV30H,A
END
5.将内部RAM中从data单元开始的10个无符号数相加,其和送sum单元多,假定相加结果小于255。
编写程序完成。
(设data=30H,sun=50H)
ORG0000H
MOVR0,#2FH;指向前一个单元
MOVR5,#0AH;循环10次
CLRA;先加到A中
LOOP:
INCR0
ADDA,@R0
DJNZR5,LOOP
MOV50H,A
END
6.假定8位二进制带符号数丰于R0中,要求编写一个求补程序,所得补码入入R1中。
ORG0000H
MOVA,R0
CPLA;按位取反
ADDA,#01H;+1MOVR1,A
END
第四章
一、填空题
1.25H40H03H
2.2.914ms
3.略
4.(A)=((30H)(A)>(30H)(A)<(30H)
5.32.87ms
编程题
1.把长度为10H的字符串从内部RAM的输入缓冲区inbuf向位物外部RAM的输出缓冲区outbuf传送,一直进行到遇见回车或整个字符串传送
完毕。
试编程实现。
ORG
0030H
MOV
R0,#inbuf
MOV
R1,#outbuf
MOV
R4,#10H
LOOP:
MOV
A,@R0
;从内部RAM
取数
CJNE
A,#0DH,LL
;是否为回车符
CR
SJMP
STOP
;是转停止传送
LL:
MOVX
@R1,A
;不是则传送到外部
RAM
INC
R0
INC
R1
DJNZ
R4,LL;沒传送完则循环
STOP:
SJMP$
2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结
束标志。
编程实现在表中找出最小数。
(3AH存放在运行程序时的最小的数)
ORG0030H
MOVR0,#list
MOVA,@R0;取第一个正数
LOOP:
INCR0;指向下一个正数
MOV3AH,@R0
CJNEA,3AH,CHK;前一个数与后一个数比较
CHK:
JCLOOP1;前一个数小,则转
MOVA,@R0;前一个数大,取后一个数
LOOP1:
XCHA,3AH
CJNEA,#0FFH,LOOP
XCHA,3AH;取最小数
MOV3BH,A
SJMP$
3.内部RAM的X,Y单元中各存放一个带符号的数,试编程实现按如下条件进行的运算,并将结果存入Z单元中。
若X为正奇数,Z=X+Y;
若X为正偶数,Z=XVY;
若X为负奇数,Z=XAY;
若X为负偶数,Z=X®Y。
分析:
负数:
第7位为1,正数:
第7位为0奇数:
第0位为1,偶数:
第0位为0
ORG0000H
MOVA,20H
CLRC
RLA
JCFS;移到负数处处理
RRA
RRA;第0位移到C再判定一下是不是1
JCZJS;到正奇数处
MOVA,20H
ORLA,21H
MOV22H,A
SJMPOK
ZJS:
MOVA,20H
ADDA,21H
MOV22H,A
SJMPOK
FS:
MOVA,20H
CLRC
RRA
JCFJS;第0位是1,移到正奇数处理
MOVA,20H
XRLA,21H
MOV22H,A
SJMPOK
FJS:
MOVA,20H
ANLA,21H
MOV22H,A
OK:
END
4、把一个8位二进制数的各位用ASCII码表示之(亦即为“0”的位用30H表示,为“1”的位用31H表示)。
该数存放在内部RAM中byte单元中。
变换后得到的8个ASCII码存放在外部RAM以buf始的存储单元中去。
ORG
0030H
MOV
R0,#byte
MOV
DPTR,#buf
MOV
R5,#08H
MOVA,@R0
LOOP:
RLCA
MOVR7,A
JCLOOP1
MOVA,#30H
SJMPLOOP2
LOOP1:
MOVA,#31H
LOOP2:
MOVX@DPTR,A
MOVA,R7
INCDPTR
DJNZR5,LOOP
5.编程实现运算式c=a22+b假定a、b、c3个数分别存放在内部的DA、DB、DC单元中,别有平方运算子程序调用。
(内部RAM的DA、DB、DC单元设为20H21H22H)
ORG0000H
MOVA,20H
PUSHACC
AJMPSQR
POPACC
MOV22H,A
MOVA,21H
PUSHACC
AJMPSQR
POPACC
ADDA,22H
MOV22H,A
END
6、比较两个ASCII码字符串是否相等。
字符串的长度在内部RAM41H单元,个字符串的首地址为42H,第二个字符串的首地址为52H。
如果两个字符串相等,则置内部RAM40H单元为00H;否则置40H单元为FF。
ORG0030H
MOVR0,#42H
MOVR1,#52H
MOVR7,41H;字符串长度
LOOP:
MOVA,@R0
MOV30H,@R1
CJNEA,30H,LK
INCR0
INCR1
DJNZR7,LOOP
MOV40H,#00H
SJMPDD
RAM
第一
LK:
MOV40H,#0FFH
DD:
SJMPDD
7.外部RAM首址为table的数据表中,有10个字节的数据。
编程将每个字节的最高位无条件地置“1”。
ORG0030H
MOVDPTR,#table
MOVR6,#10LOOP:
MOVXA,@DPTR
SETBE7H;E7H就是累加器A的最高位(ACC.7),也可:
SETBACC.7MOVX@DPTR,AINCDPTR
DJNZR6,LOOP
3.编写程序将RAM20H-23H单元的高4位写1,低4位写0。
分析:
就是把这四个单元写入F0H。
用一个DJNZ的循环。
ORG0000H
MOVR0,#1FH;R0指向20H单元
MOVR5,#04H;四个数
LOOP:
INCR0
MOV@R0,#0F0H;写入
DJNZR5,LOOP;循环4次
END
4.把m和m+1单元存有两个BCD数,将它们合并到m单元中,编写程序完成。
(设m=30H,高位在30H,低数在31H)
ORG0000H
MOVA,30H
ANLA,#0FH;把它的高四位清零
SWAPA
MOV30H,A;高低四位调一下,放回原处
MOVA,31H
ANLA,#0FH
ORLA,30H;合并起来
MOV30H,A
END
5.将内部RAM中从data单元开始的10个无符号数相加,其和送sum单元多,假定相加结果小于255。
编写程序完成。
(设data=30H,sun=50H)
ORG0000H
MOVR0,#2FH;指向前一个单元
MOVR5,#0AH;循环10次
CLRA;先加到A中
LOOP:
INCR0
ADDA,@R0
DJNZR5,LOOP
MOV50H,A
END
6.假定8位二进制带符号数丰于R0中,要求编写一个求补程序,所得补码入入R1中。
ORG0000H
MOVA,R0
CPLA;按位取反
ADDA,#01H;+1
MOVR1,A
END
第四章
一、填空题
1.25H40H03H
2.2.914ms
3.略
4.(A)=((30H)(A)>(30H)(A)<(30H)
5.32.87ms
编程题
1.把长度为10H的字符串从内部RAM的输入缓冲区inbuf向位物外部RAM的输出缓冲区outbuf传送,一直进行到遇见回车或整个字符串传送完毕。
试编程实现。
ORG
0030H
MOV
R0,#inbuf
MOV
R1,#outbuf
MOV
R4,#10H
LOOP:
MOV
A,@R0
;从内部RAM
取数
CJNE
A,#0DH,LL
;是否为回车符
CR
SJMP
STOP
;是转停止传送
LL:
MOVX
@R1,A
;不是则传送到外部
RAM
INC
R0
INC
R1
DJNZ
R4,LL;沒传送完则循环
STOP:
SJMP$
2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结
束标志。
编程实现在表中找出最小数。
(3AH存放在运行程序时的最小的数)
ORG0030H
MOVR0,#list
MOVA,@R0;取第一个正数
LOOP:
INCR0;指向下一个正数
MOV3AH,@R0
CJNEA,3AH,CHK;前一个数与后一个数比较
CHK:
JCLOOP1;前一个数小,则转
MOVA,@R0;前一个数大,取后一个数
LOOP1:
XCHA,3AH
CJNEA,#0FFH,LOOP
XCHA,3AH;取最小数
MOV3BH,ASJMP$
3.内部RAM的X,Y单元中各存放一个带符号的数,试编程实现按如下条件进行的运算,并将结果存入Z单元中。
若X为正奇数,Z=X+Y;
若X为正偶数,Z=XVY;
若X为负奇数,Z=XAY;
若X为负偶数,Z=X®Y。
分析:
负数:
第7位为1,正数:
第7位为0奇数:
第0位为1,偶数:
第0位为0
ORG0000H
MOVA,20H
CLRC
RLA
JCFS;移到负数处处理
RRA
RRA;第0位移到C再判定一下是不是1
JCZJS;到正奇数处
MOVA,20H
ORLA,21H
MOV22H,A
SJMPOK
ZJS:
MOVA,20H
ADDA,21H
MOV22H,A
SJMPOK
FS:
MOVA,20H
CLRC
RRA
JCFJS;第0位是1,移到正奇数处理
MOVA,20H
XRLA,21H
MOV22H,A
SJMPOK
FJS:
MOVA,20H
ANLA,21HMOV22H,A
OK:
END
4、把一个8位二进制数的各位用ASCII码表示之(亦即为“0”的位用30H表示,为“1”的位用31H表示)。
该数存放在内部RAM中byte单元中。
变换后得到的8个ASCII码存放在外部RAM以buf始的存储单元中去。
ORG0030H
MOV
R0,#byte
MOV
DPTR,#buf
MOV
R5,#08H
MOV
A,@R0
LOOP:
RLC
A
MOV
R7,A
JCLOOP1
MOVA,#30H
SJMPLOOP2
LOOP1:
MOVA,#31H
LOOP2:
MOVX@DPTR,A
MOVA,R7
INCDPTR
DJNZR5,LOOP
5.编程实现运算式c=a2+b2假定a、b、c3个数分别存放在内部RAM的DA、DB、DC单元中,别有平方运算子程序调用。
(内部RAM的DA、DB、DC单元设为20H21H22H)
ORG0000H
MOVA,20H
PUSHACC
AJMPSQR
POPACC
MOV22H,A
MOVA,21H
PUSHACC
AJMPSQR
POPACC
ADDA,22H
MOV22H,A
END
6、比较两个ASCII码字符串是否相等。
字符串的长度在内部RAM41H单元,第一个字符串的首地址为42H,第二个字符串的首地址为52H。
如果两个字符串相等,则置内部RAM40H单元为00H;否则置40H单元为FF。
ORG0030H
MOVR0,#42H
MOVR1,#52H
MOVR7,41H;字符串长度
LOOP:
MOVA,@R0
MOV30H,@R1
CJNEA,30H,LK
INCR0
INCR1
DJNZR7,LOOP
MOV40H,#00H
SJMPDD
LK:
MOV40H,#0FFH
DD:
SJMPDD
7.外部RAM首址为table的数据表中,有10个字节的数据。
编程将每个字节的最高位无条件地置“1”。
ORG0030H
MOVDPTR,#table
MOVR6,#10
LOOP:
MOVXA,@DPTR
SETBE7H;E7H就是累加器A的最高位(ACC.7),也可:
SETBACC.7MOVX@DPTR,AINCDPTR
DJNZR6,LOOP
第五章
一、填空题
1.
各项任务
2.
INT0
T0INT1
T1串口
3.
PC
PCROM
4.
中断源
查询状态
5.
1000000
1000000/65536=15.26
6.
100ms
7.
111
101
8.
T120FFH
001BH
二、单选题:
DCAADCD
单片机基础
第五章
习题
课本5。
.1设单片机的晶振频率为6MHZ,使用定时器1以方式0产生500us的等宽正方波连续脉冲,并由P1.0输出。
分析:
使用P1.0输出脉冲,可由定时器产生一个250us的定时,到了时间,就执行CPLP1.0就可以了。
所以问题转化为产生定时。
解:
(1)计算定时器的初值:
13(213—X)*T机=T定时
代入数据得:
X=8067
由于方式0的特点(高8位,低5位),计算出TH1,TL1
得TH1
=0FCH
TL1=03H
(2)
计算出TMOD
的初始值:
TMOD=00H
(3)
编程实现:
方法一
:
使用查询法。
程序不断地查询TF1的值。
如定时器溢出(TF1=1),则CPL
P1.0
所以:
MOVTMOD,#00H
MOVTH1,#0FCH
MOVTL1,#03H
MOVIE,#00H
;不用中断的方法,关掉
SETBTR1
;开启定时器
LOOP:
JBCTF1,LOOP1
LOOP1:
AJMPLOOP
MOVTH1,#0FCH
MOVTL1,#03HCPLP1.0AJMPLOOP方法二:
使用中断的方法。
需确定寄存器:
TMOD=00H
IE=88HTCON=40H(或SETBTR1)
T1的中断向量=001BH
程序如下:
ORG0000H
AJMPMAIN
ORG001BH
AJMPT1TIMER
MAIN:
MOV
TMOD,#00H
MOV
TCON,#40H
MOV
IE,#88H
MOV
TCON,#40H
MOV
TH1,#0FCH
MOV
TL1,#03H
Here:
AJMPHere
T1_TIMER:
MOVTH1,#0FCH
MOVTL1,#03H
CPLP1.0
RETI
注意:
定时器定时或计数,不会影响CPU的工作。
定时方式1:
与方式0没有大的区别,只有定时器是16位的。
所以定时=(2x-初值)T机
方式2:
8位初值自动赋值的定时/计数器解法一样:
(1)计算T的初始值
(2)TMOD=?
(2)程序设计
方式三:
T0:
――TL08位,可作定时也可作计数,与方式0,一样使用。
——TH0:
8位,只能作定时,借作TR1TF1
T1:
没法中断,只能产生不断的脉冲,--全波特率可用方式0,1,2。
如要停止脉冲,要强制设方式3
、填空题
1、816132
2、高电平低电平高阻
程序
3、256数据4KB程序64KB数据64KB
4、16P0P2
5、PSENRDWRALECEALE6
6、16KB31FFH
7、外存
8、片选
9、3PSENALE二、单选题
DADDCADA
第七章
填空题
1.数据ALERDWR
2.无条件传送查询中断
3.缓冲锁存
4.1211
5.高口方式定义C位置位/复位
6.方式1输出方式1输出输出输入
7.10100111
单选题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 基础 课后 答案