📄 init_e2p.lst
字号:
INIT_E2P PAGE 1
1 ;*******************************************************************************************
***********
2 ; INIT_EEPROM (PROGRAM INITIALIZES I2C EEPROM)
3 ; Author: Arun Kumar Vadla
4 ;*******************************************************************************************
***********
5 ; XTAL Freq = 12 MHz
6
7 $MOD51
8
9
0090 10 LCD EQU P1 ; P1.0 .....P1.7, PORT1 USED AS DATA BUS
00B2 11 RS EQU P3.2
00B3 12 RW EQU P3.3
00B7 13 EN EQU P3.7
14
00B4 15 DISTO EQU P3.4 ; TIMER 0 INPUT FOR DISTANCE-ODOMETER
00B5 16 SPEDO EQU P3.5 ; TIMER 1 INPUT FOR SPEEDOMETER
17
18
00B0 19 SCL EQU P3.0 ;SCL=PIN6
00B1 20 SDA EQU P3.1 ;SDA=PIN5
21
00A0 22 EEPROMW EQU 10100000B ; SLAVE ADDRESS OF EEPROM 1010 000 + 0 TO WRITE
00A1 23 EEPROMR EQU 10100001B ; SLAVE ADDRESS OF EEPROM 1010 000 + 1 TO READ
24
25
26
---- 27 DSEG
0020 28 ORG 020H ; BIT-ADDRESSABLE RAM
29
0020 30 FLAGS: DS 1 ; VARIABLES FOR I2C PROTOCOL
0000 31 LASTREAD BIT FLAGS.0
0004 32 SQW BIT FLAGS.4
0005 33 ACK BIT FLAGS.5
0006 34 BUS_FLT BIT FLAGS.6
0007 35 _2W_BUSY BIT FLAGS.7
0001 36 OK BIT 1
0001 37 STORE BIT 1
0021 38 BITCNT: DS 1
0022 39 BYTECNT: DS 1
0023 40 POINT: DS 1 ; DISTANCE VARIABLES
0024 41 KM: DS 1
0025 42 TKM: DS 1
0026 43 HKM: DS 1
0027 44 KKM: DS 1
0028 45 TKKM: DS 1
0029 46 TOTAL: DS 1
47
48
49 ; ***MACRO'S***
50
51 SCL_HIGH MACRO
52 SETB SCL ; SET SCL HIGH
53 JNB SCL,$ ; LOOP UNTIL STRONG 1 ON SCL
54 ENDM
55
56
INIT_E2P PAGE 2
57 CONVERT MACRO
58 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
59 ENDM
60
61
---- 62 CSEG ; CODE BEGINS HERE
0000 63 ORG 0000H ; ON RESET
64
0000 8000 65 SJMP MAIN
66
67 ;ORG 000BH ;Timer Interrupt0
68
69 ;LJMP UPDATE
70
71
72
0002 758170 73 MAIN: MOV SP,#70H ; MOVE STACK POINTER TO ADDRESS 70H OF RAM
0005 1201D5 74 LCALL PWR_DELAY ;LCD POWER ON DELAY
0008 1200A4 75 LCALL INIT ;INITIALIZE LCD
76
000B 752300 77 TRY_AGAIN:MOV POINT,#00H
000E 752400 78 MOV KM,#00H
0011 752500 79 MOV TKM,#00H
0014 752600 80 MOV HKM,#00H
0017 752700 81 MOV KKM,#00H
001A 752800 82 MOV TKKM,#00H
83
84
001D 1201A6 85 LCALL SEND2EEPROM
0020 1201DE 86 LCALL DELAY
0023 752301 87 MOV POINT,#1H
0026 752402 88 MOV KM,#2H
0029 752503 89 MOV TKM,#3H
002C 752604 90 MOV HKM,#4H
002F 752705 91 MOV KKM,#5H
0032 752806 92 MOV TKKM,#6H
0035 120169 93 LCALL READEEPROM
0038 120041 94 LCALL SEND2LCD ; DISPLAY INITIAL/PREVIOUS VALUES
003B E523 95 MOV A,POINT
003D 70CC 96 JNZ TRY_AGAIN
003F 80FE 97 SJMP $
98
99
100
101
102
0041 103 SEND2LCD:
104
0041 74C0 105 MOV A,#0C0H ; LINE 1
0043 120095 106 LCALL CMD
107
0046 E528 108 MOV A,TKKM
109 +1 CONVERT
0048 4430 110 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
004A 120086 112 LCALL DAT
113
114
004D E527 115 MOV A,KKM
INIT_E2P PAGE 3
116 +1 CONVERT
004F 4430 117 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
0051 120086 119 LCALL DAT
120
0054 E526 121 MOV A,HKM
122 +1 CONVERT
0056 4430 123 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
0058 120086 125 LCALL DAT
126
005B E525 127 MOV A,TKM
128 +1 CONVERT
005D 4430 129 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
005F 120086 131 LCALL DAT
132
0062 E524 133 MOV A,KM
134 +1 CONVERT
0064 4430 135 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
0066 120086 137 LCALL DAT
138
0069 742E 139 MOV A,#'.'
006B 120086 140 LCALL DAT
141
006E E523 142 MOV A,POINT
143 +1 CONVERT
0070 4430 144 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
0072 120086 146 LCALL DAT
147
148
0075 22 149 RET
150
151
152 ;****************************LCD SUBROUTINES****************************************
153
0076 D2B7 154 READY:SETB EN ;H->L PULSE ON E
0078 C2B2 155 CLR RS ;RS=0 CMD
007A D2B3 156 SETB RW ;RW=1 FOR READ
007C D297 157 SETB P1.7 ;D7 AS INPUT
007E 2097F5 158 JB P1.7,READY
0081 C2B7 159 CLR EN
0083 C2B3 160 CLR RW
0085 22 161 RET
162 ;****************************LCD SUBROUTINES****************************************
163
0086 D2B7 164 DAT: SETB EN ;H->L PULSE ON E
0088 D2B2 165 SETB RS ;RS=1 DATA
008A C2B3 166 CLR RW ;RW=0 FOR WRITE
008C F590 167 MOV LCD,A ;MOVE ACC.DATA TO PORT
008E C2B7 168 CLR EN
0090 00 169 NOP
0091 120076 170 LCALL READY
0094 22 171 RET
172 ;****************************LCD SUBROUTINES****************************************
173
0095 D2B7 174 CMD: SETB EN ;H->L PULSE ON E
0097 C2B2 175 CLR RS ;RS=0 FOR COMMAND
0099 C2B3 176 CLR RW ;RW=0 FOR WRITE
009B F590 177 MOV LCD,A ;MOVE ACC. DATA TO PORT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -