历史上的今天
今天是:2025年01月25日(星期六)
2018年01月25日 | HT48R50A的 93C46示例程序
2018-01-25 来源:eefocus
; **********
**********************************
; 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
史海拾趣
|
嗨, 本来想看点电视节目的,关注关注国家大事什么的............... 但是还是习惯看看单片机论坛,查查资料什么的 ............ 我这陋习真难改...........… 查看全部问答> |
|
前两天你在网上下了个700多M的keil3来用!好不容易装好了发现memory window 里没法显示内存数据! 看了半天发现是字体的问题,memory window 的字体默认的是1295711,一般编译框里字体是10或0,但是没办法修改!今天弄了一天都没办法,字体太小, ...… 查看全部问答> |
|
在ModelSim安装成功后应该是在.....\\ModelSim\\examples\\tutorials\\verilog\\basicSimulation的目录下,有一个counter.v和tcounter.v的两个文件, 主要的疑问就是在count.v中为什么要加入function那一块?老是无法明了。 疑问的部分就是大号粗 ...… 查看全部问答> |




