Little_White 发表于 2010-10-14 12:47:04

Stc11F32XE EPROM 读写数据,程序很简单。就是没有反应。帮帮忙!

用sm1623 驱动 ,没有加EPROM的读写程序之前,显示是正确的,加了之后数码管就没有反应了。不知道哪里出了问题。


;-------SM1623-----------------------------
DISP_CLKEQUP3.3
DISP_DINEQUP3.7
SM_CS   EQUP3.2
;--------------------------------------------
BEEP      EQUP1.4
DRIVE_JREQUP1.5
LED_JR    EQUP1.7
;--------------------------------------------

;---------STC11F32XE 寄存器定义--------------
IAP_DATA      DATA    0C2H
IAP_ADDRH       DATA    0C3H
IAP_ADDRL       DATA    0C4H
IAP_CMD         DATA    0C5H
IAP_TRIG      DATA    0C6H
IAP_CONTR       DATA    0C7H

ISP_IAP_BYTE_READ   EQU   1
ISP_IAP_BYTE_PROGRAMEQU   2
ISP_SECTOR_ERASE      EQU   3
WAIT_TIME             EQU   1       ;BELOW 24
;-------------------------------------------

TEMP         EQU      70H      ;

;-------------------------------------------
          ORG    0000H
          LJMP   BEGIN
          ORG    001BH
          LJMP   T1_INT
          ORG    0030H
BEGIN:    MOV    TMOD,#10H
          MOV    TH1,#3CH
          MOV    TL1,#0B0H
          SETB   EA
          SETB   TR1
          SETB   ET1
          MOV    R6,#10
          MOV    R7,#60
          MOV    R0,#0
          CLR    BEEP
          CLR    DRIVE_JR
          CLR    LED_JR
;-------------------------------- //读数据
          MOV    DPTR,#200H       ;扇区
          LCALLREAD_EPROM      
          MOV    R0,A
         
         
         
                  

;----------------------------------
          MOV   DPTR,#TAB
          LCALLDISP_INIT
          NOP
          NOP
          NOP
          SJMP   $
;-------------T1中断------------------
T1_INT:   MOV   TH1,#3CH
          MOV   TL1,#0B0H
          DJNZR6,RETURN
          MOV   R6,#10
          MOV   A,R0
          INC   R0
;          SUBBA,#59
;          JNZ   XS
;         MOV   R0,#0
XS:      
          LCALL WRITE_EPROM
          CALLDISP_SM1
         
         
   
RETURN:                        
          RETI
;-----------------------------------

;----------显示---------------------
DISP_SM1:
          CLR   SM_CS
          MOV   A,#0C0H
          LCALL BYTE_OUT
          NOP
          NOP
          MOV   A,R0
          MOV   B,#10
          DIV   AB
          XCH   A,B
          MOVCA,@A+DPTR
          LCALL BYTE_OUT
          MOV   A,#0
          LCALL BYTE_OUT
          MOV   A,B
          MOVCA,@A+DPTR
          LCALLBYTE_OUT
          MOV   A,#0
          LCALL BYTE_OUT
          SETBSM_CS
          NOP
          NOP
          CLR   SM_CS
          MOV   A,#8FH
          LCALL BYTE_OUT
          SETBSM_CS
          RET
;-----------------------------------------
TAB:DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
      DB77h,7ch,39h,5eh,79h,71h
;-------------显示初始化--------------------
DISP_INIT:CLR   SM_CS
          MOV   A,#00H
          LCALL BYTE_OUT
          SETBSM_CS
          NOP
          NOP
          CLR   SM_CS
          MOV   A,#40H
          LCALL BYTE_OUT
          SETBSM_CS
          NOP
          NOP
          RET
;------------------------------------------

;---------sm1623写入一个字节---------------
BYTE_OUT: MOVR7,#8
BYTE_OUT1:CLRDISP_CLK
          RRCA
          MOVDISP_DIN,C
          SETB DISP_CLK
          DJNZ R7,BYTE_OUT1
          RET
READ_EPROM:CLR   EA   
             MOV   IAP_ADDRH,DPH
             MOV   IAP_ADDRL,DPL
             MOV   IAP_CONTR,#WAIT_TIME
             ORL   IAP_CONTR,#10000000B   
             MOV   IAP_CMD,#ISP_IAP_BYTE_READ
             MOV   IAP_TRIG,#5AH
             MOV   IAP_TRIG,#0A5H
             NOP
             SETB    EA
             MOV   A,IAP_DATA
             RET
            
            
WRITE_EPROM: CLR    EA
             MOV    DPTR,#200H
             LCALLERASE_EPROM

             MOV   DPTR,#200H
             MOV   A,R0
             LCALL   WRITE_BYTE
            
             NOP
             SETB    EA
             RET

ERASE_EPROM: CLR   EA
             MOV   IAP_ADDRH,DPH
             MOV   IAP_ADDRL,DPL
             MOV   IAP_CONTR,#WAIT_TIME
             ORL   IAP_CONTR,#10000000B   
             MOV   IAP_CMD,#ISP_SECTOR_ERASE
             MOV   IAP_TRIG,#5AH
             MOV   IAP_TRIG,#0A5H
             NOP
             SETB    EA
             RET
WRITE_BYTE:CLR   EA
             MOV   IAP_ADDRH,DPH
             MOV   IAP_ADDRL,DPL
             MOV   IAP_CONTR,#WAIT_TIME
             ORL   IAP_CONTR,#10000000B   
             MOV   IAP_CMD,#ISP_IAP_BYTE_PROGRAM
             MOV   IAP_TRIG,#5AH
             MOV   IAP_TRIG,#0A5H
             NOP
             SETB    EA
             RET
                     
            

END

Little_White 发表于 2010-10-14 13:24:24

快沉了。。

Little_White 发表于 2010-10-16 16:50:40

还是没有人哟!

flyhouse 发表于 2010-10-16 17:37:45

在他的网站上有eeprom使用例子,能用的。
页: [1]
查看完整版本: Stc11F32XE EPROM 读写数据,程序很简单。就是没有反应。帮帮忙!