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

📄 wbxs.asm

📁 51通讯程序
💻 ASM
字号:
RX               BIT P3.0 
				   ;I2C-24c02
IICSCL          EQU     P1.6       ;数据
IICSDA          EQU     P3.4       ;时钟
SLA				EQU      0A0H        ;24C02的写寻址字节
SLAR            EQU      0A1H		;24C02的读寻址字节
;NO_ACK          BIT     27H.1      ;无应答IICSDA
;I2C_BUSY        BIT     27H.2      ;忙
;BUS_FAULT       BIT     27H.3      ;总线出错
SUBADR          EQU      1DH     ;取存储地址 
NUMBYT          EQU      1BH        ;数据字节计数器
;MRD24C02        EQU     3EH        ;接收数据缓冲区首址
MTD24C02        EQU     1CH        ;发送数据缓冲区首址

;主程序				   IE,T2CON,TH2,TL2,RCAP2H,RCAP2L
		ORG	0000H
		LJMP	START
		ORG	0023H
		
	    LJMP  COM1
		
		ORG	0030H
;------------------------------------
START:      MOV   R0,#7FH
            CLR     A
CLRRAM:     MOV   @R0,A
             DJNZ    R0,CLRRAM  
            MOV   P0,#00H
            MOV   P1,#0ffH
            MOV   P2,#0FFH
            MOV   P3,#0FFH                           
            MOV   SP,#60H                   
         ;   MOV   TH1,#0FFH
           ; MOV   TL1,#0F8H
		;	MOV   TMOD,#20H
		;	MOV   TCON,#40H

			MOV   0CBH,#0FFH
            MOV   0CAH,#0F8H
            MOV   0C8H,#34H
			MOV   SCON,#0d0H   ;0D0H
            MOV    PCON,#00H  ;00H
			clr   p3.2
			CLR   P2.3
			CLR  P2.0
			SETB  PS
			setb  ren							   
            SETB   P1.0
            SETB    EA ;开中断
            SETB    ES   ;允许串口中断
			MOV    R1,#49H
            mOV    R0,#20H
ddd:		lcall xs
            LCALL YS			 
			AJMP  ddd
 ;_________________________________________________
COM1:       CLR    EA   ;关中断
             PUSH    Acc
			 PUSH    00H
			 PUSH    01H

RX1:         MOV   A,SBUF 
			 MOV   A,1FH
			 MOV   R0,1EH
			 CJNE  A,#01H,AA1D 
			 MOV   A,SBUF
			 MOV   @R0,A
			 INC   R0
			 MOV   1EH,R0
			 CJNE  R0,#25H,RETURN
			 MOV   1FH,#00H
			 AJMP  RETURN

AA1D:        MOV   A,1FH
             MOV   R0,1DH
			 CJNE  A,#02H,AA1 
			 MOV   A,SBUF
			 MOV   @R0,A
			 INC   R0
			 MOV   1DH,R0
			 CJNE  R0,#35H,RETURN
			 MOV   38H,34H
			 MOV   37H,33H
			 MOV   R7,#03H
			 MOV   R0,#39H
			 MOV   R1,#36H
			 LCALL BCDA
			 MOV   1FH,#00H
			 AJMP  RETURN
			 			 			 
AA1:		 MOV    A,SBUF
             CJNE    A,#9FH,AA2
             MOV    1EH,#20H ;	  R0
			 MOV     1FH,#01H

AA2:		MOV    A,SBUF
            CJNE   A,#0D3H,RETURN
            MOV    1FH,#02H
            MOV    1DH,#30H	;R0
			AJMP   RETURN

RETURN:	      POP   01H
			  POP  00H			;	3034304
			 ; 123547
			  POP  ACC
              SETB  EA
			  CLR RI
             RETi  
 ;____________________________________________
YS:            MOV   R5,#01H     ;      延时子程序
YS1:           MOV   R4,#03H
YS2:           MOV   R6,#64H
               DJNZ  R6,$
               DJNZ  R4,YS2
               DJNZ  R5,YS1
               RET
;_____________________________________________
;模拟串口,51汇编代码编写9600
;T2作为波特率控制
;UART_RXD 是硬中断0或1口,如果能进入中断,说明该线有一个起始位产生,进入中断后调
;用下面的接收程序。退出硬中断之前还需要将硬中断标志重新复位。
;UART_TXD 是任何其它IO即可。
 ;**************延时104μs 子程序*****
DEL833: MOV R7 ,#31h  ;104
MS11: DJNZ R7,MS11
RET
;******** 89C51发送数据给PC 机子程序****
INPUT: CLR C    
      MOV p1.0,C ;发送起始位
  ;    MOV TXD,C ;????????????
      LCALL DEL833 ;延时
      MOV R3,#8
REP:  RRC A
      MOV p1.0 ,C
      LCALL DEL833
      DJNZ R3,REP ;发送8 位数据
      SETB C ;发送停止位
      MOV p1.0,C
      LCALL DEL833
RET
;=======================================
xs:   
       MOV  A,4FH
       LCALL CB1
       ;MOV A,#84h  ;3EH
PP:       MOV P0,A
	   SETB P2.0			   ;#####
	   CLR  P2.0
	   SETB P2.0
	    MOV   P0,#0FFH
	   MOV  A,#01H
	   MOV  P0,A
	   SETB P2.3		   ; ;4F  100   4E  1000   4D  1  4C   10   4B  0.1
	   CLR  P2.3			;4C 0.1  4E  1    4D  0.01  4F 100
	   SETB P2.3		  ;								  4c(0.1)
	   MOV   P0,#0FFH	  ;4A  4B
	   lcall ys
	   
	   MOV A,4CH            ;3FH	4e
       LCALL CB1
PP1:	MOV P0,A
	   SETB P2.0
	   CLR  P2.0
	   SETB P2.0
	 ;  MOV   P0,#0FFH
	   MOV  A,#02H
	   MOV  P0,A
	   SETB P2.3
	   CLR  P2.3
	   SETB P2.3
	   MOV   P0,#0FFH

	   lcall ys
;04  1 04  4E
       MOV A,4DH		;		 4E	 C
	   LCALL CB1
	   MOV P0,A
	   SETB P2.0
	   CLR  P2.0
	   SETB P2.0			;04  3  1(0.1)
	   MOV   P0,#0FFH
	   MOV  A,#04H
	   MOV  P0,A
	   SETB P2.3
	   CLR  P2.3
	   SETB P2.3
		MOV   P0,#0FFH

;	 ;08 0.1 '08 4c------------
	   lcall ys
	   MOV A,4AH	;	  C
	   LCALL CB1
       MOV P0,A
	   SETB P2.0
	   CLR  P2.0
	   SETB P2.0
	   MOV   P0,#0FFH

	   MOV  A,#08H
	   MOV  P0,A		 
	   SETB P2.3
	   CLR  P2.3
	   SETB P2.3
	   MOV   P0,#0FFH
	   lcall ys
       RET
;______________________________________
			;加法子程序
;入口条件:字节数在R7中,被加数在[R0]中,加数在[R1]中。
;出口信息:和在[R0]中,最高位进位在CY中。
;影响资源:PSW、A、R2    堆栈需求:  2字节	 36 39   38  36

BCDA: 	
    MOV	A,R7;	;取字节数至R2中
	MOV	R2,A
	ADD	A,R0;	;初始化数据指针 3C
	MOV	R0,A
	MOV	A,R2    ;39
	ADD	A,R1	;39
	MOV	R1,A
	CLR	C
BCD1:	DEC	R0;	;调整数据指针	 3B
	DEC	R1		 ;38
	MOV	A,@R0
	ADDC	A,@R1;	;按字节相加
	DA	A;	;十进制调整
	MOV	@R0,A;	;和存回[R0]中		  38   37  36
	DJNZ	R2,BCD1;	;处理完所有字节

	MOV  R1,#4FH
BCD2:	MOV  A,@R0
	ANL  A,#0FH
	MOV  @R1,A
	MOV  A,@R0	;4F  100   4E  1000   4D  1  4C   10   4B  0.1
	DEC  R1
	SWAP A
	ANL  A,#0FH
	MOV  @R1,A
	DEC  R1
	INC  R0
	DJNZ R7,BCD2
	
	RET
;___________________________________________
CB1:     MOV  DPTR,#SZH
         ;MOV  A,3EH
		 MOVC A,@A+DPTR 
		 RET
;________________________________
SZH: db 0E7h,84h,0D3h,0D6h,0B4h,76h,77h,0C4h,0F7h,0F6h;0 1 2 3 4 5 6 7 8 9


               END

⌨️ 快捷键说明

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