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

📄 w2b.asm

📁 单片机编程的一款好软件
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	 SETB  P2.0
	 MOV   P0,#0FFH
	 RET
;---------------------------------------------
W2051:   ACALL INIT2051	   ;初始化2051
	 ACALL E205	     ;擦除IC
         mov a,#5Ah          ;要高位
         ACALL receive
         mov 7ch,a           ;高位
         mov a,#5Bh          ;要低位
         acall receive
         mov 7dh,a           ;低位

WW20:    mov a,#5Ch          ;要数据
         ACALL RECEIVE16	     ;
         mov R0,#50H
W20a:    
         MOV   A,@R0
	 MOV   P0,A
         CJNE A,#0FFH,WORK1
         SJMP OK1
WORK1:
         ACALL W20CW	     ;写控制字
	 ACALL DELAY         ;写过程
;	  jnb	p2.1,$       ; SETB  P2.2	;/P=H
	 ACALL R20CW         ;读控制字
         mov   P0,#0ffh
	 MOV   B,P0
	 CJNE  A,B,W20A          ;校验
OK1:	 SETB  P2.6		 ;地址加1
	 CLR   P2.6		 ;XTAL1
         INC   R0
	 INC   DPTR		 ;计数器加1
         CJNE R0,#60H,W20A  ;页内写
	 MOV   A,DPH
	 CJNE  A,7CH,WW20   ;再去接收
	 MOV   A,DPL
	 CJNE  A,7DH,WW20
         MOV   A,#5DH           ;送结束信号
         ACALL SEND
	 LJMP  START
;---------------------------------------------
W20CW:  SETB  P3.5	    ;写控制信号 RST,P3.2/PROG,P3.3,P3.4,P3.5,P3.7
	 CLR   P3.2	       ;	   12V, H->L->H ,  L ,	H ,  H , H
	 SETB  P2.2	       ;	    O2,  P2.2	,P2.3,P2.4,P2.5,P2.0
	 CLR   P2.2	       ;/PROG=L
	 CLR   P2.3
	 SETB  P2.4
	 SETB  P2.5
	 SETB  P2.0
	 RET
;---------------------------------------------
E205:   SETB  P3.5 	   ;擦除控制字 RST,P3.2/PROG,P3.3,P3.4,P3.5,P3.7
	 CLR   P3.2	       ;	   12v, H->L->H ,  H ,	L ,  L , L
	 SETB  P2.2	       ;/PROG=H     O2,  P2.2	,P2.3,P2.4,P2.5,P2.0
	 CLR   P2.2	       ;/PROG=L
	 SETB  P2.3
	 CLR   P2.4
	 CLR   P2.5
	 CLR   P2.0
xxx: ACALL DELAY
djnz r7,xxx
;	 ACALL DELAY	  ;延时10ms
	 SETB  P2.2	       ;/PROG=H
	 RET
;---------------------------------
SEND:	 MOV   SBUF,A		 ;发送数据
	 JNB   TI,$
	 CLR   TI
	 INC   DPTR		 ;地址加1
	 RET
;
RECEIVE: MOV   SBUF,A;            #5AH
	 JNB   TI,$
	 CLR   TI
READ:    JNB   RI,$
	 CLR   RI
	 MOV   A,SBUF		 ;接收数据
	 RET

RECEIVE16: MOV   SBUF,A;            #5AH
	 JNB   TI,$
	 CLR   TI
         mov R0,#50H
READ16:  JNB   RI,$
	 CLR   RI
	 MOV   A,SBUF		 ;接收数据
         MOV @R0,A
         INC R0
         CJNE R0,#60H,READ16;
	 RET
;--------------------------------
DELAY:   MOV   R2,#0AH	        ;延时10ms
DEL1:	 MOV   R3,#80H
DEL2:	 NOP
	 DJNZ  R3,DEL2
	 DJNZ  R2,DEL1
	 RET

xdy:	MOV R6,#05H
	DJNZ r6,$	       ;delay 48T
        ret

ydy:	MOV R6,#64H
	DJNZ r6,$	       ;delay 48T
        ret

init:mov r5,#10H    ;闪动次数
inix: mov r4,#10H
dly: call delay
     djnz r4,dly
     cpl p3.4
     djnz r5,inix;
     setb p3.4
     ret
;===========================================
R2864:   MOV   P1,DPL
	 MOV   P2,DPH
         ACALL R64CW
	 MOV   A,P0
	 LCALL SEND
         MOV A,#0
         CJNE A,DPL,R2864          ;相当于一次接收256字节
         ACALL READ              ;接收值无用,准备发送下一组数据。
         CJNE A,#6BH,AGRD2
         LJMP START            ;比较出错,让其退出。
  AGRD2:	 
	 MOV   A,DPH
	 CJNE  A,#20H,R2864	 ;8K
	 LJMP  0000H
;-----------------------------------
W2864:   SETB  F0		 ;RESET F0=0
W2764:   mov a,#5Ah              ;要高位
         ACALL receive           ;先发再收
         mov 7ch,a               ;高位
         mov a,#5Bh              ;要低位
         acall receive
         mov 7dh,a               ;低位
W64x:	 mov a,#5CH              ;要数据
         ACALL RECEIVE16         ;接收数据
	 MOV   R0,#50H		 ;缓冲区 50-5F
V264:    MOV   A,@R0		 ;取数据
	 MOV   P1,DPL            ;送地址
	 MOV   P2,DPH
	 LCALL R64CW		 ;发读控制字	 
         MOV   P0,#0FFH
	 MOV   B,P0		 ;读
         CJNE  A,B,W2x64         ;不等才写
	 AJMP  A64               ;相等跳过

W2x64:   MOV   P0,A
         ACALL W64CW		 ;写状态,并锁存数据
         acall delay             ; 
	 ACALL R64CW		 ;发读控制字	 
         acall ydy           ; 
         MOV   P0,#0FFH
	 MOV   B,P0		 ;读
         CJNE A,B,W2x64          ;不等再写
;
 A64:  	 INC   DPTR		 ;地址加1
	 INC   R0		 ;数据区指针加1
	 CJNE  R0,#60H,V264	 ;要完成16个数据的写入
	 MOV   A,DPH
	 CJNE  A,7CH,W64x	 ;8K
	 MOV   A,DPL
	 CJNE  A,7DH,W64x	 ;请求发送下16个数据
	 MOV   A,#5DH            ;结束标志
	 LCALL SEND
	 LJMP  0000H
;
R64CW:   CLR   P3.7		 ;-CS
	 SETB  P2.6		 ;2764:-PRG  2864:-WE
	 CLR   P3.3		 ;-OE=0 ; SETB  P2.7 ;Vpp=5V
	 SETB  P3.2		 ;关闭高压 ;	 SETB  P3.5 ;没用 
	 RET
W64CW:                           ;SETB  P2.7 ;1脚 Vpp 准备送电压
	 SETB  P3.3		 ;-OE=H; SETB  P3.5 ;有反向2极管引入1脚。这里没什么用. 
	 SETB  P3.2		 ;关闭高压
         CLR   P3.7		 ;-CS=0
	 JB    F0,NH		 ;2864不用12V
	 CLR   P3.2		 ;Vpp=12V (原是P33)
 NH:     CLR   P2.6		 ;2764:-PGM=0, 2864:-WE 写控制信号 
	 RET
