📄 busio.lst
字号:
917 1 miscDelay(15);
918 1
919 1 // WPPin = 1;
920 1
921 1 #if DISABLEINT0
922 1 /* restove interrupt 0 flag */
C51 COMPILER V6.23a BUSIO 09/10/2004 16:09:03 PAGE 16
923 1 EX0 = IntFlag;
924 1 #endif
925 1
926 1 }
927
928
929
930 /*********************************************
931 * Send data table to Philips TDA8752 *
932 **********************************************/
933 void TDADataTableOut(unsigned char *tbl)
934 {
935 1 RegDataOut(0x18, tbl, 4);
936 1 }
937
938 /*********************************************
939 * Set Att. Data *
940 **********************************************/
941 void SetOSDData(unsigned int index, unsigned char OSDfunction, unsigned char Data, unsigned int cnt)
942 {
943 1 int data byteCnt;
944 1
945 1 RegByteOut(0xC0, 0xBC); // Select OSD Registers
946 1 RegByteOut(0x78, OSDfunction); // OR78 - Select Update Att
947 1
948 1 if (index > 255)
949 1 {
950 2 RegByteOut(0xC0, 0x01);
951 2 index -= 256;
952 2 }
953 1 else
954 1 {
955 2 RegByteOut(0xC0, 0x00);
956 2 }
957 1 RegByteOut(0xC1, index);
958 1
959 1 // ---- I2C Start and send slave address for C2 ---- */
960 1 GoI2CMaster(SLAVEADDR_REGW);
961 1 if(NoAck | BusFault) goto buserror;
962 1
963 1 /* Send command */
964 1 SendI2CByte(WRITE_AUTOINC);
965 1 if(NoAck) goto buserror;
966 1
967 1 /* Send C2 */
968 1 SendI2CByte(0xC2);
969 1 if(NoAck) goto buserror;
970 1
971 1
972 1 /* data transmit */
973 1 for(byteCnt = cnt; byteCnt > 0; byteCnt--)
974 1 {
975 2 SendI2CByte(Data);
976 2 if(NoAck) goto buserror;
977 2 }
978 1 /* ------------- Finish C2 -------------- */
979 1 buserror:
980 1
981 1 SendI2CStop();
982 1
983 1 RegByteOut(0xC0, 0x3C); // Select Normal Registers
984 1 }
C51 COMPILER V6.23a BUSIO 09/10/2004 16:09:03 PAGE 17
985
986
C51 COMPILER V6.23a BUSIO 09/10/2004 16:09:03 PAGE 18
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _RegDataTableOut (BEGIN)
; SOURCE LINE # 14
0000 8B00 R MOV s,R3
0002 8A00 R MOV s+01H,R2
0004 8900 R MOV s+02H,R1
; SOURCE LINE # 15
0006 ?C0001:
; SOURCE LINE # 18
0006 7800 R MOV R0,#LOW s
0008 E4 CLR A
0009 75F001 MOV B,#01H
000C 120000 E LCALL ?C?PLDIIDATA
000F 120000 E LCALL ?C?CLDPTR
0012 F500 R MOV cnd,A
0014 F4 CPL A
0015 602B JZ ?C0003
; SOURCE LINE # 19
0017 7800 R MOV R0,#LOW s
0019 E4 CLR A
001A 75F001 MOV B,#01H
001D 120000 E LCALL ?C?PLDIIDATA
0020 120000 E LCALL ?C?CLDPTR
0023 F500 R MOV index,A
; SOURCE LINE # 20
0025 AB00 R MOV R3,s
0027 AA00 R MOV R2,s+01H
0029 A900 R MOV R1,s+02H
002B 750000 R MOV ?_RegDataOut?BYTE+04H,#00H
002E 850000 R MOV ?_RegDataOut?BYTE+05H,cnd
0031 FF MOV R7,A
0032 120000 R LCALL _RegDataOut
; SOURCE LINE # 21
0035 E500 R MOV A,cnd
0037 2500 R ADD A,s+02H
0039 F500 R MOV s+02H,A
003B E4 CLR A
003C 3500 R ADDC A,s+01H
003E F500 R MOV s+01H,A
; SOURCE LINE # 22
0040 80C4 SJMP ?C0001
; SOURCE LINE # 23
0042 ?C0003:
0042 22 RET
; FUNCTION _RegDataTableOut (END)
; FUNCTION _RegByteIn (BEGIN)
; SOURCE LINE # 29
0000 8F00 R MOV index,R7
; SOURCE LINE # 30
; SOURCE LINE # 37
0002 A2A8 MOV C,EX0
0004 9200 R MOV IntFlag,C
; SOURCE LINE # 38
0006 C2A8 CLR EX0
; SOURCE LINE # 43
0008 7F30 MOV R7,#030H
000A 120000 E LCALL _GoI2CMaster
; SOURCE LINE # 44
000D A200 E MOV C,BusFault
C51 COMPILER V6.23a BUSIO 09/10/2004 16:09:03 PAGE 19
000F 7200 E ORL C,NoAck
0011 4025 JC endi2c
0013 ?C0004:
; SOURCE LINE # 47
0013 7F80 MOV R7,#080H
0015 120000 E LCALL _SendI2CByte
; SOURCE LINE # 48
0018 20001D E JB NoAck,endi2c
001B ?C0006:
; SOURCE LINE # 51
001B AF00 R MOV R7,index
001D 120000 E LCALL _SendI2CByte
; SOURCE LINE # 52
0020 200015 E JB NoAck,endi2c
0023 ?C0007:
; SOURCE LINE # 54
0023 120000 E LCALL SendI2CStop
; SOURCE LINE # 57
0026 7F31 MOV R7,#031H
0028 120000 E LCALL _GoI2CMaster
; SOURCE LINE # 58
002B A200 E MOV C,BusFault
002D 7200 E ORL C,NoAck
002F 4007 JC endi2c
0031 ?C0008:
; SOURCE LINE # 61
0031 7F01 MOV R7,#01H
0033 120000 E LCALL _RcvI2CByte
0036 8F00 R MOV val,R7
; SOURCE LINE # 63
0038 endi2c:
; SOURCE LINE # 65
0038 120000 E LCALL SendI2CStop
; SOURCE LINE # 72
003B A200 R MOV C,IntFlag
003D 92A8 MOV EX0,C
; SOURCE LINE # 75
003F AF00 R MOV R7,val
0041 22 RET
; SOURCE LINE # 77
0042 buserror:
; SOURCE LINE # 81
0042 80F4 SJMP endi2c
; SOURCE LINE # 82
0044 ?C0010:
0044 22 RET
; FUNCTION _RegByteIn (END)
; FUNCTION _RegDataIn (BEGIN)
; SOURCE LINE # 87
0000 8F00 R MOV index,R7
0002 8B00 R MOV s,R3
0004 8A00 R MOV s+01H,R2
0006 8900 R MOV s+02H,R1
; SOURCE LINE # 88
; SOURCE LINE # 95
0008 A2A8 MOV C,EX0
000A 9200 R MOV IntFlag,C
; SOURCE LINE # 96
000C C2A8 CLR EX0
; SOURCE LINE # 101
000E 7F30 MOV R7,#030H
C51 COMPILER V6.23a BUSIO 09/10/2004 16:09:03 PAGE 20
0010 120000 E LCALL _GoI2CMaster
; SOURCE LINE # 102
0013 A200 E MOV C,BusFault
0015 7200 E ORL C,NoAck
0017 404D JC endi2c
0019 ?C0011:
; SOURCE LINE # 105
0019 7FC0 MOV R7,#0C0H
001B 120000 E LCALL _SendI2CByte
; SOURCE LINE # 106
001E 200045 E JB NoAck,endi2c
0021 ?C0013:
; SOURCE LINE # 109
0021 AF00 R MOV R7,index
0023 120000 E LCALL _SendI2CByte
; SOURCE LINE # 110
0026 20003D E JB NoAck,endi2c
0029 ?C0014:
; SOURCE LINE # 112
0029 120000 E LCALL SendI2CStop
; SOURCE LINE # 115
002C 7F31 MOV R7,#031H
002E 120000 E LCALL _GoI2CMaster
; SOURCE LINE # 116
0031 A200 E MOV C,BusFault
0033 7200 E ORL C,NoAck
0035 402F JC endi2c
0037 ?C0015:
; SOURCE LINE # 119
0037 850000 R MOV byteCnt,cnt
003A 850000 R MOV byteCnt+01H,cnt+01H
003D ?C0016:
003D D3 SETB C
003E E500 R MOV A,byteCnt+01H
0040 9400 SUBB A,#00H
0042 E500 R MOV A,byteCnt
0044 6480 XRL A,#080H
0046 9480 SUBB A,#080H
0048 401C JC endi2c
; SOURCE LINE # 120
004A AF00 R MOV R7,byteCnt+01H
004C 120000 E LCALL _RcvI2CByte
004F 7800 R MOV R0,#LOW s
0051 E4 CLR A
0052 75F001 MOV B,#01H
0055 120000 E LCALL ?C?PLDIIDATA
0058 EF MOV A,R7
0059 120000 E LCALL ?C?CSTPTR
; SOURCE LINE # 121
005C E500 R MOV A,byteCnt+01H
005E 1500 R DEC byteCnt+01H
0060 7002 JNZ ?C0182
0062 1500 R DEC byteCnt
0064 ?C0182:
0064 80D7 SJMP ?C0016
; SOURCE LINE # 123
0066 endi2c:
; SOURCE LINE # 125
0066 120000 E LCALL SendI2CStop
; SOURCE LINE # 131
0069 A200 R MOV C,IntFlag
006B 92A8 MOV EX0,C
C51 COMPILER V6.23a BUSIO 09/10/2004 16:09:03 PAGE 21
006D 22 RET
; SOURCE LINE # 135
006E buserror:
; SOURCE LINE # 139
006E 80F6 SJMP endi2c
; SOURCE LINE # 140
0070 ?C0020:
0070 22 RET
; FUNCTION _RegDataIn (END)
; FUNCTION _RegByteOut (BEGIN)
; SOURCE LINE # 145
0000 8F00 R MOV index,R7
0002 8D00 R MOV val,R5
; SOURCE LINE # 146
; SOURCE LINE # 151
0004 A2A8 MOV C,EX0
0006 9200 R MOV IntFlag,C
; SOURCE LINE # 152
0008 C2A8 CLR EX0
; SOURCE LINE # 157
000A 7F30 MOV R7,#030H
000C 120000 E LCALL _GoI2CMaster
; SOURCE LINE # 158
000F A200 E MOV C,BusFault
0011 7200 E ORL C,NoAck
0013 4015 JC endi2c
0015 ?C0021:
; SOURCE LINE # 161
0015 E4 CLR A
0016 FF MOV R7,A
0017 120000 E LCALL _SendI2CByte
; SOURCE LINE # 162
001A 20000D E JB NoAck,endi2c
001D ?C0023:
; SOURCE LINE # 165
001D AF00 R MOV R7,index
001F 120000 E LCALL _SendI2CByte
; SOURCE LINE # 166
0022 200005 E JB NoAck,endi2c
0025 ?C0024:
; SOURCE LINE # 169
0025 AF00 R MOV R7,val
0027 120000 E LCALL _SendI2CByte
; SOURCE LINE # 171
002A endi2c:
; SOURCE LINE # 173
002A 120000 E LCALL SendI2CStop
; SOURCE LINE # 180
002D A200 R MOV C,IntFlag
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -