📄 t.ls1
字号:
698 ; return bit_ack;
699 ; }
700 ; uchar I2C_Receive_Byte(void)
701 ; {
702 ; uchar i = 8, d;
703 ; Delay_10_uS();
704 ; I2C_SDA = 1;
705 ; while ( i--)
706 ; {
707 ; d = d << 1;
708 ; Delay_10_uS();
709 ; I2C_SCK =1;
710 ; if ( I2C_SDA ) d++;
711 ; Delay_10_uS();
712 ; I2C_SCK =0;
A51 MACRO ASSEMBLER T 06/27/2008 14:06:20 PAGE 12
713 ; }
714 ; return d;
715 ; }
716 ; void AT24C64_W(void *mcu_address,uint AT24C64_address,uint count)
717 ; {
718 ; //DOG_WDI=!DOG_WDI;
719 ; //DOGTIME=0;
720 ; while(count--)
721 ; {
722 ; I2C_Start();
723 ; /*I2C_Send_Byte( 0xa0 + AT24C64_address /256 *2);*/ /* 24C16 USE */
724 ; I2C_Send_Byte( 0xa0 );
725 ; I2C_Send_Byte( AT24C64_address/256 );
726 ; I2C_Send_Byte( AT24C64_address %256 );
727 ; I2C_Send_Byte( *(uchar*)mcu_address );
728 ; I2C_Stop();
729 ; Delay_N_mS(10); /* waiting for write cycle to be completed */
730 ; ((uchar*)mcu_address)++;
731 ; AT24C64_address++;
732 ; }
733 ; }
734 ; void AT24C64_R(void *mcu_address,uint AT24C64_address,uint count)
735 ; {
736 ; //DOG_WDI=!DOG_WDI;
737 ; //DOGTIME=0;
738 ; while(count--)
739 ; {
740 ; I2C_Start();
741 ; /*I2C_Send_Byte( 0xa0 + AT24C64_address / 256 *2 );*/ /* 24C16 USE */
742 ; I2C_Send_Byte( 0xa0 );
743 ; I2C_Send_Byte( AT24C64_address/256 );
744 ; I2C_Send_Byte( AT24C64_address % 256 );
745 ; I2C_Start();
746 ; /*I2C_Send_Byte( 0xa1 + AT24C64_address /256 *2 );*/
747 ; I2C_Send_Byte( 0xa1 );
748 ; *(uchar*)mcu_address = I2C_Receive_Byte();
749 ; I2C_Nack();
750 ; I2C_Stop();
751 ; ((uchar*)mcu_address)++;
752 ; AT24C64_address++;
753 ; }
754 ; }
755 ;
756 ; #else
757 ;
758 ; void delay()
759
---- 760 RSEG ?PR?delay?T
0000 761 delay:
762 ; SOURCE LINE # 253
763 ; {
764 ; SOURCE LINE # 254
765 ; _nop_();
766 ; SOURCE LINE # 255
0000 00 767 NOP
768 ; _nop_();
769 ; SOURCE LINE # 256
0001 00 770 NOP
771 ; _nop_();
772 ; SOURCE LINE # 257
0002 00 773 NOP
774 ; _nop_();
775 ; SOURCE LINE # 258
0003 00 776 NOP
777 ; _nop_();
778 ; SOURCE LINE # 259
A51 MACRO ASSEMBLER T 06/27/2008 14:06:20 PAGE 13
0004 00 779 NOP
780 ; }
781 ; SOURCE LINE # 260
0005 22 782 RET
783 ; END OF delay
784
785 ;
786 ;
787 ; void delayms (uint x)
788
---- 789 RSEG ?PR?_delayms?T
0000 790 _delayms:
791 USING 0
792 ; SOURCE LINE # 263
793 ;---- Variable 'j?449' assigned to Register 'R5' ----
794 ;---- Variable 'x?448' assigned to Register 'R6/R7' ----
795 ; {
796 ; SOURCE LINE # 264
0000 797 ?C0042:
798 ; byte j;
799 ; while(x--){
800 ; SOURCE LINE # 266
0000 EF 801 MOV A,R7
0001 1F 802 DEC R7
0002 AA06 803 MOV R2,AR6
0004 7001 804 JNZ ?C0076
0006 1E 805 DEC R6
0007 806 ?C0076:
0007 4A 807 ORL A,R2
0008 600B 808 JZ ?C0047
809 ; for(j=0;j<125;j++){;}
810 ; SOURCE LINE # 267
000A E4 811 CLR A
000B FD 812 MOV R5,A
000C 813 ?C0044:
000C ED 814 MOV A,R5
000D C3 815 CLR C
000E 947D 816 SUBB A,#07DH
0010 50EE 817 JNC ?C0042
0012 0D 818 INC R5
0013 80F7 819 SJMP ?C0044
820 ; }
821 ; SOURCE LINE # 268
822 ; }
823 ; SOURCE LINE # 269
0015 824 ?C0047:
0015 22 825 RET
826 ; END OF _delayms
827
828 ;
829 ; void I2C_Start() //I2C START
830
---- 831 RSEG ?PR?I2C_Start?T
0000 832 I2C_Start:
833 ; SOURCE LINE # 271
834 ; {
835 ; SOURCE LINE # 272
836 ; SDA=1;
837 ; SOURCE LINE # 273
0000 D2B5 838 SETB P3_5
839 ; _nop_();
840 ; SOURCE LINE # 274
0002 00 841 NOP
842 ; SCL=1;
843 ; SOURCE LINE # 275
0003 D2B4 844 SETB P3_4
A51 MACRO ASSEMBLER T 06/27/2008 14:06:20 PAGE 14
845 ; delay();
846 ; SOURCE LINE # 276
0005 120000 F 847 LCALL delay
848 ; SDA=0;
849 ; SOURCE LINE # 277
0008 C2B5 850 CLR P3_5
851 ; delay();
852 ; SOURCE LINE # 278
000A 120000 F 853 LCALL delay
854 ; SCL=0;
855 ; SOURCE LINE # 279
000D C2B4 856 CLR P3_4
857 ; _nop_();
858 ; SOURCE LINE # 280
000F 00 859 NOP
860 ; }
861 ; SOURCE LINE # 281
0010 22 862 RET
863 ; END OF I2C_Start
864
865 ;
866 ; void I2C_Stop() //I2C STOP
867
---- 868 RSEG ?PR?I2C_Stop?T
0000 869 I2C_Stop:
870 ; SOURCE LINE # 283
871 ; {
872 ; SOURCE LINE # 284
873 ; SDA=0;
874 ; SOURCE LINE # 285
0000 C2B5 875 CLR P3_5
876 ; _nop_();
877 ; SOURCE LINE # 286
0002 00 878 NOP
879 ; SCL=1;
880 ; SOURCE LINE # 287
0003 D2B4 881 SETB P3_4
882 ; delay();
883 ; SOURCE LINE # 288
0005 120000 F 884 LCALL delay
885 ; SDA=1;
886 ; SOURCE LINE # 289
0008 D2B5 887 SETB P3_5
888 ; delay();
889 ; SOURCE LINE # 290
000A 020000 F 890 LJMP delay
891 ; END OF I2C_Stop
892
893 ; }
894 ;
895 ; bit I2C_ReceiveAck()
896
---- 897 RSEG ?PR?I2C_ReceiveAck?T
0000 898 L?0080:
899 USING 0
0000 AF04 900 MOV R7,AR4
0002 120000 F 901 LCALL _I2C_SendByte
0005 902 I2C_ReceiveAck:
903 ; SOURCE LINE # 293
904 ; {
905 ; SOURCE LINE # 294
906 ; bit ck;
907 ; SDA=1; //THE HOST RELEASE THE BUS
908 ; SOURCE LINE # 296
0005 D2B5 909 SETB P3_5
910 ; _nop_();
A51 MACRO ASSEMBLER T 06/27/2008 14:06:20 PAGE 15
911 ; SOURCE LINE # 297
0007 00 912 NOP
913 ; _nop_();
914 ; SOURCE LINE # 298
0008 00 915 NOP
916 ; SCL=1;
917 ; SOURCE LINE # 299
0009 D2B4 918 SETB P3_4
919 ; _nop_();
920 ; SOURCE LINE # 300
000B 00 921 NOP
922 ; _nop_();
923 ; SOURCE LINE # 301
000C 00 924 NOP
925 ; ck=SDA;
926 ; SOURCE LINE # 302
000D A2B5 927 MOV C,P3_5
000F 9200 F 928 MOV ck?750,C
929 ; _nop_();
930 ; SOURCE LINE # 303
0011 00 931 NOP
932 ; _nop_();
933 ; SOURCE LINE # 304
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -