⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 noname1.asm

📁 RTL8019芯片与AT89S52单片机的连接程序,,本人用ASM汇编语言所写,极具参考价值
💻 ASM
字号:
;;;;;*************************************;;;;;;;;;;;
;;;;;***********初始化定义*****************;;;;;;;;;;
;在程序里定义了 reg00--reg1f 来对应240H--25FH端口。
;
;

                   ORG   0000H
SP0   EQU   31H
RST   EQU   P3.4
T0DJ    EQU   30H    ;;30_-_-40 USED
;;;;以下地址保存网卡的物理地址;
PHYAD1  EQU  50H
PHYAD2  EQU  51H
PHYAD3  EQU  52H
PHYAD4  EQU  53H
PHYAD5  EQU  54H
PHYAD6  EQU  55H

RSTREG  EQU  0DF00H
REG00   EQU  0C000H
REG01   EQU  0C100H
REG02   EQU  0C200H
REG03   EQU  0C300H
REG04   EQU  0C400H
REG05   EQU  0C500H
REG06   EQU  0C600H
REG07   EQU  0C700H
REG08   EQU  0C800H
REG09   EQU  0C900H
REG0A   EQU  0CA00H
REG0B   EQU  0CB00H
REG0C   EQU  0CC00H
REG0D   EQU  0CD00H
REG0E   EQU  0CE00H
REG0F   EQU  0CF00H
REG10   EQU  0D000H
REG11   EQU  0D100H
REG12   EQU  0D200H
REG13   EQU  0D300H
REG14   EQU  0D400H
REG15   EQU  0D500H
REG16   EQU  0D600H
REG17   EQU  0D700H
REG18   EQU  0D800H
REG19   EQU  0D900H
REG1A   EQU  0DA00H
REG1B   EQU  0DB00H
REG1C   EQU  0DC00H
REG1D   EQU  0DD00H
REG1E   EQU  0DE00H
REG1F   EQU  0DF00H
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;主程序;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

         JMP  MAIN
         ORG  000BH
         AJMP TIMER0
         
         ORG  0050H
MAIN:    MOV  SP,#SP0
         CALL  D100MS
         CALL  D100MS
         MOV   TMOD,#01H
         MOV   TH0, #3CH
         MOV   TL0, #0B0H
         MOV   IE,#82H
         SETB  TR0
         MOV   T0DJ,#14H  ;;;;TIMER   1SECOND
         MOV   A,#0fcH
         MOV   30H,A
         MOV   A,#60H
         MOV   31H,A
         MOV   A,#0DBH
         MOV   32H,A
         MOV   A,#0F2H
         MOV   33H,A
         MOV   A,#66H
         MOV   34H,A
         MOV   A,#0B6H
         MOV   35H,A
         MOV   A,#0BEH
         MOV   36H,A
         MOV   A,#0E0H
         MOV   37H,A
         MOV   A,#0FEH
         MOV   38H,A
         MOV   A,#0F6H
         MOV   39H,A
         MOV   A,#0EEH
         MOV   3AH,A
         MOV   A,#03EH
         MOV   3BH,A
         MOV    A,#9CH
         MOV   3CH,A
         ;;;;;;;;;;;开始复位;;
         CALL  NCRST
         CALL   DELAY
         CALL   DELAY
         CALL  INITIAL
         CALL  READDR
         CALL  SETADDR
         
         
         ORG   0100H
