📄 main.lst
字号:
016B 0622 clrr flg_eep_error
016C 0623 return
0624 random_read_error:
016D 0625 call h_delay60us
016E 0626 incr cnt_eep_error,1
016F 0627 btrss cnt_eep_error,5
0170 0628 goto random_read_again
0171 0629 movia 1
0172 0630 movar flg_eep_error
0173 0631 return
0632 ;*********************************************************************
0633 ;function:write a data to specific address
0634 ;entry: eep_address (to access),eep_data_writen
0635 ;result:
0636 ;status: flg_eep_error=0,OK. =1 is mistake
0637 byte_write:
0638 ;clrr cnt_eep_error
0639 byte_write_again:
0640
0641 ;movia 11001111b
0174 0642 movia 0cfh
0175 0643 andar portb_state,0
0176 0644 iost portb ;portb4,5 output state
0645
0177 0646 call h_start
0647 ;movia 10100000b
0178 0648 movia 0a0h
0179 0649 movar eep_data_tmp
017A 0650 call h_send_I2C ;??driver address
017B 0651 call h_rec_ack ;??IC???
0652 ;movr flg_eep_error,0
0653 ;subia 1
0654 ;btrsc status,2
017C 0655 btrsc flg_eep_error,0
017D 0656 goto byte_write_error
017E 0657 clrr eep_data_tmp ;;??word address:000h
017F 0658 call h_send_I2C
0180 0659 call h_rec_ack ;??IC???
0660 ;movr flg_eep_error,0
0661 ;subia 1
0662 ;btrsc status,2
0181 0663 btrsc flg_eep_error,0
0182 0664 goto byte_write_error
0183 0665 movr eep_data_writen,0
0184 0666 movar eep_data_tmp
0185 0667 call h_send_I2C ;????data
0186 0668 call h_rec_ack ;??IC???
0669 ;movr flg_eep_error,0
0670 ;subia 1
0671 ;btrsc status,2
0187 0672 btrsc flg_eep_error,0
0188 0673 goto byte_write_error
0189 0674 call h_stop
018A 0675 clrr flg_eep_error ;?????
018B 0676 return
0677 byte_write_error:
018C 0678 call h_delay60us
018D 0679 incr cnt_eep_wr_error,1
018E 0680 btrss cnt_eep_wr_error,5
018F 0681 goto byte_write_again
0190 0682 return
0683 ;-------------------------------------
0684 h_start:
0685 ;movia 11011111b ;clk low
0191 0686 movia 0dfh
0192 0687 andar portb,1
0193 0688 call h_delay6us
0689
0194 0690 clrr flg_eep_error
0691
0692 ;movia 00010000b ;data high
0195 0693 movia 010h
0196 0694 iorar portb,1
0197 0695 call h_delay6us
0696
0697 ;movia 00100000b ;clk high
0198 0698 movia 020h
0199 0699 iorar portb,1
019A 0700 call h_delay6us
0701
0702 ;movia 11101111b ;data low
019B 0703 movia 0efh
019C 0704 andar portb,1
019D 0705 call h_delay6us
019E 0706 call h_delay6us
0707
0708 ;movia 11011111b ;clk low
019F 0709 movia 0dfh
01A0 0710 andar portb,1
01A1 0711 call h_delay6us
01A2 0712 call h_delay6us
01A3 0713 return
0714 ;---------------------------------------
0715 h_stop:
0716 ;movia 11101111b ;data low
01A4 0717 movia 0efh
01A5 0718 andar portb,1
01A6 0719 call h_delay6us
0720
0721 ;movia 00100000b ;clk high
01A7 0722 movia 020h
01A8 0723 iorar portb,1
01A9 0724 call h_delay6us
01AA 0725 call h_delay6us
0726
0727 ;movia 00010000b ;data high
01AB 0728 movia 010h
01AC 0729 iorar portb,1
01AD 0730 call h_delay6us
01AE 0731 call h_delay6us
01AF 0732 return
0733 ;---------------------------------------
0734 h_rec_ack: ;?????
0735 ;movia 00010000b ;data high
01B0 0736 movia 010h
01B1 0737 iorar portb,1
0738
0739 ;movia 00100000b ;clk high
01B2 0740 movia 020h
01B3 0741 iorar portb,1
01B4 0742 call h_delay6us
0743
0744 ;movia 00010000b ;data high
0745 ;movia 010h
0746 ;iorar portb,1 ;ready for reading data port(only for KB)
0747 ;call h_delay6us
0748
0749 ;movia 00010000b ;此处要改为输入以读引脚状态
01B5 0750 movia 010h
01B6 0751 iorar portb_state,0
01B7 0752 iost portb
0753
0754 ;movia 00010000b
01B8 0755 movia 010h
01B9 0756 andar portb,0
01BA 0757 btrsc status,2
01BB 0758 goto h_rec_ok
0759
0760 ;movia 11101111b
01BC 0761 movia 0efh
01BD 0762 andar portb_state,0
01BE 0763 iost portb ;此处改回输出以准备下一步处理
0764
01BF 0765 movia 1
01C0 0766 movar flg_eep_error
01C1 0767 call h_delay6us
01C2 0768 return
0769 h_rec_ok:
0770 ;movia 11101111b
01C3 0771 movia 0efh
01C4 0772 andar portb_state,0
01C5 0773 iost portb ;此处改回输出以准备下一步处理
0774
01C6 0775 call h_delay6us
01C7 0776 call h_delay6us
0777
0778 ;movia 11011111b ;clk low
01C8 0779 movia 0dfh
01C9 0780 andar portb,1
0781
01CA 0782 movia 0
01CB 0783 movar flg_eep_error
0784 ; lda prtd
0785 ; ora #data_high ;same the programmer tooling diagram
0786 ; sta prtd
01CC 0787 return
0788 ;---------------------------------------
0789 h_ack_to_ic:
0790 ;movia 11101111b ;data low
01CD 0791 movia 0efh
01CE 0792 andar portb,1
01CF 0793 call h_delay6us
0794
0795 ;movia 00100000b ;clk high
01D0 0796 movia 020h
01D1 0797 iorar portb,1
01D2 0798 call h_delay6us
0799
0800 ;movia 11011111b ;clk low
01D3 0801 movia 0dfh
01D4 0802 andar portb,1
01D5 0803 call h_delay6us
01D6 0804 return
0805 ;--------------------------------------
0806 h_no_ack_to_ic: ;???IC
0807 ;movia 00010000b ;data high
01D7 0808 movia 010h
01D8 0809 iorar portb,1
01D9 0810 call h_delay6us
0811
0812 ;movia 00100000b ;clk high
01DA 0813 movia 020h
01DB 0814 iorar portb,1
01DC 0815 call h_delay6us
01DD 0816 call h_delay6us
0817
0818 ;movia 11011111b ;clk low
01DE 0819 movia 0dfh
01DF 0820 andar portb,1
01E0 0821 call h_delay6us
01E1 0822 return
0823 ;--------------------------------------
0824 h_send_I2C: ;??8?
01E2 0825 movia 8
01E3 0826 movar flg_eep_error
0827 h_send_I2C_1:
01E4 0828 addia 0
01E5 0829 rlr eep_data_tmp,1
01E6 0830 btrsc status,0
01E7 0831 goto h_send_high
0832 ;movia 11101111b ;data low
01E8 0833 movia 0efh
01E9 0834 andar portb,1
01EA 0835 goto h_send_clk
0836 h_send_high:
0837 ;movia 00010000b ;data high
01EB 0838 movia 010h
01EC 0839 iorar portb,1
01ED 0840 nop
0841 h_send_clk:
01EE 0842 call h_delay6us
0843 ;movia 00100000b ;clk high
01EF 0844 movia 020h
01F0 0845 iorar portb,1
01F1 0846 call h_delay6us
0847
0848 ;movia 11011111b ;clk low
01F2 0849 movia 0dfh
01F3 0850 andar portb,1
01F4 0851 call h_delay6us
0852
01F5 0853 decrsz flg_eep_error,1
01F6 0854 goto h_send_I2C_1
0855 ;goto h_send_over
0856 h_send_over:
01F7 0857 return
0858 ;-------------------------------------
0859 h_receive_I2C: ;??8???
01F8 0860 movia 8
01F9 0861 movar flg_eep_error
0862 h_receive_I2C_1:
0863 ;movia 00010000b ;data high
01FA 0864 movia 010h
01FB 0865 iorar portb,1
01FC 0866 call h_delay6us
0867
0868 ;movia 00100000b ;clk high
01FD 0869 movia 020h
01FE 0870 iorar portb,1
01FF 0871 call h_delay6us
0872
0873 ;lda plata ;set to high before read for KB
0874 ;ora #data_high
0875 ;sta plata
0876 ;nop
0877
0878 ;movia 00010000b ;此处要改为输入以读引脚状态
0200 0879 movia 010h
0201 0880 iorar portb_state,0
0202 0881 iost portb
0882
0883 ;movia 00010000b
0203 0884 movia 010h
0204 0885 andar portb,0
0205 0886 movar value_temp
0887 ;movia 00010000b
0206 0888 movia 010h
0207 0889 subar value_temp,0 ;value_temp>=ACC,cy=1
0208 0890 rlr eep_data_tmp,1
0891
0892 ;movia 11101111b ;此处改回输出
0209 0893 movia 0efh
020A 0894 andar portb_state,0
020B 0895 iost portb
0896 h_receive_clk:
0897 ;movia 11011111b ;clk low
020C 0898 movia 0dfh
020D 0899 andar portb,1
0900
020E 0901 decrsz flg_eep_error,1
020F 0902 goto h_receive_I2C_1
0903 ;goto h_receive_over
0904 h_receive_over:
0210 0905 return
0906
0907 h_delay6us:
0211 0908 nop
0212 0909 nop
0213 0910 nop
0214 0911 nop
0215 0912 nop
0216 0913 nop
0217 0914 return
0915
0916 h_delay60us:
0218 0917 call h_delay6us
0219 0918 call h_delay6us
021A 0919 call h_delay6us
021B 0920 call h_delay6us
021C 0921 call h_delay6us
021D 0922 call h_delay6us
021E 0923 call h_delay6us
021F 0924 call h_delay6us
0220 0925 call h_delay6us
0221 0926 call h_delay6us
0222 0927 return
0928 ;-------------------------
0929
0930 ORG 03FFH
0931 NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -