INC R0 INC R1
MOV A,@R0 ADDC A,@R1 DA A MOV @R0,A
18、试判断A中所存数据的正负。若为正数,存入20H单元;若为负数则存入21H单元。 答:判断数据的正负,只要判断出该数的符号位则可。编程如下:
JB ACC7,LOOP MOV 20H,A SJMP $
LOOP: MOV 21H,A
SJMP $
19、从键盘输入长度不超过100字节的字符串,存放在外部RAM以20H为首地址的连续单元中,以回车符‘CR’作为结束标志。要求统计此字符串的长度并存入内部RAM的10H单元中。 答:回车符‘CR’的 ASCII码为= 0DH,从第一个单元开始取数,每取一数判断其是否为‘CR’是则结束。
ORG 1000H STA DATA 20H SLA DATA 10H
TAM: MOV R0,#STA-1
MOV B,#0FFH
TBM: INC R0
INC B
MOVX A,@R0 CJNE A,#0DH,TBM
MOV SLA,B
SJMP $ END
20、设内部RAM20H开始的单元中有一组无符号数,其长度为N。要求将它们从小到大排序,排序后仍存放在原区域中。
答:设数据交换标志01存在R2中,数据依次两两相比。如前数大于于后数,则交换,每交换一次R2+1。一轮比较完后,如再无交换事件发生,即R2-1=0时,排序完成。编程如下: ORG 0000H STAR: MOV R2,#1 MOV R1,#N-1 MOV R0,#20H LOOP1: MOV A,@R0 LOOP2: INC R0 MOV 1FH,@R0 CJNE A,1FH,LOOP3 LOOP3: JNC LOOP4
9
DJNZ R1,LOOP1 DJNZ R2,STAR SJMP $
LOOP4:XCH A,@R0
DEC R0 MOV @R0,A INC R2 SJMP LOOP2 END
21、某个小于10的数存放在内部30H中,查表求其平方值,并存回30H单元。 答: ORG 0050H MOV A,30H
MOV DPTR,#TAB MOVC A,@A+DPTR MOV 30H,A SJMP $
TAB: DB 0,1,4,9,16
DB 25,36,49,64,81
RET
22、8个发光二极管,从左边往右每次点亮一个,并闪烁10次,再转到下一个闪烁10次,循环不止,闪烁间隔为50mS。
答:设8个发光二极管由P1口控制,当P1.7输出低电平时,LED灯亮,否则不亮。编程如下: ORG 0000H
START: MOV A , #07FH LOOP0: MOV R1,#10 LOOP1: MOV P1, A
LCALL YS50mS DJNZ R1,LOOP1
RR A SJMP LOOP0 YS50mS: MOV R7, #200 YS1: MOV R6, #123 NOP YS2: DJNZ R6 , $ DJNZ R7 , YS1
RET END
23、在单片机编程中,使用C51语言有什么优点?C51语言程序有哪些基本结构?
答:C51语言使用方便,功能强大,它提供了内容丰富的数学函数且支持浮点运算。由于不依赖硬件系统,大量的功能程序只需作简单修改甚至不作修改便可以移植到不同的系统直接使用,这样可以大大缩短开发时间,并增加了程序的可读性和可维护性。
10
C51语言程序由顺序结构、选择结构和循环结构三种基本形式组成。
24、求1到50的正数之和。 答:程序如下: unsigned int sum 1 to 50(void)﹛ ﹜
unsigned int n,sum; sum=0; for (n=1;n<=50;n++) sum=sum+n; return(sum); 11
第4章 习题
1、什么是中断和中断系统?其主要优点是什么?
答:正在处理一的件事情被其他的突发事件意外打断, 如:CPU在执行程序的过程中,暂时中断执行当前的程序,转而去执行其他的应急处理程序,称为中断。
中断发生时,单片机通过硬件来改变程序流向,再通过执行中断服务子程序来处理急需解决的问题。所以必须是硬件与软件结合才能实现中断,解决中断问题的硬件装置和处理程序称为中断系统。
主要优点是:(1)能有效解决快速CPU与慢速外设之间的矛盾,消除了CPU在查询方式中的等待现象,使CPU与外设并行工作,大大提高了工作效率;(2)能对外界发生的事件作出及时的处理,使计算机具有实时处理能力;(3)对系统运行过程中出现的意外或故障,如电源掉电、运算溢出、传输错误等,可由中断进行相应的处理而不必停机。
2、AT89S51有哪些中断源?单片机对中断请求可通过那些寄存器进行控制? 答: 89S51有如下5个中断源(1)外部中断0;(2)定时器/计数器T0中断;(3)外部中断1;(4)定时器/计数器T0中断;(5)串行接口中断。
通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实现各种中断控制功能。
3、什么是中断优先级?中断优先处理的原则是什么? 答:中断优先级是CPU响应中断的先后顺序。
中断优先处理的原则是:(1)先响应优先级高的中断请求,再响应优先级低的;(2)如果一个中断请求已经被响应,同级的其它中断请求将被禁止;(3)如果同级的多个中断请求同时出现,则CPU通过内部硬件查询电路,按查询顺序确定应该响应哪个中断请求。
4、说明外部中断请求的查询和响应过程。
答:当CPU执行主程序第K条指令,外设向CPU发出中断请求,CPU接到中断请求信号并在本条指令执行完后,中断主程序的执行并保存断点地址,然后转去响应中断。CPU在每个S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如果查询到某个中断标志为1,将在接下来的机器周期S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应的中断服务程序。中断服务完毕后,CPU返回到主程序第K+1条指令继续执行。
5、AT89S51单片机外部中断源有几种触发中断请求的方法?如何实现中断请求? 答: 外部中断源有两种触发中断请求的方式:电平触发和边沿触发。(1)电平触发方式:CPU在每个机器周期的S5P2期间采样外部中断引脚的输入电平。若为低电平,使IE1(或IE0)置“1”,申请中断;若为高电平,则IE1(IE0)清零。(2)边沿触发方式:CPU在每个机器周期S5P2期间采样外部中断请求引脚的输入电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断请求为高电平,接着下一个机器周期采样到外部中断请求为低电平,则使IE1(IE0)置“1”申请中断;否则,IE1(IE0)置0。
6、AT89S51在什么条件下可响应中断?
12