TIMER0:  DJNZ  T0DJ,NOT0
         LCALL DISPLAY
         MOV   T0DJ,#14H
  NOT0:  MOV   TH0,#3CH
         MOV   TL0,#0B0H
         RETI


  ;;;;;;;;;;;;网卡复位子程序;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NCRST:   SETB   RST   ;把8019的33脚置1                 ;网卡复位程序
         LCALL  DELAY ;延时至少2MS,
         CLR    RST   ;复位完成,清RST       (
         MOV   R2,RSTREG
         MOV   RSTREG,R2   ;;hot reset
         RET

   ;;;;;;;;;;网卡初始化;;;;;;;;;;;;;;;;;;;;;;;;;;
INITIAL: MOV   DPTR,#0C000H
         MOV A,#21H             ;page0   stop netcard
         MOVX @DPTR, A
         INC  DPH
         MOV A,#4CH
         MOVX @DPTR,A
         INC  DPH
         MOV A,#80H
         MOVX @DPTR,A
         INC  DPH
         MOV A,#4CH
         MOVX @DPTR,A
         INC  DPH
         MOV A,#45H
         MOVX @DPTR,A
         MOV  DPTR,#0CC00H
         MOV  A,#0CCH
         MOVX  @DPTR,A
         INC  DPH
         MOV A,#0E0H
         MOVX  @DPTR,A
         INC  DPH
         MOV  A,#0C8H
         MOVX @DPTR,A
         INC  DPH
         MOV A,#00H
         MOVX  @DPTR,A
         ;
         MOV  DPTR,#0C000H    ;SELECT  PAGE1
         MOV  A,#61H
         MOVX @DPTR,A
         MOV  DPTR,#0C700H
         MOV A,#4dH
         MOVX @DPTR, A
         INC  DPH
         MOV A,#00H
         MOVX @DPTR,A
         INC  DPH
         MOV A,#41H
         MOVX @DPTR,A
         INC  DPH
         MOV A,#00H
         MOVX @DPTR,A
         INC  DPH
         MOV  A,#80H
         MOVX @DPTR,A
         INC  DPH
         MOV A,#00H
         MOVX @DPTR,A
         INC  DPH
         MOV A,#00H
         MOVX @DPTR,A
         INC  DPH
         MOV A,#00H
         MOVX @DPTR,A
         INC  DPH
         MOV A,#00H
         MOVX @DPTR,A
         MOV DPTR,#0C000H
         MOV A,#22H
         MOVX @DPTR,A          ;START NET CARD
         RET



;reg00=0x21; //选择页0的寄存器,网卡停止运行,因为还没有初始化。
;reg01=0x4c; //寄存器Pstart
;reg02=0x80; //Pstop
;reg03=0x4c; //BNRY
;reg04=0x45; //TPSR
;reg0c=0xcc; //RCR
;reg0d=0xe0; //TCR
;reg0e=0xc8; //DCR 数据配置寄存器 8位数据dma
;reg0f=0x00; //IMR disable all interrupt
;page(1); //选择页1的寄存器
;reg07=0x4d; //CURR
;reg08=0x00; //MAR0
;reg09=0x41; //MAR1
;reg0a=0x00; //MAR2
;reg0b=0x80; //MAR3
;reg0c=0x00; //MAR4
;reg0d=0x00; //MAR5
;reg0e=0x00; //MAR6
;reg0f=0x00; //MAR7
;reg00=0x22;//选择页0寄存器,网卡执行命令
;;;;PSTART 接收缓冲区的起始页的地址。
;;;;PSTOP 接收缓冲区的结束页地址。(该页不用于接收)
;;;;BNRY 指向最后一个已经读取的页(读指针)
;;;;URR 当前的接收结束页地址。(写指针)

;*****************************************************
;;;;;;;;;;;;;读取网卡的物理地址的子程序;;;;;;;;;;;;;;;
READDR:
       MOV  DPTR,#REG08
       MOV  A,#00H
       MOVX @DPTR,A
       MOV  DPTR,#REG09
       MOV  A,#00H
       MOVX @DPTR,A
       MOV  DPTR,#REG0B
       MOV  A,#00H
       MOVX @DPTR,A
       MOV  DPTR,#REG0A
       MOV  A,#12H
       MOVX @DPTR,A
       MOV  DPTR,#REG00
       MOV  A,#0AH
       MOVX @DPTR,A
       ;;START TO READ
       MOV DPTR,#REG10
       MOV  A,#PHYAD1
       MOV R0,A
       MOV R2,#06H
 RALOOP: MOVX A,@DPTR
         MOV  @R0,A
         INC R0
         NOP
         NOP
         MOVX  A,@DPTR
         NOP
         NOP
         NOP
         NOP
         DJNZ  R2,RALOOP
         RET






;;;;;;;;;;;;;;设置网卡地址;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;************************************************;;;;;;;
SETADDR:     MOV DPTR,#REG00
             MOVX A,@DPTR
             ORL  A,#40H  ;;SELECT PAGE1
             MOVX @DPTR,A
             MOV  R0,#PHYAD1
             MOV  DPTR,#REG01
             MOV  R3,#06H
   SADDLOP:  MOV  A,@R0
             MOVX @DPTR,A
             INC  R0
             INC  DPH
             DJNZ R3,SADDLOP
             RET




keyscan:   

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;显示子程序(通过串口输出);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
display:     MOV  R1,#50H
             MOV  R2,#0CH
 DSPL1:      MOV  A,@R1
             CALL  SEGTBL
             MOV  SBUF,A
 DSPLOOP:    JNB  TI,DSPLOOP
             CLR  TI
             INC  R1
             DJNZ R2,DSPL1
             RET
             



;
;}



;;;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -