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 快沉了。。 还是没有人哟! 在他的网站上有eeprom使用例子,能用的。
页:
[1]