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

📄 serial-eeprom-example.lst

📁 Library for the 8051 microcontroller. such as math routine, hexBCD, LCD, Keyboard, I2C, Remote, Ke
💻 LST
📖 第 1 页 / 共 3 页
字号:
  278:	  0212	54 F0		        anl     a, #11110000b
  279:	  0214	4A		        orl     a, r2
  280:	  0215	FA		        mov     r2, a
  281:	  0216	EB		        mov     a, r3
  282:	  0217	C4		        swap    a
  283:	  0218	54 0F		        anl     a, #00001111b
  284:	  021A	FB		        mov     r3, a
  285:	  021B	22		        ret
  286:
  287:	  021C			asc2hex:             ;carry set if invalid input
  288:	  021C	C3		        clr     c
  289:	  021D	C0 F0		        push    b
  290:	  021F	94 30		        subb    a, #'0'
  291:	  0221	F5 F0		        mov     b, a
  292:	  0223	94 0A		        subb    a, #10
  293:	  0225	40 06		        jc      a2h1

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 7



 Line  I  Addr  Code            Source

  294:	  0227	E5 F0		        mov     a, b
  295:	  0229	94 07		        subb    a, #7
  296:	  022B	F5 F0		        mov     b, a
  297:	  022D	E5 F0		a2h1:   mov     a, b
  298:	  022F	C3		        clr     c
  299:	  0230	54 F0		        anl     a, #11110000b    ;just in case
  300:	  0232	60 01		        jz      a2h2
  301:	  0234	D3		        setb    c
  302:	  0235	E5 F0		a2h2:   mov     a, b
  303:	  0237	D0 F0		        pop     b
  304:	  0239	22		        ret
  305:
  306:				        ;get 2 digit hex number from serial port
  307:				        ; c = set if ESC pressed, clear otherwise
  308:				        ; psw.5 = set if return w/ no input, clear otherwise
  309:	  023A			ghex:
  310:	  023A	C2 D5		ghex8:  clr     psw.5
  311:	  023C			ghex8c:
  312:	  023C	31 57		        acall   cin             ;get first digit
  313:	  023E	51 7E		        acall   upper
  314:	  0240	B4 1B 03	        cjne    a, #27, ghex8f
  315:	  0243	D3		ghex8d: setb    c
  316:	  0244	E4		        clr     a
  317:	  0245	22		        ret
  318:	  0246	B4 0D 05	ghex8f: cjne    a, #13, ghex8h
  319:	  0249	D2 D5		        setb    psw.5
  320:	  024B	C3		        clr     c
  321:	  024C	E4		        clr     a
  322:	  024D	22		        ret
  323:	  024E	FA		ghex8h: mov     r2, a
  324:	  024F	51 1C		        acall   asc2hex
  325:	  0251	40 E9		        jc      ghex8c
  326:	  0253	CA		        xch     a, r2           ;r2 will hold hex value of 1st digit
  327:	  0254	31 5F		        acall   cout
  328:	  0256			ghex8j:
  329:	  0256	31 57		        acall   cin             ;get second digit
  330:	  0258	51 7E		        acall   upper
  331:	  025A	B4 1B 02	        cjne    a, #27, ghex8k
  332:	  025D	80 E4		        sjmp    ghex8d
  333:	  025F	B4 0D 03	ghex8k: cjne    a, #13, ghex8m
  334:	  0262	EA		        mov     a, r2
  335:	  0263	C3		        clr     c
  336:	  0264	22		        ret
  337:	  0265	B4 08 04	ghex8m: cjne    a, #8, ghex8p
  338:	  0268	31 5F		ghex8n: acall   cout
  339:	  026A	80 D0		        sjmp    ghex8c
  340:	  026C	B4 15 02	ghex8p: cjne    a, #21, ghex8q
  341:	  026F	80 F7		        sjmp    ghex8n
  342:	  0271	FB		ghex8q: mov     r3, a
  343:	  0272	51 1C		        acall   asc2hex
  344:	  0274	40 E0		        jc      ghex8j
  345:	  0276	CB		        xch     a, r3
  346:	  0277	31 5F		        acall   cout
  347:	  0279	EA		        mov     a, r2
  348:	  027A	C4		        swap    a
  349:	  027B	4B		        orl     a, r3

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 8



 Line  I  Addr  Code            Source

  350:	  027C	C3		        clr     c
  351:	  027D	22		        ret
  352:
  353:	  027E			upper:  ;converts the ascii code in Acc to uppercase, if it is lowercase
  354:	  027E	C0 E0		        push    acc
  355:	  0280	C3		        clr     c
  356:	  0281	94 61		        subb    a, #97
  357:	  0283	40 09		        jc      upper2          ;is it a lowercase character
  358:	  0285	94 1A		        subb    a, #26
  359:	  0287	50 05		        jnc     upper2
  360:	  0289	D0 E0		        pop     acc
  361:	  028B	24 E0		        add     a, #224         ;convert to uppercase
  362:	  028D	22		        ret
  363:	  028E	D0 E0		upper2: pop     acc             ;don't change anything
  364:	  0290	22		        ret
  365:
  366:
  367:	  0291			poweron:
  368:	  0291	75 81 30	        MOV     SP, #stack
  369:	  0294	C2 D3		        clr     psw.3
  370:	  0296	C2 D4		        clr     psw.4
  371:	  0298	75 8D FD	        mov     th1, #baud_const
  372:	  029B	43 87 80	        orl     PCON,#10000000b  ; set double baud rate
  373:	  029E	75 89 21	        MOV     TMOD,#00100001b  ; T0=16 bit, T1=8 bit auto reload
  374:				                                 ; both are timers, software control
  375:	  02A1	75 98 52	        MOV     SCON,#01010010b  ; Set Serial for mode 1 &
  376:				                                 ; Enable reception, ti=1, ri=0
  377:	  02A4	43 88 55	        ORL     TCON,#01010101b  ; Start both timers, both int are
  378:				                                 ; falling edge trigger
  379:	  02A7	90 02 AE	        mov     dptr, #welcome
  380:	  02AA	31 9B		        acall   pstr
  381:	  02AC	01 0C		        ajmp    main
  382:
  383:	  02AE	53 65 72 69	welcome: db     "Serial EEPROM tester",13,10,13,10,0
	  02B2	61 6C 20 45
	  02B6	45 50 52 4F
	  02BA	4D 20 74 65
	  02BE	73 74 65 72
	  02C2	0D 0A 0D 0A
	  02C6	00
  384:
  385:
  386:				;********************************************************
  387:				;     and here's where all the dirty work is done
  388:				;********************************************************
  389:
  390:
  391:	  02C7			read:   ;r0 is word address to read, data is returned in
  392:				        ;r2 (lsb) and r3 (msb)
  393:
  394:	  02C7	C2 95		        clr     pre
  395:	  02C9	D2 90		        setb    cs
  396:	  02CB	00		        nop
  397:
  398:	  02CC	C2 91		        clr     sk
  399:	  02CE	D2 92		        setb    di      ;the start bit

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 9



 Line  I  Addr  Code            Source

  400:	  02D0	D2 91		        setb    sk
  401:	  02D2	C2 91		        clr     sk
  402:	  02D4	00		        nop
  403:	  02D5	D2 91		        setb    sk      ;another '1'
  404:	  02D7	C2 91		        clr     sk
  405:	  02D9	C2 92		        clr     di      ;and a '0'
  406:	  02DB	D2 91		        setb    sk
  407:
  408:	  02DD	7C 06		        mov     r4, #6
  409:	  02DF	E8		        mov     a, r0
  410:	  02E0	23		        rl      a
  411:	  02E1	23		        rl      a
  412:	  02E2	33		read2:  rlc     a
  413:	  02E3	C2 91		        clr     sk
  414:	  02E5	92 92		        mov     di, c   ;and do each address bit
  415:	  02E7	D2 91		        setb    sk
  416:	  02E9	DC F7		        djnz    r4, read2
  417:	  02EB	C2 92		        clr     di
  418:
  419:	  02ED	7C 08		        mov     r4, #8
  420:	  02EF	E4		        clr     a
  421:	  02F0	C2 91		read3:  clr     sk
  422:	  02F2	00		        nop
  423:	  02F3	D2 91		        setb    sk
  424:	  02F5	A2 93		        mov     c, do
  425:	  02F7	33		        rlc     a
  426:	  02F8	DC F6		        djnz    r4, read3
  427:	  02FA	FB		        mov     r3, a
  428:	  02FB	7C 08		        mov     r4, #8
  429:	  02FD	E4		        clr     a
  430:	  02FE	C2 91		read4:  clr     sk
  431:	  0300	D2 91		        setb    sk
  432:	  0302	A2 93		        mov     c, do
  433:	  0304	33		        rlc     a
  434:	  0305	DC F7		        djnz    r4, read4
  435:	  0307	FA		        mov     r2, a
  436:	  0308	C2 90		        clr     cs
  437:	  030A	C2 92		        clr     di
  438:	  030C	22		        ret
  439:
  440:				;********************************************************
  441:
  442:	  030D			write:  ;r0 is word address to write, r2 (lsb) and r3 (msb)
  443:	  030D	C2 95		        clr     pre
  444:	  030F	D2 94		        setb    pe
  445:	  0311	D2 90		        setb    cs
  446:	  0313	00		        nop
  447:	  0314	C2 91		        clr     sk
  448:	  0316	D2 92		        setb    di      ;the start bit
  449:	  0318	D2 91		        setb    sk
  450:	  031A	C2 91		        clr     sk
  451:	  031C	C2 92		        clr     di      ;a '0'
  452:	  031E	D2 91		        setb    sk
  453:	  0320	C2 91		        clr     sk
  454:	  0322	D2 92		        setb    di      ;a '1'
  455:	  0324	D2 91		        setb    sk

