填空题(每空1分,共30分)1.135转换转换成二进制和十六进制分别是和。
属于寻址;INC 30H 属于2.指出指令中操作数的寻址方式:INC @R1寻址;RLC A 属于寻址。
3.8051单片机的5中断源分别是、、、和。
4.8051单片机内部设置了个位的定时器/计数器,以实现定时和计数功能;其定时功能是指,计数功能是指。
5.MCS-51系列单片机中控制引脚EA和PSEN的作用分别是和。
6.单片机的时钟产生方法有和两种。
7.单片机程序状态字PSW中P是标志,该标志为1表示,为0表示。
8.MCS-51系列单片机的串行口是的,这个口既可以用作,也可以实现,还可以作为使用。
9. MCS-51系列单片机在访问片外存储器时,高8位地址由口提供,低8位地址由口提供。
10. .DAC0832与MCS-51接口时有、和三种工作方式。
1.MCS-51的程序存储器空间为,其地址指针为;MCS-51的外部数据存储器空间为,其地址指针为。
2.指出以下指令中源操作数的寻址方式:MOVC A,@A+DPTR属于寻址;MOV C,01H 属于寻址;MOV A,P属于寻址。
13.中断过程一般应包括、、和 4个步骤。
4.在单片机的控制应用系统中,可供选择的定时方式有、和 3种。
5.计算机的数据传送方式有和两种方式。
6.8155是Intel公司生产的可编程RAM和I/O扩展芯片,其片内资源有:字节的静态RAM,最快存取时间为;两个可编程的位并行I/O口PA口、PB口,一个可编程的位并行I/O口PC口;一个可编程的位计数器。
7.ADC0809是一种路模拟量输入,位数字量输出的型A/D转换器。
8.MCS-51系列单片机的5个中断源0INT、T0、T1和串行口中断所对应INT、1的中断服务程序入口地址分别是、、、和。
简答题(每小题5分,共30分)1.简述单片机的应用领域。
2.MCS-51单片机的内部资源包括哪些?3.MCS-51单片机可扩展的程序存储器和数据存储器的地址空间各为多少?它们之间的地址空间如果存在重叠区间,是否会造成混乱?请说明理由。
4.简述MCS-51系列单片机在什么情况下不能响应中断。
5.简述并行数据传送方式和串行数据传送方式各自的特点及适用场合。
6.8155是Intel公司生产的可编程RAM和I/O扩展芯片,其片内资源有哪些?1.简述单片机的特点。
2.简述机器周期、状态周期及指令周期之间的区别。
3.简述程序状态字(PSW)的几个标志的意义及置位和复位的条件。
4.在MCS-51中,哪些中断可以随着中断响应而自动撤除?哪些中断需要用户来撤除?撤除的方法是什么?5.简述MCS-51串行口发送和接收数据的过程。
6.DAC0832与MCS-51接口时有哪三种工作方式?它们有何特点?各适合在什么场合下使用?程序分析题这里考试一共有13分,几种书上的典型题目大家务必做一下:例4.1、例4.2、例4.3、例4.4 、例4.5、例4.14、例4.16 例4.17、课后习题:4.5、4.6、4,7、4.8、4.10 个人觉得PUSH/POP可能考这些没答案的是往年的题目 1.指出从地址1000H开始的程序存储器地址单元的内容。
ORG 1000HDS 07HDB 20H,20DW 12H3.设(21H)=71H,CY=1,顺序执行以下指令后,(21H)=,CY=。
CLR CCLR 08HCPL 09HSETB CSETB 0FHCPL C4.指出从地址2000H开始的12个程序存储器地址单元的内容。
ORG 2000HDS 2DW 1098HDB ‘MCS-51’DB 33,68H5.指出下列指令中哪些是非法的?如果非法请改正。
DEC DPTRRL BJNZ A,NEXTMOV A,@R2例4.4 将程序存储器2010H单元中的数据传送到累加器A中。
(设程序的起始地址为2000H)解:方法一:ORG 2000H ;伪指令,指定后面程序的存放起始地址MOV DPTR,#2000HMOV A,#10HMOVC A,@A+DPTR编程技巧:在访问前,必须保证(A)+(DPTR)等于访问地址,如该例中的2010H,一般方法是访问地址低8位值(10H)赋给A,剩下的16位地址(2010H-10H=2000H)赋给DPTR。
编程与指令所在的地址无关。
方法二:ORG 2000HMOV A,#0DHMOVC A,@A+PC分析:因为程序的起始地址为2000H,第一条指令为双字节指令,则第二条指令的地址为2002H,第二条指令的下一条指令的首字节地址应为2003H,即(PC)=2003H,因为(A)+(PC)=2010H,故(A)=0DH。
因该指令与指令所在地址有关,不利于修改程序,故不建议使用。
例4.5 设(A)=40H,(B)=41H,分析执行下列指令序列后的结果。
解:分析如下:MOV SP,#30H ;(SP)=30HPUSH A ;(SP)=31H,(31H)=40H ,(A)=40HPUSH B ;(SP)=32H,(32H)=41H , (B)=41HMOV A, #00H ;(A)=00HMOV B, #01H ;(B)=01HPOP B ;(B)=41H,(SP)=31H, (B)=41HPOP A ;(A)=40H,(SP)=30H, (A)=40H执行后:(A)=40H,(B)=41H,(SP)=30H,A和B中的内容恢复原样。
入栈操作、出栈操作主要用于子程序、中断服务程序中,入栈操作用来保护CPU现场参数,出栈操作用来恢复CPU现场参数。
例4.2 将扩展RAM 2010H中内容送扩展RAM 2020单元中,用Keil C集成开发环境进行调试。
解:(1)编程如下:ORG 0MOV DPTR,#2010H ;将16位地址2010H赋给DPTRMOVX A,@DPTR ;读扩展RAM 2010H中数据至累加器AMOV DPTR,#2020H ;将16位地址2020H赋给DPTRMOVX @DPTR,A ;将累加器A中数据送入外RAM 2020H中END例4.3 将扩展RAM 2000H中的数据送到片内RAM 30H单元中去。
解:编程如下:MOV DPTR,#2000H ;将16位地址2000H赋给DPTRMOVX A,@DPTR ;读扩展RAM 2010H中数据至累加器AMOV R0,#30H ;设定R0指针,指向基本RAM30H单元MOV @R0,A ;扩展RAM 2000H中的数据送到片内基本RAM 30H单元例4.14 将扩展RAM的一个数据块(首地址为DATA1)传送到内部基本RAM(首地址为DATA2),遇到传送的数据为零时停止传送,试编程。
解:ORG 0000HMOV R0,#DATA2 ;设置基本RAM指针MOV DPTR,#DATA1 ;设置扩展RAM指针LOOP1:MOVX A,@DPTR ;取被传送数据JZ LOOP2 ;不为0,数据传送,为0,结束传送MOV @R0,A ;数据传送INC R0 ;修改指针,指向下一个操作数INC DPTRSJMP LOOP1 ;重新进入下一个传送流程LOOP2:SJMP LOOP2 ;程序结束(原地踏步)END编程题一存储器的编程题不出意外应该是考从一个存储空间读一个数据块送到另一个存储空间里面去主要的题型如下,这里请大家记得之前第二章四个不同的存储空间用的指令是不一样的请大家先把第四章例题4.14、例4.16弄清楚第五六章有以下例题值得做例5.10 例5.9 例6.1 课后习题5.6、5.8 这四道题目请大家一定要知道怎么去写把例5.10弄透了。
课后习题6.1 、6.2、6。
3例5.10 编程将扩展RAM1000H为起始地址的16个数据传送到片内基本RAM20H为起始地址的单元中。
解:本例中,数据传送的次数是固定的,为16次;因此,可用一个计数器来控制循环体程序的执行次数。
既可以用加1计数来实现控制(采用CJNE指令),也可以采用减1计数来实现控制(采用DJNZ指令)。
一般情况下,采用减1计数控制居多。
参考程序如下:ORG 0000HMOV DPTR,#1000H ;设置被传送数据的地址指针MOV R0,#20H ;设置目的地地址指针MOV R2,#10H ;用R2作计数器,设置传送次数LOOP:MOVX A,@DPTR ;取被传送数MOV @R0,A ;传送到目的地INC DPTR ;指向下一个源操作数地址INC R0 ;指向下一个目的操作数地址DJNZ R2,LOOP ;计数器R2减1,不为0继续,否则结束传送SJMP $END例5.9 将内部RAM中起始地址为DATA的字符串数据传送扩展RAM中起始地址为BUFFER 的存储区域内,字符串的结束字符是“$”。
解:程序功能与例5.8基本一致,但字符串的结束字符“$”是字符串中的一员,也是需要传送的,因此,编程时应先传送,再对传送数据进行判断,以判断字符串数据传送是否结束。
设DATA为20H,BUFFER为0200H,参考程序如下:DATA EQU 20HBUFFER EQU 0200HORG 0000HMOV R0, #DATAMOV DPTR, #BUFFERLOOP0:MOV A, @R0 ;取被传送数据MOVX @DPTR, AINC R0 ;指向下一个被传送地址INC DPTR ;指向下一个传送目标地址CJNE A, #24H, LOOP0 ;判断是否为“$”字符(ASCII码为24H),若不是继续SJMP $ ;是“$”字符,停止传送END例6.1设P1口驱动8只LED灯,低电平有效。
从P1口顺序输出“E7H、DBH、BDH、7EH、3EH、18H、00H、FFH”等8组数据,周而复始。
解:首先将这8组数据要存放程序存储器中,在汇编编程时,采用“DB”伪指令对这8组数据进行存储定义;在C51编程时,采用数组并定义为“code”存储类型。
(1)汇编语言参考程序ORG 0000HLJMP MAINORG 0100HMAIN:MOV DPTR, #ADDR ;DPTR指向数据存放首址MOV R3, #08H ;顺序输出显示数据次数,分8次传送LOOP:CLR A ;A清零,DPTR直接指向读取数据所在地址处MOVC A, @A+DPTR ;取数MOV P1, A ;送P1口显示INC DPTR ;DPTR指向下一个数据LCALL DELAY ;调延时子程序DJNZ R3,LOOP ;判断一个循环是否结束,若没有,取、送下一个数据; SJMP MAIN ;若结束,重新开始DELAY:…;延时子程序,由读者自己完成。
…RET ;子程序必须由RET指令结束ADDR:DB 0E7H,0DBH,0BDH,7EH,3EH,18H,00H,0FFH ;定义存储字节数据END编程第二个定时计数器题型:课本第八章例题例8.1 例8.4 课后习题8.6 8.7这种题型大概有个模板先大家学会计算计数初值然后计算TMOD 再带入程序就可以了例8.1用T1方式0实现定时,在P1.0引脚输出周期为10mS的方波。