END;
;
;
;-------------------------------------------------
;
;
;
;
;
;            2764                      2864A                          8951               
; P32     ┌──┬──┐           ┌──┬──┐                ┌──┬──┐   
; P35  Vpp│1       28│+5V      NC│1       28│+5V        P1.0 ┤1       40├ VCC 
;      A12│2   P26 27│-PGM    A12│2       27│-WE        P1.1 ┤2       39├ P0.0 
;       A7│3       26│NC       A7│3       26│NC         P1.2 ┤3       38├ P0.1   
;       A6│4       25│A8       A6│4       25│A8         P1.3 ┤4       37├ P0.2 
;       A5│5       24│A9       A5│5       24│A9         P1.4 ┤5       36├ P0.3 
;       A4│6       23│A11      A4│6       23│A11        P1.5 ┤6       35├ P0.4  
;       A3│7   P33 22│-OE      A3│7       22│-OE        P1.6 ┤7       34├ P0.5  	
;       A2│8       21│A10      A2│8       21│A10        P1.7 ┤8       33├ P0.6 
;       A1│9   P37 20│-CS      A1│9       20│-CS         RST ┤9 5V    32├ P0.7  
;       A0│10      19│D7       A0│10      19│D7     RXD P3.0 ┤10 (P32)31├ -EA/VP
;       D0│11      18│D6       D0│11      18│D6     TXD P3.1 ┤11  P33 30├ ALE/-PRG
;       D1│12      17│D5       D1│12      17│D5   -INT0 P3.2 ┤12  接地29├ -PSEN 
;       D2│13      16│D4       D2│13      16│D4   -INT1 P3.3 ┤13      28├ P2.7  
;       地│14      15│D3       地│14      15│D3      T0 P3.4 ┤14      27├ P2.6  
;         └─────┘           └─────┘        T1 P3.5 ┤15      26├ P2.5   
;                                                       -WR P3.6 ┤16      25├ P2.4 
; 读:-CE=0  -OE=0  -WE=H                               -RD P3.7 ┤17      24├ P2.3   
; 写:-CE=0  -OE=H  -WE=0                                  XTAL2 ┤18 out  23├ P2.2      
; 2764: VPP=12V~13V  VCC=5.75~6.5                          XTAL1 ┤19 in   22├ P2.1     
; 2864: 脚1 空 区别只是无高压                                VSS ┤20      21├ P2.0      
;                                                                └─────┘  
;
;    	   2764                     27256                     27512               
;      ┌──┬──┐           ┌──┬──┐             ┌──┬──┐    
;   Vpp│1       28│+5V     Vpp│1       28│+5V       A15│1       28│+5V	
;   A12│2       27│-PGM    A12│2       27│A14       A12│2       27│A14
;    A7│3       26│NC	      A7│3       26│A13        A7│3       26│A13
;    A6│4       25│A8       A6│4       25│A8         A6│4       25│A8 
;    A5│5       24│A9       A5│5       24│A9         A5│5       24│A9 
;    A4│6       23│A11      A4│6       23│A11        A4│6       23│A11
;    A3│7       22│-OE      A3│7       22│-OE        A3│7       22│-OE/VPP	
;    A2│8       21│A10      A2│8       21│A10        A2│8       21│A10
;    A1│9       20│-CS      A1│9       20│-CS/PRM    A1│9       20│-CS
;    A0│10      19│D7       A0│10      19│D7         A0│10      19│D7 
;    D0│11      18│D6       D0│11      18│D6         D0│11      18│D6 
;    D1│12      17│D5	      D1│12      17│D5         D1│12      17│D5
;    D2│13      16│D4	      D2│13      16│D4         D2│13      16│D4
;    地│14      15│D3       地│14      15│D3         地│14      15│D3 
;      └─────┘	        └─────┘	          └─────┘
;
;          27010          	   27040       	              27080               
;      ┌──┬──┐           ┌──┬──┐             ┌──┬──┐
;   Vpp│1       32│+5V     Vpp│1       32│+5V       A19│1       32│+5V
;   A16│2       31│-PGM    A16│2       31│A18       A16│2       31│A18
;   A15│3       30│NC	     A15│3       30│A17       A15│3       30│A17
;   A12│4       29│A14     A12│4       29│A14       A12│4       29│A14
;    A7│5       28│A13      A7│5       28│A13        A7│5       28│A13 
;    A6│6       27│A8	      A6│6       27│A8         A6│6       27│A8
;    A5│7       26│A9	      A5│7       26│A9         A5│7       26│A9
;    A4│8       25│A11      A4│8       25│A11        A4│8       25│A11
;    A3│9       24│-OE      A3│9       24│-OE        A3│9       24│-OE/Vpp
;    A2│10      23│A10      A2│10      23│A10        A2│10      23│A10
;    A1│11      22│-CS      A1│11      22│-CS/PGM    A1│11      22│-CS
;    A0│12      21│D7	      A0│12      21│D7         A0│12      21│D7
;    D0│13      20│D6	      D0│13      20│D6         D0│13      20│D6
;    D1│14      19│D5	      D1│14      19│D5         D1│14      19│D5
;    D2│15      18│D4       D2│15      18│D4         D2│15      18│D4
;    地│16      17│D3	      地│16      17│D3         地│16      17│D3
;      └─────┘	        └─────┘	           └─────┘
;电源正极通过二极管接Vpp,空出P35, 除040,-cs都能接地,空出p37。
;P32->Vpp, P33->-OE, P37->-CS
;010:P34=A16  
;020: P34=A16  P35=A17 
;040: P34=A16  P35=A17 P36=A18 
;080: p34=A16  P35=A17 P36=A18 P33=A19(-OE=Vpp由P32控制,空出P33 )
;================================================================================

⌨️ 快捷键说明

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