📄 eeprom.lst
字号:
+0 680 680 ;write: 16bit data in bc--->a--->EEPROM
+0 681 681 ;read: 16bit data in EEPTROM--->a--->bc
+0 682 682 ;used general register: w,a,bc,de
+0 683 683 ;=========================================================================
00000000 +0 684 684 ee_enable: ;instruction 0011xxxx send to EEPROM
00000000 E10000C4 R +0 685 685 set (FLG_2).4
00000004 C500 R +0 686 686 set (P0CR).EP_DIO ;as output port
00000006 CD00 R +0 687 687 clr (P0DR).EP_DIO ;
00000008 00 +0 688 688 nop ;V1.34
00000009 00 +0 689 689 nop ;V1.34
0000000A 00 +0 690 690 nop ;V1.34
0000000B C700 R +0 691 691 set (P0DR).EP_CS
0000000D FD0000 R +0 692 692 call ee_wait_10_nop ;V1.34
00000010 FD0000 R +0 693 693 call high_out ;outpu high level from port EP_DIO; start bit is high
00000013 1830 +0 694 694 ld a,0y00110000 ;instructin Write Enable
00000015 FD0000 R +0 695 695 call data_out
00000018 CF00 R +0 696 696 clr (P0DR).EP_CS
0000001A 00 +0 697 697 nop ;V1.34
0000001B 00 +0 698 698 nop ;V1.34
0000001C 00 +0 699 699 nop ;V1.34
0000001D C500 R +0 700 700 set (P0CR).EP_DIO ;as output port
0000001F CD00 R +0 701 701 clr (P0DR).EP_DIO ;
00000021 00 +0 702 702 nop
00000022 E10000CC R +0 703 703 clr (FLG_2).4
00000026 FA +0 704 704 ret
+0 705 705 ;=====================================================
00000027 +0 706 706 ee_disable: ;instruction 0000xxxx send to EEPROM
00000027 E10000C4 R +0 707 707 set (FLG_2).4
0000002B C500 R +0 708 708 set (P0CR).EP_DIO ;as output port
0000002D CD00 R +0 709 709 clr (P0DR).EP_DIO ;
0000002F 00 +0 710 710 nop ;V1.34
00000030 00 +0 711 711 nop ;V1.34
00000031 00 +0 712 712 nop ;V1.34
00000032 C700 R +0 713 713 set (P0DR).EP_CS
00000034 FD0000 R +0 714 714 call ee_wait_10_nop ;V1.34
00000037 FD0000 R +0 715 715 call high_out
0000003A 1800 +0 716 716 ld a,0y00000000
0000003C FD0000 R +0 717 717 call data_out
0000003F CF00 R +0 718 718 clr (P0DR).EP_CS
00000041 00 +0 719 719 nop ;V1.34
00000042 00 +0 720 720 nop ;V1.34
00000043 00 +0 721 721 nop ;V1.34
00000044 00 +0 722 722 nop ;V1.34
00000045 C500 R +0 723 723 set (P0CR).EP_DIO ;as output port
00000047 CD00 R +0 724 724 clr (P0DR).EP_DIO ;
00000049 00 +0 725 725 nop
0000004A E10000CC R +0 726 726 clr (FLG_2).4
0000004E FA +0 727 727 ret
+0 728 728 ;=====================================================
0000004F +0 729 729 high_out: ;output high level from port EP_DIO
0000004F C500 R +0 730 730 set (P0DR).EP_DIO
00000051 FD0000 R +0 731 731 call ee_wait_10_nop ;V1.34
00000054 C600 R +0 732 732 set (P0DR).EP_SK
00000056 FD0000 R +0 733 733 call ee_wait_10_nop ;V1.34
00000059 00 +0 734 734 nop ;SK _HHHHHH____
0000005A 00 +0 735 735 nop ;DIO ___HHH_____
0000005B CE00 R +0 736 736 clr (P0DR).EP_SK
0000005D 00 +0 737 737 nop ;
0000005E 00 +0 738 738 nop
0000005F FA +0 739 739 ret ;
+0 740 740 ;=====================================================
00000060 +0 741 741 low_out: ;output low level from port EP_DIO
00000060 CD00 R +0 742 742 clr (P0DR).EP_DIO
00000062 FD0000 R +0 743 743 call ee_wait_10_nop ;V1.34
00000065 00 +0 744 744 nop ;CS HHHHHHHHHHH
00000066 00 +0 745 745 nop ;SK _HHHHHH____
00000067 C600 R +0 746 746 set (P0DR).EP_SK
00000069 FD0000 R +0 747 747 call ee_wait_10_nop ;V1.34
0000006C CE00 R +0 748 748 clr (P0DR).EP_SK
0000006E 00 +0 749 749 nop ;
0000006F 00 +0 750 750 nop
00000070 FA +0 751 751 ret ;
+0 752 752 ;=====================================================
00000071 +0 753 753 data_out: ;8bit data in register "a" sent to EEPROM bit by bit
00000071 1907 +0 754 754 ld w,7 ;
00000073 +0 755 755 data_out0: ;
00000073 E8F4 +0 756 756 shlc a ;CS HHHHHHHHHHHHHHHHHHHHHHHH
00000075 DB06 +0 757 757 j cc,data_out2 ;SK _HHH__HHH__HHH_//_HHH_
00000077 FD0000 R +0 758 758 call high_out ;DO __XXXXXXXXXXXXX//XXXX__
0000007A FE0000 R +0 759 759 jp data_out4 ;
0000007D +0 760 760 data_out2: ;
0000007D FD0000 R +0 761 761 call low_out ;
00000080 +0 762 762 data_out4: ;
00000080 29 +0 763 763 dec w ;
00000081 DFF0 +0 764 764 jr f,data_out0 ;
00000083 FA +0 765 765 ret ;
+0 766 766 ;=====================================================
00000084 +0 767 767 data_in: ;read 8bit data from EEPRM and save into register "a" bit by bit
00000084 1907 +0 768 768 ld w,7 ;
00000086 +0 769 769 data_in0: ;
00000086 C600 R +0 770 770 set (P0DR).EP_SK
00000088 00 +0 771 771 nop
00000089 00 +0 772 772 nop
0000008A 00 +0 773 773 nop
0000008B CD00 R +0 774 774 clr (P0CR).EP_DIO ;P17 as inupt port
0000008D C500 R +0 775 775 set (P0DR).EP_DIO
0000008F FD0000 R +0 776 776 call ee_wait_10_nop ;V1.34
00000092 5D00 R +0 777 777 test (P0DR).EP_DIO
00000094 83 +0 778 778 j t,data_in1 ;judge the port EP_DIO is high or low.
00000095 05 +0 779 779 set cf ;is high
00000096 FE0000 R +0 780 780 jp data_in2 ;
00000099 +0 781 781 data_in1: ;
00000099 04 +0 782 782 clr cf ;is low
0000009A +0 783 783 data_in2: ;
0000009A E8F6 +0 784 784 rolc a ;16bit data read into register wa
0000009C CE00 R +0 785 785 clr (P0DR).EP_SK
0000009E FD0000 R +0 786 786 call ee_wait_10_nop ;V1.34
000000A1 00 +0 787 787 nop ;SK _HHH__HHH__HHH_//_HHH_
000000A2 00 +0 788 788 nop ;DO __XXXXXXXXXXXXX//XXXX__-->C-->register a
000000A3 29 +0 789 789 dec w ;
000000A4 DFE0 +0 790 790 jr f,data_in0 ;
000000A6 FA +0 791 791 ret ;
+0 792 792 ;=====================================================
000000A7 +0 793 793 ee_write: ;the data in register b(high 8bit)c(low 8bit)-->EEPROM
+0 794 794 ; xxxxxxxx xxxxxxxx
000000A7 E10000C4 R +0 795 795 set (FLG_2).4
000000AB 1903 +0 796 796 ld w,3
000000AD +0 797 797 ee_write_x:
000000AD F679 +0 798 798 push w ;V1.05
000000AF C500 R +0 799 799 set (P0CR).EP_DIO ;as output port
000000B1 CD00 R +0 800 800 clr (P0DR).EP_DIO ;
000000B3 00 +0 801 801 nop ;V1.34
000000B4 00 +0 802 802 nop ;V1.34
000000B5 00 +0 803 803 nop ;V1.34
000000B6 00 +0 804 804 nop ;V1.34
000000B7 E94A +0 805 805 ld de,bc ;backup bc in de
000000B9 C700 R +0 806 806 set (P0DR).EP_CS
000000BB 00 +0 807 807 nop
000000BC 00 +0 808 808 nop
000000BD 00 +0 809 809 nop
000000BE 00 +0 810 810 nop
000000BF 00 +0 811 811 nop
000000C0 FD0000 R +0 812 812 call high_out ;start bit is high level
000000C3 E1000040 R +0 813 813 ld a,(EP_ADDR) ;EPROM address-->a
000000C7 643F +0 814 814 and a,0y00111111 ;EEPROM address only from 00-->63
000000C9 6640 +0 815 815 or a,0y01000000 ;write instruction is 01xxxxxx
000000CB FD0000 R +0 816 816 call data_out ;instruction for write and address send to EEPROM
000000CE 13 +0 817 817 ld a,b ;the data in c-->a
000000CF FD0000 R +0 818 818 call data_out ;a-->EEPROM
000000D2 12 +0 819 819 ld a,c ;the data in b-->a
000000D3 FD0000 R +0 820 820 call data_out ;a-->EEPROM
000000D6 CD00 R +0 821 821 clr (P0DR).EP_DIO
000000D8 FD0000 R +0 822 822 call ee_wait_10_nop ;V1.34
000000DB 00 +0 823 823 nop ;V1.34
000000DC 00 +0 824 824 nop ;V1.34
000000DD 00 +0 825 825 nop ;V1.34
000000DE CF00 R +0 826 826 clr (P0DR).EP_CS
000000E0 FD0000 R +0 827 827 call ee_wait_10_nop ;V1.34
000000E3 CD00 R +0 828 828 clr (P0CR).EP_DIO ;P17 as inupt port
000000E5 C500 R +0 829 829 set (P0DR).EP_DIO
000000E7 FD0000 R +0 830 830 call ee_wait_10_nop ;V1.34
000000EA C700 R +0 831 831 set (P0DR).EP_CS
000000EC FD0000 R +0 832 832 call ee_wait_10_nop ;V1.34
000000EF F10000F91E R +0 833 833 ld (EP_TIM),EETIM ;set time for waiting STOP signal. dec EP_TIM in timer interrupt
000000F4 +0 834 834 ee_write0:
000000F4 CD00 R +0 835 835 clr (P0CR).EP_DIO ;P17 as inupt port
000000F6 C500 R +0 836 836 set (P0DR).EP_DIO
000000F8 00 +0 837 837 nop
000000F9 5D00 R +0 838 838 test (P0DR).EP_DIO
000000FB DF1A +0 839 839 j f,ee_write1 ;STOP flag received? yes-->
000000FD E1000040 R +0 840 840 ld a,(EP_TIM) ;not receive STOP flag
00000101 D9F1 +0 841 841 j ne,ee_write0
00000103 480000 R +0 842 842 ld wa,EP_FAIL
00000106 E10000F2 R +0 843 843 set (EP_FAIL>>4).a
0000010A CF00 R +0 844 844 clr (P0DR).EP_CS
0000010C C500 R +0 845 845 set (P0CR).EP_DIO ;as output port
0000010E CD00 R +0 846 846 clr (P0DR).EP_DIO ;
00000110 E10000CC R +0 847 847 clr (FLG_2).4
00000114 E641 +0 848 848 pop w ;V1.05
00000116 FA +0 849 849 ret
00000117 +0 850 850 ee_write1: ;
00000117 CF00 R +0 851 851 clr (P0DR).EP_CS
00000119 FD0000 R +0 852 852 call ee_wait_10_nop ;V1.34
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -