单片机-编程.doc
文本预览下载声明
1、求50H与40H单元内容之和,结果存入20H,进位位存入2lH。
2、试编写程序,求出内部RAM20H单元中的数据含“1”的数,并将结果存入21H单元。
3、编程将片内RAM30H单元开始的15字节的数据传送到片外RAM3000H开始的单元中去。
4. 从内部RAM20H单元开始,有30个带符号数,试编一个程序,把其中正数、负数分别送到51H和71H开始的存储单元,并分别记下其中正数和负数的个数送到50H和70H单元。
5. 设单片机的晶振频率为fosc=6MHz,使用T l工作于工作方式0,设计程序使P1.0端输出周期为500μs的连续等宽方波,要求以中断的方式编写程序。
6、.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。
7. 已知变量X存于VAR单元,函数值Y存于FUNC单元,按下式编程求Y值。
Y=
8. 已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的单元中(低位在前)。
9. 将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。
1. 解答:
? MOV?A, 50 H
? ADD? A,40H
? MOV?20H, A
? CLR??? A
? ADDC A.#00H
? MOV? 21H,A
? SJMP?$
2. 答 MOV?21H, #00H
MOV?A, 20H
CLR?C
MOV?R7, #08H
LOOP: RLC?A
JNC?NEXT
INC?21H
NEXT: DJNZ?R7, LOOP
SJMP?$
3. 答:STRAT: MOV???? R0,#30H
???????? MOV???? R7, #0FH
???????? MOV???? DPTR, #3000H
? LOOP: MOV???? A,@R0
????? ???MOVX??? @DPTR, A
???????? INC?????? R0
???????? INC?????? DPTR
???????? DJNZ????? R7, LOOP
???????? RET
4. ORG 0000H
LJMP 0030H
ORG 0030H
MOV R5, #30
MOV SP ,#3DH?
MOV R0, #51H
MOV R1,#71H
MOV 50H, #00H
MOV 70H,#00H
LOOP1:POP A????
JB ACC.7,LOOP2
MOV @R0, A
INC 50H???
INC R0???
SJMP NEXT??
LOOP2: MOV @R1, A
INC 70H
INC R1
NEXT:DJNZ R5,LOOP1??
END
5. 解答
完整的程序:ORG? 001BH
MOV?TH1, #00H
MOV?TL1, #0FCH
CPL?P1.0
RETI
ORG?0030H
MOV?TMOD, #00H
MOV?TH1, #0FCH
MOV?TL1, #03H
MOV?IE, #88H
SETB?TR1
SJMP?$
6.SQR:1NC A
MOVC A,@A+PC
RET
TAB:DB 0,1,4,9,16
DB 25,36,49,64,81
7、. MOV A,VAR
CJNE A,#0,COMP
SJMP RES ;x=0,Y=0
COMP:JNC POSI ;x0,Y=1
MOV A,#0FFH ;x0,Y=-1
SJMP RES
POSI:MOV A,#01H
RES:MOV FUNC,A
RET
8、MOV R0,#SUM
MOV A,R2
ANL A,#OFH
MOV @R0,A ;存低字节BCD
MOV A,R2
ANL A,#0F0H
SWAP A
1NC R0
MOV @R0,A ;存高字节BCD
RET
9、 MOV DPTR,#8000H
MOV R0,#10H
MOV R2,#50H
LOOP:MOVX A,@DPTR ;取数
MOVX @R0,A ;存数
1NC DPTR
1NC R0
DJNZ R2,LOOP
显示全部