ASEM-51 V1.3                                        Copyright (c) 2002 by W.W. Heinz                                         PAGE 10



 Line  I  Addr  Code            Source

  456:
  457:	  0326	7C 06		        mov     r4, #6
  458:	  0328	E8		        mov     a, r0
  459:	  0329	23		        rl      a
  460:	  032A	23		        rl      a
  461:	  032B	33		write2: rlc     a
  462:	  032C	C2 91		        clr     sk
  463:	  032E	92 92		        mov     di, c   ;and do each address bit
  464:	  0330	D2 91		        setb    sk
  465:	  0332	DC F7		        djnz    r4, write2
  466:
  467:	  0334	EB		        mov     a, r3
  468:	  0335	7C 08		        mov     r4, #8
  469:	  0337	C2 91		write3: clr     sk
  470:	  0339	33		        rlc     a
  471:	  033A	92 92		        mov     di, c
  472:	  033C	D2 91		        setb    sk
  473:	  033E	DC F7		        djnz    r4, write3
  474:	  0340	EA		        mov     a, r2
  475:	  0341	7C 08		        mov     r4, #8
  476:	  0343	C2 91		write4: clr     sk
  477:	  0345	33		        rlc     a
  478:	  0346	92 92		        mov     di, c
  479:	  0348	D2 91		        setb    sk
  480:	  034A	DC F7		        djnz    r4, write4
  481:	  034C	C2 92		        clr     di
  482:	  034E	C2 90		        clr     cs
  483:	  0350	00		        nop
  484:	  0351	D2 90		        setb    cs
  485:	  0353	00		        nop
  486:	  0354	00		        nop
  487:	  0355	A2 93		write5: mov     c, do
  488:	  0357	50 FC		        jnc     write5
  489:	  0359	00		        nop
  490:	  035A	C2 90		        clr     cs
  491:	  035C	22		        ret
  492:
  493:				;********************************************************
  494:
  495:	  035D			pren:   ;enable the protection register (for next cycle)
  496:	  035D	D2 95		        setb    pre
  497:	  035F	D2 94		        setb    pe
  498:	  0361	D2 90		        setb    cs
  499:	  0363	00		        nop
  500:	  0364	C2 91		        clr     sk
  501:	  0366	D2 92		        setb    di      ;the start bit
  502:	  0368	D2 91		        setb    sk
  503:	  036A	C2 91		        clr     sk
  504:	  036C	C2 92		        clr     di      ;a '0'
  505:	  036E	D2 91		        setb    sk
  506:	  0370	C2 91		        clr     sk
  507:	  0372	C2 92		        clr     di      ;a '0'
  508:	  0374	D2 91		        setb    sk
  509:	  0376	C2 91		        clr     sk
  510:	  0378	D2 92		        setb    di      ;a '1'
  511:	  037A	D2 91		        setb    sk

