单片机新手或教学使用。
单字节BCD码减法.doc:
实现R0指向的单元减去R1指向的RAM单元内容(十进制减法),结果存在R0指向的RAM单元中。
答案:
ORG 0000H
LJMP MAIN
ORG 4100H
MAIN:MOV A,#9AH
CLR C
SUBB A,@R1
ADD A,@R0
DA A
MOV @R0,A
END
堆栈操作.doc:
判断操作结果
ORG 0000H
LJMP MAIN
ORG 4100H
MAIN: MOV SP,# 2FH
MOV A,#88H
MOV R2,#5
PUSH ACC
PUSH 02H
MOV R2,#10H
MOV A,#80H
ADD A,R2
DA A
MOV R0,A
POP 02H
POP ACC
END
多字节BCD码加法.doc
ORG 0000H
LJMP MAIN
ORG 4100H
MAIN:MOV A,R7
MOV R2,A
ADD A,R0
MOV R0,A
MOV A,R2
ADD A,R1
MOV R1,A
CLR C
BCD: DEC R0
DEC R1
MOV A,@R0
ADDC A,@R1
DA A
MOV @R0,A
DJNZ R2,BCD
END
例如:15362817+29436485=44799302
(R7)=4 (R0)=30H (R1)=40H
外部RAM访问.doc
1、 将片外RAM2000H单元内容传送到内部RAM的30H中。
2、 将片外(2000H)传送到2001H中。
答案:
ORG 0000H
LJMP MAIN
ORG 4100H
MAIN:MOV DPTR,#2000H
MOVX A,@DPTR
MOV R0,#30H
MOV @R0,A
END
ORG 0000H
LJMP MAIN
ORG 4100H
MAIN:MOV DPTR,#2000H
MOVX A,@DPTR
MOV DPTR,#2001H
MOVX @DPTR,A
END
伪指令练习.doc
1、 建立表格,首地址为4300H,将0----9的平方值存放在表格中。并将0——9送给A,取出A 中对应 的平方值且送到外部RAM的30H单元中。
ORG 0000H
LJMP MAIN
ORG 4100H
MAIN:MOV DPTR,#4300H
MOVC A,@A+DPTR
MOV R0,#30H
MOV @R0,A
SJMP $
ORG 4300H
DB 0,1,4,9,16H,25H
DB 36H,49H,64H,81H
END
开关控制的中断系统
ORG0000H LJMPMAIN ORG 0003H LJMPINT_0 ORG 4100H MAIN: MOVIE,#10000001B SETB IT0 MOV A,#7FH MOV R0,#1 LOOP: CJNER0,#0H,LEFT RL A AJMPDELAYS LEFT: RR A DELAYS:MOV P1,A ACALL DELAY ACALLDELAY ACALLDELAY ACALLDELAY ACALLDELAY AJMP LOOP DELAY: MOV R7,#82H DL1: MOV R6,#0FFH DL2: NOP DJNZ R6,DL2 DJNZR7,DL1 RET INT_0: CLR EX0 ACALL DELAY SETBEX0 CJNER0,#0H,SETR0_1; MOV R0,#1 RETI SETR0_1:MOV R0,#0H RETI END 问题:
1、 R0=1时,左移还是右移?R0什么时候等于0? 2、 MOV IE,#10000001B,定义了哪些位?作用? 3、 中断服务程序主要完成什么任务? 4、 图中开关的电位如何变化? 5、 IT0是哪个寄存器中的?作用是什么? 6、 R0在程序中的作用是什么? 7、 CJNE R0,#0H,SETR0-1 指令作用?R0为什么和0比较?
秒表
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT_T0
ORG 0100H
MAIN: MOV TMOD,#00000001B
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R7,#0
MOV DPTR,#TAB
MOV R0,#0
SETB EA
SETB ET0
SETB TR0
LOOP:MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
AJMP LOOP
INT_T0:INC R7
CJNE R7,#10,RETURN
MOV R7,#0
INC R0
CJNE R0,#10,RETURN
MOV R0,#0
RETURN:MOV TH0,#3CH
MOV TL0,#0B0H
RETI
DELAY: MOV R2,#0FFH
DL: DJNZ R2,DL
RET
TAB:DB 40H,4FH,24H,30H,19H
DB 12H,02H,78H,00H,10H
END
1、 SETB EA 和SETB ET0两条指令变成一条指令,如何编写? 2、 如果秒表只显示02468,在不改变表格的基础上如何改? 3、 如果秒表是2秒进一,程序如何改? 4、 如果要显示3,P2口的值? 5、 R7的作用是什么? 6、 R0的作用是什么? 7、 TMOD都设置了哪些位?这些位作用是什么?
全部资料51hei下载地址:
程序和图.zip
(264.92 KB, 下载次数: 29)
|