兰交大单片机作业.docx
《兰交大单片机作业.docx》由会员分享,可在线阅读,更多相关《兰交大单片机作业.docx(8页珍藏版)》请在冰点文库上搜索。
兰交大单片机作业
兰交大单片机作业
CH4 KEILC开发
1.用C51编程较汇编语言有哪些优势?
答:
编程容易;容易实现复杂的数字计算;容易阅读、调试、维护程序;容易实现模块化开发;程序可移植性好
2.C51定义变量的一般格式是什么?
变量的4种属性是什么?
特别要注意存储区属性。
答:
[存储类型] 数据类型 [存储区] 变量名
变量的4种属性是存储类型,数据类型,存储区,变量名
3.C51的数据存储区域类型有哪些?
各种存储区域类型是哪种存储空间,存储范围是什么?
如何将变量定义存储到确定的位置?
答:
data直接寻址内部数据存储器的128B
bdata 可位寻址内部数据存储器16B
idata间接访问内部数据存储器的2.5GB
pdata分页访问外部数据存储器的2.5GB
xdata 外部数据存储器64KB
code程序存储器64KB
将变量定义存储到确定的位置可以使用_at_或者XBYTE指令
4.C51函数定义的一般形式是什么?
如何定义中断处理程序?
如何选择工作寄存器组?
答:
funcN(){
局部变量定义
SWAPA
CPLA
XRLA,#0FEH
ORL30H,A
解:
A=E4H,(30H)=EEH
2、以下程序段执行后,(40H)=?
,(41H)=?
。
CLRC
MOVA,#56H
SUBBA,#0F8H
MOV40H,A
MOVA,#78H
SUBBA,#0EH
MOV41H,A
解:
(40H)=5EH(41H)=6AH
3、设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A、R0和内部RAM中50H,51H单元的内容为何值?
MOVA,59H
MOVR0,A
MOVA,#00H
MOV@R0,A
MOVA,#25H
MOV51H,A
MOV52H,#70H
解:
A=25H;R0=50H;(50H)=00H;(51H)=25H
4、设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?
PUSH30H
PUSH31H
POPDPL
POPDPH
MOV30H,#00H
MOV31H,#0FFH
解:
(61H)=24H;(62H)=10H;(30H)=00H;(31H)=0FFH;DPTR=2410H;SP=60H;
5、设A=40H,R1=23H,(40H)=05H。
执行下列两条指令后,累加器A和R1以及内部RAM中40H单元的内容各为何值?
XCHA,R1
XCHDA,@R1
解:
A=25H;R1=40H;40H=03H
6.已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。
下述程序执行后:
POP DPH
POP DPL
MOVDPTR,#3000H
RL A
MOVB,A
MOVC A,@A+DPTR
PUSH A
MOVA,B
INC A
MOVC A,@A+DPTR
PUSH A
RET
ORG3000H
DB 10H,80H,30H,80H,50H,80H
请问:
A=?
,SP=?
,(51H)=?
,(52H)=?
,PC=?
。
解:
A=(80H),SP=( 40H),(51H)=(50H),(52H)=(80H ),PC=(8050H)。
7.设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H中,试编写出16位无符号数相加的程序(采用大端模式存储)。
解:
ORG 0000H
MOV R0,#21H
MOV R1,#23H
MOV A,@R0
ADD A,@R1
MOV 25H,A
DEC R0
DEC R1
MOV A,@R0
ADDC A,@R1
MOV 24H,A
SJMP $
END
8.编写程序,把外部RAM中1000H~101FH的内容传送到内部RAM的30H~4FH中。
解:
ORG 0000H
MOV DPTR,#1000H
MOV R0,#30H
MOV R7,#32
LOOP:
MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R7,LOOP
RET
9.编写程序,实现双字节无符号数加法运算,要求 (R0R1)+(R6R7)→(60H61H)。
解:
ORG 0000H
MOV A,R0
ADDC A,R6
MOV 60H,A
MOV A,R1
ADD A,R7
MOV 61H,A
SJMP $
END
Ch6 中断系统与定时器
1.已知89S51单片机系统时钟频率为24MHz,请利用定时器T0和P1.2输出矩形脉冲。
矩形波高电平宽度50µs,低电平宽度350µs。
解:
MOV TMOD,#02H
MOV TH0,#9CH
MOV TL0,#9CH
CLR P1.2
SETB TR0
HIGH:
SETB P1.2
HIGH1:
JBCTF0,LOW
AJMPHIGH1
LOW:
MOVR7,#7
CLR P1.2
LOW1:
JBC TF0,LOW2
AJMP LOW1
LOW2:
DJNZ R7,LOW1
AJMP HIGH
1.设时钟频率为6MHz,采用定时/计数器T1及其中断控制方式,通过P1.7输出周期为20ms的方波。
编写C程序。
解:
#include
voidmain()
{
TMOD=0x00;
TL1=0x18;
TH1=0x63;
TR1=1;
EA=1;
ET1=1;
While
(1);
}
voidserve()interrupt1
{
TL1=0x18;
TH1=0x63;
P1_7=!
P1_7;
}
3.要求从P1.1引脚输出1000Hz方波,晶振频率为12MHz。
试采用T0实现设计查询和中断方式汇编程序。
解:
ORG0000H
AJMPMAIN
ORG000BH
LJMPDVT0
ORG0030H
MAIN:
MOVTMOD,#01H
MOVTH0,#0FEH
MOVTL0,#0CH
SETBET0
SETBEA
SETBTR0
SJMP$
DVT0:
CPLP1.1
MOVTH0,#0FEH
MOVTL0,#0CH
SETBTR0
RETI
END