ASEM-51 V1.3                                        Copyright (c) 2002 by W.W. Heinz                                         PAGE 11



 Line  I  Addr  Code            Source

  512:	  037C	C2 91		        clr     sk
  513:	  037E	D2 92		        setb    di      ;a '1'
  514:	  0380	D2 91		        setb    sk
  515:	  0382	C2 91		        clr     sk
  516:	  0384	C2 92		        clr     di      ;a '0'
  517:	  0386	D2 91		        setb    sk
  518:	  0388	C2 91		        clr     sk
  519:	  038A	C2 92		        clr     di      ;a '0'
  520:	  038C	D2 91		        setb    sk
  521:	  038E	C2 91		        clr     sk
  522:	  0390	C2 92		        clr     di      ;a '0'
  523:	  0392	D2 91		        setb    sk
  524:	  0394	C2 91		        clr     sk
  525:	  0396	C2 92		        clr     di      ;a '0'
  526:	  0398	D2 91		        setb    sk
  527:	  039A	C2 90		        clr     cs
  528:	  039C	C2 95		        clr     pre
  529:	  039E	22		        ret
  530:
  531:				;********************************************************
  532:
  533:	  039F			prclear:
  534:	  039F	D2 95		        setb    pre
  535:	  03A1	D2 94		        setb    pe
  536:	  03A3	D2 90		        setb    cs
  537:	  03A5	00		        nop
  538:	  03A6	C2 91		        clr     sk
  539:	  03A8	D2 92		        setb    di      ;the start bit
  540:	  03AA	D2 91		        setb    sk
  541:	  03AC	C2 91		        clr     sk
  542:	  03AE	D2 92		        setb    di      ;a '1'
  543:	  03B0	D2 91		        setb    sk
  544:	  03B2	C2 91		        clr     sk
  545:	  03B4	D2 92		        setb    di      ;a '1'
  546:	  03B6	D2 91		        setb    sk
  547:	  03B8	C2 91		        clr     sk
  548:	  03BA	D2 92		        setb    di      ;a '1'
  549:	  03BC	D2 91		        setb    sk
  550:	  03BE	C2 91		        clr     sk
  551:	  03C0	D2 92		        setb    di      ;a '1'
  552:	  03C2	D2 91		        setb    sk
  553:	  03C4	C2 91		        clr     sk
  554:	  03C6	D2 92		        setb    di      ;a '1'
  555:	  03C8	D2 91		        setb    sk
  556:	  03CA	C2 91		        clr     sk
  557:	  03CC	D2 92		        setb    di      ;a '1'
  558:	  03CE	D2 91		        setb    sk
  559:	  03D0	C2 91		        clr     sk
  560:	  03D2	D2 92		        setb    di      ;a '1'
  561:	  03D4	D2 91		        setb    sk
  562:	  03D6	C2 91		        clr     sk
  563:	  03D8	D2 92		        setb    di      ;a '1'
  564:	  03DA	D2 91		        setb    sk
  565:	  03DC	C2 92		        clr     di
  566:	  03DE	C2 90		        clr     cs
  567:	  03E0	C2 95		        clr     pre

ASEM-51 V1.3                                        Copyright (c) 2002 by W.W. Heinz                                         PAGE 12



 Line  I  Addr  Code            Source

  568:	  03E2	00		        nop
  569:	  03E3	D2 90		        setb    cs
  570:	  03E5	00		        nop
  571:	  03E6	00		        nop
  572:	  03E7	A2 93		prclr5: mov     c, do
  573:	  03E9	50 FC		        jnc     prclr5
  574:	  03EB	00		        nop
  575:	  03EC	C2 90		        clr     cs
  576:	  03EE	22		        ret
  577:
  578:				;********************************************************
  579:
  580:	  03EF			prds:   ;permantly fix protect register!!!
  581:	  03EF	D2 95		        setb    pre
  582:	  03F1	D2 94		        setb    pe
  583:	  03F3	D2 90		        setb    cs
  584:	  03F5	00		        nop
  585:	  03F6	C2 91		        clr     sk
  586:	  03F8	D2 92		        setb    di      ;the start bit
  587:	  03FA	D2 91		        setb    sk
  588:	  03FC	C2 91		        clr     sk
  589:	  03FE	C2 92		        clr     di      ;a '0'
  590:	  0400	D2 91		        setb    sk
  591:	  0402	C2 91		        clr     sk

⌨️ 快捷键说明

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