⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial-eeprom-example.lst

📁 Library for the 8051 microcontroller. such as math routine, hexBCD, LCD, Keyboard, I2C, Remote, Ke
💻 LST
📖 第 1 页 / 共 3 页
字号:

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 1





       MCS-51 Family Macro Assembler   A S E M - 5 1   V 1.3
       =====================================================



	Source File:	E:\Electronics\MiCrOConTroller\Micro Programming\M-IDE\serial-eeprom\serial-eeprom-example.asm
	Object File:	E:\Electronics\MiCrOConTroller\Micro Programming\M-IDE\serial-eeprom\serial-eeprom-example.hex
	List File:	E:\Electronics\MiCrOConTroller\Micro Programming\M-IDE\serial-eeprom\serial-eeprom-example.lst



 Line  I  Addr  Code            Source

    1:
    2:				;a 93CS46 serial EEPROM connected to port 1
    3:
    4:				;when done accessing, cs and di should be left low
    5:				;and sk should be left high.  pe and pre should be
    6:				;left low, but that really isn't as important
    7:				;when data is output on the do pin, di must be low
    8:
    9:		B	 90	    cs bit p1.0 ;0x90    ; p1.0 - CS - Chip Select
   10:		B	 91	    sk bit p1.1 ;0x91    ; p1.1 - SK - Clock
   11:		B	 92	    di bit p1.2 ;0x92    ; p1.2 - DI - Data Input
   12:		B	 93	    do bit p1.3 ;0x93    ; p1.3 - DO - Data Output
   13:		B	 94	    pe bit p1.4 ;0x94    ; p1.4 - PE - Program Enable
   14:		B	 95	   pre bit p1.5 ;0x95    ; p1.5 - PRE - Protect Reg. En.
   15:
   16:				;********************************************************
   17:				;                 some initial setup
   18:				;********************************************************
   19:
   20:		N      0030		stack equ 30h
   21:		N      00FD		baud_const equ 253  ;19200 baud w/ 11.0592 MHz cyrstal
   22:
   23:	  0000	D2 94		        setb    pe
   24:	  0002	D2 95		        setb    pre
   25:	  0004	C2 92		        clr     di
   26:	  0006	D2 93		        setb    do
   27:	  0008	C2 90		        clr     cs
   28:	  000A	D2 91		        setb    sk
   29:
   30:				;********************************************************
   31:				;                The user interface
   32:				;********************************************************
   33:
   34:	  000C			main:
   35:	  000C	90 00 14	        mov     dptr, #menu_mesg
   36:	  000F	12 01 9B	        lcall   pstr
   37:	  0012	80 30		        sjmp    main_loop
   38:	  0014	0D 0A		menu_mesg: db  13,10
   39:	  0016	20 72 20 3D	        db     " r = read eeprom",13,10
	  001A	20 72 65 61
	  001E	64 20 65 65
	  0022	70 72 6F 6D
	  0026	0D 0A

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 2



 Line  I  Addr  Code            Source

   40:	  0028	20 65 20 3D	        db     " e = edit eeprom memory",13,10
	  002C	20 65 64 69
	  0030	74 20 65 65
	  0034	70 72 6F 6D
	  0038	20 6D 65 6D
	  003C	6F 72 79 0D
	  0040	0A
   41:	  0041	0D 0A 00	        db     13,10,0
   42:
   43:	  0044			main_loop:
   44:
   45:	  0044	12 01 57	        lcall   cin
   46:	  0047	B4 72 17	        cjne    a, #'r', main2
   47:	  004A	90 00 53	        mov     dptr, #readmesg
   48:	  004D	12 01 9B	        lcall   pstr
   49:	  0050	02 00 84	        ljmp    readit
   50:	  0053	72 65 61 64	readmesg: db    "read eeprom",13,10,0
	  0057	20 65 65 70
	  005B	72 6F 6D 0D
	  005F	0A 00
   51:	  0061	B4 65 1E	main2:  cjne    a, #'e', main3
   52:	  0064	90 00 6D	        mov     dptr, #editmesg
   53:	  0067	12 01 9B	        lcall   pstr
   54:	  006A	02 00 C4	        ljmp    editit
   55:	  006D	65 64 69 74	editmesg: db    "edit eeprom memory",13,10,0
	  0071	20 65 65 70
	  0075	72 6F 6D 20
	  0079	6D 65 6D 6F
	  007D	72 79 0D 0A
	  0081	00
   56:	  0082			main3:
   57:	  0082	80 C0		        sjmp    main_loop
   58:
   59:
   60:	  0084			readit:
   61:	  0084	78 00		        mov     r0, #0
   62:
   63:	  0086			readback:
   64:	  0086	E8		        mov     a, r0
   65:	  0087	54 07		        anl     a, #00000111b
   66:	  0089	70 11		        jnz     readbk2
   67:	  008B	12 01 67	        lcall   newline
   68:	  008E	E8		        mov     a, r0
   69:	  008F	12 01 74	        lcall   phex
   70:	  0092	74 3A		        mov     a, #':'
   71:	  0094	12 01 5F	        lcall   cout
   72:	  0097	74 20		        mov     a, #' '
   73:	  0099	12 01 5F	        lcall   cout
   74:	  009C			readbk2:
   75:	  009C	12 02 C7	        lcall   read
   76:	  009F	EA		        mov     a, r2
   77:	  00A0	12 01 74	        lcall   phex
   78:	  00A3	EB		        mov     a, r3
   79:	  00A4	12 01 74	        lcall   phex
   80:	  00A7	74 20		        mov     a, #' '
   81:	  00A9	12 01 5F	        lcall   cout

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 3



 Line  I  Addr  Code            Source

   82:	  00AC	08		        inc     r0
   83:	  00AD	B8 40 D6	        cjne    r0, #64, readback
   84:	  00B0	12 01 67	        lcall   newline
   85:
   86:	  00B3	12 04 77	        lcall   wen
   87:	  00B6	12 03 5D	        lcall   pren
   88:	  00B9	78 00		        mov     r0, #0
   89:	  00BB	12 04 3D	        lcall   prwrite
   90:	  00BE	12 04 B9	        lcall   wds
   91:
   92:	  00C1	02 00 44	        ljmp    main_loop
   93:
   94:
   95:	  00C4			editit:
   96:
   97:	  00C4	90 01 28	        mov     dptr, #locmesg
   98:	  00C7	12 01 9B	        lcall   pstr
   99:	  00CA	12 02 3A	        lcall   ghex8
  100:	  00CD	54 3F		        anl     a, #00111111b
  101:	  00CF	C0 E0		        push    acc
  102:	  00D1	12 01 67	        lcall   newline
  103:	  00D4	90 01 3F	        mov     dptr, #valmesg
  104:	  00D7	12 01 9B	        lcall   pstr
  105:	  00DA	12 01 AF	        lcall   ghex16
  106:	  00DD	EB		        mov     a, r3
  107:	  00DE	C0 E0		        push    acc
  108:	  00E0	EA		        mov     a, r2
  109:	  00E1	C0 E0		        push    acc
  110:	  00E3	12 01 67	        lcall   newline
  111:
  112:	  00E6	12 04 77	        lcall   wen             ;turn on write enable mode
  113:	  00E9	12 03 5D	        lcall   pren            ;enable the protect register
  114:	  00EC	12 03 9F	        lcall   prclear         ;turn off write protection
  115:
  116:	  00EF	D0 E0		        pop     acc
  117:	  00F1	FB		        mov     r3, a
  118:	  00F2	D0 E0		        pop     acc
  119:	  00F4	FA		        mov     r2, a
  120:	  00F5	D0 E0		        pop     acc
  121:	  00F7	F8		        mov     r0, a
  122:
  123:	  00F8	12 03 0D	        lcall   write           ;write test two bytes
  124:	  00FB	12 04 B9	        lcall   wds
  125:	  00FE	90 01 1C	        mov     dptr, #wrote1
  126:	  0101	12 01 9B	        lcall   pstr
  127:	  0104	EA		        mov     a, r2
  128:	  0105	12 01 74	        lcall   phex
  129:	  0108	EB		        mov     a, r3
  130:	  0109	12 01 74	        lcall   phex
  131:	  010C	90 01 23	        mov     dptr, #wrote2
  132:	  010F	12 01 9B	        lcall   pstr
  133:	  0112	E8		        mov     a, r0
  134:	  0113	12 01 74	        lcall   phex
  135:	  0116	12 01 67	        lcall   newline
  136:
  137:	  0119	02 00 44	        ljmp    main_loop

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 4



 Line  I  Addr  Code            Source

  138:
  139:	  011C	77 72 6F 74	wrote1:  db     "wrote ", 0
	  0120	65 20 00
  140:	  0123	20 74 6F 20	wrote2:  db     " to ",0
	  0127	00
  141:
  142:	  0128	57 6F 72 64	locmesg: db     "Word location (0-63): ",0
	  012C	20 6C 6F 63
	  0130	61 74 69 6F
	  0134	6E 20 28 30
	  0138	2D 36 33 29
	  013C	3A 20 00
  143:	  013F	31 36 20 62	valmesg: db     "16 bit value to write: ",0
	  0143	69 74 20 76
	  0147	61 6C 75 65
	  014B	20 74 6F 20
	  014F	77 72 69 74
	  0153	65 3A 20 00
  144:
  145:
  146:				;********************************************************
  147:				;                 built-in UART subroutines
  148:				;********************************************************
  149:
  150:
  151:	  0157	30 98 FD	cin:    jnb     ri, cin
  152:	  015A	C2 98		        clr     ri
  153:	  015C	E5 99		        mov     a, sbuf
  154:	  015E	22		        ret
  155:
  156:	  015F	30 99 FD	cout:   jnb     ti, cout
  157:	  0162	F5 99		        mov     sbuf, a
  158:	  0164	C2 99		        clr     ti
  159:	  0166	22		        ret
  160:
  161:	  0167	C0 E0		newline:push    acc
  162:	  0169	74 0D		        mov     a, #13
  163:	  016B	31 5F		        acall   cout
  164:	  016D	74 0A		        mov     a, #10
  165:	  016F	31 5F		        acall   cout
  166:	  0171	D0 E0		        pop     acc
  167:	  0173	22		        ret
  168:
  169:	  0174			phex:
  170:	  0174			phex8:
  171:	  0174	C0 E0		        push    acc
  172:	  0176	C4		        swap    a
  173:	  0177	54 0F		        anl     a, #15
  174:	  0179	24 F6		        add     a, #246
  175:	  017B	50 02		        jnc     phex_b
  176:	  017D	24 07		        add     a, #7
  177:	  017F	24 3A		phex_b: add     a, #58
  178:	  0181	31 5F		        acall   cout
  179:	  0183	D0 E0		        pop     acc
  180:	  0185	C0 E0		phex1:  push    acc
  181:	  0187	54 0F		        anl     a, #15

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 5



 Line  I  Addr  Code            Source

  182:	  0189	24 F6		        add     a, #246
  183:	  018B	50 02		        jnc     phex_c
  184:	  018D	24 07		        add     a, #7
  185:	  018F	24 3A		phex_c: add     a, #58
  186:	  0191	31 5F		        acall   cout
  187:	  0193	D0 E0		        pop     acc
  188:	  0195	22		        ret
  189:
  190:	  0196			space:
  191:	  0196	74 20		        mov     a, #' '
  192:	  0198	31 5F		        acall   cout
  193:	  019A	22		        ret
  194:
  195:	  019B			PSTR:                  ;print string
  196:	  019B	C0 E0		        PUSH    ACC
  197:	  019D	E4		PSTR1:  CLR     A
  198:	  019E	93		        MOVC    A,@A+DPTR
  199:	  019F	60 0B		        JZ      PSTR2
  200:	  01A1	A2 E7		        mov     c, acc.7
  201:	  01A3	54 7F		        anl     a, #01111111b
  202:	  01A5	31 5F		        acall   cout
  203:	  01A7	40 03		        Jc      pstr2
  204:	  01A9	A3		        inc     dptr
  205:	  01AA	80 F1		        SJMP    PSTR1
  206:	  01AC	D0 E0		PSTR2:  POP     ACC
  207:	  01AE	22		        RET
  208:
  209:				        ;carry set if esc pressed
  210:				        ;psw.5 set if return pressed w/ no input
  211:	  01AF			ghex16:
  212:	  01AF	7A 00		        mov     r2, #0          ;start out with 0
  213:	  01B1	7B 00		        mov     r3, #0
  214:	  01B3	7C 04		        mov     r4, #4          ;number of digits left
  215:	  01B5	C2 D5		        clr     psw.5
  216:
  217:	  01B7			ghex16c:
  218:	  01B7	12 01 57	        lcall   cin
  219:	  01BA	12 02 7E	        lcall   upper
  220:	  01BD	B4 1B 02	        cjne    a, #27, ghex16d
  221:	  01C0	D3		        setb    c               ;handle esc key
  222:	  01C1	22		        ret
  223:	  01C2	B4 08 02	ghex16d:cjne    a, #8, ghex16f
  224:	  01C5	80 03		        sjmp    ghex16k
  225:	  01C7	B4 7F 0D	ghex16f:cjne    a, #127, ghex16g  ;handle backspace
  226:	  01CA	BC 04 02	ghex16k:cjne    r4, #4, ghex16e   ;have they entered anything yet?
  227:	  01CD	80 E8		        sjmp    ghex16c
  228:	  01CF	12 01 5F	ghex16e:lcall   cout
  229:	  01D2	51 0B		        acall   ghex16y
  230:	  01D4	0C		        inc     r4
  231:	  01D5	80 E0		        sjmp    ghex16c
  232:	  01D7	B4 0D 07	ghex16g:cjne    a, #13, ghex16i   ;return key
  233:	  01DA	BC 04 02	        cjne    r4, #4, ghex16h
  234:	  01DD	D2 D5		        setb    psw.5
  235:	  01DF	C3		ghex16h:clr     c
  236:	  01E0	22		        ret
  237:	  01E1	FD		ghex16i:mov     r5, a             ;keep copy of original keystroke

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 6



 Line  I  Addr  Code            Source

  238:	  01E2	51 1C		        acall   asc2hex
  239:	  01E4	40 D1		        jc      ghex16c
  240:	  01E6	CD		        xch     a, r5
  241:	  01E7	12 01 5F	        lcall   cout
  242:	  01EA	ED		        mov     a, r5
  243:	  01EB	C0 E0		        push    acc
  244:	  01ED	31 FA		        acall   ghex16x
  245:	  01EF	D0 E0		        pop     acc
  246:	  01F1	2A		        add     a, r2
  247:	  01F2	FA		        mov     r2, a
  248:	  01F3	E4		        clr     a
  249:	  01F4	3B		        addc    a, r3
  250:	  01F5	FB		        mov     r3, a
  251:	  01F6	DC BF		        djnz    r4, ghex16c
  252:	  01F8	C3		        clr     c
  253:	  01F9	22		        ret
  254:
  255:	  01FA			ghex16x:  ;multiply r3-r2 by 16 (shift left by 4)
  256:	  01FA	EB		        mov     a, r3
  257:	  01FB	C4		        swap    a
  258:	  01FC	54 F0		        anl     a, #11110000b
  259:	  01FE	FB		        mov     r3, a
  260:	  01FF	EA		        mov     a, r2
  261:	  0200	C4		        swap    a
  262:	  0201	54 0F		        anl     a, #00001111b
  263:	  0203	4B		        orl     a, r3
  264:	  0204	FB		        mov     r3, a
  265:	  0205	EA		        mov     a, r2
  266:	  0206	C4		        swap    a
  267:	  0207	54 F0		        anl     a, #11110000b
  268:	  0209	FA		        mov     r2, a
  269:	  020A	22		        ret
  270:
  271:	  020B			ghex16y:  ;divide r3-r2 by 16 (shift right by 4)
  272:	  020B	EA		        mov     a, r2
  273:	  020C	C4		        swap    a
  274:	  020D	54 0F		        anl     a, #00001111b
  275:	  020F	FA		        mov     r2, a
  276:	  0210	EB		        mov     a, r3
  277:	  0211	C4		        swap    a

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -