; ********************************************
; Function : 基于HT48R50A的 93C46示例程序 *
; MICroProcessor : HT48R50A-1/28SKDIP-A *
; Author: www.picavr.com *
; Crystal : 4MHz *
; ********************************************
#INCLUDE HT48R50A-1.INC
LCD_DATA EQU PA
LCD_DATA_CTRL EQU PAC
LCD_CTRL EQU PC
LCD_CTRL_CTRL EQU PCC
E EQU 1
RS EQU 0
KEYIN_ERROR EQU 0AAH
EEPROM EQU PC
CS EQU 5
SK EQU 4
DI EQU 3
DO EQU 2
;------------------------------------------------------
DATA .SECTION AT 60H 'DATA'
DELAY_COUNTER_1 DB ? ;[60H]
DELAY_COUNTER_2 DB ? ;[61H]
COUNTER DB ? ;[62H]
COUNTER_1 DB ? ;[63H]
DATA DB ? ;[64H]
ADDRESS_BUFFER DB 3 DUP(?)
DATA_BUFFER DB 4 DUP(?)
DISPLAY_BUFFER DB 32 DUP(?)
;------------------------------------------------------
DATA_W MACRO M_DATA
SET LCD_CTRL.RS
MOV A,M_DATA
MOV LCD_DATA,A
CALL WRITE
ENDM
;------------------------------------------------------
INS_W MACRO M_INS
CLR LCD_CTRL.RS
MOV A,M_INS
MOV LCD_DATA,A
CALL WRITE
ENDM
;------------------------------------------------------
LCD_BUFFER MACRO
LOCAL BUFFER_1,BUFFER_2
MOV TBLP,A
MOV A,OFFSET DISPLAY_BUFFER
MOV MP0,A
MOV A,10H
MOV COUNTER,A
BUFFER_1:
TABRDC R0
INC TBLP
INC MP0
SDZ COUNTER
JMP BUFFER_1
MOV A,10H
MOV COUNTER,A
BUFFER_2:
TABRDC R0
INC MP0
INC TBLP
SDZ COUNTER
JMP BUFFER_2
CALL LCD_DISPLAY
ENDM
;------------------------------------------------------
CODE .SECTION AT 00H 'CODE'
ORG 00H
JMP START
START:
CLR LCD_DATA_CTRL
CLR LCD_DATA
MOV A,00000100B
MOV LCD_CTRL_CTRL,A
CLR LCD_CTRL
MOV A,00101111B
MOV PBC,A
CLR PB.4
;------------------------------------------------------
CALL DELAY
INS_W 00110000B ;LCD RESET
CALL DELAY
INS_W 00110000B ;LCD_RESET
CALL DELAY
INS_W 00111000B ;FUNCTION SET
INS_W 00000110B ;ENTRY MODE SET
INS_W 00000001B ;DISPLAY CLEAN
CALL DELAY ;DELAY SOME TIME
INS_W 00001111B ;DISPLAY TURN ON
;------------------------------------------------------
CALL MESSAGE_01
CALL GET_KEY
MANUAL_PAGE_1:
CALL MESSAGE_02
INS_W 11001111B
CHOOSE_1:
CALL GET_KEY
SUB A,01H
SZ ACC
JMP CHOOSE_2
JMP FUNCTION_1
CHOOSE_2:
MOV A,DATA
SUB A,02H
SZ ACC
JMP CURSOR_DOWN_1
JMP FUNCTION_2
CURSOR_DOWN_1:
MOV A,DATA
SUB A,0DH
SZ ACC
JMP CHOOSE_1
MANUAL_PAGE_2:
CALL MESSAGE_03
INS_W 11001111B
CHOOSE_3:
CALL GET_KEY
SUB A,03H
SZ ACC
JMP CHOOSE_4
JMP FUNCTION_3
CHOOSE_4:
MOV A,DATA
SUB A,04H
SZ ACC
JMP CURSOR_UP_2
JMP FUNCTION_4
CURSOR_UP_2:
MOV A,DATA
SUB A,0CH
SZ ACC
JMP CURSOR_DOWN_2
JMP MANUAL_PAGE_1
CURSOR_DOWN_2:
MOV A,DATA
SUB A,0DH
SZ ACC
JMP CHOOSE_3
MANUAL_PAGE_3:
CALL MESSAGE_04
INS_W 11001111B
CHOOSE_5:
CALL GET_KEY
SUB A,05H
SZ ACC
JMP CHOOSE_6
JMP FUNCTION_5
CHOOSE_6:
MOV A,DATA
SUB A,06H
SZ ACC
JMP CURSOR_UP_3
JMP FUNCTION_6
CURSOR_UP_3:
MOV A,DATA
SUB A,0CH
SZ ACC
JMP CURSOR_DOWN_3
JMP MANUAL_PAGE_2
CURSOR_DOWN_3:
MOV A,DATA
SUB A,0DH
SZ ACC
JMP CHOOSE_5
MANUAL_PAGE_4:
CALL MESSAGE_05
INS_W 11001111B
CHOOSE_7:
CALL GET_KEY
SUB A,07H
SZ ACC
JMP CURSOR_UP_4
JMP FUNCTION_7
CURSOR_UP_4:
MOV A,DATA
SUB A,0CH
SZ ACC
JMP CHOOSE_7
JMP MANUAL_PAGE_3
RET
;------------------------------------------------------
FUNCTION_1:
CALL MESSAGE_06
INS_W 11000100B
CALL ENTER_ADDRESS
MOV A,DATA
SUB A,KEYIN_ERROR
SZ ACC
JMP FUN_NEXT_1
JMP FUN_END_1
FUN_NEXT_1:
CALL HT93LC46_READ
CALL MESSAGE_08
;WRITE ADDRESS CODE TO LCD
INS_W 10001000B
MOV A,OFFSET ADDRESS_BUFFER + 2
MOV MP0,A
MOV A,R0
ADD A,30H
DATA_W ACC
DEC MP0
MOV A,R0
ADD A,30H
DATA_W ACC
;WRITE DATA CODE TO LCD
INS_W 11001000B
MOV A,OFFSET DATA_BUFFER
MOV MP0,A
MOV A,R0
SUB A,0FH
SZ ACC
JMP DEC_DISPLAY
CALL HEX_TO_TEXT
DEC_DISPLAY:
MOV A,04H
MOV COUNTER,A
FUN_1_LOOP:
MOV A,R0
ADD A,30H
DATA_W ACC
INC MP0
SDZ COUNTER
JMP FUN_1_LOOP
INS_W 11001111B
CALL GET_KEY
FUN_END_1:
JMP MANUAL_PAGE_1
RET
;------------------------------------------------------
FUNCTION_2:
CALL MESSAGE_06
INS_W 11000100B
CALL ENTER_ADDRESS
MOV A,DATA
SUB A,KEYIN_ERROR
SZ ACC
JMP FUN_NEXT_21
JMP FUN_END_2
FUN_NEXT_21:
CALL MESSAGE_07
INS_W 11000001B
CALL ENTER_DATA
MOV A,DATA
SUB A,KEYIN_ERROR
SZ ACC
JMP FUN_NEXT_22
JMP FUN_END_2
FUN_NEXT_22:
CALL HT93LC46_WRITE
CALL MESSAGE_11
CALL GET_KEY
FUN_END_2:
JMP MANUAL_PAGE_1
RET
;------------------------------------------------------
FUNCTION_3:
CALL MESSAGE_06
INS_W 11000100B
CALL ENTER_ADDRESS
MOV A,DATA
SUB A,KEYIN_ERROR
SZ ACC
JMP FUN_NEXT_3
JMP FUN_END_3
FUN_NEXT_3:
CALL HT93LC46_ERASE
CALL MESSAGE_11
CALL GET_KEY
FUN_END_3:
JMP MANUAL_PAGE_2
RET
;------------------------------------------------------
FUNCTION_4:
CALL HT93LC46_ERAL
CALL MESSAGE_10
CALL GET_KEY
JMP MANUAL_PAGE_2
RET
;------------------------------------------------------
FUNCTION_5:
CALL MESSAGE_07
INS_W 11000001B
CALL ENTER_DATA
MOV A,DATA
SUB A,KEYIN_ERROR
SZ ACC
JMP FUN_NEXT_5
JMP FUN_END_5
FUN_NEXT_5:
CALL HT93LC46_WRAL
CALL MESSAGE_10
CALL GET_KEY
FUN_END_5:
JMP MANUAL_PAGE_3
RET
;------------------------------------------------------
FUNCTION_6:
CALL HT93LC46_EWDS
CALL MESSAGE_12
CALL GET_KEY
JMP MANUAL_PAGE_3
RET
;------------------------------------------------------
FUNCTION_7:
CALL HT93LC46_EWEN
CALL MESSAGE_13
CALL GET_KEY
JMP MANUAL_PAGE_4
RET
;------------------------------------------------------
LCD_DISPLAY PROC
MOV A,OFFSET DISPLAY_BUFFER
MOV MP0,A
INS_W 10000000B ;FIRST LINE ADD
MOV A,10H
MOV COUNTER,A
LOOP_1:
MOV A,R0
DATA_W ACC ;WRITE DATA
INS_W 00011100B ;DISPLAY/CURSOR SHIFT
CALL DELAY
INC MP0
SDZ COUNTER
JMP LOOP_1
INS_W 11000000B ;SECOND LINE ADD
MOV A,10H
MOV COUNTER,A
LOOP_2:
MOV A,R0
DATA_W ACC ;WRITE DATA
INS_W 00011000B ;DISPLAY/CURSOR SHIFT
CALL DELAY
INC MP0
SDZ COUNTER
JMP LOOP_2
RET
LCD_DISPLAY ENDP
;------------------------------------------------------
WRITE PROC
SET LCD_CTRL.E
CLR LCD_CTRL.E
MOV A,020H
MOV DELAY_COUNTER_1,A
WRITE_WAIT:
SDZ DELAY_COUNTER_1
JMP WRITE_WAIT
RET
WRITE ENDP
;------------------------------------------------------
ENTER_ADDRESS PROC
ENTER_START:
MOV A,OFFSET ADDRESS_BUFFER
MOV MP0,A
MOV A,02H
MOV COUNTER,A
ADD_LOOP:
CALL GET_KEY
SUB A,0FH
SZ ACC
JMP ADD_NEXT_E
JMP ADD_ERROR
ADD_NEXT_E:
MOV A,DATA
SUB A,0EH
SZ ACC
JMP ADD_OTHER
CALL MESSAGE_09
CALL GET_KEY
JMP ADD_ERROR
ADD_OTHER:
CALL KEY_TRANSFER
MOV A,DATA
SUB A,KEYIN_ERROR
SZ ACC
JMP ADD_OK
JMP ADD_LOOP
ADD_OK:
CALL DELAY
CALL DELAY
CALL DELAY
MOV A,DATA
MOV R0,A
ADD A,30H
DATA_W ACC
INC MP0
SDZ COUNTER
JMP ADD_LOOP
INS_W 11000101B
ADD_INPUT:
CALL GET_KEY
SUB A,0EH
SZ ACC
JMP ADD_INPUT
MOV A,OFFSET ADDRESS_BUFFER
MOV MP0,A
MOV A,R0
INC MP0
INC MP0
MOV R0,A
DEC MP0
DEC MP0
MOV A,OFFSET HEX_TO_DEC
ADD A,R0
MOV TBLP,A
INC MP0
TABRDL ACC
ADD A,R0
MOV ADDRESS_BUFFER,A
CLR STATUS
MOV A,3FH
SUB A,ADDRESS_BUFFER
MOV A,STATUS
AND A,00000011B
SUB A,00000010B
SZ ACC
JMP ADD_END
CALL MESSAGE_06
INS_W 11000100B
JMP ENTER_START
ADD_ERROR:
MOV A,KEYIN_ERROR
MOV DATA,A
ADD_END:
RET
ENTER_ADDRESS ENDP
;------------------------------------------------------
ENTER_DATA PROC
MOV A,OFFSET DATA_BUFFER
MOV MP0,A
MOV A,04H
MOV COUNTER,A
DATA_LOOP:
CALL GET_KEY
SUB A,0FH
SZ ACC
JMP DATA_NEXT_E
JMP DATA_ERROR
DATA_NEXT_E:
MOV A,DATA
SUB A,0EH
SZ ACC
JMP DATA_OTHER
CALL MESSAGE_09
CALL GET_KEY
JMP DATA_ERROR
DATA_OTHER:
CALL KEY_TRANSFER
MOV A,DATA
SUB A,KEYIN_ERROR
SZ ACC
JMP DATA_OK
JMP DATA_LOOP
DATA_OK:
CALL DELAY
CALL DELAY
CALL DELAY
MOV A,DATA
MOV R0,A
ADD A,30H
DATA_W ACC
INC MP0
SDZ COUNTER
JMP DATA_LOOP
INS_W 11000100B
DATA_INPUT_OK:
CALL GET_KEY
SUB A,0EH
SZ ACC
JMP DATA_INPUT_OK
MOV A,OFFSET DATA_BUFFER
MOV MP0,A
SWAP R0
MOV A,R0
INC MP0
ADD A,R0
MOV DATA_BUFFER,A
INC MP0
SWAP R0
MOV A,R0
INC MP0
ADD A,R0
DEC MP0
DEC MP0
MOV R0,A
JMP DATA_END
DATA_ERROR:
MOV A,KEYIN_ERROR
MOV DATA,A
DATA_END:
RET
ENTER_DATA ENDP
;------------------------------------------------------
KEY_TRANSFER PROC
MOV A,DATA
SUB A,0AH
SZ ACC
JMP NEXT_KEY_B
JMP KEY_ERROR
NEXT_KEY_B:
MOV A,DATA
SUB A,0BH
SZ ACC
JMP NEXT_KEY_C
JMP KEY_ERROR
NEXT_KEY_C:
MOV A,DATA
SUB A,0CH
SZ ACC
JMP NEXT_KEY_D
JMP KEY_ERROR
NEXT_KEY_D:
MOV A,DATA
SUB A,0DH
SZ ACC
JMP NEXT_KEY_OK
JMP KEY_ERROR
NEXT_KEY_OK:
JMP KEY_END
KEY_ERROR:
MOV A,KEYIN_ERROR
MOV DATA,A
KEY_END:
RET
KEY_TRANSFER ENDP
;------------------------------------------------------
GET_KEY PROC
KEY_LOOP_1:
MOV A,PB
AND A,00100000B
SUB A,00100000B
SZ ACC
JMP KEY_LOOP_1
MOV A,PB
AND A,00001111B
MOV DATA,A
RET
GET_KEY ENDP
;------------------------------------------------------
DELAY PROC
MOV A,50H
MOV DELAY_COUNTER_1,A
MOV DELAY_COUNTER_2,A
WAITING:
SDZ DELAY_COUNTER_2
JMP WAITING
SDZ DELAY_COUNTER_1
JMP WAITING
RET
DELAY ENDP
;------------------------------------------------------
HT93LC46_READ PROC
MOV A,OFFSET DATA_BUFFER
MOV MP0,A
MOV A,ADDRESS_BUFFER
OR A,10000000B
MOV DATA,A
CALL START_BIT
CALL WRITE_TO_ROM
MOV A,04H
MOV COUNTER,A
READ_LOOP_1:
MOV A,04H
MOV COUNTER_1,A
CLR DATA
READ_LOOP_2:
SET EEPROM.SK
MOV A,PC
CLR EEPROM.SK
AND A,00000100B
SUB A,00000100B
SZ ACC
JMP READ_BIT_0
SET C
RLC DATA
JMP READ_OK
READ_BIT_0:
CLR C
RLC DATA
READ_OK:
SDZ COUNTER_1
JMP READ_LOOP_2
MOV A,DATA
MOV R0,A
INC MP0
SDZ COUNTER
JMP READ_LOOP_1
CLR EEPROM.CS
CLR EEPROM.DI
RET
HT93LC46_READ ENDP
;------------------------------------------------------
HT93LC46_ERASE PROC
MOV A,ADDRESS_BUFFER
OR A,11000000B
MOV DATA,A
CALL START_BIT
CALL WRITE_TO_ROM
CLR EEPROM.CS
CLR EEPROM.DI
CALL SK_CLOCK
CALL SK_CLOCK
SET EEPROM.CS
SET EEPROM.DO
CALL SK_CLOCK
CLR EEPROM.CS
CLR EEPROM.DI
RET
HT93LC46_ERASE ENDP
;------------------------------------------------------
HT93LC46_WRITE PROC
MOV A,OFFSET DATA_BUFFER
MOV MP0,A
MOV A,ADDRESS_BUFFER
OR A,01000000B
MOV DATA,A
CALL START_BIT
CALL WRITE_TO_ROM
MOV A,R0
MOV DATA,A
CALL WRITE_TO_ROM
INC MP0
MOV A,R0
MOV DATA,A
CALL WRITE_TO_ROM
CLR EEPROM.CS
CLR EEPROM.DI
CALL SK_CLOCK
CALL SK_CLOCK
SET EEPROM.CS
SET EEPROM.DO
CALL SK_CLOCK
CLR EEPROM.CS
CLR EEPROM.DI
RET
HT93LC46_WRITE ENDP
;------------------------------------------------------
HT93LC46_EWEN PROC
MOV A,00110000B
MOV DATA,A
CALL START_BIT
CALL WRITE_TO_ROM
CLR EEPROM.CS
CLR EEPROM.DI
RET
HT93LC46_EWEN ENDP
;------------------------------------------------------
HT93LC46_EWDS PROC
MOV A,00000000B
MOV DATA,A
CALL START_BIT
CALL WRITE_TO_ROM
CLR EEPROM.CS
CLR EEPROM.DI
RET
HT93LC46_EWDS ENDP
;------------------------------------------------------
HT93LC46_ERAL PROC
MOV A,00100000B
MOV DATA,A
CALL START_BIT
CALL WRITE_TO_ROM
CLR EEPROM.CS
CLR EEPROM.DI
CALL SK_CLOCK
CALL SK_CLOCK
SET EEPROM.CS
SET EEPROM.DO
CALL SK_CLOCK
CLR EEPROM.CS
CLR EEPROM.DI
RET
HT93LC46_ERAL ENDP
;------------------------------------------------------
HT93LC46_WRAL PROC
MOV A,OFFSET DATA_BUFFER
MOV MP0,A
MOV A,00010000B
MOV DATA,A
CALL START_BIT
CALL WRITE_TO_ROM
MOV A,R0
MOV DATA,A
CALL WRITE_TO_ROM
INC MP0
MOV A,R0
MOV DATA,A
CALL WRITE_TO_ROM
CLR EEPROM.CS
CLR EEPROM.DI
CALL SK_CLOCK
CALL SK_CLOCK
SET EEPROM.CS
SET EEPROM.DO
CALL SK_CLOCK
CLR EEPROM.CS
CLR EEPROM.DI
RET
HT93LC46_WRAL ENDP
;------------------------------------------------------
START_BIT PROC
SET EEPROM.CS
CALL SK_CLOCK
SET EEPROM.DI
CALL SK_CLOCK
RET
START_BIT ENDP
;------------------------------------------------------
WRITE_TO_ROM PROC
MOV A,08H
MOV COUNTER,A
ROM_LOOP:
CLR ACC
CLR C
RLC DATA
RLC ACC
SUB A,00H
SZ ACC
JMP ROM_OUTPUT_1
CLR EEPROM.DI
CALL SK_CLOCK
JMP ROM_OUTPUT_2
ROM_OUTPUT_1:
SET EEPROM.DI
CALL SK_CLOCK
ROM_OUTPUT_2:
SDZ COUNTER
JMP ROM_LOOP
RET
WRITE_TO_ROM ENDP
;------------------------------------------------------
SK_CLOCK PROC
CLR EEPROM.SK
NOP
NOP
NOP
SET EEPROM.SK
NOP
NOP
NOP
CLR EEPROM.SK
RET
SK_CLOCK ENDP
;------------------------------------------------------
HEX_TO_TEXT PROC
MOV A,OFFSET DATA_BUFFER
MOV MP1,A
MOV A,04H
MOV COUNTER,A
HEX_LOOP:
MOV A,R1
ADD A,07H
MOV R1,A
INC MP1
SDZ COUNTER
JMP HEX_LOOP
RET
HEX_TO_TEXT ENDP
;------------------------------------------------------
ORG 0A00H
MESSAGE_01 PROC
MOV A,OFFSET MESSAGE_001
LCD_BUFFER
RET
MESSAGE_01 ENDP
MESSAGE_001: ;[HT-93LC46 EEPROM]
;[ PRESS ANY KEY! ]
DC 48H,54H,2DH,39H,33H,4CH,43H,34H
DC 36H,20H,45H,45H,50H,52H,4FH,4DH
DC 20H,50H,52H,45H,53H,53H,20H,41H
DC 4EH,59H,20H,4BH,45H,59H,21H,20H
MESSAGE_02 PROC
MOV A,OFFSET MESSAGE_002
LCD_BUFFER
RET
MESSAGE_02 ENDP
MESSAGE_002: ;[1.READ A DATA ]
;[2.WRITE A DATA ]
DC 31H,2EH,52H,45H,41H,44H,20H,41H
DC 20H,44H,41H,54H,41H,20H,20H,20H
DC 32H,2EH,57H,52H,49H,54H,45H,20H
DC 41H,20H,44H,41H,54H,41H,20H,7EH
MESSAGE_03 PROC
MOV A,OFFSET MESSAGE_003
LCD_BUFFER
RET
MESSAGE_03 ENDP
MESSAGE_003: ;[3.ERASE A DATA ]
;[4.ERASE ALL ]
DC 33H,2EH,45H,52H,41H,53H,45H,20H
DC 41H,20H,44H,41H,54H,41H,20H,20H
DC 34H,2EH,45H,52H,41H,53H,45H,20H
DC 41H,4CH,4CH,20H,20H,20H,7FH,7EH
MESSAGE_04 PROC
MOV A,OFFSET MESSAGE_004
LCD_BUFFER
RET
MESSAGE_04 ENDP
MESSAGE_004: ;[5.WRITE ALL ]
;[6.EWDS ]
DC 35H,2EH,57H,52H,49H,54H,45H,20H
DC 41H,4CH,4CH,20H,20H,20H,20H,20H
DC 36H,2EH,45H,57H,44H,53H,20H,20H
DC 20H,20H,20H,20H,20H,20H,7FH,7EH
;------------------------------------------------------
ORG 0B00H
MESSAGE_05 PROC
MOV A,OFFSET MESSAGE_005
LCD_BUFFER
RET
MESSAGE_05 ENDP
MESSAGE_005: ;[7.EWEN ]
;[ ]
DC 37H,2EH,45H,57H,45H,4EH,20H,20H
DC 20H,20H,20H,20H,20H,20H,20H,20H
DC 20H,20H,20H,20H,20H,20H,20H,20H
DC 20H,20H,20H,20H,20H,20H,20H,7FH
MESSAGE_06 PROC
MOV A,OFFSET MESSAGE_006
LCD_BUFFER
RET
MESSAGE_06 ENDP
MESSAGE_006: ;[ ENTER ADDRESS ]
;[ (__) 00-63 ]
DC 20H,45H,4EH,54H,45H,52H,20H,20H
DC 41H,44H,44H,52H,45H,53H,53H,20H
DC 20H,20H,20H,28H,5FH,5FH,29H,20H
DC 30H,30H,2DH,36H,33H,20H,20H,20H
MESSAGE_07 PROC
MOV A,OFFSET MESSAGE_007
LCD_BUFFER
RET
MESSAGE_07 ENDP
MESSAGE_007: ;[ ENTER DATA ]
;[(____) 0000-9999]
DC 20H,20H,20H,45H,4EH,54H,45H,52H
DC 20H,44H,41H,54H,41H,20H,20H,20H
DC 28H,5FH,5FH,5FH,5FH,29H,20H,30H
DC 30H,30H,30H,2DH,39H,39H,39H,39H
MESSAGE_08 PROC
MOV A,OFFSET MESSAGE_008
LCD_BUFFER
RET
MESSAGE_08 ENDP
MESSAGE_008: ;[ADDRESS: DEC]
;[ DATA: DEC]
DC 41H,44H,44H,52H,45H,53H,53H,3AH
DC 20H,20H,20H,20H,20H,20H,20H,20H
DC 20H,20H,20H,44H,41H,54H,41H,3AH
DC 20H,20H,20H,20H,20H,20H,20H,20H
;------------------------------------------------------
ORG 0C00H
MESSAGE_09 PROC
MOV A,OFFSET MESSAGE_009
LCD_BUFFER
RET
MESSAGE_09 ENDP
MESSAGE_009: ;[ENTER ERROR ! ]
;[ADDRESS OR DATA ]
DC 45H,4EH,54H,45H,52H,20H,45H,52H
DC 52H,4FH,52H,20H,21H,20H,20H,20H
DC 41H,44H,44H,52H,45H,53H,53H,20H
DC 4FH,52H,20H,44H,41H,54H,41H,20H
MESSAGE_10 PROC
MOV A,OFFSET MESSAGE_010
LCD_BUFFER
RET
MESSAGE_10 ENDP
MESSAGE_010: ;[ ERASE OR WRITE ]
;[ ALL DATA OK! ]
DC 20H,45H,52H,41H,53H,45H,20H,4FH
DC 52H,20H,57H,52H,49H,54H,45H,20H
DC 20H,20H,41H,4CH,4CH,20H,44H,41H
DC 54H,41H,20H,4FH,4BH,21H,20H,20H
MESSAGE_11 PROC
MOV A,OFFSET MESSAGE_011
LCD_BUFFER
RET
MESSAGE_11 ENDP
MESSAGE_011: ;[ ERASE OR WRITE ]
;[ A DATA OK! ]
DC 20H,45H,52H,41H,53H,45H,20H,4FH
DC 52H,20H,57H,52H,49H,54H,45H,20H
DC 20H,20H,20H,41H,20H,44H,41H,54H
DC 41H,20H,4FH,4BH,21H,20H,20H,20H
MESSAGE_12 PROC
MOV A,OFFSET MESSAGE_012
LCD_BUFFER
RET
MESSAGE_12 ENDP
MESSAGE_012: ;[ ERASE OR WRITE ]
;[ DATA DISABLE ]
DC 20H,45H,52H,41H,53H,45H,20H,4FH
DC 52H,20H,57H,52H,49H,54H,45H,20H
DC 20H,20H,44H,41H,54H,41H,20H,44H
DC 49H,53H,41H,42H,4CH,45H,20H,20H
;------------------------------------------------------
ORG 0D00H
MESSAGE_13 PROC
MOV A,OFFSET MESSAGE_013
LCD_BUFFER
RET
MESSAGE_13 ENDP
MESSAGE_013: ;[ ERASE OR WRITE ]
;[ DATA ENABLE ]
DC 20H,45H,52H,41H,53H,45H,20H,4FH
DC 52H,20H,57H,52H,49H,54H,45H,20H
DC 20H,20H,44H,41H,54H,41H,20H,45H
DC 4EH,41H,42H,4CH,45H,20H,20H,20H
;------------------------------------------------------
ORG 0F00H
HEX_TO_DEC: DC 00H,0AH,14H,1EH,28H,32H,3CH,46H
DC 50H,5AH
;------------------------------------------------------
END
上一篇:HT48R50A的 AT24C02 IIC 示例程序
下一篇:HT48R50A的 電源掉電模式示例程序
推薦閱讀
史海拾趣
隨著全球?qū)Νh(huán)保問題的日益關(guān)注,HANBIT Electronics積極響應(yīng),將綠色生產(chǎn)納入公司發(fā)展戰(zhàn)略。2020年,公司投資建立了綠色生產(chǎn)線,采用環(huán)保材料和清潔能源進行生產(chǎn),實現(xiàn)了生產(chǎn)過程中的節(jié)能減排。同時,公司還推出了多款環(huán)保型電子產(chǎn)品,滿足消費者對綠色、低碳生活的需求。這一舉措不僅提升了公司的品牌形象,也為其在可持續(xù)發(fā)展的道路上贏得了更多機遇。
在電子行業(yè)中,電池管理系統(tǒng)(BMS)的可靠性和耐用性一直是制造商關(guān)注的焦點。Electrolube公司憑借其在材料科學(xué)領(lǐng)域的深厚積累,成功推出了一款名為UVCL的新型UV固化涂層。這款涂層以其獨特的特性迅速在市場中脫穎而出。
UVCL涂層采用先進的UV固化技術(shù),能夠在幾秒鐘內(nèi)完成固化過程,大大提高了生產(chǎn)效率。同時,它還具有高效的濕氣引發(fā)的二次固化機制,確保即使在陰影區(qū)域也能實現(xiàn)完全固化。這一特性對于BMS等復(fù)雜電子電路的保護至關(guān)重要。
為了將UVCL涂層推向市場,Electrolube公司的研發(fā)團隊與客戶緊密合作,克服了客戶內(nèi)部沒有UV固化設(shè)施的難題。他們與信譽良好的供應(yīng)商合作,提供了完整的解決方案,并成功為客戶提供了原型樣品單元進行現(xiàn)場測試。測試結(jié)果顯示,UVCL涂層能夠為電子電路提供最高水平的保護,且操作過程簡單、應(yīng)用速度快。
UVCL涂層的成功推出不僅提升了Electrolube公司在電子材料領(lǐng)域的地位,也為公司贏得了眾多客戶的信賴和好評。
2015年,F(xiàn)IDELIX迎來了一個重要的轉(zhuǎn)折點。在這一年,東芯半導(dǎo)體有限公司(以下簡稱“東芯半導(dǎo)體”)正式收購了FIDELIX 25.3%的股權(quán),成為其第一大股東及實際控制人。這一收購標(biāo)志著FIDELIX開始進入一個新的發(fā)展階段。
通過與東芯半導(dǎo)體的合作,F(xiàn)IDELIX獲得了更多的資金支持和市場資源。東芯半導(dǎo)體是一家專注于中小容量存儲芯片研發(fā)、設(shè)計和銷售的中國企業(yè),在半導(dǎo)體領(lǐng)域擁有豐富的經(jīng)驗和資源。雙方的合作不僅為FIDELIX帶來了更多的發(fā)展機會,同時也加速了FIDELIX在國際市場上的擴張步伐。
在上述兩個故事的基礎(chǔ)上,可以根據(jù)FIDELIX公司的具體發(fā)展歷程、重要事件、技術(shù)創(chuàng)新、市場策略等方面進行進一步的拓展和補充,以形成完整、詳細(xì)的故事內(nèi)容。
為了進一步擴大市場份額,Bergquist Company開始積極拓展全球市場。公司先后在英國、德國、韓國等地設(shè)立了辦事機構(gòu),并在30多個國家設(shè)立了銷售代表處。這些舉措不僅使公司的產(chǎn)品和服務(wù)覆蓋了更廣泛的地區(qū),還為公司帶來了更多的商業(yè)機會。同時,Bergquist Company還積極尋求與其他企業(yè)的合作,通過技術(shù)交流和資源共享,不斷提升自身的競爭力。
為了進一步擴大市場份額,Bergquist Company開始積極拓展全球市場。公司先后在英國、德國、韓國等地設(shè)立了辦事機構(gòu),并在30多個國家設(shè)立了銷售代表處。這些舉措不僅使公司的產(chǎn)品和服務(wù)覆蓋了更廣泛的地區(qū),還為公司帶來了更多的商業(yè)機會。同時,Bergquist Company還積極尋求與其他企業(yè)的合作,通過技術(shù)交流和資源共享,不斷提升自身的競爭力。
在ELMEC Technology Of America Inc公司初創(chuàng)時期,創(chuàng)始人李明和他的團隊面臨著一個巨大的挑戰(zhàn):如何開發(fā)一款能在市場上脫穎而出的電子產(chǎn)品。經(jīng)過無數(shù)次的實驗和失敗,他們最終成功研發(fā)了一款高效能、低功耗的半導(dǎo)體芯片。這款芯片的問世不僅為公司帶來了第一筆可觀的收入,也奠定了ELMEC在電子行業(yè)的技術(shù)領(lǐng)先地位。
我現(xiàn)在在制作酒精測試儀,用的是MQ-3酒精傳感器,其用處是:將MQ-3采集到的數(shù)據(jù)進過AD轉(zhuǎn)換后,通過單片機處理,最后在LCD上顯示。 我不知道酒精濃度與電壓的對應(yīng)關(guān)系是怎么樣,沒有數(shù)據(jù)手冊。各位大師,誰用過的告訴一下 ...… 查看全部問答∨ |
|
(高價)(高價)(高價)誠激高手開發(fā):sock5全自動代理自助管理系統(tǒng),有技術(shù)者加QQ詳談,99040008 (高價)(高價)(高價)誠激高手開發(fā):sock5全自動代理自助管理系統(tǒng),有技術(shù)者加QQ詳談,99040008… 查看全部問答∨ |
怎樣把接收數(shù)據(jù)存到數(shù)據(jù)庫中 我想把串口接收到的數(shù)據(jù)存到數(shù)據(jù)庫中,要怎么實現(xiàn)???大家?guī)蛶兔Α?。。。多謝 我已經(jīng)試了在一個文件里定義一個變量,然后把值賦給變量,但是值傳不出去… 查看全部問答∨ |
STM8的EEPROM讀寫速度挺快的啊,經(jīng)測試發(fā)現(xiàn)并沒像datasheet說的那樣一個字節(jié)6.6ms, 下載 (49.52 KB) 2010-10-9 11:08 我是單字節(jié)寫的,似乎寫N個字節(jié)都是6點幾個ms,我是用示波器測得的 下載 (27.15 K ...… 查看全部問答∨ |
|
求freescale k40標(biāo)準(zhǔn)板的例程,本人新人,在此向各位前輩求助??! freescale k40標(biāo)準(zhǔn)板的例程,本人新人,在此向各位前輩求助??!… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 半導(dǎo)體關(guān)稅可能會使您的下一輛汽車更加昂貴
- 潮起!人形機器人成本的20%-30%——靈巧手,國產(chǎn)3大廠商正快速產(chǎn)業(yè)化!
- AB Dynamics發(fā)布用于無人駕駛測試的物體檢測系統(tǒng)
- AI重構(gòu)出行:高階輔助駕駛的破局之路
- 廣汽即將發(fā)布全新星源增程技術(shù)
- Yole表示,到2030年,數(shù)據(jù)中心芯片市場規(guī)模將達(dá)到5000億美元
- 綠色節(jié)能趨勢下的延時繼電器發(fā)展:低功耗設(shè)計與環(huán)保材料應(yīng)用
- 國內(nèi)車企在固態(tài)電池領(lǐng)域的挑戰(zhàn)和技術(shù)方案
- 資本熱捧 + 政策護航,2025 人形機器人能否叩開 “量產(chǎn)元年” 大門?
- 耐世特推出用于智能運動控制的 MotionIQ?軟件套件
- 創(chuàng)意改裝大比拼:給你一個升壓板和凈化器,你能改裝成啥?
- 相約秋色~相約北京~恩智浦工業(yè)和物聯(lián)網(wǎng)技術(shù)峰會 約起來!
- 降暑消消樂 和Silicon Labs一起消滅這包“以太網(wǎng)供電難題”
- 免費申請 | SFH 4713B紅外LED樣片,體驗革新性IR:6技術(shù)
- 搶樓有獎:免費獲得元器件樣品本~~
- 報名贏京東卡:安路FPGA研討會-成都站
- 3小時實戰(zhàn)+剖析:TI工程師手把手帶你全面入門MSP430(限量售$4.3開發(fā)套件,助你參與動手實驗)
- 有獎直播預(yù)報名|UWB市場新機遇
- 泰克多媒體總線專題之《DDR Memory》,下載贏好禮!
- 日韓紛爭下的DRAM市場將走向何方
- 【STM32CubeMX】3,STM32的HAL庫運用小方法
- 【STM32CubeMX】2,STM32CubeMX常用的自動生成函數(shù)
- 【STM32CubeMX】1,STM32之GPIO端口輸入模式配置
- 【STM32CubeMX】12,STM32之SPI串行FLASH
- 2018-2022年中國工業(yè)機器人市場及銷量預(yù)測
- 人工智能與人類共存的第一步,卻選擇了最艱難的一條路
- 工業(yè)機器人行業(yè)發(fā)展現(xiàn)狀分析 中國市場需求空間巨大
- 機器人索菲亞談信任:少拍機器與人類為敵的電影
- 三明首個法律智能機器人訪問量破五十八萬人次