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

📄 back.txt

📁 使用51系列单片机操作93c46些列储存器的程序
💻 TXT
字号:
 ;*****************************************************************
 ;*  主    页 :  HTTP:WWW.QLMCU.COM           				
 ;*                                                              
 ;*  程序功能 :  93C46的读写实验                                
 ;*                                                         
 ;*  硬    件:  WS803A / WS806
 ;*                                                     
 ;*  创建时间 :  2005.06.27
 ;*
 ;*  Designer :  benladn911   
 ;*******************************************************************

	CS	EQU	P3.5	;片选端
	SK	EQU	P2.6	;模拟时钟信号输出端
	DI	EQU	P2.5	;串行数据输出端
	DO	EQU	P2.4	;串行数据输入端
	WDM EQU 20H   ;欲写入数据单元
	RDM EQU 22H   ;读出存放于51的单元
	ADDR EQU 32H   ;欲写入93C46地址

ORG 0000H
LJMP MAIN

ORG 0100H
MAIN:
  /* LCALL EWEN46
     LCALL READ
     MOV P0,RDM
     CLR P3.7
     SJMP $  */

     MOV WDM,#11H
     LCALL EWEN46
     LCALL WRITE
     LCALL READ
     MOV P0,RDM
     CLR P3.7
     SJMP $
    


;----------------------------------------------------
;发送高电平 1 
;-----------------------------------------------------
HIGH46:
SETB DI
SETB SK
NOP
NOP
CLR SK
NOP
RET
;;;di_93=1;sk_93=1; _nop_();sk_93=0;_nop_();

;-----------------------------------------------------
;发送低电平 0 
;------------------------------------------------*/
LOW46:
CLR DI
SETB SK
NOP
NOP
CLR SK
NOP
RET
;;;;;;;di_93=0;sk_93=1;_nop_();sk_93=0;_nop_();
;----------------------------------------------------- 

;-------------------------------------------
;---------------------延时-------------------
DL2MS: MOV R4,#8;
DD3:MOV R5,#124
   DJNZ R5,$
   DJNZ R4,DD3
   RET
;--------------------------------------------

;----------------------------------------------------- 
;-------------------写操作允许涵数--------------------
;-----------------------------------------------------
EWEN46:      ;  ( 10011*****  )
SETB CS

NOP

LCALL HIGH46  ;1
LCALL LOW46   ;0
CLR DI        ;0
SETB SK
NOP
NOP
CLR SK 
NOP

SETB DI       ;1
SETB SK
NOP
NOP
CLR SK
NOP

SETB DI       ;1
SETB SK
NOP
NOP
CLR SK
NOP

CLR DI
SETB SK
NOP
NOP
CLR SK
NOP

CLR DI
SETB SK
NOP
NOP
CLR SK
NOP

CLR DI
SETB SK
NOP
NOP
CLR SK
NOP

CLR DI
SETB SK
NOP
NOP
CLR SK
NOP

CLR DI
SETB SK
NOP
NOP
CLR SK
NOP

CLR CS
RET

;-----------------------------------------------------------------
;------------向指定的地址中写入一个字节数据(八位)涵数-----------
;-----------------------------------------------------------------
WRITE:   ;101
      
      MOV R2,#7 ;置写入地址位数(存储单元8位结构时,地址为7位)
      SETB CS
      NOP
      MOV A,ADDR  ;把欲写入的数据的地址
      RLC A	;先左移一位,地址移至D7~D1,D0无效
      LCALL HIGH46   ;1
      LCALL LOW46    ;0
      SETB DI        ;1
      SETB SK
      NOP
      NOP
      CLR SK
      NOP
      
WR_ADDR:    ;欲写入地址的设置
   
      MOV DI,C
      NOP
      NOP
      SETB SK
      NOP
      NOP
      CLR SK
      NOP
      RLC A
      DJNZ R2,WR_ADDR
      NOP
      NOP
      
      MOV A,WDM  ;把欲写入的数据送给 A 
      MOV R2,#8  ;数据为8位
WR_DAT:
      RLC A
      MOV DI,C
      NOP
      NOP
      SETB SK
      NOP
      NOP
      CLR SK
      NOP
      DJNZ R2,WR_DAT
      LCALL DL2MS
      LCALL DL2MS
      LCALL DL2MS
   
      CLR CS
      RET
;-----------------------------------------------------------------




;-----------------------------------------------------
;----------从指定的地址中读出一个字节数据(八位)涵数
;-----------------------------------------------------
READ:           ;110
      MOV R2,#7
      SETB CS
      NOP
      MOV A,ADDR  ;把欲读出的数据的地址送给A
      RLC	A	;先左移一位,地址移至D7~D1,D0无效
      LCALL HIGH46
      LCALL HIGH46
      CLR DI
      SETB SK
      NOP
      NOP
      CLR SK
      NOP
      
RD_ADDR:    ;欲读出地址的设置
      
  
      MOV DI,C
      NOP
      NOP
      SETB SK
      NOP
      NOP
      CLR SK
      NOP
      RLC A  
      DJNZ R2,RD_ADDR
      NOP
      NOP
      
      MOV R2,#8   ;READ 8 BIT DATA
      SETB DO
RD_DAT:
      SETB SK
      NOP
      NOP
      MOV C,DO
      RLC A
      CLR SK
      DJNZ R2,RD_DAT
 
      MOV RDM,A   ;SAVE DATA IN RDM(22H)
      CLR CS
      RET 
;---------------------------------------------------------------------------      

;-----------------------------------------------------
;-----------擦除所有单元涵数--------------------------
;-----------------------------------------------------
EARASE:
       SETB CS
       NOP
       LCALL HIGH46
       LCALL LOW46
       
       CLR DI
       SETB SK
       NOP
       CLR SK
       NOP
       
       SETB DI
       SETB SK
       NOP
       CLR SK
       NOP
       
       CLR DI
       SETB SK
       NOP
       CLR SK
       NOP
       
       CLR DI
       SETB SK
       NOP
       CLR SK
       NOP
       
       CLR DI
       SETB SK
       NOP
       CLR SK
       NOP
       
       CLR DI
       SETB SK
       NOP
       CLR SK
       NOP
       
       CLR DI
       SETB SK
       NOP
       CLR SK
       NOP
       
       SETB DI
       SETB SK
       NOP
       CLR SK
       NOP

KKK:   JB DO,LLL	;判REDAY/BUSY,DO=1,
       SJMP KKK
       
LLL:   CLR CS
       RET
;----------------------------------------------------------------------
    END

⌨️ 快捷键说明

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