标题: 单片机新手proteus仿真图文件与汇编语言源程序 [打印本页]

作者: yangshunyao2016    时间: 2018-3-7 20:54
标题: 单片机新手proteus仿真图文件与汇编语言源程序
单片机新手或教学使用。

单字节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)




作者: fgdssdgsd    时间: 2020-6-15 20:05
分享的很帮,很简单,很易学,对我有很大帮助




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1