commit a0e9e8cec97ebc63e85a99cf8e60d9a3b7065c7b Author: 95384 <664090429@qq.com> Date: Thu Feb 6 15:35:32 2025 +0800 First commit diff --git a/MCUCore.uvgui.andyliu b/MCUCore.uvgui.andyliu new file mode 100644 index 0000000..370296d --- /dev/null +++ b/MCUCore.uvgui.andyliu @@ -0,0 +1,1843 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + 38003 + Registers + 115 143 + + + 346 + Code Coverage + 610 160 + + + 204 + Performance Analyzer + 770 + + + + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 80 80 80 + + + 1937 + Watch 2 + + 80 80 80 + + + 1935 + Call Stack + Locals + + 80 80 80 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + 158 + 0 + 1024 + 735 + + + + 0 + + 1610 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000A000000090000000100000072453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C636F64655F6472765C4146452E6300000000054146452E6300000000FFDC7800FFFFFFFF75453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C6865616465725F6472765C556172742E680000000006556172742E6800000000BECEA100FFFFFFFF7E453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C636F64655F64617461666C6173685C44617461466C6173682E63000000000B44617461466C6173682E6300000000F0A0A100FFFFFFFF76453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C636F64655F6170705C556172744170702E630000000009556172744170702E6300000000BCA8E100FFFFFFFF73453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C636F64655F6170705C4D61696E2E6300000000064D61696E2E63000000009CC1B600FFFFFFFF78453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C636F64655F6472765C43616C63756C6174652E63000000000B43616C63756C6174652E6300000000F7B88600FFFFFFFF73453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C636F64655F6472765C556172742E630000000006556172742E6300000000D9ADC200FFFFFFFF77453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C6865616465725F6472765C4D63754C69622E6800000000084D63754C69622E6800000000A5C2D700FFFFFFFF76453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C636F64655F6170705C496E697469616C2E630000000009496E697469616C2E6300000000B3A6BE00FFFFFFFF75453A5C42502D50726F6A6563745C302D53564E5C62702D70726F746563745C48502DC8EDBCFEB7BDB0B85C53483339463030345C44656D6F20436F64655C534833394630303326463030345F44656D6F436F64655F56322E31335F32303233303330395C636F64655F6170705C4D656D6F72792E6300000000084D656D6F72792E6300000000EAD6A300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000010010000650000008007000016030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A40000004F000000B0030000D0000000 + + + 16 + A400000065000000B0030000E6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000009010000E7020000 + + + 16 + 5300000069000000F300000021010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000009010000E7020000 + + + 16 + 53000000690000000F01000070020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000B7000000 + + + 16 + 53000000690000002B020000EA000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 5300000069000000F300000021010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 5300000069000000F300000021010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 5300000069000000F300000021010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000009010000E7020000 + + + 16 + 53000000690000000F01000070020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000009010000E7020000 + + + 16 + 53000000690000000F01000070020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000001B0300007D070000CE030000 + + + 16 + 53000000690000002B020000EA000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000E0010000B003000075020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000001B0300007D070000CE030000 + + + 16 + 53000000690000002B020000EA000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + A700000066000000AD030000B7000000 + + + 16 + 53000000690000002B020000EA000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000B7000000 + + + 16 + 53000000690000002B020000EA000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 53000000690000002B020000EA000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000B7000000 + + + 16 + 53000000690000002B020000EA000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000B7000000 + + + 16 + 53000000690000002B020000EA000000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000B7000000 + + + 16 + 53000000690000002B020000EA000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000009010000E7020000 + + + 16 + 53000000690000000F01000070020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000001B0300007D070000CE030000 + + + 16 + 53000000690000002B020000EA000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000001B0300007D070000CE030000 + + + 16 + 53000000690000000F01000070020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 5300000069000000F300000021010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F7010000AD0300005C020000 + + + 16 + 5300000069000000F300000021010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000D7010000 + + + 16 + 5300000069000000F300000021010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 940 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E703000080070000FA030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 463 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 3119 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFA4000000D0000000B0030000D4000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000A400000065000000B0030000E6000000A40000004F000000B0030000D00000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F00000010030000F0010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000001003000065000000B003000006020000100300004F000000B0030000F001000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF0C0100004F00000010010000000300000100000002000010040000000100000062FFFFFF57040000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000650000000C01000016030000000000004F0000000C010000000300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000DC010000B0030000E001000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000F6010000B00300008B02000000000000E0010000B00300007502000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFD8010000E0010000DC0100007502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000000003000080070000040300000100000001000010040000000100000002FDFFFF7F000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000000000001A03000080070000FD030000000000000403000080070000E70300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2316 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000009496E69745F4750494F9600000000000000120009496E69745F4750494F0D756354696D65436E74316D696E01300E496E746F5F506F776572446F776E07525354535441540844656C6179316D73096D656D7365745F73680A493243305F4652414D45096932635F6672616D6515493243436C6561724C69666554696D6544656C61790D705F4932434D656D56616C7565194D656D436F7079496E7465726368616E67654C53425F4D534207545754465245450643535450545217494943496E666F4C697374466173746C79557064617465114E54435F5441425F4D41585F494E4445580B4E54435F5441425F4D41580C4D6375466C61736852656164000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 747 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000D4D6375466C6173685F4C6F6164960000000000000005000D4D6375466C6173685F4C6F61640D4D6375466C616C73685F4941500C4D6375466C6168735F49535006454550524F4D08426F6F744C6F616400000000000000000000000000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 9 + + .\code_drv\AFE.c + 90 + 229 + 256 + 1 + + 0 + + + .\header_drv\Uart.h + 22 + 1 + 6 + 1 + + 0 + + + .\code_dataflash\DataFlash.c + 97 + 43 + 59 + 1 + + 0 + + + .\code_app\UartApp.c + 29 + 106 + 125 + 1 + + 0 + + + .\code_app\Main.c + 36 + 15 + 31 + 1 + + 0 + + + .\code_drv\Calculate.c + 6 + 247 + 254 + 1 + + 0 + + + .\code_drv\Uart.c + 0 + 100 + 111 + 1 + + 0 + + + .\header_drv\McuLib.h + 18 + 56 + 78 + 1 + + 0 + + + .\code_app\Initial.c + 19 + 1 + 22 + 1 + + 0 + + + .\code_app\Memory.c + 0 + 95 + 107 + 1 + + 0 + + + + +
diff --git a/MCUCore.uvgui.wenhua.wang b/MCUCore.uvgui.wenhua.wang new file mode 100644 index 0000000..c5818c7 --- /dev/null +++ b/MCUCore.uvgui.wenhua.wang @@ -0,0 +1,3646 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + 38003 + Registers + 115 67 + + + 346 + Code Coverage + 770 160 + + + 204 + Performance Analyzer + 930 + + + + + + 1506 + Symbols + + 64 64 64 + + + 1936 + Watch 1 + + 64 64 64 + + + 1937 + Watch 2 + + 64 64 64 + + + 1935 + Call Stack + Locals + + 64 64 64 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + -797 + 230 + 1253 + -30 + + + + 0 + + 6125 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000001C0000001500000001000000C2433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F626F6F746C6F616465725C535441525455502E413531000000000B535441525455502E41353100000000FFDC7800FFFFFFFFBA433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C6865616465725F6472765C4D63754C69622E6800000000084D63754C69622E6800000000BECEA100FFFFFFFFB5433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6472765C5254432E6300000000055254432E6300000000F0A0A100FFFFFFFFB7433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C6865616465725F6472765C5477692E6800000000055477692E6800000000BCA8E100FFFFFFFFB5433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6472765C5457492E6300000000055457492E63000000009CC1B600FFFFFFFFB7433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C6865616465725F6472765C4166652E6800000000054166652E6800000000F7B88600FFFFFFFFBF433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C6865616465725F6472765C4D435552656769737465722E68000000000D4D435552656769737465722E6800000000D9ADC200FFFFFFFFBB433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6472765C43616C63756C6174652E63000000000B43616C63756C6174652E6300000000A5C2D700FFFFFFFFB1433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C726561646D652E747874000000000A726561646D652E74787400000000B3A6BE00FFFFFFFFB8433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C6865616465725F6170705C4D61696E2E6800000000064D61696E2E6800000000EAD6A300FFFFFFFFB8433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6472765C4D63754C69622E6300000000084D63754C69622E6300000000F6FA7D00FFFFFFFFB5433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6472765C4146452E6300000000054146452E6300000000B5E99D00FFFFFFFFB9433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6472765C426F6F744170702E630000000009426F6F744170702E63000000005FC3CF00FFFFFFFFB6433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6170705C4D61696E2E6300000000064D61696E2E6300000000C1838300FFFFFFFFB9433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6170705C496E697469616C2E630000000009496E697469616C2E6300000000CACAD500FFFFFFFFBE433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F626F6F746C6F616465725C466C6173682E630000000007466C6173682E6300000000C5D4F200FFFFFFFFB9433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6472765C426F6F744941502E630000000009426F6F744941502E6300000000FFDC7800FFFFFFFFC1433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C4845414445525F424F4F544C4F414445525C4941504953502E4800000000084941504953502E4800000000BECEA100FFFFFFFFB8433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6170705C4D656D6F72792E6300000000084D656D6F72792E6300000000F0A0A100FFFFFFFFBA433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C6865616465725F6170705C4D656D6F72792E6800000000084D656D6F72792E6800000000BCA8E100FFFFFFFFBC433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C6865616465725F6472765C4D6375466C6173682E68000000000A4D6375466C6173682E68000000009CC1B600FFFFFFFFC1433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F64617461666C6173685C44617461466C6173682E63000000000B44617461466C6173682E6300000000F7B88600FFFFFFFFBB433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6472765C535441525455502E413531000000000B535441525455502E41353100000000D9ADC200FFFFFFFFBE433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6170705C496E746572727570744170702E63000000000E496E746572727570744170702E6300000000A5C2D700FFFFFFFFBF433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F626F6F746C6F616465725C4961704973702E6300000000084961704973702E6300000000B3A6BE00FFFFFFFFBD433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F626F6F746C6F616465725C4D61696E2E6300000000064D61696E2E6300000000EAD6A300FFFFFFFFB9433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C636F64655F6170705C556172744170702E630000000009556172744170702E6300000000F6FA7D00FFFFFFFFC0433A5C55736572735C77656E6875612E77616E675C4465736B746F705C64656D6FB7BDB0B82675736572206775696465D3C5BBAF5C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313232325C534833394630303326463030345F44656D6F436F64655F56322E31355F32303233313231335C4845414445525F424F4F544C4F414445525C464C4153482E480000000007464C4153482E4800000000B5E99D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000C400000006FDFFFF0006000053FFFFFF + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C40000004F00000070040000BD000000 + + + 16 + C400000006FDFFFF7004000074FDFFFF + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000BD00000083020000 + + + 16 + 70000000870000003001000027010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000BD00000083020000 + + + 16 + 70000000870000005301000043020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7000000660000006D040000A4000000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 70000000870000003001000027010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 70000000870000003001000027010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 70000000870000003001000027010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000BD00000083020000 + + + 16 + 70000000870000005301000043020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000BD00000083020000 + + + 16 + 70000000870000005301000043020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000B4020000000600000E030000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000950100007004000017020000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000B7020000FD050000F5020000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + C7000000660000006D040000A4000000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7000000660000006D040000A4000000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7000000660000006D040000A4000000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7000000660000006D040000A4000000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7000000660000006D040000A4000000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000BD00000083020000 + + + 16 + 70000000870000005301000043020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000B7020000FD050000F5020000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000B7020000FD050000F5020000 + + + 16 + 70000000870000005301000043020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 70000000870000003001000027010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000AC0100006D040000FE010000 + + + 16 + 70000000870000003001000027010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 940 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000000E0300000006000021030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 463 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 3119 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000BD00000070040000C1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000C400000006FDFFFF7004000074FDFFFFC40000004F00000070040000BD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0300004F000000B0030000A5010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000B003000006FDFFFF700400005CFEFFFFB00300004F00000070040000A501000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFC00000004F000000C40000009C020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000006FDFFFFC000000053FFFFFF000000004F000000C00000009C0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000091010000700400009501000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000004CFEFFFF70040000CEFEFFFF0000000095010000700400001702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF38020000950100003C0200001702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000009C02000000060000A0020000010000000100001004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B401000077940000018000800000010000000000000057FFFFFF00060000C5FFFFFF00000000A0020000000600000E0300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2327 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000762495350466C67960000000000000014000762495350466C670F454550524F4D5F52534F435F564F4C11454550524F4D5F434847454E445F564F4C12454550524F4D5F4C4153545F43434F554E5414454550524F4D5F445347454E445F4241434B55500D45327563447367456E64466C67046256445107624348474D4F530F625561727430536E6441636B466C670E45327563436867424B44656C6179035331360C45327369436867424B437572135457495F48617264776172655F4D6F64756C650A756956616463566D61780A756956616463566D696E0450315F33084741534741554745084741534755414745084532554C44465243065278446174610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 747 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000D4D6375466C6173685F4C6F6164960000000000000005000D4D6375466C6173685F4C6F61640D4D6375466C616C73685F4941500C4D6375466C6168735F49535006454550524F4D08426F6F744C6F616400000000000000000000000000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1536 + 864 + + + + 1 + Debug + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B00300004F00000070040000A5010000 + + + 16 + B003000006FDFFFF700400005CFEFFFF + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000007D000000BD00000032020000 + + + 16 + 70000000870000003001000027010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000007D000000BD00000032020000 + + + 16 + 70000000870000005301000043020000 + + + + 1465 + 1465 + 0 + 1 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 2A04000066000000FD050000F5020000 + + + 16 + 610800009F0100005D0B000021020000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0300000066000000FD05000066000000 + + + 16 + 2602000000FDFFFF8505000033FDFFFF + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 1936 + 1936 + 1 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 2704000066000000000600000E030000 + + + 16 + 3C090000A3010000380C000025020000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000007D000000BD00000032020000 + + + 16 + 70000000870000005301000043020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000007D000000BD00000032020000 + + + 16 + 70000000870000005301000043020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006602000020040000F5020000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000DC01000023040000BE020000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006602000020040000F5020000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 00000000630000000006000063000000 + + + 16 + 2602000000FDFFFF8505000033FDFFFF + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0300000066000000FD05000066000000 + + + 16 + 2602000000FDFFFF8505000033FDFFFF + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0300000066000000FD05000066000000 + + + 16 + 2602000000FDFFFF8505000033FDFFFF + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0300000066000000FD05000066000000 + + + 16 + 2602000000FDFFFF8505000033FDFFFF + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0300000066000000FD05000066000000 + + + 16 + 2602000000FDFFFF8505000033FDFFFF + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000007D000000BD00000032020000 + + + 16 + 70000000870000005301000043020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006602000020040000F5020000 + + + 16 + 7000000087000000A8020000F5000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006602000020040000F5020000 + + + 16 + 70000000870000005301000043020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 1B05000066000000FD050000F5020000 + + + 16 + 790A00009D010000750D00001F020000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000006D0400008C010000 + + + 16 + 70000000870000003001000027010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 940 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000000E0300000006000021030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 463 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000007602000042000000 + + + + 3355 + 000000000D000000000000000040000000000000FFFFFFFFFFFFFFFFAC0300004F000000B0030000A5010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000FFFF02000B004354616262656450616E650040000000000000B003000006FDFFFF700400005CFEFFFFB00300004F00000070040000A501000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFC000000066000000C40000004B020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000001DFDFFFFC000000002FFFFFF0000000066000000C00000004B0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000D801000023040000DC0100000000000001000000040000000100000081FEFFFF0000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFF0D0300006B01000011030000BE0200000000000002000000040000000000000064FDFFFFFA02000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000004B020000230400004F02000001000000010000100400000001000000B4FDFFFF31000000FFFFFFFF04000000C5000000C7000000B401000077940000018000800000010000000000000006FFFFFF23040000C5FFFFFF000000004F020000230400000E0300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFF2304000066000000270400000E030000010000000200001004000000010000006BFDFFFF9C020000000000000000000000000000010000000000000000000000000000000100000090070000FFFFFFFF0C0000008F0700009307000094070000950700009607000091070000B5010000B8010000BA050000BB050000BC050000CB090000018000400000000000001805000006FDFFFF00060000C5FFFFFF180500004F000000000600000E03000000000000404100460C0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000002000000000000000000000002000000FFFFFFFF140500004F000000180500000E030000000000000200000004000000000000000000000000000000000000000000000000000000000000000200000090070000FFFFFFFF8F070000010000009007000001000000FFFFFFFF8F070000000000000020000001000000FFFFFFFFFFFFFFFF0000000062000000000600006600000001000000010000100400000001000000000000000000000000000000000000000000000001000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000018000200000010000000000000006FDFFFF0006000019FDFFFF000000004F00000000060000620000000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB00000001000000FFFF02001400434D756C746950616E654672616D65576E64457800010084610800009F0100005D0B00002102000000000000000000000200000000000000B90500000000000000000000000000000000000001000000B90500000000000000000000 + + + 59392 + File + + 2358 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000008474153474155474596000000000000001400084741534741554745084741534755414745084532554C44465243065278446174610E496E74657272757074556172743013496E746572727570745561727430417070527812496E7465727275707455617274417070527811496170436865636B48616E647368616B65165561727430496170436865636B48616E647368616B650C4941504552524F525F434D440C453275694E65617246756C6C0E5457495F494F5F4F504552415445117563556172743254696D656F7574436E740553414444520F625561727430536E6441636B466C670A49535050726F636573730E556172743248616E647368616B650B554152545F444546494E450762495350466C670B49727155617274304469730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020001001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000400190000000000000000000000000000000001000000010000000180C8880000000004001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 657 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000004002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000004002800000000000000000000000000000000010000000100000001801B80000000000400290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000004002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020000002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1536 + 864 + + + + + + 1 + 0 + + 100 + 21 + + .\code_bootloader\STARTUP.A51 + 0 + 1 + 1 + 1 + + 0 + + + .\header_drv\McuLib.h + 0 + 14 + 23 + 1 + + 0 + + + .\code_drv\RTC.c + 51 + 65 + 86 + 1 + + 0 + + + .\header_drv\Twi.h + 0 + 1 + 6 + 1 + + 0 + + + .\code_drv\TWI.c + 0 + 364 + 390 + 1 + + 0 + + + .\header_drv\Afe.h + 17 + 101 + 120 + 1 + + 0 + + + .\header_drv\MCURegister.h + 0 + 346 + 357 + 1 + + 0 + + + .\code_drv\Calculate.c + 0 + 457 + 494 + 1 + + 0 + + + .\readme.txt + 10 + 1 + 33 + 1 + + 0 + + + .\header_app\Main.h + 0 + 66 + 75 + 1 + + 0 + + + .\code_drv\McuLib.c + 0 + 62 + 80 + 1 + + 0 + + + .\code_drv\AFE.c + 28 + 119 + 136 + 1 + + 0 + + + .\code_drv\BootApp.c + 0 + 1 + 21 + 1 + + 0 + + + .\code_app\Main.c + 57 + 18 + 36 + 1 + + 0 + + + .\code_app\Initial.c + 17 + 519 + 539 + 1 + + 0 + + + .\code_bootloader\Flash.c + 0 + 1 + 1 + 1 + + 0 + + + .\code_drv\BootIAP.c + 2 + 1 + 261 + 1 + + 0 + + + .\HEADER_BOOTLOADER\IAPISP.H + 0 + 105 + 142 + 1 + + 0 + + + .\code_app\Memory.c + 0 + 13 + 14 + 1 + + 0 + + + .\header_app\Memory.h + 77 + 1 + 6 + 1 + + 0 + + + .\header_drv\McuFlash.h + 0 + 15 + 26 + 1 + + 0 + + + .\code_dataflash\DataFlash.c + 58 + 76 + 108 + 1 + + 0 + + + .\code_drv\STARTUP.A51 + 0 + 1 + 24 + 1 + + 0 + + + .\code_app\InterruptApp.c + 0 + 12 + 13 + 1 + + 0 + + + .\code_bootloader\IapIsp.c + 45 + 393 + 415 + 1 + + 0 + + + .\code_bootloader\Main.c + 0 + 407 + 408 + 1 + + 0 + + + .\code_app\UartApp.c + 0 + 14 + 15 + 1 + + 0 + + + .\HEADER_BOOTLOADER\FLASH.H + 0 + 6 + 15 + 1 + + 0 + + + + +
diff --git a/MCUCore.uvgui.yangweilei b/MCUCore.uvgui.yangweilei new file mode 100644 index 0000000..2302f52 --- /dev/null +++ b/MCUCore.uvgui.yangweilei @@ -0,0 +1,3403 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + 38003 + Registers + 115 116 + + + 346 + Code Coverage + 610 160 + + + 204 + Performance Analyzer + 770 + + + + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 80 80 80 + + + 1937 + Watch 2 + + 80 80 80 + + + 1935 + Call Stack + Locals + + 80 80 80 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -32000 + -32000 + + + -1 + -1 + + + 297 + 827 + 1714 + 1025 + + + + 0 + + 321 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000007D453A5C534833363733307820424D535C44656D6F436F6465207570646174615C332D53483339463030342044656D6F436F646520757064617461206261636B75705C534833394630303326463030345F44656D6F436F64655F56322E31305F32312E31322E31342E32302E34365C636F64655F6170705C4D61696E2E6300000000064D61696E2E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F5000000650000008007000090020000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A40000004F000000B0030000D7000000 + + + 16 + A400000065000000B0030000ED000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000EE00000061020000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000EE00000061020000 + + + 16 + 3A00000050000000F600000070020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000BE000000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000EE00000061020000 + + + 16 + 3A00000050000000F600000070020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000EE00000061020000 + + + 16 + 3A00000050000000F600000070020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000950200007D070000CE030000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000F9010000B003000095020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000950200007D070000CE030000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + A700000066000000AD030000BE000000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000BE000000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000BE000000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000BE000000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A700000066000000AD030000BE000000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000EE00000061020000 + + + 16 + 3A00000050000000F600000070020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000950200007D070000CE030000 + + + 16 + 3A0000005000000012020000D8000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000950200007D070000CE030000 + + + 16 + 3A00000050000000F600000070020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000010020000AD0300007C020000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 3A00000050000000DA00000010010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 940 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E703000080070000FA030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 463 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 3119 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFA4000000D7000000B0030000DB000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000A400000065000000B0030000ED000000A40000004F000000B0030000D70000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F0000001003000009020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000001003000065000000B00300001F020000100300004F000000B00300000902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF10000004F000000F50000007A02000001000000020000100400000001000000EEFEFFFF94020000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000065000000F100000090020000000000004F000000F10000007A0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000F5010000B0030000F901000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000000F020000B0030000AB02000000000000F9010000B00300009502000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFD8010000F9010000DC0100009502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000007A020000800700007E0200000100000001000010040000000100000045FDFFFFD2000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000000000009402000080070000FD030000000000007E02000080070000E70300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2327 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000F756343656C6C4E756D4F6666736574960000000000000014000F756343656C6C4E756D4F666673657409756343656C6C4E756D0A75634B657956616C756505495350454E094166655744544469730653434F4E46320E42616C616E636550726F636573730A42616C50726F636573730B43544F436865636B566F6C046243544F0343544F04766F69640962536C656570466C670A6257616B657570466C670C45327369437572724761696E0D4C6F77506F776572436865636B0F53797374656D496E746F536C65657011453275634C6F77506F77657244656C657911453275634453473150574D526174696F4C11453275634453473150574D526174696F480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 747 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000D4D6375466C6173685F4C6F6164960000000000000005000D4D6375466C6173685F4C6F61640D4D6375466C616C73685F4941500C4D6375466C6168735F49535006454550524F4D08426F6F744C6F616400000000000000000000000000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 320100004F0000001D06000093000000 + + + 16 + 32010000650000001D060000A9000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002B01000018020000 + + + 16 + 5300000069000000F300000029010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002B0100000E030000 + + + 16 + 53000000690000000F01000089020000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 35010000660000001A0600007A000000 + + + 16 + 53000000690000002B020000F1000000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1936 + 1936 + 1 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002B0100000E030000 + + + 16 + 53000000690000000F01000089020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002B0100000E030000 + + + 16 + 53000000690000000F01000089020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000004C0200001A060000CE030000 + + + 16 + 53000000690000002B020000F1000000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000004C0200001A060000CE030000 + + + 16 + C7010000210300009F030000A9030000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004C0200001A060000CE030000 + + + 16 + 53000000690000002B020000F1000000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 32010000630000001D06000093000000 + + + 16 + 53000000690000002B020000F1000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 35010000660000001A0600007A000000 + + + 16 + 53000000690000002B020000F1000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 35010000660000001A0600007A000000 + + + 16 + 53000000690000002B020000F1000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 35010000660000001A0600007A000000 + + + 16 + 53000000690000002B020000F1000000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 35010000660000001A0600007A000000 + + + 16 + 53000000690000002B020000F1000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002B01000018020000 + + + 16 + 53000000690000000F01000089020000 + + + + 38007 + 38007 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004C0200001A060000CE030000 + + + 16 + 53000000690000002B020000F1000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004C0200001A060000D8020000 + + + 16 + 53000000690000000F01000089020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 24060000660000007D070000CE030000 + + + 16 + CE020000FB010000DF06000084020000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 5300000069000000F300000029010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 1303000066000000AD030000F0010000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 940 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E703000080070000FA030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 463 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 020000001C0000007102000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 3082 + 000000000A000000000000000020000001000000FFFFFFFFFFFFFFFF32010000930000001D0600009700000001000000010000100400000001000000BCFFFFFF4D020000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000100000032010000650000001D060000A9000000320100004F0000001D060000930000000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F0000001003000009020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000001003000065000000B00300001F020000100300004F000000B00300000902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF2E0100004F0000003201000031020000010000000200001004000000010000001CFFFFFFA9020000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000650000002E0100003D030000000000004F0000002E010000310200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000310200001D060000350200000100000001000010040000000100000075FDFFFFBA000000FFFFFFFF05000000C5000000C7000000B401000077940000C60000000180008000000100000000000000410300001D060000FD03000000000000350200001D060000E70300000000000040820056050000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0642726F777365010000007794000001000000FFFFFFFFFFFFFFFF07436F6D6D616E6401000000C600000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFF1D0600004F00000021060000E7030000010000000200001004000000010000007BFDFFFF3E01000000000000000000000000000001000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800040000001000000210600006500000080070000FD030000210600004F00000080070000E703000000000000404100560E0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000000000000000000 + + + 59392 + File + + 2141 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000094D656D6F727953657496000000000000000800114D6375466C61736857724F6E65427974650B5561727453656E6441636B094D656D6F72795365740D453275635265736572766564310D453275635265736572766564300B525443496E697454696D650A4D656D6F7279436F7079063058303037450000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020003001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 657 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + .\code_app\Main.c + 13 + 59 + 69 + 1 + + 0 + + + + +
diff --git a/MCUCore.uvopt b/MCUCore.uvopt new file mode 100644 index 0000000..45b6e2d --- /dev/null +++ b/MCUCore.uvopt @@ -0,0 +1,3960 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + McuFlash_Load + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 14 + + + + + + + + + + + BIN\SH51A.dll + + + + 0 + PWSTATINFO + 200,50,700 + + + 0 + DLGTP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + 0 + SH51A + -J0 -DSH39F003 -V-1072775120 -N-2046820256 -O67176199 -S0 -K0 -C0 -Q0 -L0 -M0 -P0 -T0 -F0 -G0 -H0 -A0 -B0 -E0 -I0 -Z000000000000000000000000000000000000000000 + + + 0 + DLGDP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + + + 0 + 1 + E2ucSOC,0x0A + + + 1 + 1 + E2uiCycleCount,0x0A + + + 2 + 1 + E2siDfilterCur,0x0A + + + 3 + 1 + Info,0x0A + + + 4 + 1 + slCadcCurAverage,0x0A + + + 5 + 1 + slCadcCurBuf,0x0A + + + 6 + 1 + E2siCadcGain,0x0A + + + 7 + 1 + E2siCadcOffset,0x0A + + + 8 + 1 + AFE,0x0A + + + 9 + 1 + ucCadcCnt,0x0A + + + 10 + 1 + bISPFlg + + + 11 + 1 + Info + + + 12 + 1 + ucUart1Buf,0x10 + + + 13 + 1 + TWISTA + + + 14 + 1 + TWIBR + + + 15 + 1 + REG.AFEFLAG1 + + + + + 1 + 0 + I:0Xf0 + + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + McuFlalsh_IAP + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 14 + + + + + + + + + + + BIN\SH51A.dll + + + + 0 + DLGTP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + 0 + SH51A + -J0 -DSH39F004 -V-1073496064 -N-2046820256 -O67176199 -S0 -K0 -C0 -Q0 -L0 -M0 -P0 -T0 -F0 -G0 -H0 -A0 -B0 -E0 -I0 -Z000000000000000000000000000000000000000000 + + + 0 + DLGDP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + + + 0 + 0 + 354 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212\SH39F003&F004_DemoCode_V2.12_20221212\code_drv\Protect.c + + +
+ + 1 + 0 + 472 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212-TWI涓嶄紶杈撻暱搴SH39F003&F004_DemoCode_V2.12_20221212\code_app\UartApp.c + + +
+ + 2 + 0 + 46 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212-TWI涓嶄紶杈撻暱搴SH39F003&F004_DemoCode_V2.12_20221212\code_drv\TWI.c + + +
+ + 3 + 0 + 23 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 4 + 0 + 29 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 5 + 0 + 52 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.14\SH39F003&F004_DemoCode_V2.14_20231012\code_drv\KeyScan.c + + +
+ + 6 + 0 + 21 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\code_drv\BootApp.c + + +
+
+ + + 0 + 1 + E2ucSOC,0x0A + + + 1 + 1 + E2ulLastFCC,0x0A + + + 2 + 1 + E2uiCycleCount,0x0A + + + 3 + 1 + uiDfFCC,0x0A + + + 4 + 1 + uiDfRC,0x0A + + + 5 + 1 + uiRCCharge,0x0A + + + 6 + 1 + uiRCDischarge,0x0A + + + 7 + 1 + uiTempBK,0x0A + + + 8 + 1 + ucCycleGain,0x0A + + + 9 + 1 + uiDfRSOC,0x0A + + + 10 + 1 + slCur,0x0A + + + 11 + 1 + E2siDfilterCur,0x0A + + + 12 + 1 + Info,0x0A + + + 13 + 1 + slCadcCurAverage,0x0A + + + 14 + 1 + slCadcCurBuf,0x0A + + + 15 + 1 + E2siCadcGain,0x0A + + + 16 + 1 + E2siCadcOffset,0x0A + + + 17 + 1 + AFE,0x0A + + + 18 + 1 + ucCadcCnt,0x0A + + + + + 1 + 0 + I:0Xf0 + + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + McuFlahs_ISP + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 14 + + + + + + + + + + + BIN\SH51A.dll + + + + 0 + DLGTP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + 0 + SH51A + -J0 -DSH39F004 -V-1073496064 -N-2046820256 -O67176199 -S0 -K0 -C0 -Q0 -L0 -M0 -P0 -T0 -F0 -G0 -H0 -A0 -B0 -E0 -I0 -Z000000000000000000000000000000000000000000 + + + 0 + DLGDP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + + + 0 + 0 + 52 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.14\SH39F003&F004_DemoCode_V2.14_20231012\code_drv\KeyScan.c + + +
+
+ + + 0 + 1 + E2ucSOC,0x0A + + + 1 + 1 + E2ulLastFCC,0x0A + + + 2 + 1 + E2uiCycleCount,0x0A + + + 3 + 1 + uiDfFCC,0x0A + + + 4 + 1 + uiDfRC,0x0A + + + 5 + 1 + uiRCCharge,0x0A + + + 6 + 1 + uiRCDischarge,0x0A + + + 7 + 1 + uiTempBK,0x0A + + + 8 + 1 + ucCycleGain,0x0A + + + 9 + 1 + uiDfRSOC,0x0A + + + 10 + 1 + slCur,0x0A + + + 11 + 1 + E2siDfilterCur,0x0A + + + 12 + 1 + Info,0x0A + + + 13 + 1 + slCadcCurAverage,0x0A + + + 14 + 1 + slCadcCurBuf,0x0A + + + 15 + 1 + E2siCadcGain,0x0A + + + 16 + 1 + E2siCadcOffset,0x0A + + + 17 + 1 + AFE,0x0A + + + 18 + 1 + ucCadcCnt,0x0A + + + + + 1 + 0 + I:0Xf0 + + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + EEPROM + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 9 + + + + + + + + + + + BIN\SH51.DLL + + + + 0 + SH51 + -D -V0 -O67335 -S0 -C0 -L0 -M0 -T0 -F0 -G0 -H0 -Z000000000000000000000000000000000000000000 + + + + + 0 + 0 + 58 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\yangweilei\Desktop\SH39F003&F004_DemoCode_V2.0_200511_hpp\code_drv\McuLib.c + + +
+ + 1 + 0 + 46 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Initial.c + + +
+ + 2 + 0 + 48 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Initial.c + + +
+ + 3 + 0 + 53 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Initial.c + + +
+ + 4 + 0 + 62 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Initial.c + + +
+ + 5 + 0 + 90 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Main.c + + +
+ + 6 + 0 + 178 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.02.09.35_yangweilei\code_drv\Calculate.c + + +
+ + 7 + 0 + 327 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.04.19.11\code_bootloader\IapIsp.c + + +
+ + 8 + 0 + 331 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.04.19.11\code_bootloader\IapIsp.c + + +
+ + 9 + 0 + 103 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.04.19.11\code_bootloader\Main.c + + +
+ + 10 + 0 + 55 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.06.19.58\code_app\Main.c + + +
+ + 11 + 0 + 309 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.15.10.11 淇敼鍐呴儴娓╁害閲囬泦锛屽鍔燙ADC闅忔俯搴﹁皟鏁磑ffset\code_drv\Calculate.c + + +
+ + 12 + 0 + 354 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212\SH39F003&F004_DemoCode_V2.12_20221212\code_drv\Protect.c + + +
+ + 13 + 0 + 472 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212-TWI涓嶄紶杈撻暱搴SH39F003&F004_DemoCode_V2.12_20221212\code_app\UartApp.c + + +
+ + 14 + 0 + 23 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 15 + 0 + 29 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 16 + 0 + 52 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.14\SH39F003&F004_DemoCode_V2.14_20231012\code_drv\KeyScan.c + + +
+ + 17 + 0 + 21 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\code_drv\BootApp.c + + +
+
+ + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + BootLoad + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 14 + + + + + + + + + + + BIN\SH51A.dll + + + + 0 + DLGTP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + 0 + SH51A + -J0 -DSH39F004 -V-1073512448 -N-2046820256 -O67176199 -S0 -K0 -C0 -Q0 -L0 -M0 -P0 -T0 -F0 -G0 -H0 -A0 -B0 -E0 -I0 -Z000000000000000000000000000000000000000000 + + + 0 + DLGDP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + + + 0 + 0 + 23 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 1 + 0 + 29 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 2 + 0 + 52 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.14\SH39F003&F004_DemoCode_V2.14_20231012\code_drv\KeyScan.c + + +
+ + 3 + 0 + 21 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\code_drv\BootApp.c + + +
+
+ + + 1 + 0 + I:0Xf0 + + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + App + 1 + 0 + 0 + + 1 + 1 + 5 + 0 + 0 + 5266323 + 0 + 53104168 + 17768312 + 0 + .\header_app\Main.h + Main.h + + + 1 + 2 + 1 + 0 + 0 + 57 + 0 + 46 + 92 + 0 + .\code_app\Main.c + Main.c + + + 1 + 3 + 1 + 0 + 0 + 8 + 0 + 537 + 565 + 0 + .\code_app\Initial.c + Initial.c + + + 1 + 4 + 1 + 0 + 0 + 63 + 0 + 1 + 41 + 0 + .\code_app\InterruptApp.c + InterruptApp.c + + + 1 + 5 + 1 + 0 + 0 + 47 + 0 + 62 + 62 + 0 + .\code_app\Led.c + Led.c + + + 1 + 6 + 1 + 0 + 0 + 5266323 + 0 + 53104168 + 17768312 + 0 + .\code_app\KeyApp.c + KeyApp.c + + + 1 + 7 + 1 + 0 + 0 + 8 + 0 + 54 + 89 + 0 + .\code_app\LowPower.c + LowPower.c + + + 1 + 8 + 1 + 0 + 0 + 30 + 0 + 158 + 170 + 0 + .\code_app\UartApp.c + UartApp.c + + + 1 + 9 + 1 + 0 + 0 + 11 + 0 + 135 + 181 + 0 + .\code_app\Memory.c + Memory.c + + + 1 + 10 + 5 + 0 + 0 + 5266323 + 0 + 53104168 + 17768312 + 0 + .\readme.txt + readme.txt + + + + + Driver + 1 + 0 + 0 + + 2 + 11 + 1 + 0 + 0 + 5 + 0 + 272 + 272 + 0 + .\code_drv\AFE.c + AFE.c + + + 2 + 12 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\Balance.c + Balance.c + + + 2 + 13 + 1 + 0 + 0 + 25 + 0 + 22 + 38 + 0 + .\code_drv\Calculate.c + Calculate.c + + + 2 + 14 + 1 + 0 + 0 + 62 + 0 + 19 + 50 + 0 + .\code_drv\Calibrate.c + Calibrate.c + + + 2 + 15 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\ChargerLoad.c + ChargerLoad.c + + + 2 + 16 + 1 + 0 + 0 + 13 + 0 + 349 + 367 + 0 + .\code_drv\ExtE2PRom.c + ExtE2PRom.c + + + 2 + 17 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\Interrupt.c + Interrupt.c + + + 2 + 18 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\KeyScan.c + KeyScan.c + + + 2 + 19 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\McuFlash.c + McuFlash.c + + + 2 + 20 + 1 + 0 + 0 + 5 + 0 + 84 + 84 + 0 + .\code_drv\McuLib.c + McuLib.c + + + 2 + 21 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\MosCtrl.c + MosCtrl.c + + + 2 + 22 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\PorSelfTest.c + PorSelfTest.c + + + 2 + 23 + 1 + 0 + 0 + 27 + 0 + 143 + 156 + 0 + .\code_drv\Protect.c + Protect.c + + + 2 + 24 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\RTC.c + RTC.c + + + 2 + 25 + 1 + 0 + 0 + 14 + 0 + 408 + 408 + 0 + .\code_drv\TWI.c + TWI.c + + + 2 + 26 + 1 + 0 + 0 + 0 + 0 + 103 + 103 + 0 + .\code_drv\Uart.c + Uart.c + + + 2 + 27 + 1 + 0 + 0 + 67 + 0 + 1 + 17 + 0 + .\code_drv\Thermistor.c + Thermistor.c + + + 2 + 28 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\TwiIO.c + TwiIO.c + + + 2 + 29 + 2 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\STARTUP.A51 + STARTUP.A51 + + + + + Gasguage + 1 + 0 + 0 + + 3 + 30 + 1 + 0 + 0 + 5266323 + 0 + 1 + 1 + 0 + .\code_gasguage\GasGaugeInter_V4_13.c + GasGaugeInter_V4_13.c + + + 3 + 31 + 4 + 0 + 0 + 5266323 + 0 + 53104296 + 17768312 + 0 + .\code_gasguage\GasGaugeV4_13.LIB + GasGaugeV4_13.LIB + + + + + AppBoot + 1 + 0 + 0 + + 4 + 32 + 1 + 0 + 0 + 5266323 + 0 + 53103992 + 17768312 + 0 + .\code_drv\BootApp.c + BootApp.c + + + 4 + 33 + 1 + 0 + 0 + 5266323 + 0 + 53103992 + 17768312 + 0 + .\code_drv\BootIAP.c + BootIAP.c + + + + + EEPROM + 1 + 0 + 0 + + 5 + 34 + 1 + 0 + 0 + 5266323 + 0 + 53104040 + 17768312 + 0 + .\code_dataflash\DataFlash.c + DataFlash.c + + + + + Header + 0 + 0 + 0 + + 6 + 35 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\Initial.h + Initial.h + + + 6 + 36 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\InterruptApp.h + InterruptApp.h + + + 6 + 37 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\KeyApp.h + KeyApp.h + + + 6 + 38 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\Led.h + Led.h + + + 6 + 39 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\LowPower.h + LowPower.h + + + 6 + 40 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\Main.h + Main.h + + + 6 + 41 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\Memory.h + Memory.h + + + 6 + 42 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\UartApp.h + UartApp.h + + + 6 + 43 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Afe.h + Afe.h + + + 6 + 44 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Balance.h + Balance.h + + + 6 + 45 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\c51_type.h + c51_type.h + + + 6 + 46 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Calculate.h + Calculate.h + + + 6 + 47 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Calibrate.h + Calibrate.h + + + 6 + 48 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\ChargerLoad.h + ChargerLoad.h + + + 6 + 49 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\ExtE2PRom.h + ExtE2PRom.h + + + 6 + 50 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Interrupt.h + Interrupt.h + + + 6 + 51 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\ISP.h + ISP.h + + + 6 + 52 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\KeyScan.h + KeyScan.h + + + 6 + 53 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\McuFlash.h + McuFlash.h + + + 6 + 54 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\McuLib.h + McuLib.h + + + 6 + 55 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\MCURegister.h + MCURegister.h + + + 6 + 56 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\MosCtrl.h + MosCtrl.h + + + 6 + 57 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\PorSelfTest.h + PorSelfTest.h + + + 6 + 58 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Protect.h + Protect.h + + + 6 + 59 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\RTC.h + RTC.h + + + 6 + 60 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Twi.h + Twi.h + + + 6 + 61 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Uart.h + Uart.h + + + + + BootLoad + 1 + 0 + 0 + + 7 + 62 + 1 + 0 + 0 + 5266323 + 0 + 53104232 + 17768312 + 0 + .\code_bootloader\Main.c + Main.c + + + 7 + 63 + 1 + 0 + 0 + 5266323 + 0 + 53104232 + 17768312 + 0 + .\code_bootloader\IapIsp.c + IapIsp.c + + + 7 + 64 + 1 + 0 + 0 + 5266323 + 0 + 53104232 + 17768312 + 0 + .\code_bootloader\Flash.c + Flash.c + + + 7 + 65 + 2 + 0 + 0 + 5266323 + 0 + 53104232 + 17768312 + 0 + .\code_bootloader\STARTUP.A51 + STARTUP.A51 + + + + + Default + 1 + Build + 0 + + Default + 1 + + 35824 + 1 + Logic Analyzer + 0 + + 0 + + 1 + 6 + 0 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 1 + 0 + 0 + 0 + + + 59392 + 2 + File + 0 + + 0 + + 1 + 2 + 3 + 0 + 24 + 0 + 50 + 893 + 0 + 0 + 0 + 0 + 100 + 0 + 1 + 0 + + + 59398 + 3 + Build + 0 + + 0 + + 1 + 2 + 3 + 0 + 50 + 0 + 76 + 384 + 0 + 0 + 0 + 0 + 100 + 0 + 0 + 0 + + + 59399 + 4 + Debug + 0 + + 0 + + 1 + 2 + 3 + 0 + 50 + 0 + 76 + 626 + 0 + 0 + 0 + 0 + 100 + 0 + 1 + 0 + + + 197 + 5 + Build Output + 0 + + 0 + + 1 + 2 + 4 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 1 + 1 + 0 + + + 198 + 6 + Command + 197 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 199 + 7 + Find in Files + 198 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 38007 + 8 + Browse + 199 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1939 + 9 + UART #1 + 38007 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1940 + 10 + UART #2 + 1939 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1941 + 11 + UART #3 + 1940 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1942 + 12 + UART #4 + 1941 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1944 + 13 + Call Stack + 197 + + 197 + + 1 + 2 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 1 + 1 + 0 + + + 1507 + 14 + Call Stack + 1944 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1935 + 15 + Locals + 1507 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1936 + 16 + Watch 1 + 1935 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1937 + 17 + Watch 2 + 1936 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1465 + 18 + Memory 1 + 1937 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1466 + 19 + Memory 2 + 1465 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1467 + 20 + Memory 3 + 1466 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1468 + 21 + Memory 4 + 1467 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1506 + 22 + Symbols + 1468 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1005 + 23 + Project + 0 + + 0 + + 1 + 2 + 1 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 1 + 0 + + + 109 + 24 + Books + 1005 + + 0 + + 1 + 4 + 2 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 195 + 25 + Functions + 109 + + 0 + + 1 + 4 + 2 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 196 + 26 + Templates + 195 + + 0 + + 1 + 4 + 2 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 38003 + 27 + Registers + 196 + + 0 + + 1 + 4 + 2 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 1 + 1 + 0 + + + 35885 + 28 + not set + 0 + + 0 + + 1 + 2 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35886 + 29 + not set + 35885 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35887 + 30 + not set + 35886 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35888 + 31 + not set + 35887 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35889 + 32 + not set + 35888 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35890 + 33 + not set + 35889 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35891 + 34 + not set + 35890 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35892 + 35 + not set + 35891 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35893 + 36 + not set + 35892 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35894 + 37 + not set + 35893 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35895 + 38 + not set + 35894 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35896 + 39 + not set + 35895 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35897 + 40 + not set + 35896 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35898 + 41 + not set + 35897 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35899 + 42 + not set + 35898 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35900 + 43 + not set + 35899 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35901 + 44 + not set + 35900 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35902 + 45 + not set + 35901 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35903 + 46 + not set + 35902 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35904 + 47 + not set + 35903 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35905 + 48 + not set + 35904 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 203 + 49 + Disassembly + 0 + + 0 + + 1 + 2 + 3 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 1 + 1 + 0 + + + 1913 + 50 + Instruction Trace + 203 + + 0 + + 1 + 4 + 2 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 343 + 51 + Performance Analyzer + 1913 + + 0 + + 1 + 4 + 2 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 204 + 52 + Performance Analyzer + 343 + + 0 + + 1 + 4 + 2 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 346 + 53 + Code Coverage + 204 + + 0 + + 1 + 4 + 2 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + + + + 1 + 0 + + 100 + 0 + + + .\code_app\Main.c + 57 + 46 + 92 + + + .\code_drv\ExtE2PRom.c + 13 + 349 + 367 + + + .\code_app\Memory.c + 11 + 135 + 181 + + + .\code_drv\Calibrate.c + 62 + 19 + 50 + + + .\code_drv\Calculate.c + 25 + 22 + 38 + + + .\code_drv\Thermistor.c + 67 + 1 + 17 + + + .\HEADER_DRV\CALCULATE.H + 14 + 1 + 26 + + + .\code_drv\Protect.c + 27 + 143 + 156 + + + .\code_app\Initial.c + 8 + 537 + 565 + + + .\HEADER_DRV\MCUFLASH.H + 79 + 55 + 64 + + + .\header_app\Main.h + 28 + 1 + 4 + + + .\HEADER_DRV\CALIBRATE.H + 8 + 1 + 5 + + + .\code_drv\AFE.c + 5 + 272 + 272 + + + .\HEADER_DRV\AFE.H + 8 + 1 + 52 + + + \Y\KEIL\ZDBMS\SH39F003&F004_DEMOCODE_V2.15\HEADER_APP\UARTAPP.H + 8 + 65 + 65 + + + .\code_app\InterruptApp.c + 63 + 1 + 41 + + + .\code_drv\McuLib.c + 5 + 84 + 84 + + + .\code_drv\Uart.c + 0 + 103 + 103 + + + .\code_app\UartApp.c + 30 + 158 + 170 + + + .\HEADER_DRV\MCUREGISTER.H + 0 + 316 + 334 + + + .\code_app\Led.c + 47 + 62 + 62 + + + \Y\KEIL\ZDBMS\SH39F003&F004_DEMOCODE_V2.15\HEADER_APP\LED.H + 28 + 1 + 4 + + + .\code_app\LowPower.c + 8 + 54 + 89 + + + .\HEADER_DRV\UART.H + 47 + 1 + 19 + + + + + +
diff --git a/MCUCore.uvproj b/MCUCore.uvproj new file mode 100644 index 0000000..1cad7da --- /dev/null +++ b/MCUCore.uvproj @@ -0,0 +1,4522 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + + McuFlash_Load + 0x0 + MCS-51 + + + SH39F003 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F003.H + + + + + + + + + + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + MCUCore_Load + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + 0 + 14 + + + + + + + + + + + + + + BIN\SH51A.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4106 + + BIN\SH51A.dll + "" () + + + + + 2 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0xfc00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x200 + 0x8ff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 1 + 0 + 1 + 3 + 7 + 2 + 0 + 1 + 0 + 4096 + + + + + .\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_classb\iec60730_proc\Include;.\code_classb\config + + + + 0 + 1 + 0 + 1 + + + + + .\code_classb\iec60730_lib\include;.\code_classb\iec60730_proc\Include;.\code_classb\config + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + 0X0000-0XFBFF + 0X0200-0X0AFE + + + + + + + ?CO?BootIAP(0x0000) + + + + + + + + + + App + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + + + EEPROM + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + McuFlalsh_IAP + 0x0 + MCS-51 + + + SH39F004 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F004.H + + + + + + + + + + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + McuFlash_IAP + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + 0 + 14 + + + + + + + + + + + + + + BIN\SH51A.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4106 + + BIN\SH51A.dll + "" () + + + + + 2 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x1000 + 0x7800 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x200 + 0x8ff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 1 + 0 + 1 + 3 + 7 + 2 + 0 + 1 + 0 + 4096 + + + + + .\header_app;.\header_drv;.\code_gasguage + + + + 0 + 1 + 0 + 1 + + + + + .\header_app;.\header_drv;.\code_gasguage;.\code_isp + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + 0X1000-0X87FF + 0X0200-0X0AFE + + + + + + + ?CO?DATAFLASH(0x8400) + + + + + + + + + + App + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + 2 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + + + + + + EEPROM + + + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + McuFlahs_ISP + 0x0 + MCS-51 + + + SH39F004 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F004.H + + + + + + + + + + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + McuFlash_ISP + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + 0 + 14 + + + + + + + + + + + + + + BIN\SH51A.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4106 + + BIN\SH51A.dll + "" () + + + + + 2 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x1000 + 0xec00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x200 + 0x8ff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 1 + 0 + 1 + 3 + 7 + 2 + 0 + 1 + 0 + 4096 + + + + + .\header_app;.\header_drv;.\code_gasguage + + + + 0 + 1 + 0 + 1 + + + + + + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + 0X1000-0XFBFF + 0X0200-0X0AFE + + + + + + + ?CO?DATAFLASH(0xF800) + + + + + + + + + + App + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + 2 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + + + + + + EEPROM + + + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + EEPROM + 0x0 + MCS-51 + + + SH39F004 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F004.H + + + + + + + + + + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + Eeprom + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + 0 + 9 + + + + + + + + + + + + + + BIN\SH51.DLL + + + + + 1 + 0 + 0 + 1 + 1 + 4101 + + BIN\SH51.DLL + + + + + + 2 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x200 + 0x2ff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 0 + 0 + 1 + 0 + 1 + 3 + 7 + 2 + 0 + 1 + 0 + 0 + + + + + .\header + + + + 0 + 1 + 0 + 0 + + + + + + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + + 0X0200-0X04FE + + + + + + + ?CO?DATAFLASH(0x0000) + + + + + + + + + + App + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + + + EEPROM + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + BootLoad + 0x0 + MCS-51 + + + SH39F004 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F004.H + + + + + + + + + + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + BootLoad + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + 0 + 14 + + + + + + + + + + + + + + BIN\SH51A.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4106 + + BIN\SH51A.dll + "" () + + + + + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x1000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 0 + 0 + 1 + 0 + 1 + 3 + 8 + 2 + 1 + 1 + 0 + 0 + + + + + .\header_bootloader + + + + 0 + 1 + 0 + 1 + + + + + .\header_bootloader + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + 0X0000-0X0FFF + + + + + + + + ?PR?BOOTIAPISP?IAPISP(0xA6) + + + + + + + + + + App + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + + + EEPROM + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + +
diff --git a/MCUCore_Load.m51 b/MCUCore_Load.m51 new file mode 100644 index 0000000..a1dac60 --- /dev/null +++ b/MCUCore_Load.m51 @@ -0,0 +1,6984 @@ +BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 1 + + +BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: +C:\KEIL_V5\C51\BIN\BL51.EXE .\output\Main.obj, .\output\Initial.obj, .\output\InterruptApp.obj, .\output\Led.obj, .\outp +>> ut\KeyApp.obj, .\output\LowPower.obj, .\output\UartApp.obj, .\output\Memory.obj, .\output\AFE.obj, .\output\Balance.o +>> bj, .\output\Calculate.obj, .\output\Calibrate.obj, .\output\ChargerLoad.obj, .\output\ExtE2PRom.obj, .\output\Interr +>> upt.obj, .\output\KeyScan.obj, .\output\McuFlash.obj, .\output\McuLib.obj, .\output\MosCtrl.obj, .\output\PorSelfTest +>> .obj, .\output\Protect.obj, .\output\RTC.obj, .\output\TWI.obj, .\output\Uart.obj, .\output\Thermistor.obj, .\output\ +>> STARTUP.obj, .\output\TwiIO.obj, .\output\GasGaugeInter_V4_13.obj, .\code_gasguage\GasGaugeV4_13.LIB, .\output\BootAp +>> p.obj, .\output\BootIAP.obj TO .\output\MCUCore_Load REGFILE (.\output\MCUCore_Load.ORC) PRINT (.\MCUCore_Load.m51) R +>> AMSIZE (256) DISABLEWARNING (16) CODE (0X0000-0XFFFF, ?CO?BOOTIAP (0X0000)) XDATA (0X0000-0X0CFE) + + +MEMORY MODEL: LARGE WITH FLOATING POINT ARITHMETIC + + +INPUT MODULES INCLUDED: + .\output\Main.obj (MAIN) + .\output\Initial.obj (INITIAL) + .\output\InterruptApp.obj (INTERRUPTAPP) + .\output\Led.obj (LED) + .\output\KeyApp.obj (KEYAPP) + .\output\LowPower.obj (LOWPOWER) + .\output\UartApp.obj (UARTAPP) + .\output\Memory.obj (MEMORY) + .\output\AFE.obj (AFE) + .\output\Balance.obj (BALANCE) + .\output\Calculate.obj (CALCULATE) + .\output\Calibrate.obj (CALIBRATE) + .\output\ChargerLoad.obj (CHARGERLOAD) + .\output\ExtE2PRom.obj (EXTE2PROM) + .\output\Interrupt.obj (INTERRUPT) + .\output\KeyScan.obj (KEYSCAN) + .\output\McuFlash.obj (MCUFLASH) + .\output\McuLib.obj (MCULIB) + .\output\MosCtrl.obj (MOSCTRL) + .\output\PorSelfTest.obj (PORSELFTEST) + .\output\Protect.obj (PROTECT) + .\output\RTC.obj (RTC) + .\output\TWI.obj (TWI) + .\output\Uart.obj (UART) + .\output\Thermistor.obj (THERMISTOR) + .\output\STARTUP.obj (?C_STARTUP) + .\output\TwiIO.obj (TWIIO) + .\output\GasGaugeInter_V4_13.obj (GASGAUGEINTER_V4_13) + .\code_gasguage\GasGaugeV4_13.LIB (GASGAUGEV4_12) + .\output\BootApp.obj (BOOTAPP) + .\output\BootIAP.obj (BOOTIAP) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?FPADD) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?FPMUL) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?FCAST) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?CASTF) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?FPGETOPN) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C_INIT) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?CLDPTR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?IMUL) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?UIDIV) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?IILDX) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LADD) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSUB) + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 2 + + + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LMUL) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?ULDIV) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SLDIV) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LOR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LNEG) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SLCMP) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?ULCMP) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?ULSHR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SLSHR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSHL) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDIDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDIDATA0) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDXDATA0) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LILDXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTIDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTKIDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTKXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?OFFXADD) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?CCASE) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LIMUL) + + +LINK MAP OF MODULE: .\output\MCUCore_Load (MAIN) + + + TYPE BASE LENGTH RELOCATION SEGMENT NAME + ----------------------------------------------------- + + * * * * * * * D A T A M E M O R Y * * * * * * * + REG 0000H 0008H ABSOLUTE "REG BANK 0" + DATA 0008H 0007H UNIT ?DT?KEYSCAN + DATA 000FH 0006H UNIT ?DT?AFE + DATA 0015H 0004H UNIT ?DT?GASGAUGEINTER_V4_13 + DATA 0019H 0002H UNIT _DATA_GROUP_ + IDATA 001BH 0002H UNIT _IDATA_GROUP_ + IDATA 001DH 0001H UNIT ?ID?EXTE2PROM + 001EH 0002H *** GAP *** + DATA 0020H 0007H BIT_ADDR ?BA?MEMORY + BIT 0027H.0 0001H.3 UNIT ?BI?EXTE2PROM + BIT 0028H.3 0001H.2 UNIT ?BI?UARTAPP + BIT 0029H.5 0000H.7 UNIT _BIT_GROUP_ + BIT 002AH.4 0000H.6 UNIT ?BI?GASGAUGEV4_12 + BIT 002BH.2 0000H.5 UNIT ?BI?AFE + BIT 002BH.7 0000H.5 UNIT ?BI?BALANCE + BIT 002CH.4 0000H.4 UNIT ?BI?LOWPOWER + BIT 002DH.0 0000H.4 UNIT ?BI?CHARGERLOAD + BIT 002DH.4 0000H.3 UNIT ?BI?INTERRUPTAPP + BIT 002DH.7 0000H.3 UNIT ?BI?MCUFLASH + BIT 002EH.2 0000H.2 UNIT ?BI?LED + BIT 002EH.4 0000H.2 UNIT ?BI?MOSCTRL + BIT 002EH.6 0000H.2 UNIT ?BI?PROTECT + BIT 002FH.0 0000H.2 UNIT ?BI?RTC + BIT 002FH.2 0000H.1 UNIT ?BI?CALIBRATE + BIT 002FH.3 0000H.1 UNIT ?BI?KEYSCAN + BIT 002FH.4 0000H.1 UNIT ?BI?PORSELFTEST + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 3 + + + 002FH.5 0000H.3 *** GAP *** + IDATA 0030H 000CH UNIT ?ID?GASGAUGEV4_12 + 003CH 0064H *** GAP *** + IDATA 00A0H 0060H ABSOLUTE + + * * * * * * * X D A T A M E M O R Y * * * * * * * + XDATA 0000H 0002H ABSOLUTE + XDATA 0002H 0014H ABSOLUTE + XDATA 0016H 0004H ABSOLUTE + XDATA 001AH 0004H ABSOLUTE + XDATA 001EH 0004H ABSOLUTE + XDATA 0022H 0002H ABSOLUTE + XDATA 0024H 0002H ABSOLUTE + XDATA 0026H 0002H ABSOLUTE + XDATA 0028H 0002H ABSOLUTE + XDATA 002AH 0001H ABSOLUTE + XDATA 002BH 0001H ABSOLUTE + XDATA 002CH 0002H ABSOLUTE + XDATA 002EH 0001H ABSOLUTE + XDATA 002FH 0001H ABSOLUTE + XDATA 0030H 0002H ABSOLUTE + XDATA 0032H 0002H ABSOLUTE + XDATA 0034H 0001H ABSOLUTE + XDATA 0035H 000CH ABSOLUTE + XDATA 0041H 0004H ABSOLUTE + XDATA 0045H 0002H ABSOLUTE + XDATA 0047H 000CH ABSOLUTE + XDATA 0053H 000CH ABSOLUTE + XDATA 005FH 0002H ABSOLUTE + XDATA 0061H 0001H ABSOLUTE + XDATA 0062H 0002H ABSOLUTE + XDATA 0064H 0002H ABSOLUTE + XDATA 0066H 0001H ABSOLUTE + XDATA 0067H 0001H ABSOLUTE + XDATA 0068H 0002H ABSOLUTE + XDATA 006AH 0002H ABSOLUTE + XDATA 006CH 0001H ABSOLUTE + XDATA 006DH 0004H ABSOLUTE + XDATA 0071H 0001H ABSOLUTE + XDATA 0072H 0001H ABSOLUTE + XDATA 0073H 0001H ABSOLUTE + XDATA 0074H 0001H ABSOLUTE + XDATA 0075H 0002H ABSOLUTE + XDATA 0077H 0002H ABSOLUTE + XDATA 0079H 0001H ABSOLUTE + XDATA 007AH 0001H ABSOLUTE + XDATA 007BH 0001H ABSOLUTE + XDATA 007CH 0002H ABSOLUTE + XDATA 007EH 0004H ABSOLUTE + XDATA 0082H 0001H ABSOLUTE + XDATA 0083H 0004H ABSOLUTE + XDATA 0087H 0001H ABSOLUTE + XDATA 0088H 0001H ABSOLUTE + XDATA 0089H 0001H ABSOLUTE + XDATA 008AH 0002H ABSOLUTE + XDATA 008CH 0001H ABSOLUTE + XDATA 008DH 0001H ABSOLUTE + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 4 + + + XDATA 008EH 0001H ABSOLUTE + XDATA 008FH 0002H ABSOLUTE + XDATA 0091H 0002H ABSOLUTE + XDATA 0093H 0002H ABSOLUTE + XDATA 0095H 0002H ABSOLUTE + XDATA 0097H 0001H ABSOLUTE + XDATA 0098H 0001H ABSOLUTE + XDATA 0099H 0001H ABSOLUTE + XDATA 009AH 0002H ABSOLUTE + XDATA 009CH 0002H ABSOLUTE + XDATA 009EH 0002H ABSOLUTE + XDATA 00A0H 0002H ABSOLUTE + XDATA 00A2H 0001H ABSOLUTE + XDATA 00A3H 0002H ABSOLUTE + XDATA 00A5H 0002H ABSOLUTE + XDATA 00A7H 0002H ABSOLUTE + XDATA 00A9H 0001H ABSOLUTE + XDATA 00AAH 0001H ABSOLUTE + XDATA 00ABH 0002H ABSOLUTE + XDATA 00ADH 0001H ABSOLUTE + XDATA 00AEH 0004H ABSOLUTE + XDATA 00B2H 0004H ABSOLUTE + XDATA 00B6H 0004H ABSOLUTE + XDATA 00BAH 0004H ABSOLUTE + XDATA 00BEH 0004H ABSOLUTE + XDATA 00C2H 0002H ABSOLUTE + XDATA 00C4H 0001H ABSOLUTE + XDATA 00C5H 0007H ABSOLUTE + XDATA 00CCH 0001H ABSOLUTE + XDATA 00CDH 0001H ABSOLUTE + XDATA 00CEH 0002H ABSOLUTE + XDATA 00D0H 0001H ABSOLUTE + XDATA 00D1H 0002H ABSOLUTE + XDATA 00D3H 0002H ABSOLUTE + XDATA 00D5H 0002H ABSOLUTE + XDATA 00D7H 0002H ABSOLUTE + XDATA 00D9H 0002H ABSOLUTE + XDATA 00DBH 0001H ABSOLUTE + XDATA 00DCH 0001H ABSOLUTE + XDATA 00DDH 0121H ABSOLUTE + XDATA 01FEH 0002H ABSOLUTE + XDATA 0200H 00B5H UNIT ?XD?AFE + XDATA 02B5H 006DH UNIT ?XD?GASGAUGEINTER_V4_13 + XDATA 0322H 006CH UNIT _XDATA_GROUP_ + XDATA 038EH 002EH UNIT ?XD?GASGAUGEV4_12 + XDATA 03BCH 0022H UNIT ?XD?PROTECT + XDATA 03DEH 0015H UNIT ?XD?EXTE2PROM + XDATA 03F3H 000DH UNIT ?XD?UARTAPP + XDATA 0400H 0096H ABSOLUTE + XDATA 0496H 0008H UNIT ?XD?RTC + XDATA 049EH 0002H UNIT ?XD?CALCULATE + XDATA 04A0H 0096H ABSOLUTE + XDATA 0536H 0006H UNIT ?XD?BALANCE + XDATA 053CH 0004H UNIT ?XD?INTERRUPTAPP + XDATA 0540H 0096H ABSOLUTE + XDATA 05D6H 0012H UNIT ?XD?CALIBRATE + XDATA 05E8H 0003H UNIT ?XD?LED + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 5 + + + XDATA 05EBH 0003H UNIT ?XD?LOWPOWER + XDATA 05EEH 0003H UNIT ?XD?_MCUPWM0SET?MCULIB + XDATA 05F1H 0003H UNIT ?XD?_MCUPWM1SET?MCULIB + XDATA 05F4H 0002H UNIT ?XD?CHARGERLOAD + XDATA 05F6H 0002H UNIT ?XD?MCUFLASH + XDATA 05F8H 0002H UNIT ?XD?GASGAUGEWKUP?GASGAUGEV4_12 + XDATA 05FAH 0001H UNIT ?XD?KEYAPP + XDATA 05FBH 0001H UNIT ?XD?PORSELFTEST + + * * * * * * * C O D E M E M O R Y * * * * * * * + CODE 0000H 1000H UNIT ?CO?BOOTIAP + CODE 1000H 0003H ABSOLUTE + CODE 1003H 0020H UNIT ?PR?INTERRUPTTIMER3?INTERRUPT + CODE 1023H 0003H ABSOLUTE + CODE 1026H 0005H UNIT ?C_INITSEG + CODE 102BH 0003H ABSOLUTE + CODE 102EH 0024H UNIT ?PR?_INTERRUPTINT4APP?INTERRUPTAPP + CODE 1052H 0001H UNIT ?PR?TWIINIT?TWIIO + CODE 1053H 0003H ABSOLUTE + CODE 1056H 0C24H UNIT ?PR?DATAFILTER?GASGAUGEV4_12 + CODE 1C7AH 06CAH UNIT ?PR?GASGAUGEMANAGE?GASGAUGEV4_12 + CODE 2344H 062EH UNIT ?C?LIB_CODE + CODE 2972H 0258H UNIT ?PR?FCCUPDATE?GASGAUGEV4_12 + CODE 2BCAH 0220H UNIT ?PR?GASGAUGEWKUP?GASGAUGEV4_12 + CODE 2DEAH 01F0H UNIT ?PR?_CALCUTEMP?CALCULATE + CODE 2FDAH 01E3H UNIT ?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 + CODE 31BDH 01C2H UNIT ?PR?_RTCREADTIME?RTC + CODE 337FH 01B3H UNIT ?PR?_E2PROMBKDATA?EXTE2PROM + CODE 3532H 0181H UNIT ?PR?AFECALCUCURR?CALCULATE + CODE 36B3H 016FH UNIT ?PR?_GASGAUGEINITSOC?GASGAUGEV4_12 + CODE 3822H 0168H UNIT ?PR?GASGAUGEINIT?GASGAUGEV4_12 + CODE 398AH 0167H UNIT ?PR?UART0IAPCHECKHANDSHAKE?UARTAPP + CODE 3AF1H 0163H UNIT ?PR?_TWIREAD?TWIIO + CODE 3C54H 0150H UNIT ?PR?UART0RDCMDPROCESS?UARTAPP + CODE 3DA4H 0144H UNIT ?PR?BALTURNONCHECK?BALANCE + CODE 3EE8H 0142H UNIT ?CO?THERMISTOR + CODE 402AH 0139H UNIT ?PR?_MCUTIMER3SET?MCULIB + CODE 4163H 0138H UNIT ?PR?AFECALCUVOL?CALCULATE + CODE 429BH 011FH UNIT ?PR?GASGAUGEGETOCV?GASGAUGEV4_12 + CODE 43BAH 0100H UNIT ?CO?TWIIO + CODE 44BAH 00E6H UNIT ?PR?AFECALCUTEMPE?CALCULATE + CODE 45A0H 00D7H UNIT ?PR?CORRECTCHGDFRC?GASGAUGEV4_12 + CODE 4677H 00D3H UNIT ?PR?E2PROMBKCHECK?EXTE2PROM + CODE 474AH 00C6H UNIT ?PR?_TWIWRITE?TWIIO + CODE 4810H 00C4H UNIT ?PR?PROTECTOV?PROTECT + CODE 48D4H 00C1H UNIT ?PR?MCUFLASHPROCESS?MCUFLASH + CODE 4995H 00BDH UNIT ?PR?UART0CALICURRENT?UARTAPP + CODE 4A52H 00BCH UNIT ?PR?PROTECTUV?PROTECT + CODE 4B0EH 00BCH UNIT ?PR?PROTECTOTC?PROTECT + CODE 4BCAH 00BCH UNIT ?PR?PROTECTUTC?PROTECT + CODE 4C86H 00BCH UNIT ?PR?PROTECTOTD?PROTECT + CODE 4D42H 00BCH UNIT ?PR?PROTECTUTD?PROTECT + CODE 4DFEH 00BAH UNIT ?PR?BALPROCESS?BALANCE + CODE 4EB8H 00B3H UNIT ?PR?OFFSETCALCULATE?CALCULATE + CODE 4F6BH 00ADH UNIT ?PR?LEDDISPLAY?LED + CODE 5018H 00ACH UNIT ?PR?E2PROMBKPROCESS?EXTE2PROM + CODE 50C4H 00ABH UNIT ?PR?INTERRUPTUART0APPTX?UARTAPP + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 6 + + + CODE 516FH 00A7H UNIT ?PR?UART0WRCMDPROCESS?UARTAPP + CODE 5216H 00A2H UNIT ?PR?_AFEWRITEREG?AFE + CODE 52B8H 00A2H UNIT ?PR?KEYSCAN?KEYSCAN + CODE 535AH 00A1H UNIT ?PR?SYSPARAINIT?INITIAL + CODE 53FBH 009CH UNIT ?PR?_RTCMODIFYTIME?RTC + CODE 5497H 0098H UNIT ?PR?_TWISENDDATA?TWIIO + CODE 552FH 0097H UNIT ?PR?_INTERRUPTUART0APPRX?UARTAPP + CODE 55C6H 0097H UNIT ?PR?_MCUFLASHWRITE?MCUFLASH + CODE 565DH 0094H UNIT ?C_C51STARTUP + CODE 56F1H 008EH UNIT ?PR?LOWPOWERCHECK?LOWPOWER + CODE 577FH 008DH UNIT ?PR?_RTCINITTIME?RTC + CODE 580CH 008CH UNIT ?PR?_MCUFLASHWRSECTOR?MCUFLASH + CODE 5898H 0086H UNIT ?PR?AFEINITREG?AFE + CODE 591EH 0084H UNIT ?PR?_UART0WRITEINFO?UARTAPP + CODE 59A2H 0081H UNIT ?PR?_MCUPWM0SET?MCULIB + CODE 5A23H 0081H UNIT ?PR?_MCUPWM1SET?MCULIB + CODE 5AA4H 0081H UNIT ?PR?_MCUPWM2SET?MCULIB + CODE 5B25H 007DH UNIT ?PR?E2PROMINIT?EXTE2PROM + CODE 5BA2H 0077H UNIT ?PR?_UART0READINFO?UARTAPP + CODE 5C19H 0076H UNIT ?PR?PROTECTOCRECOVER?PROTECT + CODE 5C8FH 0075H UNIT ?PR?MAIN?MAIN + CODE 5D04H 006FH UNIT ?PR?UART1RDE2PROM?EXTE2PROM + CODE 5D73H 006FH UNIT ?PR?UART2RDE2PROM?EXTE2PROM + CODE 5DE2H 006DH UNIT ?PR?CALIVOLTAGE?CALIBRATE + CODE 5E4FH 006CH UNIT ?PR?E2PROMERASE?EXTE2PROM + CODE 5EBBH 006BH UNIT ?PR?INTERRUPTINT4?INTERRUPT + CODE 5F26H 0069H UNIT ?PR?UART0RDE2PROM?EXTE2PROM + CODE 5F8FH 0066H UNIT ?PR?RAMCHECKPROCESS?MCULIB + CODE 5FF5H 0060H UNIT ?PR?_AFEREADREG?AFE + CODE 6055H 005FH UNIT ?PR?KEYSWITCHSPEED?KEYAPP + CODE 60B4H 005FH UNIT ?PR?_MCUFLASHREAD?MCUFLASH + CODE 6113H 005DH UNIT ?PR?AFERAMCHECK?AFE + CODE 6170H 005DH UNIT ?PR?_GETCYCLEGAIN?GASGAUGEV4_12 + CODE 61CDH 005BH UNIT ?PR?_TWIGETDATA?TWIIO + CODE 6228H 005AH UNIT ?PR?_MCUFLASHDATACHECK?MCUFLASH + CODE 6282H 0059H UNIT ?PR?PROTECTOCC?PROTECT + CODE 62DBH 0059H UNIT ?PR?PROTECTOCD1?PROTECT + CODE 6334H 0059H UNIT ?PR?PROTECTOCD2?PROTECT + CODE 638DH 0055H UNIT ?PR?_E2PROMWRITE?EXTE2PROM + CODE 63E2H 0055H UNIT ?PR?_E2PROMREAD?EXTE2PROM + CODE 6437H 0054H UNIT ?PR?UART0CALIRTC?UARTAPP + CODE 648BH 0053H UNIT ?PR?_RTCWRITE?RTC + CODE 64DEH 0052H UNIT ?PR?UART0CALIVOLTAGE?UARTAPP + CODE 6530H 0051H UNIT ?PR?_MCUCLOCKSET?MCULIB + CODE 6581H 0051H UNIT ?PR?_RTCREAD?RTC + CODE 65D2H 0051H UNIT ?PR?INTERRUPTUART0?UART + CODE 6623H 0050H UNIT ?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 + CODE 6673H 004FH UNIT ?PR?INITIAL?INITIAL + CODE 66C2H 004FH UNIT ?PR?CALIPROCESS?CALIBRATE + CODE 6711H 004FH UNIT ?PR?PORPROTECTOTC?PORSELFTEST + CODE 6760H 004FH UNIT ?PR?PORPROTECTUTC?PORSELFTEST + CODE 67AFH 004FH UNIT ?PR?PORPROTECTOTD?PORSELFTEST + CODE 67FEH 004FH UNIT ?PR?PORPROTECTUTD?PORSELFTEST + CODE 684DH 004EH UNIT ?PR?LOADCHECK?CHARGERLOAD + CODE 689BH 004CH UNIT ?PR?E2PROMBKRTC?EXTE2PROM + CODE 68E7H 004CH UNIT ?PR?UART1RDRTC?EXTE2PROM + CODE 6933H 004CH UNIT ?PR?UART2RDRTC?EXTE2PROM + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 7 + + + CODE 697FH 004AH UNIT ?PR?AFEGETVOL?CALCULATE + CODE 69C9H 004AH UNIT ?PR?MOSSTATUSCHECK?MOSCTRL + CODE 6A13H 0049H UNIT ?PR?UART0CALITS1?UARTAPP + CODE 6A5CH 0049H UNIT ?PR?UART0CALITS2?UARTAPP + CODE 6AA5H 0049H UNIT ?PR?CHGERCHECK?CHARGERLOAD + CODE 6AEEH 0048H UNIT ?CO?UARTAPP + CODE 6B36H 0048H UNIT ?PR?AFEGETTEMPE?CALCULATE + CODE 6B7EH 0048H UNIT ?PR?_DELAY1MS?MCULIB + CODE 6BC6H 0048H UNIT ?PR?PORPROTECTOV?PORSELFTEST + CODE 6C0EH 0048H UNIT ?PR?PORPROTECTUV?PORSELFTEST + CODE 6C56H 0046H UNIT ?PR?UART0RDRTC?EXTE2PROM + CODE 6C9CH 0045H UNIT ?PR?UART0WRITEMANUFACTURE?UARTAPP + CODE 6CE1H 0045H UNIT ?PR?CALITS1?CALIBRATE + CODE 6D26H 0045H UNIT ?PR?CALITS2?CALIBRATE + CODE 6D6BH 0044H UNIT ?PR?CALIRTCTIME?CALIBRATE + CODE 6DAFH 0044H UNIT ?C?LDIV + CODE 6DF3H 0043H UNIT ?PR?SYSTEMINTOSLEEP?LOWPOWER + CODE 6E36H 0042H UNIT ?PR?INITVAR?INITIAL + CODE 6E78H 0041H UNIT ?PR?E2PROMBKBOOT?EXTE2PROM + CODE 6EB9H 0040H UNIT ?PR?WAKEUPPROCESS?LOWPOWER + CODE 6EF9H 0040H UNIT ?PR?LOWPOWERPROCESS?LOWPOWER + CODE 6F39H 003FH UNIT ?PR?_LEDGETDISNUM?LED + CODE 6F78H 003FH UNIT ?PR?_AFEBALCTL?AFE + CODE 6FB7H 003DH UNIT ?PR?AFERDFLG?AFE + CODE 6FF4H 003CH UNIT ?PR?AFECLRFLG?AFE + CODE 7030H 003BH UNIT ?PR?CALICURRENTGAIN?CALIBRATE + CODE 706BH 003BH UNIT ?PR?PORSELFTEST?PORSELFTEST + CODE 70A6H 0037H UNIT ?PR?UART0READSUBCLASSID?UARTAPP + CODE 70DDH 0036H UNIT ?PR?UART0CALICUROFFSET?UARTAPP + CODE 7113H 0035H UNIT ?PR?CTOCHECKVOL?BALANCE + CODE 7148H 0035H UNIT ?PR?_MCUFLASHWRONEBYTE?MCUFLASH + CODE 717DH 0035H UNIT ?PR?GASGAUGEIDLE?GASGAUGEV4_12 + CODE 71B2H 0034H UNIT ?PR?INTERRUPTTIMER3APP?INTERRUPTAPP + CODE 71E6H 0034H UNIT ?CO?CALCULATE + CODE 721AH 0033H UNIT ?PR?CLRRAM?MCULIB + CODE 724DH 0033H UNIT ?PR?_MEMORYCOPY?MCULIB + CODE 7280H 0030H UNIT ?PR?KEYPROCESS?KEYAPP + CODE 72B0H 002DH UNIT ?PR?MOSCTRL?MOSCTRL + CODE 72DDH 002CH UNIT ?PR?SYSTEMRESETPROCESS?MCULIB + CODE 7309H 002BH UNIT ?PR?INITGPIO?INITIAL + CODE 7334H 002AH UNIT ?PR?_MEMORYSET?MCULIB + CODE 735EH 0029H UNIT ?PR?TWICHKCLKRELEASE?TWIIO + CODE 7387H 0027H UNIT ?PR?_MCUFLASHCHECKFLG?MCUFLASH + CODE 73AEH 0026H UNIT ?PR?AFEENTERPD?AFE + CODE 73D4H 0026H UNIT ?PR?CTOTURNONCHECK?BALANCE + CODE 73FAH 0026H UNIT ?PR?_MCUFLASHBLANKCHECK?MCUFLASH + CODE 7420H 0024H UNIT ?PR?TWISTART?TWIIO + CODE 7444H 0022H UNIT ?PR?TWISTOP?TWIIO + CODE 7466H 001FH UNIT ?PR?SYSTEMINTOPD?LOWPOWER + CODE 7485H 001FH UNIT ?PR?PROTECTPROCESS?PROTECT + CODE 74A4H 001FH UNIT ?PR?_CRC8CAL?TWIIO + CODE 74C3H 001EH UNIT ?PR?INITIRQ?INITIAL + CODE 74E1H 001DH UNIT ?PR?E2PROMTWICHECK?EXTE2PROM + CODE 74FEH 001DH UNIT ?PR?RTCTWICHECK?RTC + CODE 751BH 001CH UNIT ?PR?UART0INIT?UART + CODE 7537H 001BH UNIT ?PR?TWIRESTART?TWIIO + CODE 7552H 001AH UNIT ?PR?AFETWICHECK?AFE + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 8 + + + CODE 756CH 0019H UNIT ?PR?ISPPROCESS?BOOTAPP + CODE 7585H 0018H UNIT ?PR?AFERDSTATUS?AFE + CODE 759DH 0017H UNIT ?PR?_AFEALARMDIS?AFE + CODE 75B4H 0015H UNIT ?PR?_AFEMOSCTL?AFE + CODE 75C9H 0015H UNIT ?PR?MCUFLASHWRWAITCHECK?MCUFLASH + CODE 75DEH 0014H UNIT ?PR?UART0CHECK?UARTAPP + CODE 75F2H 0014H UNIT ?PR?AFEINFOPROCESS?CALCULATE + CODE 7606H 0013H UNIT ?PR?LEDAUTOOFF?LED + CODE 7619H 0013H UNIT ?PR?AFECHGERCHECKEN?AFE + CODE 762CH 0013H UNIT ?PR?AFECHGERCHECKDIS?AFE + CODE 763FH 0013H UNIT ?PR?AFELOADCHECKEN?AFE + CODE 7652H 0013H UNIT ?PR?AFELOADCHECKDIS?AFE + CODE 7665H 0013H UNIT ?PR?AFEWDTEN?AFE + CODE 7678H 0013H UNIT ?PR?AFEWDTDIS?AFE + CODE 768BH 0013H UNIT ?PR?AFEADCEN?AFE + CODE 769EH 0013H UNIT ?PR?AFEADCDIS?AFE + CODE 76B1H 0013H UNIT ?PR?AFECADCEN?AFE + CODE 76C4H 0013H UNIT ?PR?AFECADCDIS?AFE + CODE 76D7H 0013H UNIT ?PR?AFETEMPADCEN?AFE + CODE 76EAH 0013H UNIT ?PR?AFETEMPADCDIS?AFE + CODE 76FDH 0012H UNIT ?PR?UART0HANDSHAKE?UARTAPP + CODE 770FH 0012H UNIT ?PR?_AFEALARMEN?AFE + CODE 7721H 0010H UNIT ?PR?AFEINIT?AFE + CODE 7731H 0010H UNIT ?PR?CALICURZERO?CALIBRATE + CODE 7741H 000CH UNIT ?PR?MCUINTOIDLE?MCULIB + CODE 774DH 000CH UNIT ?PR?MCUINTOPD?MCULIB + CODE 7759H 000AH UNIT ?PR?BALANCEPROCESS?BALANCE + CODE 7763H 0008H UNIT ?PR?DELAY4US?TWIIO + CODE 776BH 0006H UNIT ?CO?GASGAUGEV4_12 + + + +OVERLAY MAP OF MODULE: .\output\MCUCore_Load (MAIN) + + +SEGMENT BIT_GROUP DATA_GROUP IDATA_GROUP XDATA_GROUP +>> + +--> CALLED SEGMENT START LENGTH START LENGTH START LENGTH START LENG +>> TH +------------------------------------------------------------------------------------------------------------------------ +>> -- +?PR?INTERRUPTINT4?INTERRUPT ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_INTERRUPTINT4APP?INTERRUPTAPP + +?PR?_INTERRUPTINT4APP?INTERRUPTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_MCUCLOCKSET?MCULIB + +*** NEW ROOT *************************************************** + +?PR?INTERRUPTTIMER3?INTERRUPT ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?INTERRUPTTIMER3APP?INTERRUPTAPP + +?PR?INTERRUPTTIMER3APP?INTERRUPTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 9 + + + +--> ?PR?KEYSCAN?KEYSCAN + +*** NEW ROOT *************************************************** + +?PR?INTERRUPTUART0?UART ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_INTERRUPTUART0APPRX?UARTAPP + +--> ?PR?INTERRUPTUART0APPTX?UARTAPP + +?PR?_INTERRUPTUART0APPRX?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?UART0RDCMDPROCESS?UARTAPP + +--> ?PR?UART0WRCMDPROCESS?UARTAPP + +--> ?PR?UART0IAPCHECKHANDSHAKE?UARTAPP + +?PR?UART0RDCMDPROCESS?UARTAPP ----- ----- ----- ----- ----- ----- 0322H 0002 +>> H + +--> ?PR?_UART0READINFO?UARTAPP + +--> ?CO?UARTAPP + +?PR?_UART0READINFO?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CRC8CAL?TWIIO + +?PR?_CRC8CAL?TWIIO ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?CO?TWIIO + +?PR?UART0WRCMDPROCESS?UARTAPP ----- ----- ----- ----- ----- ----- 0322H 0002 +>> H + +--> ?PR?UART0WRITEMANUFACTURE?UARTAPP + +--> ?PR?UART0READSUBCLASSID?UARTAPP + +--> ?PR?UART0CALICURRENT?UARTAPP + +--> ?PR?UART0CALIVOLTAGE?UARTAPP + +--> ?PR?UART0CALICUROFFSET?UARTAPP + +--> ?PR?UART0CALITS1?UARTAPP + +--> ?PR?UART0CALITS2?UARTAPP + +--> ?PR?UART0CALIRTC?UARTAPP + +--> ?CO?UARTAPP + +--> ?PR?_UART0WRITEINFO?UARTAPP + +?PR?UART0WRITEMANUFACTURE?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART0READSUBCLASSID?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART0CALICURRENT?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART0CALIVOLTAGE?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CRC8CAL?TWIIO + + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 10 + + +?PR?UART0CALICUROFFSET?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART0CALITS1?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART0CALITS2?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART0CALIRTC?UARTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CRC8CAL?TWIIO + +?PR?_UART0WRITEINFO?UARTAPP ----- ----- ----- ----- ----- ----- 0324H 0002 +>> H + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART0IAPCHECKHANDSHAKE?UARTAPP ----- ----- ----- ----- ----- ----- 0322H 0002 +>> H + +*** NEW ROOT *************************************************** + +?C_C51STARTUP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?MAIN?MAIN + +--> ?C_INITSEG + +?PR?MAIN?MAIN ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?INITIAL?INITIAL + +--> ?PR?KEYPROCESS?KEYAPP + +--> ?PR?AFEINFOPROCESS?CALCULATE + +--> ?PR?BALANCEPROCESS?BALANCE + +--> ?PR?PROTECTPROCESS?PROTECT + +--> ?PR?PORSELFTEST?PORSELFTEST + +--> ?PR?LOADCHECK?CHARGERLOAD + +--> ?PR?CHGERCHECK?CHARGERLOAD + +--> ?PR?MOSCTRL?MOSCTRL + +--> ?PR?PROTECTOCRECOVER?PROTECT + +--> ?PR?LEDDISPLAY?LED + +--> ?PR?UART0CHECK?UARTAPP + +--> ?PR?GASGAUGEMANAGE?GASGAUGEV4_12 + +--> ?PR?AFERAMCHECK?AFE + +--> ?PR?AFETWICHECK?AFE + +--> ?PR?E2PROMTWICHECK?EXTE2PROM + +--> ?PR?RTCTWICHECK?RTC + +--> ?PR?RAMCHECKPROCESS?MCULIB + +--> ?PR?SYSPARAINIT?INITIAL + +--> ?PR?MCUFLASHWRWAITCHECK?MCUFLASH + +--> ?PR?E2PROMBKCHECK?EXTE2PROM + +--> ?PR?LOWPOWERCHECK?LOWPOWER + +--> ?PR?SYSTEMRESETPROCESS?MCULIB + +--> ?PR?ISPPROCESS?BOOTAPP + +--> ?PR?CALIPROCESS?CALIBRATE + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 11 + + + +--> ?PR?MCUFLASHPROCESS?MCUFLASH + +--> ?PR?E2PROMBKPROCESS?EXTE2PROM + +--> ?PR?LOWPOWERPROCESS?LOWPOWER + +?PR?INITIAL?INITIAL ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?INITGPIO?INITIAL + +--> ?PR?CLRRAM?MCULIB + +--> ?PR?SYSPARAINIT?INITIAL + +--> ?PR?INITVAR?INITIAL + +--> ?PR?_MCUTIMER3SET?MCULIB + +--> ?PR?UART0INIT?UART + +--> ?PR?TWIINIT?TWIIO + +--> ?PR?_MCUPWM2SET?MCULIB + +--> ?PR?AFEINITREG?AFE + +--> ?PR?AFEINIT?AFE + +--> ?PR?AFECLRFLG?AFE + +--> ?PR?E2PROMINIT?EXTE2PROM + +--> ?PR?_RTCINITTIME?RTC + +--> ?PR?INITIRQ?INITIAL + +?PR?CLRRAM?MCULIB ----- ----- ----- ----- 001BH 0002H ----- ---- +>> - + +?PR?SYSPARAINIT?INITIAL ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_MCUFLASHCHECKFLG?MCUFLASH + +--> ?PR?_MCUFLASHREAD?MCUFLASH + +--> ?PR?_MCUFLASHWRITE?MCUFLASH + +?PR?_MCUFLASHCHECKFLG?MCUFLASH 0029H.5 0000H.1 ----- ----- ----- ----- ----- ---- +>> - + +?PR?_MCUFLASHREAD?MCUFLASH 0029H.5 0000H.1 0019H 0002H ----- ----- 0326H 0004 +>> H + +?PR?_MCUFLASHWRITE?MCUFLASH 0029H.7 0000H.1 ----- ----- ----- ----- 0328H 0004 +>> H + +--> ?PR?_MCUFLASHBLANKCHECK?MCUFLASH + +--> ?PR?_MCUFLASHWRSECTOR?MCUFLASH + +--> ?PR?_MCUFLASHDATACHECK?MCUFLASH + +?PR?_MCUFLASHBLANKCHECK?MCUFLASH 002AH.0 0000H.1 ----- ----- ----- ----- ----- ---- +>> - + +?PR?_MCUFLASHWRSECTOR?MCUFLASH 002AH.0 0000H.1 ----- ----- ----- ----- 032CH 0004 +>> H + +?PR?_MCUFLASHDATACHECK?MCUFLASH 002AH.0 0000H.1 ----- ----- ----- ----- 032CH 0004 +>> H + +?PR?INITVAR?INITIAL ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_MEMORYSET?MCULIB + +?PR?_MEMORYSET?MCULIB ----- ----- ----- ----- ----- ----- 0332H 0002 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 12 + + +>> H + +?PR?_MCUTIMER3SET?MCULIB ----- ----- ----- ----- ----- ----- 0326H 0005 +>> H + +?PR?_MCUPWM2SET?MCULIB ----- ----- ----- ----- ----- ----- 032BH 0003 +>> H + +?PR?AFEINIT?AFE 0029H.5 0000H.1 ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?_AFEWRITEREG?AFE 0029H.6 0000H.1 ----- ----- ----- ----- 032AH 0006 +>> H + +--> ?PR?_TWIWRITE?TWIIO + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?TWIINIT?TWIIO + +?PR?_TWIWRITE?TWIIO 002AH.1 0000H.1 ----- ----- ----- ----- 0362H 000A +>> H + +--> ?PR?_CRC8CAL?TWIIO + +--> ?PR?TWISTART?TWIIO + +--> ?PR?_TWISENDDATA?TWIIO + +--> ?PR?TWISTOP?TWIIO + +?PR?TWISTART?TWIIO ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?DELAY4US?TWIIO + +?PR?_TWISENDDATA?TWIIO 002AH.2 0000H.1 ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?DELAY4US?TWIIO + +--> ?PR?TWICHKCLKRELEASE?TWIIO + +?PR?TWICHKCLKRELEASE?TWIIO 002AH.3 0000H.1 ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?DELAY4US?TWIIO + +?PR?TWISTOP?TWIIO ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?DELAY4US?TWIIO + +?PR?AFECLRFLG?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?_AFEWRITEREG?AFE + +?PR?_AFEREADREG?AFE 0029H.6 0000H.1 ----- ----- ----- ----- 0330H 0005 +>> H + +--> ?PR?_TWIREAD?TWIIO + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?TWIINIT?TWIIO + +?PR?_TWIREAD?TWIIO 002AH.0 0000H.1 ----- ----- ----- ----- 0358H 0036 +>> H + +--> ?PR?TWISTART?TWIIO + +--> ?PR?_TWISENDDATA?TWIIO + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 13 + + + +--> ?PR?TWIRESTART?TWIIO + +--> ?PR?_TWIGETDATA?TWIIO + +--> ?PR?_CRC8CAL?TWIIO + +--> ?PR?TWISTOP?TWIIO + +?PR?TWIRESTART?TWIIO ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?DELAY4US?TWIIO + +?PR?_TWIGETDATA?TWIIO ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?DELAY4US?TWIIO + +?PR?E2PROMINIT?EXTE2PROM 0029H.5 0000H.1 ----- ----- ----- ----- 0326H 0008 +>> H + +--> ?PR?_E2PROMREAD?EXTE2PROM + +?PR?_E2PROMREAD?EXTE2PROM 0029H.6 0000H.1 ----- ----- ----- ----- 0332H 0006 +>> H + +--> ?PR?_TWIREAD?TWIIO + +--> ?PR?_DELAY1MS?MCULIB + +?PR?_RTCINITTIME?RTC 0029H.5 0000H.1 ----- ----- ----- ----- 0326H 000C +>> H + +--> ?PR?_MEMORYSET?MCULIB + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_RTCREADTIME?RTC + +?PR?_MEMORYCOPY?MCULIB ----- ----- ----- ----- ----- ----- 0348H 0002 +>> H + +?PR?_RTCREADTIME?RTC 0029H.6 0000H.1 ----- ----- ----- ----- 0348H 000B +>> H + +--> ?PR?_RTCREAD?RTC + +--> ?PR?_RTCMODIFYTIME?RTC + +?PR?_RTCREAD?RTC 0029H.7 0000H.1 ----- ----- ----- ----- 0353H 0005 +>> H + +--> ?PR?_TWIREAD?TWIIO + +--> ?PR?_DELAY1MS?MCULIB + +?PR?_RTCMODIFYTIME?RTC 0029H.7 0000H.1 ----- ----- ----- ----- 0353H 000A +>> H + +--> ?PR?_RTCWRITE?RTC + +?PR?_RTCWRITE?RTC 002AH.0 0000H.1 ----- ----- ----- ----- 035DH 0005 +>> H + +--> ?PR?_TWIWRITE?TWIIO + +--> ?PR?_DELAY1MS?MCULIB + +?PR?KEYPROCESS?KEYAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?KEYSWITCHSPEED?KEYAPP + +?PR?KEYSWITCHSPEED?KEYAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 14 + + + +--> ?PR?_MCUPWM2SET?MCULIB + +?PR?AFEINFOPROCESS?CALCULATE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?AFERDFLG?AFE + +--> ?PR?AFECALCUVOL?CALCULATE + +--> ?PR?AFECALCUTEMPE?CALCULATE + +--> ?PR?AFECALCUCURR?CALCULATE + +?PR?AFERDFLG?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?AFEINIT?AFE + +?PR?AFECALCUVOL?CALCULATE ----- ----- ----- ----- ----- ----- 0326H 0009 +>> H + +--> ?PR?AFEGETVOL?CALCULATE + +?PR?AFEGETVOL?CALCULATE 0029H.5 0000H.1 ----- ----- ----- ----- 032FH 0001 +>> H + +--> ?PR?_AFEREADREG?AFE + +?PR?AFECALCUTEMPE?CALCULATE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?AFEGETTEMPE?CALCULATE + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?AFEGETTEMPE?CALCULATE 0029H.5 0000H.1 ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEREADREG?AFE + +?PR?_CALCUTEMP?CALCULATE ----- ----- ----- ----- ----- ----- 0326H 0007 +>> H + +--> ?CO?THERMISTOR + +?PR?AFECALCUCURR?CALCULATE ----- ----- ----- ----- ----- ----- 0326H 0005 +>> H + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?OFFSETCALCULATE?CALCULATE + +--> ?PR?_MCUPWM2SET?MCULIB + +?PR?OFFSETCALCULATE?CALCULATE ----- ----- ----- ----- ----- ----- 032BH 0003 +>> H + +--> ?CO?CALCULATE + +?PR?BALANCEPROCESS?BALANCE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?BALTURNONCHECK?BALANCE + +--> ?PR?CTOTURNONCHECK?BALANCE + +--> ?PR?BALPROCESS?BALANCE + +?PR?BALPROCESS?BALANCE ----- ----- ----- ----- ----- ----- 0326H 0002 +>> H + +--> ?PR?_AFEBALCTL?AFE + +--> ?PR?CTOCHECKVOL?BALANCE + +?PR?_AFEBALCTL?AFE ----- ----- ----- ----- ----- ----- 0328H 0002 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 15 + + +>> H + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CTOCHECKVOL?BALANCE 0029H.5 0000H.1 ----- ----- ----- ----- ----- ---- +>> - + +?PR?PROTECTPROCESS?PROTECT ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?PROTECTOV?PROTECT + +--> ?PR?PROTECTUV?PROTECT + +--> ?PR?PROTECTOTC?PROTECT + +--> ?PR?PROTECTUTC?PROTECT + +--> ?PR?PROTECTOTD?PROTECT + +--> ?PR?PROTECTUTD?PROTECT + +--> ?PR?PROTECTOCC?PROTECT + +--> ?PR?PROTECTOCD1?PROTECT + +--> ?PR?PROTECTOCD2?PROTECT + +?PR?PROTECTOV?PROTECT ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?AFECLRFLG?AFE + +?PR?PORSELFTEST?PORSELFTEST ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?AFECALCUVOL?CALCULATE + +--> ?PR?AFECALCUTEMPE?CALCULATE + +--> ?PR?PORPROTECTOV?PORSELFTEST + +--> ?PR?PORPROTECTUV?PORSELFTEST + +--> ?PR?PORPROTECTOTC?PORSELFTEST + +--> ?PR?PORPROTECTUTC?PORSELFTEST + +--> ?PR?PORPROTECTOTD?PORSELFTEST + +--> ?PR?PORPROTECTUTD?PORSELFTEST + +--> ?PR?GASGAUGEINIT?GASGAUGEV4_12 + +?PR?GASGAUGEINIT?GASGAUGEV4_12 ----- ----- ----- ----- ----- ----- 0326H 0002 +>> H + +--> ?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 + +--> ?PR?GASGAUGEGETOCV?GASGAUGEV4_12 + +--> ?PR?_GASGAUGEINITSOC?GASGAUGEV4_12 + +--> ?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 + +?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 0029H.5 0000H.1 ----- ----- ----- ----- ----- ---- +>> - + +?PR?GASGAUGEGETOCV?GASGAUGEV4_12 ----- ----- ----- ----- ----- ----- 0328H 0001 +>> H + +?PR?_GASGAUGEINITSOC?GASGAUGEV4_12 ----- ----- ----- ----- ----- ----- 0328H 0002 +>> H + +?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 0029H.5 0000H.1 ----- ----- ----- ----- ----- ---- +>> - + +?PR?LOADCHECK?CHARGERLOAD ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?AFELOADCHECKEN?AFE + +--> ?PR?AFERDSTATUS?AFE + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 16 + + + +--> ?PR?AFELOADCHECKDIS?AFE + +--> ?PR?AFECLRFLG?AFE + +?PR?AFELOADCHECKEN?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFERDSTATUS?AFE ----- ----- ----- ----- ----- ----- 0326H 0002 +>> H + +--> ?PR?_AFEREADREG?AFE + +?PR?AFELOADCHECKDIS?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CHGERCHECK?CHARGERLOAD ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?AFECHGERCHECKEN?AFE + +--> ?PR?AFERDSTATUS?AFE + +--> ?PR?AFECHGERCHECKDIS?AFE + +--> ?PR?AFECLRFLG?AFE + +?PR?AFECHGERCHECKEN?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFECHGERCHECKDIS?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?MOSCTRL?MOSCTRL ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?MOSSTATUSCHECK?MOSCTRL + +--> ?PR?_AFEMOSCTL?AFE + +?PR?_AFEMOSCTL?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?PROTECTOCRECOVER?PROTECT ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?AFECLRFLG?AFE + +?PR?LEDDISPLAY?LED ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_LEDGETDISNUM?LED + +--> ?PR?LEDAUTOOFF?LED + +?PR?GASGAUGEMANAGE?GASGAUGEV4_12 ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 + +--> ?PR?CORRECTCHGDFRC?GASGAUGEV4_12 + +--> ?PR?FCCUPDATE?GASGAUGEV4_12 + +--> ?PR?DATAFILTER?GASGAUGEV4_12 + +--> ?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 + +?PR?CORRECTCHGDFRC?GASGAUGEV4_12 ----- ----- ----- ----- ----- ----- 0326H 0002 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 17 + + +>> H + +--> ?PR?GASGAUGEGETOCV?GASGAUGEV4_12 + +?PR?FCCUPDATE?GASGAUGEV4_12 ----- ----- ----- ----- ----- ----- 0326H 0004 +>> H + +--> ?PR?_GETCYCLEGAIN?GASGAUGEV4_12 + +?PR?DATAFILTER?GASGAUGEV4_12 0029H.5 0000H.1 ----- ----- ----- ----- 0326H 0009 +>> H + +--> ?CO?GASGAUGEV4_12 + +?PR?AFERAMCHECK?AFE ----- ----- ----- ----- ----- ----- 0326H 0003 +>> H + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?AFEINIT?AFE + +?PR?E2PROMBKCHECK?EXTE2PROM ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +?PR?ISPPROCESS?BOOTAPP ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?AFEWDTDIS?AFE + +?PR?AFEWDTDIS?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CALIPROCESS?CALIBRATE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?CALIVOLTAGE?CALIBRATE + +--> ?PR?CALICURRENTGAIN?CALIBRATE + +--> ?PR?CALICURZERO?CALIBRATE + +--> ?PR?CALITS1?CALIBRATE + +--> ?PR?CALITS2?CALIBRATE + +--> ?PR?CALIRTCTIME?CALIBRATE + +?PR?CALIVOLTAGE?CALIBRATE ----- ----- ----- ----- ----- ----- 0326H 0002 +>> H + +?PR?CALITS1?CALIBRATE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?CALITS2?CALIBRATE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?CALIRTCTIME?CALIBRATE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_RTCMODIFYTIME?RTC + +?PR?MCUFLASHPROCESS?MCUFLASH 0029H.5 0000H.2 ----- ----- ----- ----- 0326H 0002 +>> H + +--> ?PR?_MCUFLASHWRITE?MCUFLASH + +--> ?PR?_MCUFLASHWRONEBYTE?MCUFLASH + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 18 + + + +?PR?E2PROMBKPROCESS?EXTE2PROM ----- ----- ----- ----- ----- ----- 0326H 0001 +>> H + +--> ?PR?E2PROMERASE?EXTE2PROM + +--> ?PR?UART0RDE2PROM?EXTE2PROM + +--> ?PR?UART2RDE2PROM?EXTE2PROM + +--> ?PR?UART0RDRTC?EXTE2PROM + +--> ?PR?UART1RDRTC?EXTE2PROM + +--> ?PR?UART2RDRTC?EXTE2PROM + +--> ?PR?E2PROMBKRTC?EXTE2PROM + +--> ?PR?_E2PROMBKDATA?EXTE2PROM + +?PR?E2PROMERASE?EXTE2PROM ----- ----- ----- ----- ----- ----- 0327H 000A +>> H + +--> ?PR?_MEMORYSET?MCULIB + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?_E2PROMWRITE?EXTE2PROM 0029H.5 0000H.1 ----- ----- ----- ----- 0350H 0006 +>> H + +--> ?PR?_TWIWRITE?TWIIO + +--> ?PR?_DELAY1MS?MCULIB + +?PR?UART0RDE2PROM?EXTE2PROM ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART2RDE2PROM?EXTE2PROM ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART0RDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART1RDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWIIO + +?PR?UART2RDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWIIO + +?PR?E2PROMBKRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- 0327H 000A +>> H + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?_E2PROMBKDATA?EXTE2PROM ----- ----- ----- ----- ----- ----- 0327H 0021 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 19 + + +>> H + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +--> ?PR?E2PROMBKBOOT?EXTE2PROM + +?PR?E2PROMBKBOOT?EXTE2PROM ----- ----- ----- ----- ----- ----- 0348H 0008 +>> H + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?LOWPOWERPROCESS?LOWPOWER ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?MCUINTOIDLE?MCULIB + +--> ?PR?MCUFLASHPROCESS?MCUFLASH + +--> ?PR?SYSTEMINTOPD?LOWPOWER + +--> ?PR?SYSTEMINTOSLEEP?LOWPOWER + +--> ?PR?WAKEUPPROCESS?LOWPOWER + +?PR?SYSTEMINTOPD?LOWPOWER ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEMOSCTL?AFE + +--> ?PR?AFEENTERPD?AFE + +?PR?AFEENTERPD?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?SYSTEMINTOSLEEP?LOWPOWER ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?AFEWDTDIS?AFE + +--> ?PR?AFETEMPADCDIS?AFE + +--> ?PR?_AFEALARMEN?AFE + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?MCUINTOPD?MCULIB + +?PR?AFETEMPADCDIS?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?_AFEALARMEN?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?WAKEUPPROCESS?LOWPOWER ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?_AFEALARMDIS?AFE + +--> ?PR?AFETEMPADCEN?AFE + +--> ?PR?AFEWDTEN?AFE + +?PR?_AFEALARMDIS?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFETEMPADCEN?AFE ----- ----- ----- ----- ----- ----- ----- ---- + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 20 + + +>> - + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFEWDTEN?AFE ----- ----- ----- ----- ----- ----- ----- ---- +>> - + +--> ?PR?_AFEWRITEREG?AFE + + + +SYMBOL TABLE OF MODULE: .\output\MCUCore_Load (MAIN) + + VALUE TYPE NAME + ---------------------------------- + + ------- MODULE MAIN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:5C8FH PUBLIC main + ------- PROC MAIN + C:5C8FH LINE# 21 + C:5C8FH LINE# 22 + C:5C8FH LINE# 23 + C:5C92H LINE# 25 + C:5C92H LINE# 26 + C:5C92H LINE# 29 + C:5C95H LINE# 31 + C:5C98H LINE# 32 + C:5C98H LINE# 33 + C:5C9AH LINE# 34 + C:5C9DH LINE# 36 + C:5CA0H LINE# 38 + C:5CA3H LINE# 40 + C:5CA6H LINE# 42 + C:5CA9H LINE# 44 + C:5CACH LINE# 46 + C:5CAFH LINE# 48 + C:5CB2H LINE# 50 + C:5CB5H LINE# 53 + C:5CB8H LINE# 63 + C:5CB8H LINE# 65 + C:5CBBH LINE# 66 + C:5CBBH LINE# 67 + C:5CBDH LINE# 68 + C:5CC0H LINE# 70 + C:5CC3H LINE# 72 + C:5CC6H LINE# 73 + C:5CC9H LINE# 74 + C:5CCCH LINE# 76 + C:5CD1H LINE# 77 + C:5CD1H LINE# 78 + C:5CD4H LINE# 79 + C:5CD4H LINE# 81 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 21 + + + C:5CD7H LINE# 83 + C:5CDAH LINE# 85 + C:5CDDH LINE# 88 + C:5CDDH LINE# 90 + C:5CE0H LINE# 92 + C:5CE3H LINE# 94 + C:5CE6H LINE# 96 + C:5CE9H LINE# 98 + C:5CECH LINE# 100 + C:5CEFH LINE# 102 + C:5CF9H LINE# 103 + C:5D01H LINE# 106 + ------- ENDPROC MAIN + ------- ENDMOD MAIN + + ------- MODULE INITIAL + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:74C3H PUBLIC InitIRQ + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00A9H PUBLIC IEN1 + D:00E8H PUBLIC EXF0 + D:00D8H PUBLIC EXF1 + D:00E1H PUBLIC P0CR + D:00E2H PUBLIC P1CR + D:00E3H PUBLIC P2CR + D:00E4H PUBLIC P3CR + D:00BAH PUBLIC IENC + C:6E36H PUBLIC InitVar + C:7309H PUBLIC InitGPIO + B:00A8H.4 PUBLIC ES0 + B:00A8H.5 PUBLIC ET3 + D:0086H PUBLIC INSCON + B:0088H.7 PUBLIC TF3 + C:6673H PUBLIC Initial + C:535AH PUBLIC SysParaInit + D:00E9H PUBLIC P0PCR + D:00EAH PUBLIC P1PCR + D:00EBH PUBLIC P2PCR + D:00ECH PUBLIC P3PCR + ------- PROC INITVAR + C:6E36H LINE# 18 + C:6E36H LINE# 19 + C:6E36H LINE# 20 + C:6E3CH LINE# 21 + C:6E47H LINE# 22 + C:6E51H LINE# 23 + C:6E5BH LINE# 24 + C:6E63H LINE# 26 + C:6E65H LINE# 27 + C:6E67H LINE# 28 + C:6E6DH LINE# 29 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 22 + + + C:6E6FH LINE# 30 + C:6E71H LINE# 32 + C:6E77H LINE# 33 + ------- ENDPROC INITVAR + ------- PROC SYSPARAINIT + C:535AH LINE# 41 + C:535AH LINE# 42 + C:535AH LINE# 43 + C:5363H LINE# 44 + C:5363H LINE# 45 + C:536FH LINE# 46 + C:5378H LINE# 47 + C:5378H LINE# 48 + C:5380H LINE# 49 + C:5380H LINE# 50 + C:5382H LINE# 51 + C:538BH LINE# 52 + C:538BH LINE# 53 + C:5398H LINE# 54 + C:539FH LINE# 55 + C:53A1H LINE# 57 + C:53A1H LINE# 58 + C:53A4H LINE# 60 + C:53A4H LINE# 62 + C:53AEH LINE# 63 + C:53B8H LINE# 64 + C:53C4H LINE# 65 + C:53D3H LINE# 67 + C:53DBH LINE# 69 + C:53E4H LINE# 70 + C:53E4H LINE# 71 + C:53E7H LINE# 72 + C:53E8H LINE# 73 + C:53F3H LINE# 74 + C:53F3H LINE# 75 + C:53F6H LINE# 76 + C:53F7H LINE# 78 + C:53F7H LINE# 79 + C:53FAH LINE# 80 + C:53FAH LINE# 81 + ------- ENDPROC SYSPARAINIT + ------- PROC INITIRQ + C:74C3H LINE# 89 + C:74C3H LINE# 90 + C:74C3H LINE# 91 + C:74C5H LINE# 93 + C:74C7H LINE# 102 + C:74D0H LINE# 103 + C:74D2H LINE# 105 + C:74D5H LINE# 106 + C:74D8H LINE# 107 + C:74DBH LINE# 108 + C:74DEH LINE# 110 + C:74E0H LINE# 111 + ------- ENDPROC INITIRQ + ------- PROC INITGPIO + C:7309H LINE# 164 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 23 + + + C:7309H LINE# 165 + C:7309H LINE# 167 + C:730CH LINE# 168 + C:730FH LINE# 169 + C:7312H LINE# 171 + C:7315H LINE# 172 + C:7318H LINE# 173 + C:731BH LINE# 175 + C:731EH LINE# 176 + C:7321H LINE# 177 + C:7324H LINE# 179 + C:7327H LINE# 180 + C:732AH LINE# 181 + C:732DH LINE# 185 + C:7330H LINE# 186 + C:7333H LINE# 530 + ------- ENDPROC INITGPIO + ------- PROC INITIAL + C:6673H LINE# 538 + C:6673H LINE# 539 + C:6673H LINE# 540 + C:6678H LINE# 542 + C:667BH LINE# 544 + C:667EH LINE# 546 + C:6681H LINE# 548 + C:6684H LINE# 550 + C:668DH LINE# 553 + C:6690H LINE# 564 + C:6693H LINE# 566 + C:669CH LINE# 568 + C:669FH LINE# 569 + C:66A4H LINE# 570 + C:66A4H LINE# 571 + C:66A6H LINE# 572 + C:66A6H LINE# 573 + C:66A9H LINE# 575 + C:66ACH LINE# 576 + C:66ACH LINE# 577 + C:66B1H LINE# 578 + C:66B1H LINE# 579 + C:66B3H LINE# 580 + C:66B3H LINE# 582 + C:66BCH LINE# 583 + C:66BCH LINE# 584 + C:66BEH LINE# 585 + C:66BEH LINE# 586 + C:66BEH LINE# 588 + C:66C1H LINE# 589 + ------- ENDPROC INITIAL + ------- ENDMOD INITIAL + + ------- MODULE INTERRUPTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + X:053DH PUBLIC ucwatcntTime + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 24 + + + X:053EH PUBLIC ucTimer1s + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:102EH PUBLIC _InterruptINT4App + B:002DH.4 PUBLIC bTimer5msFlg + X:053FH PUBLIC ucTimer50ms + B:002DH.5 PUBLIC bTimer1sFlg + C:71B2H PUBLIC InterruptTimer3App + D:00B1H PUBLIC RSTSTAT + B:002DH.6 PUBLIC bTimer50msFlg + ------- PROC _INTERRUPTINT4APP + D:0007H SYMBOL IntSource + C:102EH LINE# 25 + C:102EH LINE# 26 + C:102EH LINE# 27 + C:1032H LINE# 28 + C:1032H LINE# 29 + C:1038H LINE# 30 + C:1038H LINE# 31 + C:103DH LINE# 32 + C:103FH LINE# 33 + C:103FH LINE# 34 + C:1040H LINE# 35 + C:1044H LINE# 36 + C:1044H LINE# 37 + C:104AH LINE# 38 + C:104AH LINE# 39 + C:104FH LINE# 40 + C:1051H LINE# 41 + C:1051H LINE# 42 + C:1051H LINE# 43 + ------- ENDPROC _INTERRUPTINT4APP + ------- PROC INTERRUPTTIMER3APP + ------- DO + X:053CH SYMBOL ucwatcntTime + ------- ENDDO + C:71B2H LINE# 52 + C:71B2H LINE# 53 + C:71B2H LINE# 55 + C:71B4H LINE# 56 + C:71BFH LINE# 57 + C:71BFH LINE# 58 + C:71C1H LINE# 59 + C:71C4H LINE# 60 + C:71C4H LINE# 61 + C:71CFH LINE# 62 + C:71CFH LINE# 63 + C:71D1H LINE# 64 + C:71D3H LINE# 65 + C:71D3H LINE# 67 + C:71DEH LINE# 68 + C:71DEH LINE# 69 + C:71E0H LINE# 70 + C:71E2H LINE# 71 + C:71E2H LINE# 73 + C:71E5H LINE# 74 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 25 + + + ------- ENDPROC INTERRUPTTIMER3APP + ------- ENDMOD INTERRUPTAPP + + ------- MODULE LED + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:6F39H PUBLIC _LedGetDisNum + B:00A0H.0 PUBLIC P2_0 + B:00A0H.1 PUBLIC P2_1 + B:00A0H.2 PUBLIC P2_2 + B:00A0H.3 PUBLIC P2_3 + B:00A0H.4 PUBLIC P2_4 + X:05E8H PUBLIC ucLedChgFlickCnt + B:00B0H.5 PUBLIC P3_5 + X:05E9H PUBLIC ucLedBleFlickCnt + X:05EAH PUBLIC ucLedTimeCnt + B:002EH.2 PUBLIC bLedDisFlg + B:002EH.3 PUBLIC bLedDisBleFlg + C:7606H PUBLIC LedAutoOff + C:4F6BH PUBLIC LedDisplay + ------- PROC _LEDGETDISNUM + D:0006H SYMBOL Rsoc + C:6F39H LINE# 24 + C:6F39H LINE# 25 + C:6F39H LINE# 26 + C:6F42H LINE# 27 + C:6F42H LINE# 28 + C:6F45H LINE# 29 + C:6F45H LINE# 30 + C:6F4EH LINE# 31 + C:6F4EH LINE# 32 + C:6F51H LINE# 33 + C:6F51H LINE# 34 + C:6F5AH LINE# 35 + C:6F5AH LINE# 36 + C:6F5DH LINE# 37 + C:6F5DH LINE# 38 + C:6F66H LINE# 39 + C:6F66H LINE# 40 + C:6F69H LINE# 41 + C:6F69H LINE# 42 + C:6F72H LINE# 43 + C:6F72H LINE# 44 + C:6F75H LINE# 45 + C:6F75H LINE# 47 + C:6F75H LINE# 48 + C:6F77H LINE# 49 + C:6F77H LINE# 50 + ------- ENDPROC _LEDGETDISNUM + ------- PROC LEDAUTOOFF + C:7606H LINE# 59 + C:7606H LINE# 60 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 26 + + + C:7606H LINE# 61 + C:7609H LINE# 62 + C:7609H LINE# 63 + C:7614H LINE# 64 + C:7614H LINE# 65 + C:7616H LINE# 66 + C:7618H LINE# 67 + C:7618H LINE# 68 + C:7618H LINE# 69 + ------- ENDPROC LEDAUTOOFF + ------- PROC LEDDISPLAY + ------- DO + D:0007H SYMBOL LedDisNum + ------- ENDDO + C:4F6BH LINE# 80 + C:4F6BH LINE# 81 + C:4F6BH LINE# 84 + C:4F6EH LINE# 85 + C:4F6EH LINE# 86 + C:4F79H LINE# 87 + C:4F79H LINE# 88 + C:4F7BH LINE# 89 + C:4F80H LINE# 90 + C:4F80H LINE# 91 + C:4F82H LINE# 93 + C:4F82H LINE# 94 + C:4F84H LINE# 95 + C:4F84H LINE# 97 + C:4F87H LINE# 98 + C:4F87H LINE# 99 + C:4F92H LINE# 100 + C:4F92H LINE# 101 + C:4F94H LINE# 102 + C:4F99H LINE# 103 + C:4F99H LINE# 104 + C:4F9BH LINE# 106 + C:4F9BH LINE# 107 + C:4F9DH LINE# 108 + C:4F9DH LINE# 110 + C:4FA0H LINE# 111 + C:4FA0H LINE# 112 + C:4FABH LINE# 113 + C:4FAEH LINE# 114 + C:4FAEH LINE# 115 + C:4FBBH LINE# 116 + C:4FBBH LINE# 117 + C:4FBFH LINE# 118 + C:4FBFH LINE# 119 + C:4FC4H LINE# 120 + C:4FC6H LINE# 121 + C:4FCAH LINE# 122 + C:4FCAH LINE# 123 + C:4FCFH LINE# 124 + C:4FD1H LINE# 125 + C:4FD3H LINE# 126 + C:4FD7H LINE# 127 + C:4FD7H LINE# 128 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 27 + + + C:4FDCH LINE# 129 + C:4FDEH LINE# 130 + C:4FE0H LINE# 131 + C:4FE2H LINE# 132 + C:4FE6H LINE# 133 + C:4FE6H LINE# 134 + C:4FEBH LINE# 135 + C:4FEDH LINE# 136 + C:4FEFH LINE# 137 + C:4FF1H LINE# 138 + C:4FF3H LINE# 139 + C:4FF8H LINE# 140 + C:4FF8H LINE# 141 + C:5005H LINE# 142 + C:5005H LINE# 143 + C:5007H LINE# 145 + C:5007H LINE# 146 + C:5014H LINE# 147 + C:5014H LINE# 149 + C:5017H LINE# 150 + ------- ENDPROC LEDDISPLAY + ------- ENDMOD LED + + ------- MODULE KEYAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + D:00B7H PUBLIC PWM2CON + C:7280H PUBLIC KeyProcess + B:0080H.3 PUBLIC P0_3 + C:6055H PUBLIC KeySwitchSpeed + X:05FAH PUBLIC ucDsgingSpeed + ------- PROC KEYSWITCHSPEED + C:6055H LINE# 20 + C:6055H LINE# 21 + C:6055H LINE# 22 + C:6057H LINE# 23 + C:6059H LINE# 24 + C:605BH LINE# 25 + C:605EH LINE# 26 + C:605EH LINE# 27 + C:6064H LINE# 28 + C:6064H LINE# 29 + C:6066H LINE# 30 + C:6068H LINE# 31 + C:6078H LINE# 32 + C:607BH LINE# 33 + C:607CH LINE# 34 + C:6083H LINE# 35 + C:6083H LINE# 36 + C:6086H LINE# 37 + C:6088H LINE# 38 + C:6095H LINE# 39 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 28 + + + C:6098H LINE# 40 + C:6099H LINE# 42 + C:6099H LINE# 43 + C:609EH LINE# 44 + C:60A0H LINE# 45 + C:60B0H LINE# 46 + C:60B3H LINE# 47 + C:60B3H LINE# 48 + C:60B3H LINE# 49 + ------- ENDPROC KEYSWITCHSPEED + ------- PROC KEYPROCESS + C:7280H LINE# 58 + C:7280H LINE# 59 + C:7280H LINE# 60 + C:7283H LINE# 61 + C:7283H LINE# 62 + C:7285H LINE# 63 + C:7296H LINE# 64 + C:7296H LINE# 65 + C:7296H LINE# 66 + C:7299H LINE# 67 + C:729AH LINE# 69 + C:729AH LINE# 70 + C:729CH LINE# 71 + C:72A1H LINE# 72 + C:72A2H LINE# 74 + C:72A2H LINE# 75 + C:72A4H LINE# 76 + C:72A5H LINE# 78 + C:72A5H LINE# 79 + C:72A7H LINE# 80 + C:72AAH LINE# 81 + C:72AAH LINE# 82 + C:72ACH LINE# 83 + C:72ADH LINE# 85 + C:72ADH LINE# 86 + C:72AFH LINE# 87 + C:72AFH LINE# 88 + C:72AFH LINE# 90 + C:72AFH LINE# 91 + C:72AFH LINE# 92 + C:72AFH LINE# 93 + C:72AFH LINE# 94 + ------- ENDPROC KEYPROCESS + ------- ENDMOD KEYAPP + + ------- MODULE LOWPOWER + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:05EBH PUBLIC ucSleepTimerCnt + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + B:00C8H.6 PUBLIC ENTWI + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 29 + + + D:00B7H PUBLIC PWM2CON + B:002CH.4 PUBLIC bPDFlg + B:00A0H.0 PUBLIC P2_0 + B:0080H.3 PUBLIC P0_3 + B:00A0H.1 PUBLIC P2_1 + B:00A0H.2 PUBLIC P2_2 + B:00A0H.3 PUBLIC P2_3 + D:00D8H PUBLIC EXF1 + B:00A0H.4 PUBLIC P2_4 + B:00A0H.5 PUBLIC P2_5 + X:05ECH PUBLIC ucPDTimerCnt + C:6DF3H PUBLIC SystemIntoSleep + C:56F1H PUBLIC LowPowerCheck + B:002CH.5 PUBLIC bPCEnterPDFlg + C:6EF9H PUBLIC LowPowerProcess + C:6EB9H PUBLIC WakeUpProcess + D:00B1H PUBLIC RSTSTAT + C:7466H PUBLIC SystemIntoPD + B:00A8H.4 PUBLIC ES0 + B:00A8H.5 PUBLIC ET3 + X:05EDH PUBLIC ucResetFlag + B:002CH.6 PUBLIC bWakeupFlg + B:002CH.7 PUBLIC bSleepFlg + ------- PROC WAKEUPPROCESS + C:6EB9H LINE# 26 + C:6EB9H LINE# 27 + C:6EB9H LINE# 28 + C:6EBCH LINE# 29 + C:6EBCH LINE# 30 + C:6EBEH LINE# 31 + C:6EC1H LINE# 32 + C:6EC1H LINE# 33 + C:6EC6H LINE# 34 + C:6EC8H LINE# 36 + C:6ECAH LINE# 37 + C:6ECFH LINE# 38 + C:6ED4H LINE# 41 + C:6ED6H LINE# 43 + C:6ED8H LINE# 44 + C:6EDAH LINE# 46 + C:6EDFH LINE# 47 + C:6EE2H LINE# 48 + C:6EE5H LINE# 49 + C:6EE5H LINE# 50 + C:6EEAH LINE# 51 + C:6EECH LINE# 52 + C:6EF0H LINE# 53 + C:6EF4H LINE# 54 + C:6EF8H LINE# 55 + C:6EF8H LINE# 56 + ------- ENDPROC WAKEUPPROCESS + ------- PROC SYSTEMINTOPD + C:7466H LINE# 65 + C:7466H LINE# 66 + C:7466H LINE# 67 + C:7466H LINE# 68 + C:7466H LINE# 69 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 30 + + + C:7469H LINE# 71 + C:746BH LINE# 72 + C:7478H LINE# 73 + C:747AH LINE# 74 + C:747FH LINE# 76 + C:7482H LINE# 77 + ------- ENDPROC SYSTEMINTOPD + ------- PROC SYSTEMINTOSLEEP + C:6DF3H LINE# 87 + C:6DF3H LINE# 88 + C:6DF3H LINE# 89 + C:6E00H LINE# 90 + C:6E02H LINE# 91 + C:6E04H LINE# 93 + C:6E07H LINE# 94 + C:6E0AH LINE# 95 + C:6E0FH LINE# 96 + C:6E11H LINE# 97 + C:6E14H LINE# 98 + C:6E17H LINE# 99 + C:6E17H LINE# 100 + C:6E19H LINE# 101 + C:6E1BH LINE# 103 + C:6E1BH LINE# 104 + C:6E1DH LINE# 105 + C:6E1DH LINE# 106 + C:6E22H LINE# 108 + C:6E24H LINE# 110 + C:6E26H LINE# 118 + C:6E28H LINE# 119 + C:6E2BH LINE# 120 + C:6E30H LINE# 121 + C:6E32H LINE# 123 + C:6E35H LINE# 124 + ------- ENDPROC SYSTEMINTOSLEEP + ------- PROC LOWPOWERCHECK + C:56F1H LINE# 135 + C:56F1H LINE# 136 + C:56F1H LINE# 137 + C:56FDH LINE# 138 + C:56FDH LINE# 139 + C:56FFH LINE# 140 + C:5701H LINE# 141 + C:5702H LINE# 142 + C:5705H LINE# 143 + C:5705H LINE# 144 + C:5714H LINE# 145 + C:5714H LINE# 146 + C:5716H LINE# 147 + C:5718H LINE# 148 + C:5718H LINE# 149 + C:5719H LINE# 150 + C:571CH LINE# 151 + C:571CH LINE# 152 + C:5722H LINE# 153 + C:5722H LINE# 154 + C:5725H LINE# 155 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 31 + + + C:5725H LINE# 156 + C:5734H LINE# 157 + C:5734H LINE# 158 + C:5736H LINE# 159 + C:5738H LINE# 160 + C:5738H LINE# 161 + C:5739H LINE# 163 + C:5739H LINE# 164 + C:573EH LINE# 165 + C:5756H LINE# 166 + C:5756H LINE# 167 + C:5764H LINE# 168 + C:5764H LINE# 169 + C:5766H LINE# 170 + C:5768H LINE# 171 + C:5768H LINE# 172 + C:5769H LINE# 174 + C:5769H LINE# 175 + C:576EH LINE# 176 + C:576EH LINE# 177 + C:576EH LINE# 178 + C:576FH LINE# 180 + C:576FH LINE# 181 + C:5774H LINE# 182 + C:5776H LINE# 183 + C:5776H LINE# 184 + C:5777H LINE# 186 + C:5777H LINE# 187 + C:577CH LINE# 188 + C:577EH LINE# 189 + C:577EH LINE# 190 + ------- ENDPROC LOWPOWERCHECK + ------- PROC LOWPOWERPROCESS + C:6EF9H LINE# 199 + C:6EF9H LINE# 200 + C:6EF9H LINE# 201 + C:6EFFH LINE# 202 + C:6EFFH LINE# 203 + C:6F01H LINE# 204 + C:6F19H LINE# 205 + C:6F19H LINE# 206 + C:6F1BH LINE# 207 + C:6F1EH LINE# 208 + C:6F1EH LINE# 209 + C:6F20H LINE# 210 + C:6F22H LINE# 211 + C:6F25H LINE# 212 + C:6F25H LINE# 213 + C:6F27H LINE# 214 + C:6F2AH LINE# 215 + C:6F2DH LINE# 216 + C:6F2FH LINE# 217 + C:6F32H LINE# 218 + C:6F32H LINE# 219 + C:6F35H LINE# 220 + C:6F35H LINE# 222 + C:6F38H LINE# 223 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 32 + + + ------- ENDPROC LOWPOWERPROCESS + ------- ENDMOD LOWPOWER + + ------- MODULE UARTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + C:3C54H PUBLIC Uart0RdCmdProcess + D:0090H PUBLIC P1 + C:70A6H PUBLIC Uart0ReadSubClassID + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + B:0028H.3 PUBLIC bUart0SndAckFlg + D:0080H PUBLIC P5 + B:0028H.4 PUBLIC bUart1SndAckFlg + B:0028H.5 PUBLIC bUart2SndAckFlg + X:03F3H PUBLIC ucSubClassID + C:552FH PUBLIC _InterruptUart0AppRx + C:516FH PUBLIC Uart0WrCmdProcess + C:50C4H PUBLIC InterruptUart0AppTx + X:03F4H PUBLIC ucUartErrCode + C:64DEH PUBLIC Uart0CaliVoltage + C:6A13H PUBLIC Uart0CaliTS1 + C:6A5CH PUBLIC Uart0CaliTS2 + C:6AEEH PUBLIC Page1WrRdFuncTable + C:6B12H PUBLIC Page2WrRdFuncTable + C:75DEH PUBLIC Uart0Check + D:0099H PUBLIC SBUF + C:4995H PUBLIC Uart0CaliCurrent + C:6437H PUBLIC Uart0CaliRTC + X:03F5H PUBLIC ucUart0SndLength + X:03F6H PUBLIC ucUart1SndLength + X:03F7H PUBLIC ucUart2SndLength + D:00B1H PUBLIC RSTSTAT + X:03F8H PUBLIC ucUart0TimeoutCnt + X:03F9H PUBLIC ucUart1TimeoutCnt + X:03FAH PUBLIC ucUart2TimeoutCnt + X:0400H PUBLIC ucUart0Buf + X:04A0H PUBLIC ucUart1Buf + X:0540H PUBLIC ucUart2Buf + B:0028H.6 PUBLIC bUart0ReadFlg + B:0028H.7 PUBLIC bUart1ReadFlg + B:0029H.0 PUBLIC bUart2ReadFlg + C:398AH PUBLIC Uart0IapCheckHandshake + B:0029H.1 PUBLIC bUart0WriteFlg + C:5BA2H PUBLIC _Uart0ReadInfo + C:76FDH PUBLIC Uart0Handshake + B:0029H.2 PUBLIC bUart1WriteFlg + B:0029H.3 PUBLIC bUart2WriteFlg + C:6C9CH PUBLIC Uart0WriteManufacture + C:70DDH PUBLIC Uart0CaliCurOffset + B:0098H.4 PUBLIC REN + B:0029H.4 PUBLIC bISPFlg + C:591EH PUBLIC _Uart0WriteInfo + X:03FBH PUBLIC ucUart0BufPT + X:03FCH PUBLIC ucUart1BufPT + X:03FDH PUBLIC ucUart2BufPT + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 33 + + + D:009AH PUBLIC SADDR + X:03FEH PUBLIC uiReceCheckSum + ------- PROC UART0HANDSHAKE + C:76FDH LINE# 110 + C:76FDH LINE# 111 + C:76FDH LINE# 112 + C:7703H LINE# 113 + C:7703H LINE# 114 + C:7708H LINE# 115 + C:7709H LINE# 117 + C:7709H LINE# 118 + C:770EH LINE# 119 + C:770EH LINE# 120 + ------- ENDPROC UART0HANDSHAKE + ------- PROC _UART0WRITEINFO + X:0324H SYMBOL ptr + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:591EH LINE# 170 + C:5926H LINE# 171 + C:5926H LINE# 174 + C:5947H LINE# 175 + C:5947H LINE# 176 + C:5952H LINE# 177 + C:5952H LINE# 178 + C:5955H LINE# 179 + C:596EH LINE# 180 + C:5978H LINE# 181 + C:597BH LINE# 183 + C:5980H LINE# 184 + C:5982H LINE# 185 + C:5984H LINE# 186 + C:5986H LINE# 187 + C:5988H LINE# 188 + C:598AH LINE# 189 + C:598CH LINE# 190 + C:5990H LINE# 192 + C:5992H LINE# 193 + C:5996H LINE# 195 + C:599BH LINE# 196 + C:599CH LINE# 198 + C:599CH LINE# 199 + C:59A1H LINE# 200 + C:59A1H LINE# 201 + ------- ENDPROC _UART0WRITEINFO + ------- PROC _UART0READINFO + D:0006H SYMBOL ptr + ------- DO + D:0005H SYMBOL i + ------- ENDDO + C:5BA2H LINE# 293 + C:5BA2H LINE# 294 + C:5BA2H LINE# 297 + C:5BABH LINE# 298 + C:5BABH LINE# 299 + C:5BADH LINE# 300 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 34 + + + C:5BADH LINE# 302 + C:5BB2H LINE# 303 + C:5BB4H LINE# 304 + C:5BB6H LINE# 305 + C:5BB8H LINE# 306 + C:5BBAH LINE# 307 + C:5BBCH LINE# 308 + C:5BBEH LINE# 309 + C:5BC2H LINE# 311 + C:5BCDH LINE# 312 + C:5BCDH LINE# 313 + C:5BD0H LINE# 314 + C:5BE2H LINE# 315 + C:5BE7H LINE# 316 + C:5BEAH LINE# 317 + C:5C06H LINE# 319 + C:5C18H LINE# 320 + ------- ENDPROC _UART0READINFO + ------- PROC UART0WRITEMANUFACTURE + C:6C9CH LINE# 406 + C:6C9CH LINE# 407 + C:6C9CH LINE# 408 + C:6CBDH LINE# 409 + C:6CBDH LINE# 410 + C:6CC5H LINE# 411 + C:6CC5H LINE# 412 + C:6CCBH LINE# 413 + C:6CCDH LINE# 414 + C:6CD1H LINE# 415 + C:6CD1H LINE# 416 + C:6CD3H LINE# 417 + C:6CD3H LINE# 418 + C:6CD5H LINE# 419 + C:6CDAH LINE# 420 + C:6CDBH LINE# 422 + C:6CDBH LINE# 423 + C:6CE0H LINE# 424 + C:6CE0H LINE# 425 + ------- ENDPROC UART0WRITEMANUFACTURE + ------- PROC UART0READSUBCLASSID + C:70A6H LINE# 497 + C:70A6H LINE# 498 + C:70A6H LINE# 499 + C:70C7H LINE# 500 + C:70C7H LINE# 501 + C:70CFH LINE# 503 + C:70D1H LINE# 504 + C:70D6H LINE# 505 + C:70D7H LINE# 507 + C:70D7H LINE# 508 + C:70DCH LINE# 509 + C:70DCH LINE# 510 + ------- ENDPROC UART0READSUBCLASSID + ------- PROC UART0RDCMDPROCESS + ------- DO + X:0322H SYMBOL rdaddr + ------- ENDDO + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 35 + + + C:3C54H LINE# 566 + C:3C54H LINE# 567 + C:3C54H LINE# 570 + C:3CA8H LINE# 571 + C:3CA8H LINE# 572 + C:3CA8H LINE# 573 + C:3CA8H LINE# 574 + C:3CA8H LINE# 575 + C:3CA8H LINE# 576 + C:3CA8H LINE# 577 + C:3CA8H LINE# 578 + C:3CA8H LINE# 579 + C:3CA8H LINE# 580 + C:3CA8H LINE# 581 + C:3CA8H LINE# 582 + C:3CB8H LINE# 583 + C:3CB9H LINE# 585 + C:3CB9H LINE# 586 + C:3CC0H LINE# 587 + C:3CC1H LINE# 589 + C:3CC1H LINE# 590 + C:3CC8H LINE# 591 + C:3CC9H LINE# 593 + C:3CC9H LINE# 594 + C:3CD0H LINE# 595 + C:3CD1H LINE# 597 + C:3CD1H LINE# 598 + C:3CD8H LINE# 599 + C:3CD9H LINE# 601 + C:3CD9H LINE# 602 + C:3CE0H LINE# 603 + C:3CE1H LINE# 605 + C:3CE1H LINE# 606 + C:3CE8H LINE# 607 + C:3CE9H LINE# 609 + C:3CE9H LINE# 610 + C:3CF0H LINE# 611 + C:3CF1H LINE# 613 + C:3CF1H LINE# 614 + C:3CF8H LINE# 615 + C:3CF9H LINE# 617 + C:3CF9H LINE# 618 + C:3D00H LINE# 619 + C:3D01H LINE# 621 + C:3D01H LINE# 622 + C:3D08H LINE# 623 + C:3D09H LINE# 625 + C:3D09H LINE# 626 + C:3D10H LINE# 627 + C:3D11H LINE# 629 + C:3D11H LINE# 630 + C:3D18H LINE# 631 + C:3D19H LINE# 633 + C:3D19H LINE# 634 + C:3D20H LINE# 635 + C:3D21H LINE# 637 + C:3D21H LINE# 638 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 36 + + + C:3D28H LINE# 639 + C:3D29H LINE# 641 + C:3D29H LINE# 642 + C:3D32H LINE# 643 + C:3D32H LINE# 644 + C:3D34H LINE# 645 + C:3D3AH LINE# 646 + C:3D3BH LINE# 647 + C:3D49H LINE# 648 + C:3D49H LINE# 649 + C:3D4BH LINE# 650 + C:3D51H LINE# 651 + C:3D52H LINE# 652 + C:3D59H LINE# 653 + C:3D59H LINE# 654 + C:3D77H LINE# 655 + C:3D7AH LINE# 656 + C:3D7BH LINE# 657 + C:3D82H LINE# 658 + C:3D82H LINE# 659 + C:3DA0H LINE# 660 + C:3DA3H LINE# 661 + C:3DA3H LINE# 662 + C:3DA3H LINE# 663 + C:3DA3H LINE# 664 + ------- ENDPROC UART0RDCMDPROCESS + ------- PROC UART0CALIVOLTAGE + C:64DEH LINE# 890 + C:64DEH LINE# 891 + C:64DEH LINE# 892 + C:64FFH LINE# 893 + C:64FFH LINE# 894 + C:6512H LINE# 896 + C:6515H LINE# 897 + C:6515H LINE# 898 + C:651AH LINE# 899 + C:651BH LINE# 901 + C:651BH LINE# 902 + C:651DH LINE# 903 + C:6524H LINE# 904 + C:6529H LINE# 905 + C:6529H LINE# 906 + C:652AH LINE# 908 + C:652AH LINE# 909 + C:652FH LINE# 910 + C:652FH LINE# 911 + ------- ENDPROC UART0CALIVOLTAGE + ------- PROC UART0CALICURRENT + C:4995H LINE# 983 + C:4995H LINE# 984 + C:4995H LINE# 985 + C:49B9H LINE# 986 + C:49B9H LINE# 990 + C:4A21H LINE# 992 + C:4A37H LINE# 993 + C:4A37H LINE# 994 + C:4A3CH LINE# 995 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 37 + + + C:4A3DH LINE# 997 + C:4A3DH LINE# 998 + C:4A3FH LINE# 999 + C:4A46H LINE# 1000 + C:4A4BH LINE# 1001 + C:4A4BH LINE# 1002 + C:4A4CH LINE# 1004 + C:4A4CH LINE# 1005 + C:4A51H LINE# 1006 + C:4A51H LINE# 1007 + ------- ENDPROC UART0CALICURRENT + ------- PROC UART0CALICUROFFSET + C:70DDH LINE# 1010 + C:70DDH LINE# 1011 + C:70DDH LINE# 1012 + C:70FEH LINE# 1013 + C:70FEH LINE# 1014 + C:7100H LINE# 1015 + C:7107H LINE# 1017 + C:710CH LINE# 1018 + C:710DH LINE# 1020 + C:710DH LINE# 1021 + C:7112H LINE# 1022 + C:7112H LINE# 1023 + ------- ENDPROC UART0CALICUROFFSET + ------- PROC UART0CALITS1 + C:6A13H LINE# 1133 + C:6A13H LINE# 1134 + C:6A13H LINE# 1135 + C:6A34H LINE# 1136 + C:6A34H LINE# 1137 + C:6A36H LINE# 1138 + C:6A49H LINE# 1139 + C:6A50H LINE# 1141 + C:6A55H LINE# 1142 + C:6A56H LINE# 1144 + C:6A56H LINE# 1145 + C:6A5BH LINE# 1146 + C:6A5BH LINE# 1147 + ------- ENDPROC UART0CALITS1 + ------- PROC UART0CALITS2 + C:6A5CH LINE# 1150 + C:6A5CH LINE# 1151 + C:6A5CH LINE# 1152 + C:6A7DH LINE# 1153 + C:6A7DH LINE# 1154 + C:6A7FH LINE# 1155 + C:6A92H LINE# 1156 + C:6A99H LINE# 1158 + C:6A9EH LINE# 1159 + C:6A9FH LINE# 1161 + C:6A9FH LINE# 1162 + C:6AA4H LINE# 1163 + C:6AA4H LINE# 1164 + ------- ENDPROC UART0CALITS2 + ------- PROC UART0CALIRTC + ------- DO + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 38 + + + D:0007H SYMBOL i + ------- ENDDO + C:6437H LINE# 1256 + C:6437H LINE# 1257 + C:6437H LINE# 1260 + C:6458H LINE# 1261 + C:6458H LINE# 1262 + C:6459H LINE# 1263 + C:6459H LINE# 1264 + C:6471H LINE# 1265 + C:6476H LINE# 1266 + C:6478H LINE# 1267 + C:647FH LINE# 1268 + C:6484H LINE# 1269 + C:6485H LINE# 1271 + C:6485H LINE# 1272 + C:648AH LINE# 1273 + C:648AH LINE# 1274 + ------- ENDPROC UART0CALIRTC + ------- PROC UART0WRCMDPROCESS + ------- DO + X:0322H SYMBOL rdaddr + ------- ENDDO + C:516FH LINE# 1340 + C:516FH LINE# 1341 + C:516FH LINE# 1343 + C:519BH LINE# 1344 + C:519BH LINE# 1345 + C:519BH LINE# 1346 + C:519EH LINE# 1347 + C:519FH LINE# 1348 + C:519FH LINE# 1349 + C:51A2H LINE# 1350 + C:51A3H LINE# 1351 + C:51A3H LINE# 1352 + C:51A6H LINE# 1353 + C:51A7H LINE# 1354 + C:51A7H LINE# 1355 + C:51AAH LINE# 1356 + C:51ABH LINE# 1357 + C:51ABH LINE# 1358 + C:51AEH LINE# 1359 + C:51AFH LINE# 1360 + C:51AFH LINE# 1361 + C:51B2H LINE# 1362 + C:51B3H LINE# 1363 + C:51B3H LINE# 1364 + C:51B6H LINE# 1365 + C:51B7H LINE# 1367 + C:51B7H LINE# 1368 + C:51BAH LINE# 1369 + C:51BBH LINE# 1370 + C:51BBH LINE# 1371 + C:51D9H LINE# 1372 + C:51DCH LINE# 1373 + C:51DDH LINE# 1374 + C:51DDH LINE# 1375 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 39 + + + C:51FBH LINE# 1376 + C:51FEH LINE# 1377 + C:51FFH LINE# 1379 + C:51FFH LINE# 1380 + C:5206H LINE# 1381 + C:5206H LINE# 1382 + C:5208H LINE# 1383 + C:520AH LINE# 1384 + C:520FH LINE# 1385 + C:5210H LINE# 1387 + C:5210H LINE# 1388 + C:5215H LINE# 1389 + C:5215H LINE# 1390 + C:5215H LINE# 1391 + C:5215H LINE# 1392 + ------- ENDPROC UART0WRCMDPROCESS + ------- PROC UART0IAPCHECKHANDSHAKE + ------- DO + D:0007H SYMBOL i + D:0007H SYMBOL databak + X:0322H SYMBOL checksum + ------- ENDDO + C:398AH LINE# 1526 + C:398AH LINE# 1527 + C:398AH LINE# 1529 + C:3991H LINE# 1531 + C:3999H LINE# 1532 + C:3999H LINE# 1533 + C:39A1H LINE# 1534 + C:39A1H LINE# 1535 + C:39A6H LINE# 1536 + C:39A7H LINE# 1538 + C:39A7H LINE# 1539 + C:39AEH LINE# 1540 + C:39B2H LINE# 1541 + C:39B2H LINE# 1542 + C:39B3H LINE# 1544 + C:39B3H LINE# 1545 + C:39CEH LINE# 1546 + C:39CEH LINE# 1547 + C:39E1H LINE# 1548 + C:39E1H LINE# 1549 + C:39F9H LINE# 1550 + C:39F9H LINE# 1551 + C:3A01H LINE# 1552 + C:3A01H LINE# 1553 + C:3A0CH LINE# 1554 + C:3A0CH LINE# 1555 + C:3A11H LINE# 1556 + C:3A11H LINE# 1557 + C:3A12H LINE# 1558 + C:3A1AH LINE# 1559 + C:3A1AH LINE# 1560 + C:3A25H LINE# 1561 + C:3A25H LINE# 1562 + C:3A2CH LINE# 1563 + C:3A2CH LINE# 1564 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 40 + + + C:3A2CH LINE# 1565 + C:3A2DH LINE# 1567 + C:3A2DH LINE# 1568 + C:3A32H LINE# 1569 + C:3A61H LINE# 1570 + C:3A61H LINE# 1571 + C:3A68H LINE# 1572 + C:3A68H LINE# 1574 + C:3A6FH LINE# 1575 + C:3A6FH LINE# 1576 + C:3A73H LINE# 1577 + C:3A75H LINE# 1579 + C:3A75H LINE# 1580 + C:3A77H LINE# 1581 + C:3A7CH LINE# 1582 + C:3A7CH LINE# 1584 + C:3A81H LINE# 1585 + C:3A87H LINE# 1587 + C:3A8CH LINE# 1588 + C:3A92H LINE# 1589 + C:3A95H LINE# 1591 + C:3AAEH LINE# 1592 + C:3AAEH LINE# 1593 + C:3AC3H LINE# 1594 + C:3AC6H LINE# 1596 + C:3ADAH LINE# 1597 + C:3AEBH LINE# 1599 + C:3AF0H LINE# 1600 + C:3AF0H LINE# 1601 + C:3AF0H LINE# 1602 + ------- ENDPROC UART0IAPCHECKHANDSHAKE + ------- PROC _INTERRUPTUART0APPRX + D:0007H SYMBOL RxData + C:552FH LINE# 1789 + C:552FH LINE# 1790 + C:552FH LINE# 1791 + C:553EH LINE# 1792 + C:5544H LINE# 1793 + C:554AH LINE# 1794 + C:554AH LINE# 1795 + C:554CH LINE# 1796 + C:554CH LINE# 1797 + C:5554H LINE# 1798 + C:5554H LINE# 1799 + C:555EH LINE# 1800 + C:555EH LINE# 1801 + C:5562H LINE# 1802 + C:5562H LINE# 1803 + C:5564H LINE# 1804 + C:5566H LINE# 1805 + C:5568H LINE# 1807 + C:5568H LINE# 1808 + C:556AH LINE# 1809 + C:556CH LINE# 1810 + C:556CH LINE# 1811 + C:556EH LINE# 1812 + C:5576H LINE# 1813 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 41 + + + C:5576H LINE# 1814 + C:557BH LINE# 1815 + C:557BH LINE# 1816 + C:557BH LINE# 1818 + C:557EH LINE# 1819 + C:557EH LINE# 1820 + C:5586H LINE# 1821 + C:5586H LINE# 1822 + C:5589H LINE# 1823 + C:5589H LINE# 1824 + C:558BH LINE# 1825 + C:558EH LINE# 1826 + C:558EH LINE# 1827 + C:55A7H LINE# 1828 + C:55A7H LINE# 1829 + C:55AAH LINE# 1830 + C:55ACH LINE# 1831 + C:55B1H LINE# 1832 + C:55B1H LINE# 1833 + C:55B3H LINE# 1835 + C:55B3H LINE# 1836 + C:55B6H LINE# 1837 + C:55B6H LINE# 1838 + C:55B8H LINE# 1840 + C:55BDH LINE# 1841 + C:55C1H LINE# 1842 + C:55C5H LINE# 1843 + ------- ENDPROC _INTERRUPTUART0APPRX + ------- PROC INTERRUPTUART0APPTX + C:50C4H LINE# 1852 + C:50C4H LINE# 1853 + C:50C4H LINE# 1854 + C:50D4H LINE# 1855 + C:50D4H LINE# 1856 + C:50EDH LINE# 1857 + C:50EDH LINE# 1858 + C:50EFH LINE# 1859 + C:50F1H LINE# 1860 + C:50F3H LINE# 1861 + C:50F7H LINE# 1862 + C:50F9H LINE# 1863 + C:50FBH LINE# 1864 + C:50FDH LINE# 1865 + C:50FFH LINE# 1866 + C:5101H LINE# 1868 + C:5101H LINE# 1869 + C:5107H LINE# 1870 + C:5116H LINE# 1871 + C:5116H LINE# 1872 + C:5118H LINE# 1873 + C:5135H LINE# 1874 + C:5135H LINE# 1875 + C:5137H LINE# 1876 + C:513CH LINE# 1877 + C:513EH LINE# 1878 + C:5142H LINE# 1879 + C:5144H LINE# 1880 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 42 + + + C:5146H LINE# 1881 + C:5148H LINE# 1882 + C:514AH LINE# 1883 + C:514CH LINE# 1885 + C:514CH LINE# 1886 + C:5152H LINE# 1887 + C:5161H LINE# 1888 + C:5161H LINE# 1890 + C:5166H LINE# 1891 + C:516AH LINE# 1892 + C:516EH LINE# 1893 + ------- ENDPROC INTERRUPTUART0APPTX + ------- PROC UART0CHECK + C:75DEH LINE# 1902 + C:75DEH LINE# 1903 + C:75DEH LINE# 1904 + C:75E9H LINE# 1905 + C:75E9H LINE# 1906 + C:75EBH LINE# 1907 + C:75EFH LINE# 1908 + C:75F1H LINE# 1909 + C:75F1H LINE# 1910 + ------- ENDPROC UART0CHECK + ------- ENDMOD UARTAPP + + ------- MODULE MEMORY + C:0000H SYMBOL _ICE_DUMMY_ + B:0020H.2 PUBLIC bOCRC_EN + X:00ABH PUBLIC E2uiLearnLowTempe + D:0080H PUBLIC P0 + D:0022H PUBLIC uiBatStatus + D:0090H PUBLIC P1 + X:00BAH PUBLIC E2ulCycleThreshold + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + B:0025H.6 PUBLIC bFastDischarge + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:0023H.0 PUBLIC bOV + X:002AH PUBLIC E2ucLowPowerDeley + B:0023H.1 PUBLIC bUV + X:00BEH PUBLIC E2ulCycleThresholdCount + B:0025H.5 PUBLIC bMidDischarge + B:0020H.6 PUBLIC bOCPM + B:0025H.2 PUBLIC bCHGING + X:00C5H PUBLIC E2ucReserved + X:006DH PUBLIC E2slOCCCurrent + X:00D7H PUBLIC E2siTS0Offset + X:0088H PUBLIC E2ucLoadRDelay + X:00D9H PUBLIC E2siTS1Offset + X:0071H PUBLIC E2ucOCCDelay + X:0024H PUBLIC E2uiLearnLowTemp + X:00B2H PUBLIC E2ulDfRC + B:0025H.4 PUBLIC bSlowDischarge + B:0021H.3 PUBLIC bLEDNum0 + B:0021H.4 PUBLIC bLEDNum1 + X:00CEH PUBLIC E2uiAFEOVvol + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 43 + + + X:001EH PUBLIC E2ulCycleThreshold_Rsv + X:002FH PUBLIC E2ucRamCheckFlg0 + X:006AH PUBLIC E2siChgEndCurr + X:0061H PUBLIC E2ucRamCheckFlg1 + B:0025H.3 PUBLIC bDSGING + X:0074H PUBLIC E2ucRamCheckFlg2 + X:008DH PUBLIC E2ucDSG1PWMRatioH + X:0089H PUBLIC E2ucRamCheckFlg3 + X:0064H PUBLIC E2uiOVRvol + X:002CH PUBLIC E2siChgBKCur + X:00C4H PUBLIC E2ucDsgEndFlg + X:008EH PUBLIC E2ucRamCheckFlg5 + X:0053H PUBLIC E2ucDeviceChem + X:0099H PUBLIC E2ucRamCheckFlg6 + B:0022H.5 PUBLIC bAFE_SC + B:0025H.0 PUBLIC bCHGMOS + B:0020H.3 PUBLIC bBAL_EN + X:00AEH PUBLIC E2ulFCC + X:00A2H PUBLIC E2ucRamCheckFlg7 + X:008CH PUBLIC E2ucDSG1PWMRatioL + X:00AAH PUBLIC E2ucRamCheckFlg8 + X:00CCH PUBLIC E2ucRamCheckFlg9 + X:0077H PUBLIC E2uiUVRvol + X:0047H PUBLIC E2ucDeviceName + X:0091H PUBLIC E2uiTempOTCR + X:009CH PUBLIC E2uiTempOTDR + X:0026H PUBLIC E2uiNearFCC + B:0021H.5 PUBLIC bTempNum + X:00D5H PUBLIC E2siCadcOffset + X:0098H PUBLIC E2ucTempRDelay + D:0026H PUBLIC ucAFEStatus + X:0095H PUBLIC E2uiTempUTCR + B:0020H.7 PUBLIC bEnEEPRomBK + X:00D1H PUBLIC E2uiVPackGain + X:00D0H PUBLIC E2ucRamCheckFlgA + X:00A5H PUBLIC E2uiBalanceVolDiff + X:00A0H PUBLIC E2uiTempUTDR + X:00DCH PUBLIC E2ucRamCheckFlgB + B:0025H.1 PUBLIC bDSGMOS + X:01FEH PUBLIC E2uiCheckFlag + X:00A3H PUBLIC E2uiBalanceVol + B:0022H.4 PUBLIC bAFE_OV + X:0068H PUBLIC E2uiChgEndVol + X:00ADH PUBLIC E2ucSOC + X:0035H PUBLIC E2ucMNFName + B:0023H.2 PUBLIC bOCC + X:00B6H PUBLIC E2ulChgFCC + D:0020H PUBLIC uiPackConfig + X:0067H PUBLIC E2ucOVRDelay + X:002EH PUBLIC E2ucRTCBKDelay + X:0041H PUBLIC E2ulMNFDate + B:0020H.5 PUBLIC bCTO_EN + X:0002H PUBLIC E2uiVOC + X:007AH PUBLIC E2ucUVRDelay + X:007CH PUBLIC E2uiDsgEndVol + X:00DBH PUBLIC E2ucCalibrated + B:0026H.4 PUBLIC bAfeCHG + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 44 + + + X:00D3H PUBLIC E2siCadcGain + X:001AH PUBLIC E2ulFCC_Rsv + B:0026H.2 PUBLIC bAfeChging + X:00DDH PUBLIC Reserved + B:0021H.0 PUBLIC bCellNum1 + X:007EH PUBLIC E2slOCD1Current + X:0073H PUBLIC E2ucReserved2 + B:0022H.6 PUBLIC bCTO + B:0022H.0 PUBLIC bOTC + B:0021H.1 PUBLIC bCellNum2 + X:0083H PUBLIC E2slOCD2Current + B:0022H.1 PUBLIC bOTD + B:0021H.2 PUBLIC bCellNum3 + X:0082H PUBLIC E2ucOCD1Delay + X:0087H PUBLIC E2ucOCD2Delay + B:0024H.2 PUBLIC bVDQ + X:00A7H PUBLIC E2siBalCurrent + B:0026H.5 PUBLIC bAfeDSG + B:0022H.2 PUBLIC bUTC + X:0062H PUBLIC E2uiOVvol + X:0028H PUBLIC E2siDfilterCur + B:0026H.3 PUBLIC bAfeDsging + B:0022H.3 PUBLIC bUTD + X:0000H PUBLIC E2uiPackConfigMap + X:0075H PUBLIC E2uiUVvol + X:00C2H PUBLIC E2uiCycleCount + X:008FH PUBLIC E2uiTempOTC + X:009AH PUBLIC E2uiTempOTD + B:0021H.6 PUBLIC bChgerLock + X:0097H PUBLIC E2ucTempDelay + B:0026H.0 PUBLIC bAfeChger + X:0093H PUBLIC E2uiTempUTC + X:009EH PUBLIC E2uiTempUTD + X:0034H PUBLIC E2ucID + X:00CDH PUBLIC E2ucAFEProtectConfig + X:0032H PUBLIC E2uiHWVersion + X:005FH PUBLIC E2uiChemID + X:002BH PUBLIC E2ucChgBKDelay + X:0066H PUBLIC E2ucOVDelay + D:0024H PUBLIC uiPackStatus + B:0023H.3 PUBLIC bOCD1 + B:0023H.4 PUBLIC bOCD2 + B:0024H.0 PUBLIC bFC + B:0020H.4 PUBLIC bPF_EN + X:0072H PUBLIC E2ucOCCRDelay + X:0016H PUBLIC E2ulDesignCapacity + B:0024H.1 PUBLIC bFD + B:0020H.0 PUBLIC bSC_EN + X:0045H PUBLIC E2uiSerialNum + X:0030H PUBLIC E2uiSWVersion + X:00A9H PUBLIC E2ucBalanceDelay + X:008AH PUBLIC E2uiDSG1PWMFreq + X:0079H PUBLIC E2ucUVDelay + X:006CH PUBLIC E2ucChgEndDelay + B:0021H.7 PUBLIC bLoadLock + B:0026H.1 PUBLIC bAfeLoad + X:0022H PUBLIC E2uiCycleCount_Rsv + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 45 + + + I:00A0H PUBLIC STACK + B:0020H.1 PUBLIC bOV_EN + X:007BH PUBLIC E2ucDsgEndDelay + ------- ENDMOD MEMORY + + ------- MODULE AFE + C:0000H SYMBOL _ICE_DUMMY_ + X:0200H PUBLIC uiVadcVmax + D:000FH PUBLIC uiCellVmin + D:0080H PUBLIC P0 + D:0011H PUBLIC uiCellVmax + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:5898H PUBLIC AFEInitReg + X:0202H PUBLIC uiTempeMin + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:0204H PUBLIC uiTempeMax + B:002BH.2 PUBLIC bCADCFlg + C:768BH PUBLIC AfeADCEn + C:6FF4H PUBLIC AFEClrFlg + C:7585H PUBLIC AFERdStatus + D:0013H PUBLIC ucCellNum + X:0206H PUBLIC Info + C:76EAH PUBLIC AfeTempADCDis + X:023CH PUBLIC slCadcCurBuf + B:002BH.3 PUBLIC bAfeErr + B:002BH.4 PUBLIC bVADCFlg + C:6FB7H PUBLIC AFERdFlg + C:759DH PUBLIC _AfeAlarmDis + C:7678H PUBLIC AfeWDTDis + B:002BH.5 PUBLIC bAfeI2CRWErrFlg + C:75B4H PUBLIC _AFEMosCtl + C:76D7H PUBLIC AfeTempADCEn + X:027CH PUBLIC ucTempeMiddle + C:770FH PUBLIC _AfeAlarmEn + C:7665H PUBLIC AfeWDTEn + X:027DH PUBLIC slCadcCurrent + X:0281H PUBLIC slCadcCurAverage + C:76C4H PUBLIC AfeCADCDis + C:762CH PUBLIC AFEChgerCheckDis + C:6F78H PUBLIC _AfeBalCtl + X:0285H PUBLIC AFE + C:76B1H PUBLIC AfeCADCEn + C:7619H PUBLIC AFEChgerCheckEn + C:6113H PUBLIC AFERamCheck + C:7652H PUBLIC AFELoadCheckDis + D:00C8H PUBLIC TWICON + X:02A3H PUBLIC REG + C:73AEH PUBLIC AFEEnterPD + C:7721H PUBLIC AFEInit + C:7552H PUBLIC AFETwiCheck + C:763FH PUBLIC AFELoadCheckEn + C:5FF5H PUBLIC _AFEReadReg + X:02B1H PUBLIC ucAfeI2CErrDelayCnt + X:02B2H PUBLIC ucCadcCnt + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 46 + + + C:769EH PUBLIC AfeADCDis + D:0014H PUBLIC ucCellNumOffset + C:5216H PUBLIC _AFEWriteReg + B:002BH.6 PUBLIC bAfeAlarmFlg + X:02B3H PUBLIC uiVadcVmin + ------- PROC AFETWICHECK + C:7552H LINE# 43 + C:7552H LINE# 44 + C:7552H LINE# 45 + C:7555H LINE# 46 + C:7555H LINE# 47 + C:7560H LINE# 48 + C:7560H LINE# 49 + C:7562H LINE# 50 + C:7565H LINE# 51 + C:7565H LINE# 52 + C:7566H LINE# 54 + C:7566H LINE# 55 + C:756BH LINE# 56 + C:756BH LINE# 57 + ------- ENDPROC AFETWICHECK + ------- PROC _AFEWRITEREG + X:032AH SYMBOL Reg + X:032BH SYMBOL Length + X:032CH SYMBOL WrBuf + ------- DO + B:0029H.6 SYMBOL Result + X:032EH SYMBOL Times + X:032FH SYMBOL i + ------- ENDDO + C:5216H LINE# 67 + C:5224H LINE# 68 + C:5224H LINE# 69 + C:5226H LINE# 70 + C:5229H LINE# 73 + C:522FH LINE# 74 + C:522FH LINE# 75 + C:523EH LINE# 76 + C:523EH LINE# 77 + C:524BH LINE# 78 + C:524BH LINE# 84 + C:524BH LINE# 85 + C:526AH LINE# 86 + C:526AH LINE# 88 + C:526DH LINE# 89 + C:526DH LINE# 90 + C:526FH LINE# 91 + C:5271H LINE# 93 + C:5271H LINE# 94 + C:5274H LINE# 95 + C:5279H LINE# 96 + C:527CH LINE# 97 + C:527FH LINE# 98 + C:527FH LINE# 99 + C:5281H LINE# 100 + C:528AH LINE# 101 + C:528AH LINE# 102 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 47 + + + C:528CH LINE# 103 + C:528EH LINE# 105 + C:528EH LINE# 106 + C:5293H LINE# 107 + C:5299H LINE# 108 + C:52A3H LINE# 109 + C:52A3H LINE# 110 + C:52A8H LINE# 111 + C:52B0H LINE# 112 + C:52B0H LINE# 113 + C:52B5H LINE# 115 + C:52B7H LINE# 116 + ------- ENDPROC _AFEWRITEREG + ------- PROC _AFEREADREG + X:0330H SYMBOL Reg + X:0331H SYMBOL Length + X:0332H SYMBOL RdBuf + ------- DO + B:0029H.6 SYMBOL Result + X:0334H SYMBOL Times + ------- ENDDO + C:5FF5H LINE# 126 + C:6003H LINE# 127 + C:6003H LINE# 128 + C:6005H LINE# 129 + C:6008H LINE# 131 + C:600BH LINE# 132 + C:600BH LINE# 133 + C:6018H LINE# 134 + C:6018H LINE# 138 + C:6036H LINE# 140 + C:6039H LINE# 141 + C:6039H LINE# 142 + C:603BH LINE# 143 + C:603DH LINE# 145 + C:603DH LINE# 146 + C:6040H LINE# 147 + C:6045H LINE# 148 + C:6048H LINE# 149 + C:604BH LINE# 150 + C:604BH LINE# 151 + C:604DH LINE# 152 + C:604DH LINE# 153 + C:6052H LINE# 155 + C:6054H LINE# 156 + ------- ENDPROC _AFEREADREG + ------- PROC AFECLRFLG + C:6FF4H LINE# 165 + C:6FF4H LINE# 166 + C:6FF4H LINE# 167 + C:7001H LINE# 168 + C:7001H LINE# 169 + C:700BH LINE# 170 + C:700BH LINE# 171 + C:7012H LINE# 172 + C:701DH LINE# 173 + C:7024H LINE# 174 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 48 + + + C:702FH LINE# 175 + C:702FH LINE# 176 + C:702FH LINE# 177 + ------- ENDPROC AFECLRFLG + ------- PROC AFEINITREG + ------- DO + D:0004H SYMBOL TempVar + ------- ENDDO + C:5898H LINE# 186 + C:5898H LINE# 187 + C:5898H LINE# 190 + C:589DH LINE# 191 + C:58A1H LINE# 192 + C:58A4H LINE# 193 + C:58A8H LINE# 194 + C:58ABH LINE# 195 + C:58ADH LINE# 196 + C:58B1H LINE# 197 + C:58B5H LINE# 198 + C:58B9H LINE# 199 + C:58BDH LINE# 200 + C:58C0H LINE# 202 + C:58C3H LINE# 203 + C:58C3H LINE# 204 + C:58CAH LINE# 205 + C:58DCH LINE# 206 + C:58DCH LINE# 207 + C:58DFH LINE# 208 + C:58DFH LINE# 209 + C:58E6H LINE# 210 + C:58F8H LINE# 211 + C:5915H LINE# 212 + C:591AH LINE# 213 + C:591DH LINE# 214 + C:591DH LINE# 215 + ------- ENDPROC AFEINITREG + ------- PROC AFEINIT + ------- DO + B:0029H.5 SYMBOL Result + ------- ENDDO + C:7721H LINE# 225 + C:7721H LINE# 226 + C:7721H LINE# 241 + C:772EH LINE# 242 + C:7730H LINE# 243 + ------- ENDPROC AFEINIT + ------- PROC AFERDFLG + C:6FB7H LINE# 254 + C:6FB7H LINE# 255 + C:6FB7H LINE# 256 + C:6FC4H LINE# 257 + C:6FC4H LINE# 258 + C:6FCCH LINE# 259 + C:6FCCH LINE# 260 + C:6FCEH LINE# 261 + C:6FCEH LINE# 263 + C:6FD2H LINE# 264 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 49 + + + C:6FD2H LINE# 265 + C:6FD4H LINE# 266 + C:6FD4H LINE# 268 + C:6FDFH LINE# 269 + C:6FDFH LINE# 270 + C:6FE1H LINE# 271 + C:6FE3H LINE# 272 + C:6FE3H LINE# 273 + C:6FE7H LINE# 274 + C:6FE7H LINE# 275 + C:6FE9H LINE# 276 + C:6FE9H LINE# 278 + C:6FF0H LINE# 279 + C:6FF0H LINE# 280 + C:6FF3H LINE# 281 + C:6FF3H LINE# 282 + C:6FF3H LINE# 283 + ------- ENDPROC AFERDFLG + ------- PROC AFERDSTATUS + ------- DO + X:0326H SYMBOL RegTemp + ------- ENDDO + C:7585H LINE# 292 + C:7585H LINE# 293 + C:7585H LINE# 295 + C:7592H LINE# 296 + C:7592H LINE# 297 + C:759CH LINE# 298 + C:759CH LINE# 299 + ------- ENDPROC AFERDSTATUS + ------- PROC AFERAMCHECK + ------- DO + X:0326H SYMBOL RdBuf + X:0328H SYMBOL i + ------- ENDDO + C:6113H LINE# 308 + C:6113H LINE# 309 + C:6113H LINE# 313 + C:6123H LINE# 314 + C:6123H LINE# 315 + C:612CH LINE# 317 + C:615AH LINE# 318 + C:615AH LINE# 319 + C:6162H LINE# 320 + C:6162H LINE# 321 + C:6165H LINE# 322 + C:6166H LINE# 323 + C:6166H LINE# 324 + C:6166H LINE# 325 + C:616FH LINE# 326 + ------- ENDPROC AFERAMCHECK + ------- PROC AFEENTERPD + C:73AEH LINE# 335 + C:73AEH LINE# 336 + C:73AEH LINE# 337 + C:73B4H LINE# 338 + C:73C1H LINE# 339 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 50 + + + C:73C1H LINE# 340 + C:73C8H LINE# 341 + C:73D3H LINE# 342 + C:73D3H LINE# 343 + ------- ENDPROC AFEENTERPD + ------- PROC _AFEMOSCTL + D:0007H SYMBOL MosStatus + C:75B4H LINE# 352 + C:75B4H LINE# 353 + C:75B4H LINE# 354 + C:75BBH LINE# 355 + C:75BDH LINE# 356 + C:75C8H LINE# 357 + ------- ENDPROC _AFEMOSCTL + ------- PROC AFECHGERCHECKEN + C:7619H LINE# 367 + C:7619H LINE# 368 + C:7619H LINE# 369 + C:7620H LINE# 370 + C:762BH LINE# 371 + ------- ENDPROC AFECHGERCHECKEN + ------- PROC AFECHGERCHECKDIS + C:762CH LINE# 374 + C:762CH LINE# 375 + C:762CH LINE# 376 + C:7633H LINE# 377 + C:763EH LINE# 378 + ------- ENDPROC AFECHGERCHECKDIS + ------- PROC AFELOADCHECKEN + C:763FH LINE# 381 + C:763FH LINE# 382 + C:763FH LINE# 383 + C:7646H LINE# 384 + C:7651H LINE# 385 + ------- ENDPROC AFELOADCHECKEN + ------- PROC AFELOADCHECKDIS + C:7652H LINE# 388 + C:7652H LINE# 389 + C:7652H LINE# 390 + C:7659H LINE# 391 + C:7664H LINE# 392 + ------- ENDPROC AFELOADCHECKDIS + ------- PROC _AFEBALCTL + X:0328H SYMBOL BalChTemp + C:6F78H LINE# 401 + C:6F80H LINE# 402 + C:6F80H LINE# 403 + C:6F94H LINE# 404 + C:6FA1H LINE# 405 + C:6FA1H LINE# 406 + C:6FABH LINE# 407 + C:6FB6H LINE# 408 + C:6FB6H LINE# 409 + ------- ENDPROC _AFEBALCTL + ------- PROC AFEWDTEN + C:7665H LINE# 418 + C:7665H LINE# 419 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 51 + + + C:7665H LINE# 420 + C:766CH LINE# 421 + C:7677H LINE# 422 + ------- ENDPROC AFEWDTEN + ------- PROC AFEWDTDIS + C:7678H LINE# 425 + C:7678H LINE# 426 + C:7678H LINE# 427 + C:767FH LINE# 428 + C:768AH LINE# 429 + ------- ENDPROC AFEWDTDIS + ------- PROC AFEADCEN + C:768BH LINE# 438 + C:768BH LINE# 439 + C:768BH LINE# 440 + C:7692H LINE# 441 + C:769DH LINE# 442 + ------- ENDPROC AFEADCEN + ------- PROC AFEADCDIS + C:769EH LINE# 445 + C:769EH LINE# 446 + C:769EH LINE# 447 + C:76A5H LINE# 448 + C:76B0H LINE# 449 + ------- ENDPROC AFEADCDIS + ------- PROC AFECADCEN + C:76B1H LINE# 451 + C:76B1H LINE# 452 + C:76B1H LINE# 453 + C:76B8H LINE# 454 + C:76C3H LINE# 455 + ------- ENDPROC AFECADCEN + ------- PROC AFECADCDIS + C:76C4H LINE# 458 + C:76C4H LINE# 459 + C:76C4H LINE# 460 + C:76CBH LINE# 461 + C:76D6H LINE# 462 + ------- ENDPROC AFECADCDIS + ------- PROC AFETEMPADCEN + C:76D7H LINE# 464 + C:76D7H LINE# 465 + C:76D7H LINE# 466 + C:76DEH LINE# 467 + C:76E9H LINE# 468 + ------- ENDPROC AFETEMPADCEN + ------- PROC AFETEMPADCDIS + C:76EAH LINE# 471 + C:76EAH LINE# 472 + C:76EAH LINE# 473 + C:76F1H LINE# 474 + C:76FCH LINE# 475 + ------- ENDPROC AFETEMPADCDIS + ------- PROC _AFEALARMEN + D:0007H SYMBOL AlarmFlg + C:770FH LINE# 484 + C:770FH LINE# 485 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 52 + + + C:770FH LINE# 486 + C:7715H LINE# 487 + C:7720H LINE# 488 + ------- ENDPROC _AFEALARMEN + ------- PROC _AFEALARMDIS + D:0007H SYMBOL AlarmFlg + C:759DH LINE# 490 + C:759DH LINE# 491 + C:759DH LINE# 492 + C:75A8H LINE# 493 + C:75B3H LINE# 494 + ------- ENDPROC _AFEALARMDIS + ------- ENDMOD AFE + + ------- MODULE BALANCE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + B:002BH.7 PUBLIC bBalancingFlg + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + B:002CH.0 PUBLIC bCellOpenDecFlag + D:0080H PUBLIC P5 + C:7759H PUBLIC BalanceProcess + X:0536H PUBLIC ucBalanceStep + X:0537H PUBLIC ucCellOpenDecCnt + X:0538H PUBLIC ucCtoCnt + B:002CH.1 PUBLIC bBalanceFlg + C:73D4H PUBLIC CTOTurnOnCheck + X:0539H PUBLIC ucBalanceTimeCnt + B:002CH.2 PUBLIC bBalanceOddFlg + X:053AH PUBLIC uiBalanceChannel + B:002CH.3 PUBLIC bCTOValidFlg + C:3DA4H PUBLIC BalTurnOnCheck + C:4DFEH PUBLIC BalProcess + C:7113H PUBLIC CTOCheckVol + ------- PROC BALTURNONCHECK + ------- DO + D:0005H SYMBOL i + ------- ENDDO + C:3DA4H LINE# 32 + C:3DA4H LINE# 33 + C:3DA4H LINE# 36 + C:3DB0H LINE# 37 + C:3DB0H LINE# 38 + C:3DB6H LINE# 39 + C:3DB6H LINE# 40 + C:3DBDH LINE# 41 + C:3DEDH LINE# 44 + C:3DEDH LINE# 45 + C:3DEFH LINE# 46 + C:3DF4H LINE# 47 + C:3DF5H LINE# 49 + C:3DF5H LINE# 50 + C:3E3FH LINE# 51 + C:3E3FH LINE# 52 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 53 + + + C:3E42H LINE# 53 + C:3E42H LINE# 54 + C:3E48H LINE# 55 + C:3E48H LINE# 56 + C:3E64H LINE# 57 + C:3E64H LINE# 58 + C:3E7AH LINE# 59 + C:3E7AH LINE# 60 + C:3EBFH LINE# 61 + C:3EBFH LINE# 62 + C:3EDAH LINE# 63 + C:3EDAH LINE# 64 + C:3EDDH LINE# 65 + C:3EDFH LINE# 66 + C:3EDFH LINE# 67 + C:3EE0H LINE# 69 + C:3EE0H LINE# 70 + C:3EE2H LINE# 71 + C:3EE7H LINE# 72 + C:3EE7H LINE# 73 + C:3EE7H LINE# 74 + C:3EE7H LINE# 75 + C:3EE7H LINE# 76 + ------- ENDPROC BALTURNONCHECK + ------- PROC CTOCHECKVOL + ------- DO + B:0029H.5 SYMBOL bResult + ------- ENDDO + C:7113H LINE# 87 + C:7113H LINE# 88 + C:7113H LINE# 89 + C:7115H LINE# 91 + C:7118H LINE# 92 + C:7118H LINE# 93 + C:711BH LINE# 94 + C:711BH LINE# 95 + C:711EH LINE# 96 + C:711EH LINE# 97 + C:712DH LINE# 98 + C:712DH LINE# 99 + C:712FH LINE# 100 + C:713AH LINE# 101 + C:713AH LINE# 102 + C:713CH LINE# 103 + C:713CH LINE# 104 + C:713EH LINE# 106 + C:713EH LINE# 107 + C:7140H LINE# 108 + C:7145H LINE# 109 + C:7145H LINE# 110 + C:7145H LINE# 111 + C:7145H LINE# 128 + C:7145H LINE# 130 + C:7147H LINE# 131 + ------- ENDPROC CTOCHECKVOL + ------- PROC BALPROCESS + ------- DO + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 54 + + + X:0326H SYMBOL BalChTemp + ------- ENDDO + C:4DFEH LINE# 144 + C:4DFEH LINE# 145 + C:4DFEH LINE# 150 + C:4E1CH LINE# 151 + C:4E1CH LINE# 152 + C:4E1EH LINE# 153 + C:4E1EH LINE# 155 + C:4E36H LINE# 156 + C:4E36H LINE# 157 + C:4E36H LINE# 158 + C:4E3CH LINE# 159 + C:4E3CH LINE# 160 + C:4E3FH LINE# 161 + C:4E3FH LINE# 162 + C:4E52H LINE# 163 + C:4E54H LINE# 165 + C:4E54H LINE# 166 + C:4E67H LINE# 167 + C:4E67H LINE# 168 + C:4E72H LINE# 169 + C:4E78H LINE# 170 + C:4E7AH LINE# 171 + C:4E7AH LINE# 172 + C:4E7BH LINE# 174 + C:4E7BH LINE# 175 + C:4E81H LINE# 176 + C:4E82H LINE# 178 + C:4E82H LINE# 179 + C:4E87H LINE# 180 + C:4E87H LINE# 181 + C:4E8DH LINE# 182 + C:4E93H LINE# 183 + C:4E95H LINE# 184 + C:4E95H LINE# 185 + C:4E96H LINE# 187 + C:4E96H LINE# 188 + C:4E9BH LINE# 189 + C:4E9BH LINE# 190 + C:4EA1H LINE# 191 + C:4EA2H LINE# 193 + C:4EA2H LINE# 194 + C:4EA8H LINE# 195 + C:4EAAH LINE# 196 + C:4EAAH LINE# 197 + C:4EABH LINE# 199 + C:4EABH LINE# 200 + C:4EB1H LINE# 201 + C:4EB3H LINE# 202 + C:4EB5H LINE# 203 + C:4EB7H LINE# 204 + C:4EB7H LINE# 205 + C:4EB7H LINE# 206 + ------- ENDPROC BALPROCESS + ------- PROC CTOTURNONCHECK + C:73D4H LINE# 215 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 55 + + + C:73D4H LINE# 216 + C:73D4H LINE# 220 + C:73DAH LINE# 222 + C:73DAH LINE# 223 + C:73E5H LINE# 224 + C:73E5H LINE# 225 + C:73E8H LINE# 226 + C:73EBH LINE# 227 + C:73EBH LINE# 228 + C:73EDH LINE# 229 + C:73EFH LINE# 230 + C:73F9H LINE# 231 + C:73F9H LINE# 232 + C:73F9H LINE# 233 + C:73F9H LINE# 234 + ------- ENDPROC CTOTURNONCHECK + ------- PROC BALANCEPROCESS + C:7759H LINE# 242 + C:7759H LINE# 243 + C:7759H LINE# 244 + C:775CH LINE# 246 + C:775FH LINE# 248 + C:7762H LINE# 249 + ------- ENDPROC BALANCEPROCESS + ------- ENDMOD BALANCE + + ------- MODULE CALCULATE + C:0000H SYMBOL _ICE_DUMMY_ + C:4EB8H PUBLIC OffsetCalculate + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:2DEAH PUBLIC _CalcuTemp + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:71E6H PUBLIC siCurTempOffset + C:3532H PUBLIC AfeCalcuCurr + C:4163H PUBLIC AfeCalcuVol + C:6B36H PUBLIC AfeGetTempe + X:049EH PUBLIC ucChgingCheckCnt + C:75F2H PUBLIC AFEInfoProcess + X:049FH PUBLIC ucDsgingCheckCnt + B:00A8H.4 PUBLIC ES0 + C:697FH PUBLIC AfeGetVol + C:44BAH PUBLIC AfeCalcuTempe + ------- PROC _CALCUTEMP + D:0082H SYMBOL getdata + ------- DO + X:0326H SYMBOL i + X:0327H SYMBOL Temperature + X:0329H SYMBOL Tempcalcu + ------- ENDDO + C:2DEAH LINE# 22 + C:2DEEH LINE# 23 + C:2DEEH LINE# 31 + C:2E1CH LINE# 32 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 56 + + + C:2E2EH LINE# 33 + C:2E2EH LINE# 34 + C:2E4BH LINE# 35 + C:2E4BH LINE# 38 + C:2E64H LINE# 39 + C:2E64H LINE# 40 + C:2E6EH LINE# 41 + C:2E71H LINE# 42 + C:2E8AH LINE# 43 + C:2E8AH LINE# 44 + C:2E94H LINE# 45 + C:2E97H LINE# 47 + C:2E97H LINE# 48 + C:2E9FH LINE# 49 + C:2EBEH LINE# 50 + C:2EBEH LINE# 51 + C:2ED1H LINE# 52 + C:2ED1H LINE# 53 + C:2EF1H LINE# 54 + C:2EF1H LINE# 55 + C:2EF1H LINE# 56 + C:2EF1H LINE# 57 + C:2EF9H LINE# 58 + C:2EF9H LINE# 60 + C:2EF9H LINE# 61 + C:2F0CH LINE# 62 + C:2F0CH LINE# 63 + C:2F2CH LINE# 64 + C:2F2CH LINE# 65 + C:2F2CH LINE# 66 + C:2F2CH LINE# 67 + C:2F34H LINE# 68 + C:2F3AH LINE# 69 + C:2F3AH LINE# 70 + C:2F42H LINE# 72 + C:2FD1H LINE# 73 + C:2FD1H LINE# 74 + C:2FD9H LINE# 75 + ------- ENDPROC _CALCUTEMP + ------- PROC AFEGETVOL + ------- DO + X:032FH SYMBOL i + B:0029H.5 SYMBOL Result + ------- ENDDO + C:697FH LINE# 84 + C:697FH LINE# 85 + C:697FH LINE# 87 + C:6981H LINE# 89 + C:699EH LINE# 90 + C:699EH LINE# 91 + C:69B9H LINE# 92 + C:69B9H LINE# 93 + C:69BBH LINE# 94 + C:69BEH LINE# 95 + C:69BEH LINE# 96 + C:69C6H LINE# 98 + C:69C8H LINE# 99 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 57 + + + ------- ENDPROC AFEGETVOL + ------- PROC AFEGETTEMPE + ------- DO + B:0029H.5 SYMBOL Result + ------- ENDDO + C:6B36H LINE# 101 + C:6B36H LINE# 102 + C:6B36H LINE# 103 + C:6B38H LINE# 105 + C:6B45H LINE# 106 + C:6B45H LINE# 107 + C:6B47H LINE# 108 + C:6B47H LINE# 109 + C:6B54H LINE# 110 + C:6B54H LINE# 111 + C:6B56H LINE# 112 + C:6B56H LINE# 114 + C:6B63H LINE# 115 + C:6B63H LINE# 116 + C:6B65H LINE# 117 + C:6B65H LINE# 118 + C:6B6CH LINE# 119 + C:6B6CH LINE# 120 + C:6B79H LINE# 121 + C:6B79H LINE# 122 + C:6B7BH LINE# 123 + C:6B7BH LINE# 124 + C:6B7BH LINE# 126 + C:6B7DH LINE# 127 + ------- ENDPROC AFEGETTEMPE + ------- PROC AFECALCUTEMPE + ------- DO + D:0006H SYMBOL TempeData + ------- ENDDO + C:44BAH LINE# 136 + C:44BAH LINE# 137 + C:44BAH LINE# 141 + C:44C2H LINE# 142 + C:44C2H LINE# 143 + C:44D9H LINE# 145 + C:44DBH LINE# 153 + C:44E2H LINE# 155 + C:44E4H LINE# 163 + C:450AH LINE# 165 + C:450CH LINE# 173 + C:4514H LINE# 176 + C:4516H LINE# 185 + C:451DH LINE# 186 + C:451DH LINE# 187 + C:453CH LINE# 189 + C:453EH LINE# 197 + C:4545H LINE# 199 + C:4547H LINE# 207 + C:4547H LINE# 209 + C:4557H LINE# 210 + C:455FH LINE# 211 + C:4562H LINE# 212 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 58 + + + C:4562H LINE# 213 + C:4579H LINE# 215 + C:457BH LINE# 223 + C:4582H LINE# 225 + C:4584H LINE# 234 + C:4591H LINE# 235 + C:4591H LINE# 236 + C:4596H LINE# 237 + C:4597H LINE# 239 + C:4597H LINE# 240 + C:459FH LINE# 241 + C:459FH LINE# 242 + C:459FH LINE# 243 + C:459FH LINE# 244 + ------- ENDPROC AFECALCUTEMPE + ------- PROC AFECALCUVOL + ------- DO + X:0326H SYMBOL i + X:0327H SYMBOL TempPackVol + X:032BH SYMBOL TempCellVol + ------- ENDDO + C:4163H LINE# 254 + C:4163H LINE# 255 + C:4163H LINE# 257 + C:4177H LINE# 258 + C:417EH LINE# 259 + C:4188H LINE# 261 + C:4190H LINE# 262 + C:4190H LINE# 263 + C:41B1H LINE# 264 + C:41B1H LINE# 265 + C:41E8H LINE# 267 + C:41FFH LINE# 268 + C:41FFH LINE# 269 + C:420DH LINE# 270 + C:420DH LINE# 271 + C:4224H LINE# 272 + C:4224H LINE# 273 + C:4232H LINE# 274 + C:4232H LINE# 276 + C:4235H LINE# 277 + C:4235H LINE# 279 + C:4237H LINE# 287 + C:4251H LINE# 289 + C:4253H LINE# 297 + C:4268H LINE# 298 + C:4268H LINE# 299 + C:4271H LINE# 301 + C:4274H LINE# 302 + C:4274H LINE# 303 + C:427EH LINE# 304 + C:4288H LINE# 307 + C:428AH LINE# 315 + C:4298H LINE# 317 + C:429AH LINE# 325 + C:429AH LINE# 326 + C:429AH LINE# 327 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 59 + + + ------- ENDPROC AFECALCUVOL + ------- PROC OFFSETCALCULATE + ------- DO + X:032BH SYMBOL siCadcTempOffset + X:032DH SYMBOL i + ------- ENDDO + C:4EB8H LINE# 348 + C:4EB8H LINE# 349 + C:4EB8H LINE# 350 + C:4EBFH LINE# 353 + C:4ECEH LINE# 354 + C:4ECEH LINE# 355 + C:4F3AH LINE# 356 + C:4F3AH LINE# 357 + C:4F57H LINE# 358 + C:4F59H LINE# 359 + C:4F59H LINE# 360 + C:4F62H LINE# 361 + C:4F6AH LINE# 362 + ------- ENDPROC OFFSETCALCULATE + ------- PROC AFECALCUCURR + ------- DO + X:0326H SYMBOL i + X:0327H SYMBOL Tempdata + ------- ENDDO + C:3532H LINE# 370 + C:3532H LINE# 371 + C:3532H LINE# 373 + C:353CH LINE# 375 + C:3547H LINE# 377 + C:3553H LINE# 378 + C:3553H LINE# 379 + C:355CH LINE# 380 + C:355CH LINE# 381 + C:35ABH LINE# 383 + C:35C5H LINE# 384 + C:35D0H LINE# 385 + C:35D0H LINE# 386 + C:35D2H LINE# 387 + C:35D2H LINE# 388 + C:35E1H LINE# 389 + C:35E1H LINE# 390 + C:35FFH LINE# 391 + C:3607H LINE# 392 + C:361CH LINE# 394 + C:361EH LINE# 395 + C:3620H LINE# 396 + C:3640H LINE# 397 + C:3640H LINE# 398 + C:364BH LINE# 399 + C:364BH LINE# 400 + C:364EH LINE# 401 + C:3650H LINE# 403 + C:3652H LINE# 411 + C:365EH LINE# 413 + C:3660H LINE# 421 + C:3660H LINE# 422 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 60 + + + C:3661H LINE# 423 + C:367BH LINE# 424 + C:367BH LINE# 425 + C:3685H LINE# 426 + C:3685H LINE# 427 + C:3688H LINE# 428 + C:368AH LINE# 429 + C:3693H LINE# 431 + C:3695H LINE# 439 + C:36A1H LINE# 441 + C:36A3H LINE# 449 + C:36A3H LINE# 450 + C:36A4H LINE# 452 + C:36A4H LINE# 454 + C:36A6H LINE# 462 + C:36B0H LINE# 464 + C:36B2H LINE# 472 + C:36B2H LINE# 473 + ------- ENDPROC AFECALCUCURR + ------- PROC AFEINFOPROCESS + C:75F2H LINE# 482 + C:75F2H LINE# 483 + C:75F2H LINE# 484 + C:75F5H LINE# 486 + C:75F7H LINE# 487 + C:75FAH LINE# 488 + C:75FDH LINE# 490 + C:7600H LINE# 491 + C:7600H LINE# 492 + C:7602H LINE# 493 + C:7605H LINE# 494 + C:7605H LINE# 495 + ------- ENDPROC AFEINFOPROCESS + ------- ENDMOD CALCULATE + + ------- MODULE CALIBRATE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:05D6H PUBLIC slExtCur + C:7731H PUBLIC CaliCurZero + X:05DAH PUBLIC ucExtcaliSwitch1 + C:5DE2H PUBLIC CaliVoltage + C:6CE1H PUBLIC CaliTS1 + C:6D26H PUBLIC CaliTS2 + X:05DBH PUBLIC uiExtTemp1 + X:05DDH PUBLIC uiExtTemp2 + C:66C2H PUBLIC CaliProcess + C:7030H PUBLIC CaliCurrentGain + X:05DFH PUBLIC ulExtVPack + X:05E1H PUBLIC ucExtRTC + C:6D6BH PUBLIC CaliRTCTime + B:002FH.2 PUBLIC bCaliFlg + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 61 + + + ------- PROC CALIVOLTAGE + ------- DO + D:0007H SYMBOL i + X:0326H SYMBOL VPackTemp + ------- ENDDO + C:5DE2H LINE# 26 + C:5DE2H LINE# 27 + C:5DE2H LINE# 29 + C:5DE9H LINE# 31 + C:5E01H LINE# 32 + C:5E01H LINE# 33 + C:5E1BH LINE# 34 + C:5E1EH LINE# 36 + C:5E4EH LINE# 37 + ------- ENDPROC CALIVOLTAGE + ------- PROC CALICURRENTGAIN + ------- DO + D:0006H SYMBOL TempGain + ------- ENDDO + C:7030H LINE# 46 + C:7030H LINE# 47 + C:7030H LINE# 50 + C:705EH LINE# 51 + C:7062H LINE# 52 + C:7062H LINE# 53 + C:706AH LINE# 54 + C:706AH LINE# 55 + ------- ENDPROC CALICURRENTGAIN + ------- PROC CALICURZERO + C:7731H LINE# 64 + C:7731H LINE# 65 + C:7731H LINE# 66 + C:7740H LINE# 67 + ------- ENDPROC CALICURZERO + ------- PROC CALITS1 + ------- DO + D:0006H SYMBOL Tempe + ------- ENDDO + C:6CE1H LINE# 76 + C:6CE1H LINE# 77 + C:6CE1H LINE# 80 + C:6CF9H LINE# 81 + C:6D1DH LINE# 82 + C:6D1DH LINE# 83 + C:6D25H LINE# 84 + C:6D25H LINE# 85 + ------- ENDPROC CALITS1 + ------- PROC CALITS2 + ------- DO + D:0006H SYMBOL Tempe + ------- ENDDO + C:6D26H LINE# 87 + C:6D26H LINE# 88 + C:6D26H LINE# 91 + C:6D3EH LINE# 92 + C:6D62H LINE# 93 + C:6D62H LINE# 94 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 62 + + + C:6D6AH LINE# 95 + C:6D6AH LINE# 96 + ------- ENDPROC CALITS2 + ------- PROC CALIRTCTIME + C:6D6BH LINE# 106 + C:6D6BH LINE# 107 + C:6D6BH LINE# 108 + C:6D73H LINE# 109 + C:6D7BH LINE# 110 + C:6D83H LINE# 111 + C:6D8BH LINE# 112 + C:6D93H LINE# 113 + C:6D9BH LINE# 114 + C:6DA3H LINE# 116 + C:6DAAH LINE# 118 + C:6DACH LINE# 119 + C:6DAEH LINE# 120 + ------- ENDPROC CALIRTCTIME + ------- PROC CALIPROCESS + C:66C2H LINE# 131 + C:66C2H LINE# 132 + C:66C2H LINE# 133 + C:66C5H LINE# 134 + C:66C5H LINE# 135 + C:66C7H LINE# 137 + C:66CEH LINE# 138 + C:66CEH LINE# 139 + C:66D1H LINE# 140 + C:66D1H LINE# 142 + C:66D8H LINE# 143 + C:66D8H LINE# 144 + C:66DBH LINE# 145 + C:66DBH LINE# 147 + C:66E2H LINE# 148 + C:66E2H LINE# 149 + C:66E5H LINE# 150 + C:66E5H LINE# 152 + C:66ECH LINE# 153 + C:66ECH LINE# 154 + C:66EFH LINE# 155 + C:66EFH LINE# 157 + C:66F6H LINE# 158 + C:66F6H LINE# 159 + C:66F9H LINE# 160 + C:66F9H LINE# 162 + C:6700H LINE# 163 + C:6700H LINE# 164 + C:6703H LINE# 165 + C:6703H LINE# 167 + C:6708H LINE# 168 + C:670AH LINE# 169 + C:6710H LINE# 170 + C:6710H LINE# 171 + ------- ENDPROC CALIPROCESS + ------- ENDMOD CALIBRATE + + ------- MODULE CHARGERLOAD + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 63 + + + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:05F4H PUBLIC ucChgerRCnt + B:002DH.0 PUBLIC bChgerChkingFlg + C:6AA5H PUBLIC ChgerCheck + X:05F5H PUBLIC ucLoadRCnt + B:002DH.1 PUBLIC bLoadChkingFlg + B:002DH.2 PUBLIC bChgerStartCheckFlg + C:684DH PUBLIC LoadCheck + B:002DH.3 PUBLIC bLoadStartCheckFlg + ------- PROC LOADCHECK + C:684DH LINE# 26 + C:684DH LINE# 27 + C:684DH LINE# 28 + C:6850H LINE# 29 + C:6850H LINE# 30 + C:6852H LINE# 31 + C:6854H LINE# 32 + C:6859H LINE# 33 + C:685CH LINE# 34 + C:685DH LINE# 35 + C:6860H LINE# 36 + C:6860H LINE# 37 + C:6863H LINE# 38 + C:6866H LINE# 39 + C:6866H LINE# 40 + C:6882H LINE# 41 + C:6882H LINE# 42 + C:6884H LINE# 43 + C:6886H LINE# 44 + C:6889H LINE# 45 + C:688CH LINE# 46 + C:688CH LINE# 47 + C:688EH LINE# 48 + C:688EH LINE# 49 + C:6890H LINE# 50 + C:6892H LINE# 51 + C:6895H LINE# 52 + C:6895H LINE# 53 + C:6897H LINE# 54 + C:689AH LINE# 55 + C:689AH LINE# 56 + C:689AH LINE# 57 + C:689AH LINE# 58 + C:689AH LINE# 59 + ------- ENDPROC LOADCHECK + ------- PROC CHGERCHECK + C:6AA5H LINE# 68 + C:6AA5H LINE# 69 + C:6AA5H LINE# 70 + C:6AA8H LINE# 71 + C:6AA8H LINE# 72 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 64 + + + C:6AAAH LINE# 73 + C:6AACH LINE# 74 + C:6AB1H LINE# 75 + C:6AB4H LINE# 76 + C:6AB5H LINE# 77 + C:6AB8H LINE# 78 + C:6AB8H LINE# 79 + C:6ABBH LINE# 80 + C:6ABEH LINE# 81 + C:6ABEH LINE# 82 + C:6ADAH LINE# 83 + C:6ADAH LINE# 84 + C:6ADCH LINE# 85 + C:6ADEH LINE# 86 + C:6AE1H LINE# 87 + C:6AE4H LINE# 88 + C:6AE4H LINE# 89 + C:6AE6H LINE# 90 + C:6AE8H LINE# 91 + C:6AEBH LINE# 92 + C:6AEBH LINE# 93 + C:6AEDH LINE# 94 + C:6AEDH LINE# 95 + C:6AEDH LINE# 96 + C:6AEDH LINE# 97 + ------- ENDPROC CHGERCHECK + ------- ENDMOD CHARGERLOAD + + ------- MODULE EXTE2PROM + C:0000H SYMBOL _ICE_DUMMY_ + C:5F26H PUBLIC Uart0RdE2PRom + C:5D04H PUBLIC Uart1RdE2PRom + D:0080H PUBLIC P0 + C:5D73H PUBLIC Uart2RdE2PRom + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + C:337FH PUBLIC _E2PRomBKData + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:638DH PUBLIC _E2PRomWrite + C:5B25H PUBLIC E2PRomInit + C:74E1H PUBLIC E2PRomTwiCheck + X:03DEH PUBLIC ucRTCBKTime1 + B:00A0H.4 PUBLIC REN1 + B:0090H.4 PUBLIC REN2 + X:03DFH PUBLIC uiRTCBKTime2 + C:6E78H PUBLIC E2PRomBKBoot + B:0027H.0 PUBLIC bE2PErase + X:03E1H PUBLIC uiE2PDataAddr + B:0027H.1 PUBLIC bE2PRErr + B:0027H.2 PUBLIC bE2PProcessFlg + X:03E3H PUBLIC bUart0E2PRdData + X:03E4H PUBLIC bUart1E2PRdData + X:03E5H PUBLIC bUart2E2PRdData + I:001DH PUBLIC ucUpDataLimitTime + D:0099H PUBLIC SBUF + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 65 + + + X:03E6H PUBLIC uiCHGValidTime + D:00B1H PUBLIC RSTSTAT + X:03E8H PUBLIC ucE2PTwiRWErrDelayCnt + D:0086H PUBLIC INSCON + B:0027H.3 PUBLIC bE2PTwiRWErrFlg + B:0027H.4 PUBLIC bE2PBKChgStart + X:03E9H PUBLIC ucRTCBuf + D:00A1H PUBLIC SBUF1 + B:0027H.5 PUBLIC bE2PBKRtc + D:0091H PUBLIC SBUF2 + X:03F0H PUBLIC bUart0RTCRdTime + B:0027H.6 PUBLIC bE2PBKDsgEndValid + B:0098H.4 PUBLIC REN + X:03F1H PUBLIC bUart1RTCRdTime + C:4677H PUBLIC E2PRomBKCheck + X:03F2H PUBLIC bUart2RTCRdTime + C:5018H PUBLIC E2PRomBKProcess + C:5E4FH PUBLIC E2PRomErase + C:6C56H PUBLIC Uart0RdRTC + C:689BH PUBLIC E2PRomBKRTC + C:68E7H PUBLIC Uart1RdRTC + B:0027H.7 PUBLIC bE2PBKDsgEnd + C:6933H PUBLIC Uart2RdRTC + B:0028H.0 PUBLIC bChgToDsgFlg + B:0028H.1 PUBLIC bDsgToChgFlg + B:0028H.2 PUBLIC bE2PBKChgStop + C:63E2H PUBLIC _E2PRomRead + ------- PROC E2PROMTWICHECK + C:74E1H LINE# 43 + C:74E1H LINE# 44 + C:74E1H LINE# 45 + C:74E4H LINE# 46 + C:74E4H LINE# 47 + C:74E7H LINE# 48 + C:74E7H LINE# 49 + C:74F2H LINE# 50 + C:74F2H LINE# 51 + C:74F4H LINE# 52 + C:74F7H LINE# 53 + C:74F7H LINE# 54 + C:74F8H LINE# 56 + C:74F8H LINE# 57 + C:74FDH LINE# 58 + C:74FDH LINE# 59 + C:74FDH LINE# 60 + ------- ENDPROC E2PROMTWICHECK + ------- PROC _E2PROMWRITE + X:0350H SYMBOL WrAddr + X:0352H SYMBOL Length + X:0353H SYMBOL WrBuf + ------- DO + B:0029H.5 SYMBOL Result + X:0355H SYMBOL i + ------- ENDDO + C:638DH LINE# 69 + C:639EH LINE# 70 + C:639EH LINE# 71 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 66 + + + C:63A0H LINE# 74 + C:63A3H LINE# 75 + C:63A3H LINE# 76 + C:63A6H LINE# 77 + C:63A6H LINE# 85 + C:63C5H LINE# 86 + C:63C5H LINE# 87 + C:63C7H LINE# 88 + C:63C9H LINE# 89 + C:63C9H LINE# 96 + C:63CEH LINE# 97 + C:63DAH LINE# 98 + C:63DAH LINE# 99 + C:63DFH LINE# 101 + C:63E1H LINE# 102 + ------- ENDPROC _E2PROMWRITE + ------- PROC _E2PROMREAD + X:0332H SYMBOL RdAddr + X:0334H SYMBOL Length + X:0335H SYMBOL RdBuf + ------- DO + B:0029H.6 SYMBOL Result + X:0337H SYMBOL i + ------- ENDDO + C:63E2H LINE# 111 + C:63F3H LINE# 112 + C:63F3H LINE# 113 + C:63F5H LINE# 116 + C:63F8H LINE# 117 + C:63F8H LINE# 118 + C:63FBH LINE# 119 + C:63FBH LINE# 127 + C:641AH LINE# 128 + C:641AH LINE# 129 + C:641CH LINE# 130 + C:641EH LINE# 131 + C:641EH LINE# 138 + C:6423H LINE# 139 + C:642FH LINE# 140 + C:642FH LINE# 141 + C:6434H LINE# 143 + C:6436H LINE# 144 + ------- ENDPROC _E2PROMREAD + ------- PROC E2PROMERASE + ------- DO + X:0327H SYMBOL i + X:0329H SYMBOL WrBuf + ------- ENDDO + C:5E4FH LINE# 154 + C:5E4FH LINE# 155 + C:5E4FH LINE# 159 + C:5E5AH LINE# 161 + C:5E78H LINE# 162 + C:5E78H LINE# 163 + C:5E7BH LINE# 164 + C:5E9AH LINE# 165 + C:5EA6H LINE# 167 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 67 + + + C:5EB3H LINE# 168 + C:5EBAH LINE# 169 + ------- ENDPROC E2PROMERASE + ------- PROC E2PROMINIT + ------- DO + B:0029H.5 SYMBOL Result + X:0326H SYMBOL RdBuf + ------- ENDDO + C:5B25H LINE# 178 + C:5B25H LINE# 179 + C:5B25H LINE# 180 + C:5B27H LINE# 184 + C:5B36H LINE# 186 + C:5B44H LINE# 187 + C:5B52H LINE# 189 + C:5B5EH LINE# 190 + C:5B5EH LINE# 191 + C:5B73H LINE# 192 + C:5B75H LINE# 193 + C:5B81H LINE# 194 + C:5B81H LINE# 195 + C:5B96H LINE# 196 + C:5B98H LINE# 198 + C:5B98H LINE# 199 + C:5B9FH LINE# 200 + C:5B9FH LINE# 202 + C:5BA1H LINE# 203 + ------- ENDPROC E2PROMINIT + ------- PROC E2PROMBKRTC + ------- DO + X:0327H SYMBOL WrBuf + D:0007H SYMBOL i + X:0330H SYMBOL checksum + ------- ENDDO + C:689BH LINE# 212 + C:689BH LINE# 213 + C:689BH LINE# 215 + C:68A0H LINE# 217 + C:68A7H LINE# 218 + C:68B4H LINE# 219 + C:68B6H LINE# 220 + C:68B6H LINE# 221 + C:68C8H LINE# 222 + C:68CDH LINE# 223 + C:68D5H LINE# 224 + C:68D9H LINE# 226 + C:68E6H LINE# 227 + ------- ENDPROC E2PROMBKRTC + ------- PROC E2PROMBKBOOT + ------- DO + X:0348H SYMBOL WrBuf + ------- ENDDO + C:6E78H LINE# 236 + C:6E78H LINE# 237 + C:6E78H LINE# 240 + C:6E85H LINE# 241 + C:6E8AH LINE# 242 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 68 + + + C:6E93H LINE# 244 + C:6E9BH LINE# 245 + C:6EA3H LINE# 246 + C:6EABH LINE# 248 + C:6EB8H LINE# 249 + ------- ENDPROC E2PROMBKBOOT + ------- PROC _E2PROMBKDATA + X:0327H SYMBOL BKType + ------- DO + X:0328H SYMBOL WrBuf + ------- ENDDO + C:337FH LINE# 258 + C:3384H LINE# 259 + C:3384H LINE# 262 + C:3388H LINE# 263 + C:3388H LINE# 264 + C:3395H LINE# 265 + C:33A0H LINE# 266 + C:33A2H LINE# 268 + C:33A2H LINE# 269 + C:33A9H LINE# 270 + C:33B6H LINE# 271 + C:33C1H LINE# 272 + C:33C1H LINE# 274 + C:33CEH LINE# 275 + C:33D1H LINE# 276 + C:33DEH LINE# 277 + C:33E1H LINE# 278 + C:33F1H LINE# 279 + C:3401H LINE# 280 + C:3411H LINE# 281 + C:341CH LINE# 282 + C:342CH LINE# 283 + C:343CH LINE# 284 + C:344CH LINE# 285 + C:3457H LINE# 286 + C:346EH LINE# 287 + C:347EH LINE# 288 + C:348BH LINE# 289 + C:348EH LINE# 290 + C:349EH LINE# 291 + C:34AEH LINE# 292 + C:34BEH LINE# 293 + C:34C9H LINE# 294 + C:34D6H LINE# 295 + C:34D9H LINE# 296 + C:34E6H LINE# 297 + C:34E9H LINE# 298 + C:34F1H LINE# 299 + C:34F5H LINE# 301 + C:3506H LINE# 303 + C:3510H LINE# 304 + C:3527H LINE# 305 + C:3527H LINE# 306 + C:352EH LINE# 307 + C:352EH LINE# 309 + C:3531H LINE# 310 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 69 + + + ------- ENDPROC _E2PROMBKDATA + ------- PROC UART0RDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:5F26H LINE# 319 + C:5F26H LINE# 320 + C:5F26H LINE# 323 + C:5F51H LINE# 324 + C:5F5DH LINE# 326 + C:5F7CH LINE# 327 + C:5F8EH LINE# 328 + ------- ENDPROC UART0RDE2PROM + ------- PROC UART1RDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:5D04H LINE# 336 + C:5D04H LINE# 337 + C:5D04H LINE# 340 + C:5D2FH LINE# 341 + C:5D3BH LINE# 343 + C:5D5AH LINE# 344 + C:5D72H LINE# 345 + ------- ENDPROC UART1RDE2PROM + ------- PROC UART2RDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:5D73H LINE# 353 + C:5D73H LINE# 354 + C:5D73H LINE# 357 + C:5D9EH LINE# 358 + C:5DAAH LINE# 360 + C:5DC9H LINE# 361 + C:5DE1H LINE# 362 + ------- ENDPROC UART2RDE2PROM + ------- PROC UART0RDRTC + C:6C56H LINE# 371 + C:6C56H LINE# 372 + C:6C56H LINE# 373 + C:6C5DH LINE# 374 + C:6C6AH LINE# 376 + C:6C89H LINE# 377 + C:6C9BH LINE# 378 + ------- ENDPROC UART0RDRTC + ------- PROC UART1RDRTC + C:68E7H LINE# 387 + C:68E7H LINE# 388 + C:68E7H LINE# 389 + C:68EEH LINE# 390 + C:68FBH LINE# 392 + C:691AH LINE# 393 + C:6932H LINE# 394 + ------- ENDPROC UART1RDRTC + ------- PROC UART2RDRTC + C:6933H LINE# 402 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 70 + + + C:6933H LINE# 403 + C:6933H LINE# 404 + C:693AH LINE# 405 + C:6947H LINE# 407 + C:6966H LINE# 408 + C:697EH LINE# 409 + ------- ENDPROC UART2RDRTC + ------- PROC E2PROMBKPROCESS + ------- DO + X:0326H SYMBOL BKType + ------- ENDDO + C:5018H LINE# 417 + C:5018H LINE# 418 + C:5018H LINE# 421 + C:5024H LINE# 422 + C:5024H LINE# 423 + C:5026H LINE# 427 + C:5029H LINE# 428 + C:5029H LINE# 429 + C:502BH LINE# 430 + C:502EH LINE# 431 + C:502EH LINE# 433 + C:503DH LINE# 434 + C:503DH LINE# 435 + C:5040H LINE# 436 + C:5040H LINE# 437 + C:5045H LINE# 438 + C:5048H LINE# 439 + C:5048H LINE# 440 + C:504EH LINE# 441 + C:504EH LINE# 442 + C:5050H LINE# 443 + C:5053H LINE# 444 + C:5053H LINE# 445 + C:5059H LINE# 446 + C:5059H LINE# 447 + C:505BH LINE# 448 + C:505EH LINE# 449 + C:505EH LINE# 451 + C:505EH LINE# 453 + C:506DH LINE# 454 + C:506DH LINE# 455 + C:5070H LINE# 456 + C:5070H LINE# 457 + C:5075H LINE# 458 + C:5078H LINE# 459 + C:5078H LINE# 460 + C:507EH LINE# 461 + C:507EH LINE# 462 + C:5080H LINE# 463 + C:5083H LINE# 464 + C:5083H LINE# 465 + C:5089H LINE# 466 + C:5089H LINE# 467 + C:508BH LINE# 468 + C:508EH LINE# 469 + C:508EH LINE# 470 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 71 + + + C:508EH LINE# 472 + C:5091H LINE# 473 + C:5091H LINE# 474 + C:5093H LINE# 475 + C:5096H LINE# 476 + C:5096H LINE# 478 + C:5099H LINE# 479 + C:5099H LINE# 480 + C:509BH LINE# 481 + C:50A1H LINE# 482 + C:50A5H LINE# 483 + C:50A5H LINE# 485 + C:50A8H LINE# 486 + C:50A8H LINE# 487 + C:50AAH LINE# 488 + C:50B0H LINE# 489 + C:50B4H LINE# 490 + C:50B4H LINE# 492 + C:50B7H LINE# 493 + C:50B7H LINE# 494 + C:50B9H LINE# 495 + C:50BFH LINE# 496 + C:50C3H LINE# 497 + C:50C3H LINE# 498 + C:50C3H LINE# 499 + ------- ENDPROC E2PROMBKPROCESS + ------- PROC E2PROMBKCHECK + C:4677H LINE# 508 + C:4677H LINE# 509 + C:4677H LINE# 510 + C:467DH LINE# 511 + C:467DH LINE# 515 + C:468CH LINE# 516 + C:468CH LINE# 517 + C:468EH LINE# 518 + C:4695H LINE# 519 + C:4695H LINE# 521 + C:46AAH LINE# 522 + C:46AAH LINE# 523 + C:46B1H LINE# 524 + C:46B3H LINE# 525 + C:46B5H LINE# 526 + C:46B5H LINE# 528 + C:46B8H LINE# 529 + C:46B8H LINE# 530 + C:46BAH LINE# 531 + C:46BDH LINE# 532 + C:46BDH LINE# 533 + C:46BFH LINE# 534 + C:46C1H LINE# 535 + C:46C3H LINE# 536 + C:46C3H LINE# 537 + C:46C9H LINE# 538 + C:46C9H LINE# 539 + C:46CBH LINE# 540 + C:46CDH LINE# 541 + C:46CFH LINE# 542 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 72 + + + C:46D1H LINE# 543 + C:46D4H LINE# 544 + C:46D4H LINE# 545 + C:46D6H LINE# 546 + C:46D6H LINE# 547 + C:46D6H LINE# 549 + C:46F3H LINE# 550 + C:46F3H LINE# 551 + C:46FDH LINE# 552 + C:46FDH LINE# 553 + C:4704H LINE# 554 + C:4711H LINE# 555 + C:4711H LINE# 557 + C:4732H LINE# 558 + C:4732H LINE# 559 + C:4739H LINE# 560 + C:473BH LINE# 561 + C:473DH LINE# 562 + C:473FH LINE# 563 + C:4741H LINE# 564 + C:4741H LINE# 565 + C:4742H LINE# 567 + C:4742H LINE# 568 + C:4749H LINE# 569 + C:4749H LINE# 570 + C:4749H LINE# 571 + ------- ENDPROC E2PROMBKCHECK + ------- ENDMOD EXTE2PROM + + ------- MODULE INTERRUPT + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:1003H PUBLIC InterruptTimer3 + D:0086H PUBLIC INSCON + B:0088H.7 PUBLIC TF3 + B:00D8H.0 PUBLIC IF40 + C:5EBBH PUBLIC InterruptINT4 + B:00D8H.1 PUBLIC IF41 + B:00D8H.2 PUBLIC IF42 + B:00D8H.3 PUBLIC IF43 + B:00D8H.4 PUBLIC IF44 + B:00D8H.5 PUBLIC IF45 + B:00D8H.6 PUBLIC IF46 + B:00D8H.7 PUBLIC IF47 + ------- PROC INTERRUPTINT4 + C:5EBBH LINE# 18 + C:5EC6H LINE# 20 + C:5EC8H LINE# 21 + C:5ECBH LINE# 23 + C:5ECEH LINE# 24 + C:5ECEH LINE# 25 + C:5ED0H LINE# 26 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 73 + + + C:5ED5H LINE# 27 + C:5ED5H LINE# 28 + C:5ED8H LINE# 29 + C:5ED8H LINE# 30 + C:5EDAH LINE# 31 + C:5EDFH LINE# 32 + C:5EDFH LINE# 33 + C:5EE2H LINE# 34 + C:5EE2H LINE# 35 + C:5EE4H LINE# 36 + C:5EE9H LINE# 37 + C:5EE9H LINE# 38 + C:5EECH LINE# 39 + C:5EECH LINE# 40 + C:5EEEH LINE# 41 + C:5EF3H LINE# 42 + C:5EF3H LINE# 43 + C:5EF6H LINE# 44 + C:5EF6H LINE# 45 + C:5EF8H LINE# 46 + C:5EFDH LINE# 47 + C:5EFDH LINE# 48 + C:5F00H LINE# 49 + C:5F00H LINE# 50 + C:5F02H LINE# 51 + C:5F07H LINE# 52 + C:5F07H LINE# 53 + C:5F0AH LINE# 54 + C:5F0AH LINE# 55 + C:5F0CH LINE# 56 + C:5F11H LINE# 57 + C:5F11H LINE# 58 + C:5F14H LINE# 59 + C:5F14H LINE# 60 + C:5F16H LINE# 61 + C:5F1BH LINE# 62 + C:5F1BH LINE# 64 + C:5F1DH LINE# 65 + ------- ENDPROC INTERRUPTINT4 + ------- PROC INTERRUPTTIMER3 + C:1003H LINE# 74 + C:100BH LINE# 76 + C:100DH LINE# 78 + C:1010H LINE# 79 + C:1012H LINE# 80 + C:1015H LINE# 82 + C:1018H LINE# 84 + C:101AH LINE# 85 + ------- ENDPROC INTERRUPTTIMER3 + ------- ENDMOD INTERRUPT + + ------- MODULE KEYSCAN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 74 + + + D:00C0H PUBLIC P4 + D:0008H PUBLIC ucKeyValue + D:0080H PUBLIC P5 + D:0009H PUBLIC ucKeyValueBK + B:00B0H.0 PUBLIC P3_0 + B:00A0H.7 PUBLIC P2_7 + D:000AH PUBLIC uiKeyValidCnt + D:000CH PUBLIC ucKeyOldValue + B:002FH.3 PUBLIC bKeyFlg + C:52B8H PUBLIC KeyScan + D:000DH PUBLIC uiKeyInvalidCnt + ------- PROC KEYSCAN + ------- DO + C:534DH SYMBOL scanend + ------- ENDDO + C:52B8H LINE# 33 + C:52B8H LINE# 34 + C:52B8H LINE# 35 + C:52BEH LINE# 36 + C:52BEH LINE# 37 + C:52C1H LINE# 46 + C:52C4H LINE# 47 + C:52C4H LINE# 48 + C:52C7H LINE# 49 + C:52C9H LINE# 50 + C:52CCH LINE# 51 + C:52CCH LINE# 52 + C:52CFH LINE# 53 + C:52CFH LINE# 69 + C:52D5H LINE# 70 + C:52D5H LINE# 71 + C:52DDH LINE# 72 + C:52E8H LINE# 73 + C:52E8H LINE# 74 + C:52F2H LINE# 75 + C:52F2H LINE# 76 + C:52FCH LINE# 77 + C:52FCH LINE# 78 + C:5302H LINE# 79 + C:5304H LINE# 81 + C:5304H LINE# 82 + C:5307H LINE# 83 + C:5307H LINE# 84 + C:5309H LINE# 85 + C:530BH LINE# 86 + C:530BH LINE# 91 + C:530BH LINE# 93 + C:530BH LINE# 94 + C:530DH LINE# 95 + C:530DH LINE# 96 + C:530DH LINE# 98 + C:530DH LINE# 99 + C:5313H LINE# 100 + C:5313H LINE# 101 + C:5318H LINE# 102 + C:5320H LINE# 103 + C:5328H LINE# 104 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 75 + + + C:5328H LINE# 105 + C:532EH LINE# 106 + C:5330H LINE# 107 + C:5331H LINE# 108 + C:533BH LINE# 109 + C:533BH LINE# 110 + C:5341H LINE# 111 + C:5347H LINE# 112 + C:5349H LINE# 113 + C:5349H LINE# 114 + C:534AH LINE# 116 + C:534AH LINE# 117 + C:534DH LINE# 118 + C:534DH LINE# 119 + C:5352H LINE# 120 + C:5356H LINE# 121 + C:5359H LINE# 122 + C:5359H LINE# 123 + C:5359H LINE# 124 + C:5359H LINE# 125 + ------- ENDPROC KEYSCAN + ------- ENDMOD KEYSCAN + + ------- MODULE MCUFLASH + C:0000H SYMBOL _ICE_DUMMY_ + D:00F3H PUBLIC IB_CON2 + D:0080H PUBLIC P0 + D:00F4H PUBLIC IB_CON3 + D:0090H PUBLIC P1 + D:00F5H PUBLIC IB_CON4 + D:00A0H PUBLIC P2 + D:00F6H PUBLIC IB_CON5 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + X:05F6H PUBLIC bMcuFlashWrWaitCnt + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00FCH PUBLIC IB_DATA + C:7387H PUBLIC _McuFlashCheckFlg + C:60B4H PUBLIC _McuFlashRead + C:7148H PUBLIC _McuFlashWrOneByte + B:002DH.7 PUBLIC bMcuFlashErr + C:55C6H PUBLIC _McuFlashWrite + X:05F7H PUBLIC ucMcuFlashWrValid + D:00FBH PUBLIC IB_OFFSET + D:00B1H PUBLIC RSTSTAT + D:00A7H PUBLIC FLASHCON + C:580CH PUBLIC _McuFlashWrSector + C:75C9H PUBLIC McuFlashWrWaitCheck + B:002EH.0 PUBLIC bMcuFlashWrFlg + C:73FAH PUBLIC _McuFlashBlankCheck + C:6228H PUBLIC _McuFlashDataCheck + D:00F7H PUBLIC XPAGE + B:002EH.1 PUBLIC bMcuFlashWrWaitFlg + C:48D4H PUBLIC McuFlashProcess + D:00F2H PUBLIC IB_CON1 + ------- PROC _MCUFLASHWRONEBYTE + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 76 + + + D:0002H SYMBOL McuFlashAddr + D:0005H SYMBOL WrData + C:7148H LINE# 24 + C:714CH LINE# 25 + C:714CH LINE# 26 + C:714EH LINE# 27 + C:7151H LINE# 29 + C:7154H LINE# 30 + C:7158H LINE# 31 + C:715CH LINE# 33 + C:715FH LINE# 34 + C:7162H LINE# 35 + C:7165H LINE# 36 + C:7168H LINE# 37 + C:716FH LINE# 38 + C:716FH LINE# 39 + C:7172H LINE# 40 + C:7173H LINE# 41 + C:7174H LINE# 42 + C:7175H LINE# 43 + C:7176H LINE# 44 + C:7177H LINE# 45 + C:7177H LINE# 47 + C:717AH LINE# 48 + C:717CH LINE# 49 + ------- ENDPROC _MCUFLASHWRONEBYTE + ------- PROC _MCUFLASHBLANKCHECK + D:0006H SYMBOL McuFlashAddr + ------- DO + B:002AH.0 SYMBOL Result + D:0004H SYMBOL i + ------- ENDDO + C:73FAH LINE# 58 + C:73FAH LINE# 59 + C:73FAH LINE# 60 + C:73FCH LINE# 63 + C:73FFH LINE# 64 + C:73FFH LINE# 65 + C:740CH LINE# 66 + C:740CH LINE# 67 + C:740EH LINE# 68 + C:7410H LINE# 69 + C:7410H LINE# 70 + C:741DH LINE# 72 + C:741FH LINE# 73 + ------- ENDPROC _MCUFLASHBLANKCHECK + ------- PROC _MCUFLASHDATACHECK + X:032CH SYMBOL McuFlashAddr + D:0004H SYMBOL XramAddr + ------- DO + B:002AH.0 SYMBOL Result + D:0006H SYMBOL ptr + X:032EH SYMBOL i + ------- ENDDO + C:6228H LINE# 82 + C:6230H LINE# 83 + C:6230H LINE# 84 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 77 + + + C:6232H LINE# 85 + C:6236H LINE# 88 + C:6249H LINE# 89 + C:6249H LINE# 90 + C:626FH LINE# 91 + C:626FH LINE# 92 + C:6271H LINE# 93 + C:6273H LINE# 94 + C:6273H LINE# 95 + C:627FH LINE# 97 + C:6281H LINE# 98 + ------- ENDPROC _MCUFLASHDATACHECK + ------- PROC _MCUFLASHWRSECTOR + X:032CH SYMBOL McuFlashAddr + D:0004H SYMBOL XramAddr + ------- DO + B:002AH.0 SYMBOL Result + D:0004H SYMBOL i + X:032EH SYMBOL ptr + ------- ENDDO + C:580CH LINE# 107 + C:5814H LINE# 108 + C:5814H LINE# 109 + C:5816H LINE# 111 + C:581EH LINE# 113 + C:5821H LINE# 114 + C:5821H LINE# 115 + C:582CH LINE# 116 + C:5832H LINE# 117 + C:5841H LINE# 118 + C:5844H LINE# 119 + C:5847H LINE# 120 + C:5847H LINE# 121 + C:584AH LINE# 122 + C:584EH LINE# 123 + C:584EH LINE# 124 + C:5851H LINE# 125 + C:5859H LINE# 126 + C:5859H LINE# 127 + C:585CH LINE# 128 + C:586CH LINE# 129 + C:586CH LINE# 130 + C:586FH LINE# 131 + C:5870H LINE# 132 + C:5871H LINE# 133 + C:5872H LINE# 134 + C:5873H LINE# 135 + C:5874H LINE# 136 + C:5876H LINE# 137 + C:5878H LINE# 139 + C:5878H LINE# 140 + C:587AH LINE# 141 + C:587CH LINE# 142 + C:587CH LINE# 143 + C:587CH LINE# 145 + C:587CH LINE# 146 + C:587EH LINE# 147 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 78 + + + C:5880H LINE# 148 + C:5880H LINE# 149 + C:5880H LINE# 151 + C:5880H LINE# 152 + C:5882H LINE# 153 + C:5884H LINE# 154 + C:5884H LINE# 155 + C:5884H LINE# 157 + C:5884H LINE# 158 + C:5886H LINE# 159 + C:5888H LINE# 160 + C:5888H LINE# 161 + C:5895H LINE# 163 + C:5897H LINE# 164 + ------- ENDPROC _MCUFLASHWRSECTOR + ------- PROC _MCUFLASHWRITE + X:0328H SYMBOL McuFlashAddr + X:032AH SYMBOL XramAddr + ------- DO + B:0029H.7 SYMBOL Result + ------- ENDDO + C:55C6H LINE# 177 + C:55D4H LINE# 178 + C:55D4H LINE# 179 + C:55D6H LINE# 181 + C:55D9H LINE# 182 + C:55DBH LINE# 183 + C:55DEH LINE# 185 + C:55E7H LINE# 186 + C:55EAH LINE# 187 + C:55EDH LINE# 188 + C:55EDH LINE# 189 + C:55F0H LINE# 190 + C:55F4H LINE# 191 + C:55F4H LINE# 192 + C:55F7H LINE# 193 + C:55FFH LINE# 194 + C:55FFH LINE# 195 + C:5602H LINE# 196 + C:560BH LINE# 197 + C:560BH LINE# 198 + C:560EH LINE# 199 + C:560FH LINE# 200 + C:5610H LINE# 201 + C:5611H LINE# 202 + C:5612H LINE# 203 + C:5613H LINE# 205 + C:5620H LINE# 206 + C:5620H LINE# 207 + C:5633H LINE# 208 + C:5633H LINE# 209 + C:5646H LINE# 210 + C:5646H LINE# 211 + C:5648H LINE# 212 + C:5648H LINE# 213 + C:5648H LINE# 214 + C:5648H LINE# 215 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 79 + + + C:5648H LINE# 216 + C:5648H LINE# 217 + C:5648H LINE# 218 + C:5648H LINE# 220 + C:564BH LINE# 221 + C:564DH LINE# 222 + C:564FH LINE# 223 + C:5651H LINE# 224 + C:5653H LINE# 226 + C:5656H LINE# 227 + C:5658H LINE# 228 + C:565AH LINE# 230 + C:565CH LINE# 231 + ------- ENDPROC _MCUFLASHWRITE + ------- PROC MCUFLASHPROCESS + ------- DO + B:0029H.5 SYMBOL McuFlashBk1WrFailFlg + B:0029H.6 SYMBOL McuFlashBk2WrFailFlg + X:0326H SYMBOL VoltageMin + ------- ENDDO + C:48D4H LINE# 244 + C:48D4H LINE# 245 + C:48D4H LINE# 246 + C:48D8H LINE# 249 + C:48DEH LINE# 250 + C:48DEH LINE# 251 + C:48E0H LINE# 253 + C:48E6H LINE# 254 + C:48EDH LINE# 255 + C:48EDH LINE# 256 + C:48F7H LINE# 257 + C:48F9H LINE# 259 + C:48F9H LINE# 260 + C:4903H LINE# 261 + C:4903H LINE# 263 + C:4926H LINE# 264 + C:4926H LINE# 265 + C:492FH LINE# 266 + C:492FH LINE# 267 + C:4939H LINE# 268 + C:4939H LINE# 269 + C:493BH LINE# 270 + C:4943H LINE# 271 + C:494BH LINE# 272 + C:4952H LINE# 273 + C:4952H LINE# 274 + C:4952H LINE# 276 + C:495DH LINE# 277 + C:495DH LINE# 278 + C:4968H LINE# 279 + C:4968H LINE# 280 + C:496AH LINE# 281 + C:4972H LINE# 282 + C:497AH LINE# 283 + C:4981H LINE# 284 + C:4981H LINE# 285 + C:4981H LINE# 286 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 80 + + + C:4983H LINE# 288 + C:4983H LINE# 289 + C:4985H LINE# 290 + C:4987H LINE# 291 + C:4987H LINE# 292 + C:498CH LINE# 294 + C:4992H LINE# 295 + C:4992H LINE# 296 + C:4994H LINE# 297 + C:4994H LINE# 298 + C:4994H LINE# 299 + ------- ENDPROC MCUFLASHPROCESS + ------- PROC _MCUFLASHREAD + X:0326H SYMBOL SourceAddr + D:0004H SYMBOL TargetAddr + X:0328H SYMBOL Length + ------- DO + D:0006H SYMBOL i + B:0029H.5 SYMBOL Result + D:0019H SYMBOL TargetAddr1 + ------- ENDDO + C:60B4H LINE# 308 + C:60C2H LINE# 309 + C:60C2H LINE# 311 + C:60C4H LINE# 312 + C:60CCH LINE# 314 + C:60CEH LINE# 315 + C:60D1H LINE# 316 + C:60D4H LINE# 317 + C:60E4H LINE# 318 + C:60E4H LINE# 319 + C:60FCH LINE# 320 + C:6104H LINE# 321 + C:610BH LINE# 322 + C:610EH LINE# 323 + C:6110H LINE# 325 + C:6112H LINE# 326 + ------- ENDPROC _MCUFLASHREAD + ------- PROC MCUFLASHWRWAITCHECK + C:75C9H LINE# 335 + C:75C9H LINE# 336 + C:75C9H LINE# 337 + C:75CCH LINE# 338 + C:75CCH LINE# 339 + C:75D7H LINE# 340 + C:75D7H LINE# 341 + C:75D9H LINE# 342 + C:75DBH LINE# 343 + C:75DDH LINE# 344 + C:75DDH LINE# 345 + C:75DDH LINE# 346 + ------- ENDPROC MCUFLASHWRWAITCHECK + ------- PROC _MCUFLASHCHECKFLG + D:0006H SYMBOL McuFlashAddr + ------- DO + B:0029H.5 SYMBOL Result + ------- ENDDO + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 81 + + + C:7387H LINE# 355 + C:7387H LINE# 356 + C:7387H LINE# 357 + C:7389H LINE# 359 + C:738CH LINE# 360 + C:73A6H LINE# 361 + C:73A6H LINE# 362 + C:73A8H LINE# 363 + C:73A8H LINE# 364 + C:73ABH LINE# 366 + C:73ADH LINE# 367 + ------- ENDPROC _MCUFLASHCHECKFLG + ------- ENDMOD MCUFLASH + + ------- MODULE MCULIB + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + C:6B7EH PUBLIC _Delay1ms + D:009DH PUBLIC SBRTH + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00C7H PUBLIC PWM0CON + D:00B6H PUBLIC PWM1CON + D:00B7H PUBLIC PWM2CON + D:009CH PUBLIC SBRTL + C:402AH PUBLIC _McuTimer3Set + D:00A8H PUBLIC IEN0 + D:00A9H PUBLIC IEN1 + D:00E8H PUBLIC EXF0 + D:008EH PUBLIC SUSLO + C:724DH PUBLIC _MemoryCopy + C:7334H PUBLIC _MemorySet + D:0087H PUBLIC PCON + D:00CFH PUBLIC PWM0DH + D:00A5H PUBLIC PWM1DH + D:00BFH PUBLIC PWM2DH + D:0098H PUBLIC SCON + D:0088H PUBLIC TCON + D:00CEH PUBLIC PWM0DL + D:00A4H PUBLIC PWM1DL + D:00BEH PUBLIC PWM2DL + D:00B2H PUBLIC CLKCON + D:00CDH PUBLIC PWM0PH + D:00AFH PUBLIC PWM1PH + D:00BDH PUBLIC PWM2PH + D:00CCH PUBLIC PWM0PL + D:00AEH PUBLIC PWM1PL + C:7741H PUBLIC McuIntoIdle + C:6530H PUBLIC _McuClockSet + C:721AH PUBLIC ClrRam + D:00BCH PUBLIC PWM2PL + D:0086H PUBLIC INSCON + D:008DH PUBLIC TH3 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 82 + + + D:008CH PUBLIC TL3 + C:774DH PUBLIC McuIntoPD + B:0088H.2 PUBLIC TR3 + C:5F8FH PUBLIC RamCheckProcess + D:0088H PUBLIC T3CON + C:72DDH PUBLIC SystemResetProcess + C:59A2H PUBLIC _McuPWM0Set + C:5A23H PUBLIC _McuPWM1Set + C:5AA4H PUBLIC _McuPWM2Set + ------- PROC _MCUTIMER3SET + X:0326H SYMBOL ClkSource + X:0327H SYMBOL XmS + ------- DO + X:0329H SYMBOL TempVal + ------- ENDDO + C:402AH LINE# 20 + C:4037H LINE# 21 + C:4037H LINE# 24 + C:403AH LINE# 26 + C:403FH LINE# 27 + C:403FH LINE# 28 + C:404DH LINE# 29 + C:404DH LINE# 30 + C:4050H LINE# 31 + C:4062H LINE# 32 + C:4065H LINE# 34 + C:4065H LINE# 35 + C:4068H LINE# 36 + C:408DH LINE# 37 + C:408DH LINE# 38 + C:4090H LINE# 39 + C:4098H LINE# 40 + C:4098H LINE# 41 + C:40A6H LINE# 42 + C:40A6H LINE# 43 + C:40A9H LINE# 44 + C:40C6H LINE# 45 + C:40C9H LINE# 47 + C:40C9H LINE# 48 + C:40CCH LINE# 49 + C:40F1H LINE# 50 + C:40F1H LINE# 51 + C:40F3H LINE# 52 + C:40F9H LINE# 53 + C:40F9H LINE# 54 + C:4107H LINE# 55 + C:4107H LINE# 56 + C:410AH LINE# 57 + C:4127H LINE# 58 + C:4129H LINE# 60 + C:4129H LINE# 61 + C:412CH LINE# 62 + C:4151H LINE# 63 + C:4151H LINE# 64 + C:4151H LINE# 66 + C:415AH LINE# 67 + C:415DH LINE# 68 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 83 + + + C:415FH LINE# 70 + C:4162H LINE# 71 + ------- ENDPROC _MCUTIMER3SET + ------- PROC _MCUCLOCKSET + D:0007H SYMBOL SysClock + ------- DO + D:0006H SYMBOL ea + ------- ENDDO + C:6530H LINE# 80 + C:6530H LINE# 81 + C:6530H LINE# 84 + C:6535H LINE# 85 + C:6537H LINE# 87 + C:6547H LINE# 89 + C:6547H LINE# 90 + C:654CH LINE# 91 + C:654EH LINE# 92 + C:6557H LINE# 93 + C:6557H LINE# 94 + C:655AH LINE# 95 + C:655BH LINE# 96 + C:655EH LINE# 97 + C:655EH LINE# 98 + C:655FH LINE# 99 + C:6560H LINE# 100 + C:6561H LINE# 101 + C:6562H LINE# 102 + C:6563H LINE# 103 + C:6564H LINE# 104 + C:6565H LINE# 105 + C:6566H LINE# 106 + C:6576H LINE# 108 + C:6576H LINE# 109 + C:6579H LINE# 110 + C:6579H LINE# 112 + C:6580H LINE# 113 + ------- ENDPROC _MCUCLOCKSET + ------- PROC _MCUPWM0SET + X:05EEH SYMBOL PwmFreq + X:05F0H SYMBOL DutyRatio + C:59A2H LINE# 122 + C:59ADH LINE# 123 + C:59ADH LINE# 124 + C:59B0H LINE# 125 + C:59CAH LINE# 126 + C:59E9H LINE# 127 + C:5A07H LINE# 128 + C:5A22H LINE# 129 + ------- ENDPROC _MCUPWM0SET + ------- PROC _MCUPWM1SET + X:05F1H SYMBOL PwmFreq + X:05F3H SYMBOL DutyRatio + C:5A23H LINE# 131 + C:5A2EH LINE# 132 + C:5A2EH LINE# 133 + C:5A31H LINE# 134 + C:5A4BH LINE# 135 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 84 + + + C:5A6AH LINE# 136 + C:5A88H LINE# 137 + C:5AA3H LINE# 138 + ------- ENDPROC _MCUPWM1SET + ------- PROC _MCUPWM2SET + X:032BH SYMBOL PwmFreq + X:032DH SYMBOL DutyRatio + C:5AA4H LINE# 140 + C:5AAFH LINE# 141 + C:5AAFH LINE# 142 + C:5AB2H LINE# 143 + C:5ACCH LINE# 144 + C:5AEBH LINE# 145 + C:5B09H LINE# 146 + C:5B24H LINE# 147 + ------- ENDPROC _MCUPWM2SET + ------- PROC _DELAY1MS + D:0007H SYMBOL Xms + ------- DO + D:0006H SYMBOL i + D:0002H SYMBOL j + D:0004H SYMBOL Tcnt + ------- ENDDO + C:6B7EH LINE# 160 + C:6B7EH LINE# 161 + C:6B7EH LINE# 165 + C:6B84H LINE# 166 + C:6B84H LINE# 167 + C:6B88H LINE# 168 + C:6B8AH LINE# 169 + C:6B92H LINE# 170 + C:6B92H LINE# 171 + C:6B96H LINE# 172 + C:6B98H LINE# 173 + C:6BA0H LINE# 174 + C:6BA0H LINE# 175 + C:6BA4H LINE# 176 + C:6BA6H LINE# 178 + C:6BA6H LINE# 179 + C:6BAAH LINE# 180 + C:6BAAH LINE# 183 + C:6BB1H LINE# 184 + C:6BB1H LINE# 185 + C:6BBBH LINE# 186 + C:6BBBH LINE# 187 + C:6BC2H LINE# 188 + C:6BC5H LINE# 189 + ------- ENDPROC _DELAY1MS + ------- PROC CLRRAM + ------- DO + D:0000H SYMBOL ptr1 + D:0006H SYMBOL ptr2 + D:0007H SYMBOL i + I:001BH SYMBOL j + ------- ENDDO + C:721AH LINE# 199 + C:721AH LINE# 200 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 85 + + + C:721AH LINE# 206 + C:721CH LINE# 207 + C:721CH LINE# 208 + C:7220H LINE# 209 + C:7222H LINE# 210 + C:7229H LINE# 212 + C:723EH LINE# 213 + C:723EH LINE# 214 + C:723EH LINE# 215 + C:7244H LINE# 216 + C:724CH LINE# 217 + ------- ENDPROC CLRRAM + ------- PROC RAMCHECKPROCESS + C:5F8FH LINE# 226 + C:5F8FH LINE# 227 + C:5F8FH LINE# 228 + C:5FF1H LINE# 240 + C:5FF1H LINE# 241 + C:5FF3H LINE# 242 + C:5FF3H LINE# 244 + C:5FF3H LINE# 245 + C:5FF4H LINE# 246 + C:5FF4H LINE# 247 + ------- ENDPROC RAMCHECKPROCESS + ------- PROC _MEMORYSET + X:0332H SYMBOL pt + D:0005H SYMBOL setval + D:0003H SYMBOL length + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:7334H LINE# 258 + C:733CH LINE# 259 + C:733CH LINE# 261 + C:7343H LINE# 262 + C:7343H LINE# 263 + C:7350H LINE# 264 + C:735AH LINE# 265 + C:735DH LINE# 266 + ------- ENDPROC _MEMORYSET + ------- PROC _MEMORYCOPY + X:0348H SYMBOL source + D:0004H SYMBOL target + D:0003H SYMBOL length + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:724DH LINE# 277 + C:7255H LINE# 278 + C:7255H LINE# 280 + C:725CH LINE# 281 + C:725CH LINE# 282 + C:726DH LINE# 283 + C:7272H LINE# 284 + C:727CH LINE# 285 + C:727FH LINE# 286 + ------- ENDPROC _MEMORYCOPY + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 86 + + + ------- PROC MCUINTOIDLE + C:7741H LINE# 295 + C:7741H LINE# 296 + C:7741H LINE# 297 + C:7744H LINE# 298 + C:7747H LINE# 299 + C:7748H LINE# 300 + C:7749H LINE# 301 + C:774AH LINE# 302 + C:774BH LINE# 303 + C:774CH LINE# 304 + ------- ENDPROC MCUINTOIDLE + ------- PROC MCUINTOPD + C:774DH LINE# 306 + C:774DH LINE# 307 + C:774DH LINE# 308 + C:7750H LINE# 309 + C:7753H LINE# 310 + C:7754H LINE# 311 + C:7755H LINE# 312 + C:7756H LINE# 313 + C:7757H LINE# 314 + C:7758H LINE# 315 + ------- ENDPROC MCUINTOPD + ------- PROC SYSTEMRESETPROCESS + C:72DDH LINE# 324 + C:72DDH LINE# 325 + C:72DDH LINE# 326 + C:72F4H LINE# 328 + C:72F4H LINE# 329 + C:72F6H LINE# 330 + C:72F9H LINE# 331 + C:72FBH LINE# 332 + C:72FDH LINE# 333 + C:72FFH LINE# 335 + C:7301H LINE# 336 + C:7303H LINE# 337 + C:7305H LINE# 339 + C:7308H LINE# 340 + C:7308H LINE# 341 + ------- ENDPROC SYSTEMRESETPROCESS + ------- ENDMOD MCULIB + + ------- MODULE MOSCTRL + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:69C9H PUBLIC MosStatusCheck + C:72B0H PUBLIC MosCtrl + B:002EH.4 PUBLIC bCHGMOSBk + B:002EH.5 PUBLIC bDSGMOSBk + ------- PROC MOSSTATUSCHECK + C:69C9H LINE# 20 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 87 + + + C:69C9H LINE# 21 + C:69C9H LINE# 22 + C:69CBH LINE# 23 + C:69CDH LINE# 25 + C:69D3H LINE# 26 + C:69D3H LINE# 27 + C:69D5H LINE# 28 + C:69D5H LINE# 30 + C:69E7H LINE# 31 + C:69E7H LINE# 32 + C:69E9H LINE# 33 + C:69E9H LINE# 35 + C:69ECH LINE# 36 + C:69ECH LINE# 37 + C:69F8H LINE# 38 + C:69F8H LINE# 39 + C:69FAH LINE# 40 + C:69FAH LINE# 41 + C:69FAH LINE# 43 + C:69FDH LINE# 44 + C:69FDH LINE# 45 + C:6A00H LINE# 46 + C:6A00H LINE# 47 + C:6A02H LINE# 48 + C:6A02H LINE# 49 + C:6A02H LINE# 51 + C:6A0BH LINE# 52 + C:6A0BH LINE# 53 + C:6A0DH LINE# 54 + C:6A0DH LINE# 56 + C:6A10H LINE# 57 + C:6A10H LINE# 58 + C:6A12H LINE# 59 + C:6A12H LINE# 60 + ------- ENDPROC MOSSTATUSCHECK + ------- PROC MOSCTRL + C:72B0H LINE# 70 + C:72B0H LINE# 71 + C:72B0H LINE# 72 + C:72B3H LINE# 74 + C:72C3H LINE# 75 + C:72C3H LINE# 76 + C:72C7H LINE# 77 + C:72CBH LINE# 79 + C:72DCH LINE# 80 + C:72DCH LINE# 81 + ------- ENDPROC MOSCTRL + ------- ENDMOD MOSCTRL + + ------- MODULE PORSELFTEST + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + C:6711H PUBLIC PorProtectOTC + D:0090H PUBLIC P1 + C:67AFH PUBLIC PorProtectOTD + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 88 + + + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:6760H PUBLIC PorProtectUTC + C:67FEH PUBLIC PorProtectUTD + C:6BC6H PUBLIC PorProtectOV + C:6C0EH PUBLIC PorProtectUV + X:05FBH PUBLIC ucPorSelfTestDelayCnt + B:002FH.4 PUBLIC bPorSelfTestFlg + C:706BH PUBLIC PorSelfTest + ------- PROC PORPROTECTOV + C:6BC6H LINE# 20 + C:6BC6H LINE# 21 + C:6BC6H LINE# 22 + C:6BC9H LINE# 23 + C:6BC9H LINE# 24 + C:6BD8H LINE# 25 + C:6BD8H LINE# 26 + C:6BEDH LINE# 27 + C:6BEDH LINE# 28 + C:6BEFH LINE# 29 + C:6BF6H LINE# 30 + C:6BF6H LINE# 31 + C:6BF7H LINE# 32 + C:6C06H LINE# 33 + C:6C06H LINE# 34 + C:6C0DH LINE# 35 + C:6C0DH LINE# 36 + C:6C0DH LINE# 37 + ------- ENDPROC PORPROTECTOV + ------- PROC PORPROTECTUV + C:6C0EH LINE# 46 + C:6C0EH LINE# 47 + C:6C0EH LINE# 48 + C:6C11H LINE# 49 + C:6C11H LINE# 50 + C:6C20H LINE# 51 + C:6C20H LINE# 52 + C:6C35H LINE# 53 + C:6C35H LINE# 54 + C:6C37H LINE# 55 + C:6C3EH LINE# 56 + C:6C3EH LINE# 57 + C:6C3FH LINE# 58 + C:6C4EH LINE# 59 + C:6C4EH LINE# 60 + C:6C55H LINE# 61 + C:6C55H LINE# 62 + C:6C55H LINE# 63 + ------- ENDPROC PORPROTECTUV + ------- PROC PORPROTECTOTC + C:6711H LINE# 72 + C:6711H LINE# 73 + C:6711H LINE# 74 + C:6714H LINE# 75 + C:6714H LINE# 76 + C:672AH LINE# 77 + C:672AH LINE# 78 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 89 + + + C:673FH LINE# 79 + C:673FH LINE# 80 + C:6741H LINE# 81 + C:6748H LINE# 82 + C:6748H LINE# 83 + C:6749H LINE# 84 + C:6758H LINE# 85 + C:6758H LINE# 86 + C:675FH LINE# 87 + C:675FH LINE# 88 + C:675FH LINE# 89 + ------- ENDPROC PORPROTECTOTC + ------- PROC PORPROTECTUTC + C:6760H LINE# 98 + C:6760H LINE# 99 + C:6760H LINE# 100 + C:6763H LINE# 101 + C:6763H LINE# 102 + C:6779H LINE# 103 + C:6779H LINE# 104 + C:678EH LINE# 105 + C:678EH LINE# 106 + C:6790H LINE# 107 + C:6797H LINE# 108 + C:6797H LINE# 109 + C:6798H LINE# 110 + C:67A7H LINE# 111 + C:67A7H LINE# 112 + C:67AEH LINE# 113 + C:67AEH LINE# 114 + C:67AEH LINE# 115 + ------- ENDPROC PORPROTECTUTC + ------- PROC PORPROTECTOTD + C:67AFH LINE# 124 + C:67AFH LINE# 125 + C:67AFH LINE# 126 + C:67B2H LINE# 127 + C:67B2H LINE# 128 + C:67C8H LINE# 129 + C:67C8H LINE# 130 + C:67DDH LINE# 131 + C:67DDH LINE# 132 + C:67DFH LINE# 133 + C:67E6H LINE# 134 + C:67E6H LINE# 135 + C:67E7H LINE# 136 + C:67F6H LINE# 137 + C:67F6H LINE# 138 + C:67FDH LINE# 139 + C:67FDH LINE# 140 + C:67FDH LINE# 141 + ------- ENDPROC PORPROTECTOTD + ------- PROC PORPROTECTUTD + C:67FEH LINE# 150 + C:67FEH LINE# 151 + C:67FEH LINE# 152 + C:6801H LINE# 153 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 90 + + + C:6801H LINE# 154 + C:6817H LINE# 155 + C:6817H LINE# 156 + C:682CH LINE# 157 + C:682CH LINE# 158 + C:682EH LINE# 159 + C:6835H LINE# 160 + C:6835H LINE# 161 + C:6836H LINE# 162 + C:6845H LINE# 163 + C:6845H LINE# 164 + C:684CH LINE# 165 + C:684CH LINE# 166 + C:684CH LINE# 167 + ------- ENDPROC PORPROTECTUTD + ------- PROC PORSELFTEST + C:706BH LINE# 176 + C:706BH LINE# 177 + C:706BH LINE# 178 + C:706EH LINE# 179 + C:706EH LINE# 180 + C:7071H LINE# 181 + C:7074H LINE# 182 + C:7077H LINE# 183 + C:707AH LINE# 185 + C:707DH LINE# 186 + C:7080H LINE# 187 + C:7083H LINE# 188 + C:7086H LINE# 190 + C:7091H LINE# 191 + C:7091H LINE# 192 + C:7093H LINE# 193 + C:709FH LINE# 194 + C:709FH LINE# 195 + C:70A1H LINE# 196 + C:70A2H LINE# 198 + C:70A2H LINE# 199 + C:70A5H LINE# 200 + C:70A5H LINE# 201 + C:70A5H LINE# 202 + C:70A5H LINE# 203 + ------- ENDPROC PORSELFTEST + ------- ENDMOD PORSELFTEST + + ------- MODULE PROTECT + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:03BCH PUBLIC uiOCD1DelayCnt + D:00A0H PUBLIC P2 + X:03BEH PUBLIC uiOCD2DelayCnt + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:4810H PUBLIC ProtectOV + C:4A52H PUBLIC ProtectUV + B:002EH.6 PUBLIC bOVLock + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 91 + + + B:002EH.7 PUBLIC bUVLock + X:03C0H PUBLIC uiOVDelayCnt + X:03C2H PUBLIC uiUVDelayCnt + X:03C4H PUBLIC uiOTCRDelayCnt + X:03C6H PUBLIC uiOTDRDelayCnt + X:03C8H PUBLIC uiUTCRDelayCnt + X:03CAH PUBLIC uiUTDRDelayCnt + C:6282H PUBLIC ProtectOCC + C:7485H PUBLIC ProtectProcess + C:4B0EH PUBLIC ProtectOTC + C:4C86H PUBLIC ProtectOTD + X:03CCH PUBLIC uiOCCRcnt + X:03CEH PUBLIC uiOCCDelayCnt + X:03D0H PUBLIC uiOCDRcnt + C:4BCAH PUBLIC ProtectUTC + C:4D42H PUBLIC ProtectUTD + C:5C19H PUBLIC ProtectOCRecover + X:03D2H PUBLIC uiOTCDelayCnt + X:03D4H PUBLIC uiOTDDelayCnt + X:03D6H PUBLIC uiUTCDelayCnt + X:03D8H PUBLIC uiUTDDelayCnt + C:62DBH PUBLIC ProtectOCD1 + C:6334H PUBLIC ProtectOCD2 + X:03DAH PUBLIC uiOVRDelayCnt + X:03DCH PUBLIC uiUVRDelayCnt + ------- PROC PROTECTOV + C:4810H LINE# 39 + C:4810H LINE# 40 + C:4810H LINE# 41 + C:4816H LINE# 42 + C:4816H LINE# 43 + C:4825H LINE# 44 + C:4825H LINE# 45 + C:4846H LINE# 46 + C:4846H LINE# 47 + C:4848H LINE# 48 + C:484AH LINE# 49 + C:4851H LINE# 50 + C:4857H LINE# 51 + C:4857H LINE# 52 + C:4858H LINE# 53 + C:4867H LINE# 54 + C:4867H LINE# 55 + C:486EH LINE# 56 + C:486EH LINE# 57 + C:486FH LINE# 58 + C:4872H LINE# 59 + C:4872H LINE# 60 + C:4881H LINE# 61 + C:4881H LINE# 62 + C:489FH LINE# 63 + C:489FH LINE# 64 + C:48A2H LINE# 65 + C:48A2H LINE# 66 + C:48A4H LINE# 67 + C:48A6H LINE# 68 + C:48A8H LINE# 70 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 92 + + + C:48A8H LINE# 71 + C:48AAH LINE# 72 + C:48ACH LINE# 73 + C:48AFH LINE# 74 + C:48AFH LINE# 75 + C:48B6H LINE# 76 + C:48BCH LINE# 77 + C:48BCH LINE# 78 + C:48BDH LINE# 79 + C:48CCH LINE# 80 + C:48CCH LINE# 81 + C:48D3H LINE# 82 + C:48D3H LINE# 83 + C:48D3H LINE# 84 + ------- ENDPROC PROTECTOV + ------- PROC PROTECTUV + C:4A52H LINE# 92 + C:4A52H LINE# 93 + C:4A52H LINE# 94 + C:4A55H LINE# 95 + C:4A55H LINE# 96 + C:4A64H LINE# 97 + C:4A64H LINE# 98 + C:4A85H LINE# 99 + C:4A85H LINE# 100 + C:4A87H LINE# 101 + C:4A89H LINE# 102 + C:4A90H LINE# 103 + C:4A96H LINE# 104 + C:4A96H LINE# 105 + C:4A97H LINE# 106 + C:4AA6H LINE# 107 + C:4AA6H LINE# 108 + C:4AADH LINE# 109 + C:4AADH LINE# 110 + C:4AAEH LINE# 111 + C:4AB1H LINE# 112 + C:4AB1H LINE# 113 + C:4AC0H LINE# 114 + C:4AC0H LINE# 115 + C:4ADEH LINE# 116 + C:4ADEH LINE# 117 + C:4AE1H LINE# 118 + C:4AE1H LINE# 119 + C:4AE3H LINE# 120 + C:4AE5H LINE# 121 + C:4AE7H LINE# 123 + C:4AE7H LINE# 124 + C:4AE9H LINE# 125 + C:4AE9H LINE# 126 + C:4AF0H LINE# 127 + C:4AF6H LINE# 128 + C:4AF6H LINE# 129 + C:4AF7H LINE# 130 + C:4B06H LINE# 131 + C:4B06H LINE# 132 + C:4B0DH LINE# 133 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 93 + + + C:4B0DH LINE# 134 + C:4B0DH LINE# 135 + ------- ENDPROC PROTECTUV + ------- PROC PROTECTOTC + C:4B0EH LINE# 143 + C:4B0EH LINE# 144 + C:4B0EH LINE# 145 + C:4B11H LINE# 146 + C:4B11H LINE# 147 + C:4B27H LINE# 148 + C:4B27H LINE# 149 + C:4B48H LINE# 150 + C:4B48H LINE# 151 + C:4B4AH LINE# 152 + C:4B51H LINE# 153 + C:4B57H LINE# 154 + C:4B57H LINE# 155 + C:4B58H LINE# 156 + C:4B67H LINE# 157 + C:4B67H LINE# 158 + C:4B6EH LINE# 159 + C:4B6EH LINE# 160 + C:4B6FH LINE# 162 + C:4B6FH LINE# 163 + C:4B85H LINE# 164 + C:4B85H LINE# 165 + C:4BA3H LINE# 166 + C:4BA3H LINE# 167 + C:4BA5H LINE# 168 + C:4BACH LINE# 169 + C:4BB2H LINE# 170 + C:4BB2H LINE# 171 + C:4BB3H LINE# 172 + C:4BC2H LINE# 173 + C:4BC2H LINE# 174 + C:4BC9H LINE# 175 + C:4BC9H LINE# 176 + C:4BC9H LINE# 177 + ------- ENDPROC PROTECTOTC + ------- PROC PROTECTUTC + C:4BCAH LINE# 186 + C:4BCAH LINE# 187 + C:4BCAH LINE# 188 + C:4BCDH LINE# 189 + C:4BCDH LINE# 190 + C:4BE3H LINE# 191 + C:4BE3H LINE# 192 + C:4C04H LINE# 193 + C:4C04H LINE# 194 + C:4C06H LINE# 195 + C:4C0DH LINE# 196 + C:4C13H LINE# 197 + C:4C13H LINE# 198 + C:4C14H LINE# 199 + C:4C23H LINE# 200 + C:4C23H LINE# 201 + C:4C2AH LINE# 202 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 94 + + + C:4C2AH LINE# 203 + C:4C2BH LINE# 205 + C:4C2BH LINE# 206 + C:4C41H LINE# 207 + C:4C41H LINE# 208 + C:4C5FH LINE# 209 + C:4C5FH LINE# 210 + C:4C61H LINE# 211 + C:4C68H LINE# 212 + C:4C6EH LINE# 213 + C:4C6EH LINE# 214 + C:4C6FH LINE# 215 + C:4C7EH LINE# 216 + C:4C7EH LINE# 217 + C:4C85H LINE# 218 + C:4C85H LINE# 219 + C:4C85H LINE# 220 + ------- ENDPROC PROTECTUTC + ------- PROC PROTECTOTD + C:4C86H LINE# 229 + C:4C86H LINE# 230 + C:4C86H LINE# 231 + C:4C89H LINE# 232 + C:4C89H LINE# 233 + C:4C9FH LINE# 234 + C:4C9FH LINE# 235 + C:4CC0H LINE# 236 + C:4CC0H LINE# 237 + C:4CC2H LINE# 238 + C:4CC9H LINE# 239 + C:4CCFH LINE# 240 + C:4CCFH LINE# 241 + C:4CD0H LINE# 242 + C:4CDFH LINE# 243 + C:4CDFH LINE# 244 + C:4CE6H LINE# 245 + C:4CE6H LINE# 246 + C:4CE7H LINE# 248 + C:4CE7H LINE# 249 + C:4CFDH LINE# 250 + C:4CFDH LINE# 251 + C:4D1BH LINE# 252 + C:4D1BH LINE# 253 + C:4D1DH LINE# 254 + C:4D24H LINE# 255 + C:4D2AH LINE# 256 + C:4D2AH LINE# 257 + C:4D2BH LINE# 258 + C:4D3AH LINE# 259 + C:4D3AH LINE# 260 + C:4D41H LINE# 261 + C:4D41H LINE# 262 + C:4D41H LINE# 263 + ------- ENDPROC PROTECTOTD + ------- PROC PROTECTUTD + C:4D42H LINE# 272 + C:4D42H LINE# 273 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 95 + + + C:4D42H LINE# 274 + C:4D45H LINE# 275 + C:4D45H LINE# 276 + C:4D5BH LINE# 277 + C:4D5BH LINE# 278 + C:4D7CH LINE# 279 + C:4D7CH LINE# 280 + C:4D7EH LINE# 281 + C:4D85H LINE# 282 + C:4D8BH LINE# 283 + C:4D8BH LINE# 284 + C:4D8CH LINE# 285 + C:4D9BH LINE# 286 + C:4D9BH LINE# 287 + C:4DA2H LINE# 288 + C:4DA2H LINE# 289 + C:4DA3H LINE# 291 + C:4DA3H LINE# 292 + C:4DB9H LINE# 293 + C:4DB9H LINE# 294 + C:4DD7H LINE# 295 + C:4DD7H LINE# 296 + C:4DD9H LINE# 297 + C:4DE0H LINE# 298 + C:4DE6H LINE# 299 + C:4DE6H LINE# 300 + C:4DE7H LINE# 301 + C:4DF6H LINE# 302 + C:4DF6H LINE# 303 + C:4DFDH LINE# 304 + C:4DFDH LINE# 305 + C:4DFDH LINE# 306 + ------- ENDPROC PROTECTUTD + ------- PROC PROTECTOCC + C:6282H LINE# 316 + C:6282H LINE# 317 + C:6282H LINE# 318 + C:6285H LINE# 319 + C:6285H LINE# 320 + C:6297H LINE# 321 + C:6297H LINE# 322 + C:62B5H LINE# 323 + C:62B5H LINE# 324 + C:62B7H LINE# 325 + C:62B9H LINE# 326 + C:62C0H LINE# 327 + C:62C0H LINE# 328 + C:62C1H LINE# 329 + C:62C4H LINE# 330 + C:62C4H LINE# 331 + C:62D3H LINE# 332 + C:62D3H LINE# 333 + C:62DAH LINE# 334 + C:62DAH LINE# 335 + C:62DAH LINE# 336 + C:62DAH LINE# 337 + ------- ENDPROC PROTECTOCC + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 96 + + + ------- PROC PROTECTOCD1 + C:62DBH LINE# 346 + C:62DBH LINE# 347 + C:62DBH LINE# 348 + C:62DEH LINE# 349 + C:62DEH LINE# 350 + C:62F0H LINE# 351 + C:62F0H LINE# 352 + C:630EH LINE# 353 + C:630EH LINE# 354 + C:6315H LINE# 355 + C:6317H LINE# 356 + C:6319H LINE# 357 + C:6319H LINE# 358 + C:631AH LINE# 359 + C:631DH LINE# 360 + C:631DH LINE# 361 + C:632CH LINE# 362 + C:632CH LINE# 363 + C:6333H LINE# 364 + C:6333H LINE# 365 + C:6333H LINE# 366 + C:6333H LINE# 367 + ------- ENDPROC PROTECTOCD1 + ------- PROC PROTECTOCD2 + C:6334H LINE# 376 + C:6334H LINE# 377 + C:6334H LINE# 378 + C:6337H LINE# 379 + C:6337H LINE# 380 + C:6349H LINE# 381 + C:6349H LINE# 382 + C:6367H LINE# 383 + C:6367H LINE# 384 + C:636EH LINE# 385 + C:6370H LINE# 386 + C:6372H LINE# 387 + C:6372H LINE# 388 + C:6373H LINE# 389 + C:6376H LINE# 390 + C:6376H LINE# 391 + C:6385H LINE# 392 + C:6385H LINE# 393 + C:638CH LINE# 394 + C:638CH LINE# 395 + C:638CH LINE# 396 + C:638CH LINE# 397 + ------- ENDPROC PROTECTOCD2 + ------- PROC PROTECTPROCESS + C:7485H LINE# 406 + C:7485H LINE# 407 + C:7485H LINE# 408 + C:7488H LINE# 409 + C:7488H LINE# 410 + C:748BH LINE# 411 + C:748EH LINE# 413 + C:7491H LINE# 414 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 97 + + + C:7494H LINE# 415 + C:7497H LINE# 416 + C:749AH LINE# 418 + C:749DH LINE# 419 + C:74A0H LINE# 420 + C:74A3H LINE# 421 + C:74A3H LINE# 422 + ------- ENDPROC PROTECTPROCESS + ------- PROC PROTECTOCRECOVER + C:5C19H LINE# 431 + C:5C19H LINE# 432 + C:5C19H LINE# 433 + C:5C1CH LINE# 434 + C:5C1CH LINE# 435 + C:5C25H LINE# 436 + C:5C25H LINE# 437 + C:5C43H LINE# 438 + C:5C43H LINE# 439 + C:5C48H LINE# 440 + C:5C4EH LINE# 441 + C:5C50H LINE# 442 + C:5C52H LINE# 443 + C:5C54H LINE# 444 + C:5C56H LINE# 445 + C:5C59H LINE# 446 + C:5C59H LINE# 447 + C:5C5BH LINE# 448 + C:5C5EH LINE# 449 + C:5C5EH LINE# 450 + C:5C5EH LINE# 451 + C:5C5EH LINE# 453 + C:5C61H LINE# 454 + C:5C61H LINE# 455 + C:5C7FH LINE# 456 + C:5C7FH LINE# 457 + C:5C86H LINE# 458 + C:5C88H LINE# 459 + C:5C8CH LINE# 460 + C:5C8EH LINE# 461 + C:5C8EH LINE# 462 + C:5C8EH LINE# 463 + C:5C8EH LINE# 464 + ------- ENDPROC PROTECTOCRECOVER + ------- ENDMOD PROTECT + + ------- MODULE RTC + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + C:74FEH PUBLIC RTCTwiCheck + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:577FH PUBLIC _RTCInitTime + B:002FH.0 PUBLIC bRTCTwiRWErr + C:6581H PUBLIC _RTCRead + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 98 + + + C:53FBH PUBLIC _RTCModifyTime + X:0496H PUBLIC ucRTCTwiRWErrDelayCnt + X:0497H PUBLIC RTC + B:002FH.1 PUBLIC bRTCErr + C:648BH PUBLIC _RTCWrite + C:31BDH PUBLIC _RTCReadTime + ------- PROC RTCTWICHECK + C:74FEH LINE# 23 + C:74FEH LINE# 24 + C:74FEH LINE# 25 + C:7501H LINE# 26 + C:7501H LINE# 27 + C:7504H LINE# 28 + C:7504H LINE# 29 + C:750FH LINE# 30 + C:750FH LINE# 31 + C:7511H LINE# 32 + C:7514H LINE# 33 + C:7514H LINE# 34 + C:7515H LINE# 36 + C:7515H LINE# 37 + C:751AH LINE# 38 + C:751AH LINE# 39 + C:751AH LINE# 40 + ------- ENDPROC RTCTWICHECK + ------- PROC _RTCWRITE + X:035DH SYMBOL WrAddr + X:035EH SYMBOL Length + X:035FH SYMBOL WrBuf + ------- DO + B:002AH.0 SYMBOL Result + X:0361H SYMBOL i + ------- ENDDO + C:648BH LINE# 49 + C:6499H LINE# 50 + C:6499H LINE# 51 + C:649BH LINE# 54 + C:649EH LINE# 55 + C:649EH LINE# 56 + C:64A1H LINE# 57 + C:64A1H LINE# 65 + C:64C1H LINE# 66 + C:64C1H LINE# 67 + C:64C3H LINE# 68 + C:64C5H LINE# 69 + C:64C5H LINE# 76 + C:64CAH LINE# 77 + C:64D6H LINE# 78 + C:64D6H LINE# 79 + C:64DBH LINE# 81 + C:64DDH LINE# 82 + ------- ENDPROC _RTCWRITE + ------- PROC _RTCREAD + X:0353H SYMBOL RdAddr + X:0354H SYMBOL Length + X:0355H SYMBOL RdBuf + ------- DO + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 99 + + + B:0029H.7 SYMBOL Result + X:0357H SYMBOL i + ------- ENDDO + C:6581H LINE# 91 + C:658FH LINE# 92 + C:658FH LINE# 93 + C:6591H LINE# 96 + C:6594H LINE# 97 + C:6594H LINE# 98 + C:6597H LINE# 99 + C:6597H LINE# 107 + C:65B5H LINE# 108 + C:65B5H LINE# 109 + C:65B7H LINE# 110 + C:65B9H LINE# 111 + C:65B9H LINE# 118 + C:65BEH LINE# 119 + C:65CAH LINE# 120 + C:65CAH LINE# 121 + C:65CFH LINE# 123 + C:65D1H LINE# 124 + ------- ENDPROC _RTCREAD + ------- PROC _RTCREADTIME + X:0348H SYMBOL RtcRdVal + ------- DO + X:034AH SYMBOL rtcbuf + B:0029H.6 SYMBOL Result + ------- ENDDO + C:31BDH LINE# 132 + C:31C5H LINE# 133 + C:31C5H LINE# 135 + C:31C7H LINE# 137 + C:31D7H LINE# 138 + C:31D7H LINE# 139 + C:31E1H LINE# 140 + C:31E1H LINE# 141 + C:328EH LINE# 149 + C:328EH LINE# 150 + C:329FH LINE# 151 + C:32A9H LINE# 152 + C:32BAH LINE# 153 + C:32C6H LINE# 154 + C:32D9H LINE# 155 + C:32E7H LINE# 156 + C:32FAH LINE# 158 + C:3303H LINE# 159 + C:3305H LINE# 161 + C:3305H LINE# 162 + C:3318H LINE# 163 + C:3322H LINE# 164 + C:332FH LINE# 165 + C:333BH LINE# 166 + C:334BH LINE# 167 + C:335BH LINE# 168 + C:336BH LINE# 170 + C:336DH LINE# 171 + C:336DH LINE# 172 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 100 + + + C:336FH LINE# 174 + C:336FH LINE# 175 + C:337CH LINE# 176 + C:337CH LINE# 177 + C:337CH LINE# 179 + C:337EH LINE# 180 + ------- ENDPROC _RTCREADTIME + ------- PROC _RTCMODIFYTIME + X:0353H SYMBOL RtcMdyVal + ------- DO + B:0029H.7 SYMBOL Result + X:0355H SYMBOL rtcdata + X:0356H SYMBOL rtctemp + ------- ENDDO + C:53FBH LINE# 189 + C:5403H LINE# 190 + C:5403H LINE# 191 + C:5405H LINE# 195 + C:5409H LINE# 196 + C:5416H LINE# 198 + C:5427H LINE# 199 + C:5431H LINE# 200 + C:5446H LINE# 201 + C:5452H LINE# 202 + C:5466H LINE# 203 + C:5474H LINE# 204 + C:5487H LINE# 206 + C:5494H LINE# 208 + C:5496H LINE# 209 + ------- ENDPROC _RTCMODIFYTIME + ------- PROC _RTCINITTIME + X:0326H SYMBOL RtcInitVal + ------- DO + B:0029H.5 SYMBOL Result + X:0328H SYMBOL rtcbuf + D:0007H SYMBOL i + X:0331H SYMBOL checksum + ------- ENDDO + C:577FH LINE# 218 + C:5787H LINE# 219 + C:5787H LINE# 220 + C:5789H LINE# 223 + C:578EH LINE# 225 + C:5798H LINE# 227 + C:57A5H LINE# 228 + C:57A7H LINE# 229 + C:57A7H LINE# 230 + C:57B9H LINE# 231 + C:57BEH LINE# 233 + C:57D0H LINE# 234 + C:57D0H LINE# 235 + C:57D5H LINE# 236 + C:57D7H LINE# 237 + C:57DBH LINE# 238 + C:57DFH LINE# 239 + C:57E3H LINE# 240 + C:57E7H LINE# 241 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 101 + + + C:57EBH LINE# 242 + C:57EBH LINE# 244 + C:57FCH LINE# 245 + C:5809H LINE# 247 + C:580BH LINE# 248 + ------- ENDPROC _RTCINITTIME + ------- ENDMOD RTC + + ------- MODULE TWI + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + ------- ENDMOD TWI + + ------- MODULE UART + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C4H PUBLIC UART0CR + D:00C0H PUBLIC P4 + C:751BH PUBLIC UART0Init + D:009DH PUBLIC SBRTH + D:0080H PUBLIC P5 + D:009CH PUBLIC SBRTL + B:0098H.0 PUBLIC RI + B:0098H.1 PUBLIC TI + D:0099H PUBLIC SBUF + D:0087H PUBLIC PCON + D:0098H PUBLIC SCON + C:65D2H PUBLIC InterruptUART0 + D:0086H PUBLIC INSCON + D:009BH PUBLIC SADEN + D:009AH PUBLIC SADDR + D:009EH PUBLIC SFINE + ------- PROC UART0INIT + C:751BH LINE# 19 + C:751BH LINE# 20 + C:751BH LINE# 22 + C:751EH LINE# 82 + C:751EH LINE# 83 + C:7521H LINE# 84 + C:7524H LINE# 85 + C:7527H LINE# 86 + C:752AH LINE# 87 + C:752DH LINE# 88 + C:7530H LINE# 89 + C:7533H LINE# 90 + C:7536H LINE# 91 + C:7536H LINE# 92 + ------- ENDPROC UART0INIT + ------- PROC INTERRUPTUART0 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 102 + + + ------- DO + D:0007H SYMBOL RxData + ------- ENDDO + C:65D2H LINE# 101 + C:65EFH LINE# 105 + C:65F1H LINE# 106 + C:65F4H LINE# 108 + C:65F7H LINE# 109 + C:65F7H LINE# 110 + C:65F9H LINE# 111 + C:65FBH LINE# 112 + C:65FEH LINE# 113 + C:65FEH LINE# 115 + C:6601H LINE# 116 + C:6601H LINE# 117 + C:6603H LINE# 118 + C:6606H LINE# 119 + C:6606H LINE# 121 + C:6608H LINE# 122 + ------- ENDPROC INTERRUPTUART0 + ------- ENDMOD UART + + ------- MODULE THERMISTOR + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:3EE8H PUBLIC NTC103AT + ------- ENDMOD THERMISTOR + + ------- MODULE ?C_STARTUP + C:565DH SEGMENT ?C_C51STARTUP + C:1000H PUBLIC ?C_STARTUP + N:00B2H SYMBOL CLKCON + D:0081H SYMBOL SP + C:565DH SYMBOL STARTUP1 + C:1000H LINE# 12 + C:565DH LINE# 18 + C:5660H LINE# 19 + C:5663H LINE# 20 + C:5664H LINE# 21 + C:5665H LINE# 22 + C:5666H LINE# 23 + C:5667H LINE# 24 + C:5668H LINE# 25 + C:5669H LINE# 26 + C:566AH LINE# 27 + C:566BH LINE# 28 + C:566EH LINE# 29 + ------- ENDMOD ?C_STARTUP + + ------- MODULE TWIIO + C:0000H SYMBOL _ICE_DUMMY_ + C:7537H PUBLIC TwiReStart + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 103 + + + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + C:7763H PUBLIC Delay4us + B:0080H.4 PUBLIC P0_4 + B:0080H.5 PUBLIC P0_5 + D:00E1H PUBLIC P0CR + C:735EH PUBLIC TwiChkClkRelease + C:3AF1H PUBLIC _TwiRead + D:00B1H PUBLIC RSTSTAT + C:5497H PUBLIC _TwiSendData + C:74A4H PUBLIC _CRC8cal + C:474AH PUBLIC _TwiWrite + C:7420H PUBLIC TwiStart + C:1052H PUBLIC TwiInit + C:61CDH PUBLIC _TwiGetData + C:7444H PUBLIC TwiStop + C:43BAH PUBLIC CRC8Table + ------- PROC DELAY4US + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:7763H LINE# 49 + C:7763H LINE# 50 + C:7763H LINE# 52 + C:7765H LINE# 53 + C:7765H LINE# 54 + C:776AH LINE# 55 + ------- ENDPROC DELAY4US + ------- PROC TWISTART + C:7420H LINE# 65 + C:7420H LINE# 66 + C:7420H LINE# 67 + C:7423H LINE# 68 + C:7426H LINE# 70 + C:742BH LINE# 71 + C:7430H LINE# 72 + C:7433H LINE# 73 + C:7436H LINE# 74 + C:743BH LINE# 75 + C:743EH LINE# 76 + C:7443H LINE# 77 + ------- ENDPROC TWISTART + ------- PROC TWIRESTART + C:7537H LINE# 79 + C:7537H LINE# 80 + C:7537H LINE# 81 + C:753CH LINE# 82 + C:7541H LINE# 83 + C:7544H LINE# 84 + C:7549H LINE# 85 + C:754CH LINE# 86 + C:7551H LINE# 87 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 104 + + + ------- ENDPROC TWIRESTART + ------- PROC TWISTOP + C:7444H LINE# 89 + C:7444H LINE# 90 + C:7444H LINE# 91 + C:7447H LINE# 92 + C:744CH LINE# 93 + C:744FH LINE# 94 + C:7454H LINE# 95 + C:7457H LINE# 96 + C:745CH LINE# 97 + C:745FH LINE# 98 + C:7462H LINE# 99 + C:7465H LINE# 100 + ------- ENDPROC TWISTOP + ------- PROC TWICHKCLKRELEASE + ------- DO + D:0004H SYMBOL TimeoutCnt + B:002AH.3 SYMBOL result + ------- ENDDO + C:735EH LINE# 102 + C:735EH LINE# 103 + C:735EH LINE# 104 + C:7362H LINE# 105 + C:7364H LINE# 107 + C:7367H LINE# 108 + C:7371H LINE# 109 + C:7371H LINE# 110 + C:7374H LINE# 111 + C:7377H LINE# 112 + C:737AH LINE# 113 + C:737AH LINE# 114 + C:737CH LINE# 115 + C:737CH LINE# 116 + C:737CH LINE# 117 + C:737CH LINE# 119 + C:7381H LINE# 120 + C:7384H LINE# 122 + C:7386H LINE# 123 + ------- ENDPROC TWICHKCLKRELEASE + ------- PROC _TWISENDDATA + D:0003H SYMBOL Data + D:0005H SYMBOL ClkFlg + ------- DO + D:0006H SYMBOL i + B:002AH.2 SYMBOL result + ------- ENDDO + C:5497H LINE# 133 + C:5499H LINE# 134 + C:5499H LINE# 136 + C:549BH LINE# 139 + C:549FH LINE# 140 + C:549FH LINE# 141 + C:54A4H LINE# 142 + C:54A6H LINE# 144 + C:54A6H LINE# 145 + C:54ABH LINE# 146 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 105 + + + C:54ABH LINE# 147 + C:54AFH LINE# 148 + C:54AFH LINE# 149 + C:54B2H LINE# 150 + C:54B7H LINE# 151 + C:54B7H LINE# 152 + C:54BCH LINE# 153 + C:54BEH LINE# 155 + C:54BEH LINE# 156 + C:54C1H LINE# 157 + C:54C1H LINE# 158 + C:54C1H LINE# 160 + C:54C1H LINE# 161 + C:54C4H LINE# 162 + C:54C9H LINE# 163 + C:54CCH LINE# 164 + C:54D1H LINE# 165 + C:54D1H LINE# 168 + C:54D5H LINE# 169 + C:54D7H LINE# 170 + C:54D7H LINE# 171 + C:54DBH LINE# 172 + C:54DBH LINE# 173 + C:54E0H LINE# 174 + C:54E2H LINE# 176 + C:54E2H LINE# 177 + C:54E7H LINE# 178 + C:54E7H LINE# 179 + C:54EBH LINE# 180 + C:54EEH LINE# 181 + C:54F3H LINE# 182 + C:54F6H LINE# 183 + C:54FBH LINE# 184 + C:5500H LINE# 185 + C:5503H LINE# 186 + C:5506H LINE# 188 + C:5508H LINE# 189 + C:5508H LINE# 190 + C:550BH LINE# 191 + C:550BH LINE# 192 + C:550DH LINE# 193 + C:550FH LINE# 194 + C:550FH LINE# 195 + C:5514H LINE# 196 + C:5519H LINE# 198 + C:551CH LINE# 199 + C:5521H LINE# 200 + C:5524H LINE# 201 + C:5529H LINE# 202 + C:552CH LINE# 204 + C:552EH LINE# 205 + ------- ENDPROC _TWISENDDATA + ------- PROC _TWIGETDATA + D:0006H SYMBOL AckFlg + ------- DO + D:0004H SYMBOL i + D:0005H SYMBOL RdData + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 106 + + + ------- ENDDO + C:61CDH LINE# 214 + C:61CFH LINE# 215 + C:61CFH LINE# 216 + C:61D1H LINE# 218 + C:61D4H LINE# 219 + C:61D7H LINE# 221 + C:61D9H LINE# 222 + C:61D9H LINE# 223 + C:61DEH LINE# 224 + C:61E1H LINE# 225 + C:61E4H LINE# 226 + C:61E4H LINE# 227 + C:61F6H LINE# 228 + C:61F6H LINE# 229 + C:61FBH LINE# 230 + C:61FEH LINE# 231 + C:6203H LINE# 233 + C:6206H LINE# 234 + C:6209H LINE# 235 + C:6209H LINE# 236 + C:620EH LINE# 237 + C:6210H LINE# 239 + C:6210H LINE# 240 + C:6215H LINE# 241 + C:6215H LINE# 242 + C:621AH LINE# 243 + C:621DH LINE# 244 + C:6222H LINE# 245 + C:6225H LINE# 247 + C:6227H LINE# 248 + ------- ENDPROC _TWIGETDATA + ------- PROC _CRC8CAL + D:0001H SYMBOL p + D:0005H SYMBOL Length + ------- DO + D:0007H SYMBOL crc8 + ------- ENDDO + C:74A4H LINE# 257 + C:74A4H LINE# 258 + C:74A4H LINE# 259 + C:74A6H LINE# 261 + C:74ACH LINE# 262 + C:74ACH LINE# 263 + C:74AFH LINE# 264 + C:74B8H LINE# 265 + C:74BFH LINE# 266 + C:74C2H LINE# 268 + C:74C2H LINE# 269 + ------- ENDPROC _CRC8CAL + ------- PROC _TWIWRITE + X:0362H SYMBOL SlaveID + X:0363H SYMBOL WrAddr + X:0365H SYMBOL Length + X:0366H SYMBOL WrBuf + ------- DO + D:0002H SYMBOL i + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 107 + + + X:0368H SYMBOL TempBuf + B:002AH.1 SYMBOL result + C:4808H SYMBOL WrErr + ------- ENDDO + C:474AH LINE# 281 + C:475AH LINE# 282 + C:475AH LINE# 285 + C:475CH LINE# 287 + C:4761H LINE# 288 + C:4764H LINE# 289 + C:4774H LINE# 290 + C:4784H LINE# 292 + C:4786H LINE# 293 + C:478FH LINE# 294 + C:478FH LINE# 295 + C:4792H LINE# 297 + C:479EH LINE# 298 + C:479EH LINE# 299 + C:479EH LINE# 300 + C:479EH LINE# 302 + C:47A5H LINE# 303 + C:47A5H LINE# 304 + C:47AFH LINE# 305 + C:47AFH LINE# 306 + C:47AFH LINE# 307 + C:47AFH LINE# 308 + C:47AFH LINE# 309 + C:47BDH LINE# 310 + C:47BDH LINE# 311 + C:47BFH LINE# 312 + C:47CBH LINE# 313 + C:47CBH LINE# 314 + C:47CEH LINE# 315 + C:47E0H LINE# 316 + C:47E0H LINE# 317 + C:47EAH LINE# 318 + C:47ECH LINE# 320 + C:47ECH LINE# 321 + C:47EEH LINE# 322 + C:47F0H LINE# 323 + C:47F0H LINE# 324 + C:47F3H LINE# 326 + C:47FAH LINE# 327 + C:47FAH LINE# 328 + C:4806H LINE# 329 + C:4806H LINE# 330 + C:4808H LINE# 331 + C:4808H LINE# 332 + C:4808H LINE# 333 + C:4808H LINE# 334 + C:4808H LINE# 335 + C:480BH LINE# 336 + C:480BH LINE# 337 + C:480DH LINE# 339 + C:480FH LINE# 340 + ------- ENDPROC _TWIWRITE + ------- PROC _TWIREAD + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 108 + + + D:0002H SYMBOL SlaveID + X:0359H SYMBOL RdAddr + X:035BH SYMBOL Length + X:035CH SYMBOL RdBuf + ------- DO + X:035EH SYMBOL i + B:002AH.0 SYMBOL result + X:035FH SYMBOL TempBuf + X:038DH SYMBOL RdCrc + C:3C4CH SYMBOL RdErr + ------- ENDDO + C:3AF1H LINE# 352 + C:3AFEH LINE# 353 + C:3AFEH LINE# 355 + C:3B00H LINE# 357 + C:3B05H LINE# 359 + C:3B0AH LINE# 360 + C:3B0DH LINE# 362 + C:3B12H LINE# 364 + C:3B14H LINE# 365 + C:3B1DH LINE# 366 + C:3B1DH LINE# 367 + C:3B20H LINE# 369 + C:3B2CH LINE# 370 + C:3B2CH LINE# 371 + C:3B2CH LINE# 372 + C:3B2CH LINE# 374 + C:3B30H LINE# 375 + C:3B30H LINE# 376 + C:3B3FH LINE# 377 + C:3B3FH LINE# 378 + C:3B3FH LINE# 379 + C:3B3FH LINE# 380 + C:3B3FH LINE# 381 + C:3B50H LINE# 382 + C:3B50H LINE# 383 + C:3B50H LINE# 384 + C:3B50H LINE# 394 + C:3B53H LINE# 396 + C:3B61H LINE# 397 + C:3B61H LINE# 398 + C:3B63H LINE# 399 + C:3B6BH LINE# 400 + C:3B6BH LINE# 401 + C:3B8AH LINE# 402 + C:3B8AH LINE# 403 + C:3B8EH LINE# 404 + C:3B8EH LINE# 405 + C:3B98H LINE# 406 + C:3B9AH LINE# 408 + C:3B9AH LINE# 409 + C:3BAEH LINE# 410 + C:3BAEH LINE# 411 + C:3BB6H LINE# 413 + C:3BCDH LINE# 414 + C:3BCDH LINE# 415 + C:3BCFH LINE# 416 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 109 + + + C:3BD1H LINE# 418 + C:3BD1H LINE# 419 + C:3BE4H LINE# 420 + C:3BE4H LINE# 421 + C:3BFDH LINE# 422 + C:3C07H LINE# 423 + C:3C0FH LINE# 424 + C:3C0FH LINE# 425 + C:3C0FH LINE# 427 + C:3C0FH LINE# 428 + C:3C22H LINE# 429 + C:3C22H LINE# 430 + C:3C25H LINE# 431 + C:3C3AH LINE# 432 + C:3C44H LINE# 433 + C:3C4CH LINE# 434 + C:3C4CH LINE# 435 + C:3C4CH LINE# 437 + C:3C4CH LINE# 438 + C:3C4FH LINE# 439 + C:3C4FH LINE# 440 + C:3C51H LINE# 441 + C:3C53H LINE# 442 + ------- ENDPROC _TWIREAD + ------- PROC TWIINIT + C:1052H LINE# 445 + C:1052H LINE# 446 + C:1052H LINE# 448 + ------- ENDPROC TWIINIT + ------- ENDMOD TWIIO + + ------- MODULE GASGAUGEINTER_V4_13 + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:02B5H PUBLIC E2uiDsgCorrectVol + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + X:02B7H PUBLIC Info_uiRSOC + X:02B9H PUBLIC E2ulIdleSocTimes + X:02BDH PUBLIC Info_uiRsocCnt + X:02BFH PUBLIC E2ulChgerEndVol + X:02C3H PUBLIC E2ucChgCurRatio + X:02C4H PUBLIC Info_uiSocDecTime + X:02C6H PUBLIC Info_ulTempDsgFcc + X:02CAH PUBLIC E2ui_CYCLECOUNTA_B + X:02CCH PUBLIC E2ui_CYCLECOUNTB_B + X:02CEH PUBLIC E2uiTempFCC_K1 + X:02D0H PUBLIC E2uiTempFCC_K2 + X:02D2H PUBLIC E2uiChgEndTemp + X:02D4H PUBLIC E2ucFccUpdatePercent + X:02D5H PUBLIC Info_ulFCC + X:02D9H PUBLIC E2ui_CYCLECOUNTA_K + X:02DBH PUBLIC E2ui_CYCLECOUNTB_K + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 110 + + + X:02DDH PUBLIC E2ucChgCorrectSOC + X:02DEH PUBLIC E2ucInitSocDif + X:02DFH PUBLIC Info_ulVoltage + X:02E3H PUBLIC E2uiDsgEndTemp + X:02E5H PUBLIC E2ulLoadEndVol + X:02E9H PUBLIC E2ucDsgCorrectSOC + X:02EAH PUBLIC E2slDsgEndCurr + X:02EEH PUBLIC Info_ulDfilterRC + X:02F2H PUBLIC E2uiLastCCount + X:02F4H PUBLIC E2uiUpdateCycleCount + X:02F6H PUBLIC E2ucDsgVolDet + D:0015H PUBLIC uiCellVminG + X:02F7H PUBLIC slAdcCur2 + D:0017H PUBLIC uiCellVmaxG + X:02FBH PUBLIC E2ucChgerEndDelay + X:02FCH PUBLIC Info_uiCycleCount + X:02FEH PUBLIC E2slDsgAdjMaxCurr + X:0302H PUBLIC E2ucDsgAdjLowFlg + X:0303H PUBLIC E2ucInitUpSoc + X:0304H PUBLIC E2uiDsgAdjLowTemp + X:0306H PUBLIC E2ucChgChangeSocRatio + X:0307H PUBLIC E2ucDsgAdjLowSoc + X:0308H PUBLIC E2uiTempFCC_B + X:030AH PUBLIC siCurCompens + X:030CH PUBLIC Info_uiTemp + X:030EH PUBLIC Info_ulRC + X:0312H PUBLIC E2ucChgChangeSocDif + C:2FDAH PUBLIC GasGaugeVarIn + X:0313H PUBLIC Info_slCurr + C:6623H PUBLIC GasGaugeVarOut + X:0317H PUBLIC E2uiChgCorrectVol + X:0319H PUBLIC E2ui_CYCLECOUNTA + X:031BH PUBLIC E2ui_CYCLECOUNTB + X:031DH PUBLIC E2ui_CYCLECOUNTC + X:031FH PUBLIC E2ucChgAdjRatio + X:0320H PUBLIC E2ucChg100Ratio + X:0321H PUBLIC E2ucFullDsgDelay + ------- PROC GASGAUGEVARIN + ------- DO + B:0029H.5 SYMBOL eabak + ------- ENDDO + C:2FDAH LINE# 114 + C:2FDAH LINE# 115 + C:2FDAH LINE# 118 + C:2FDEH LINE# 119 + C:2FE0H LINE# 120 + C:2FEFH LINE# 121 + C:2FFBH LINE# 122 + C:3007H LINE# 123 + C:3016H LINE# 124 + C:3022H LINE# 125 + C:302CH LINE# 126 + C:303DH LINE# 128 + C:3043H LINE# 129 + C:3049H LINE# 131 + C:3053H LINE# 132 + C:305AH LINE# 134 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 111 + + + C:305EH LINE# 136 + C:3064H LINE# 137 + C:306AH LINE# 138 + C:3072H LINE# 139 + C:307CH LINE# 140 + C:3081H LINE# 141 + C:3086H LINE# 142 + C:308CH LINE# 143 + C:3096H LINE# 144 + C:309DH LINE# 145 + C:30A7H LINE# 146 + C:30ADH LINE# 147 + C:30C1H LINE# 148 + C:30C7H LINE# 149 + C:30CFH LINE# 150 + C:30D5H LINE# 152 + C:30E4H LINE# 153 + C:30EAH LINE# 154 + C:3102H LINE# 155 + C:3116H LINE# 156 + C:311CH LINE# 157 + C:3122H LINE# 159 + C:3128H LINE# 160 + C:312EH LINE# 161 + C:3134H LINE# 163 + C:313EH LINE# 165 + C:3144H LINE# 166 + C:314EH LINE# 167 + C:3158H LINE# 169 + C:3161H LINE# 170 + C:316AH LINE# 171 + C:3173H LINE# 172 + C:317CH LINE# 173 + C:3185H LINE# 174 + C:318EH LINE# 175 + C:3198H LINE# 176 + C:31A1H LINE# 178 + C:31ADH LINE# 182 + C:31BCH LINE# 210 + ------- ENDPROC GASGAUGEVARIN + ------- PROC GASGAUGEVAROUT + ------- DO + B:0029H.5 SYMBOL eabak + ------- ENDDO + C:6623H LINE# 218 + C:6623H LINE# 219 + C:6623H LINE# 222 + C:6627H LINE# 223 + C:6629H LINE# 224 + C:6638H LINE# 225 + C:6644H LINE# 226 + C:6650H LINE# 227 + C:665FH LINE# 229 + C:666EH LINE# 235 + C:6672H LINE# 236 + ------- ENDPROC GASGAUGEVAROUT + ------- ENDMOD GASGAUGEINTER_V4_13 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 112 + + + + ------- MODULE BOOTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + C:756CH PUBLIC ISPProcess + ------- PROC ISPPROCESS + C:756CH LINE# 17 + C:756CH LINE# 18 + C:756CH LINE# 19 + C:7578H LINE# 20 + C:7578H LINE# 21 + C:757AH LINE# 22 + C:757CH LINE# 23 + C:757EH LINE# 24 + C:7581H LINE# 25 + C:7584H LINE# 26 + C:7584H LINE# 27 + ------- ENDPROC ISPPROCESS + ------- ENDMOD BOOTAPP + + ------- MODULE BOOTIAP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:0000H PUBLIC g_loadercode + ------- ENDMOD BOOTIAP + + ------- MODULE ?C?FPADD + C:234BH PUBLIC ?C?FPADD + C:2347H PUBLIC ?C?FPSUB + ------- ENDMOD ?C?FPADD + + ------- MODULE ?C?FPMUL + C:243CH PUBLIC ?C?FPMUL + ------- ENDMOD ?C?FPMUL + + ------- MODULE ?C?FCAST + C:254CH PUBLIC ?C?FCASTC + C:2547H PUBLIC ?C?FCASTI + C:2542H PUBLIC ?C?FCASTL + ------- ENDMOD ?C?FCAST + + ------- MODULE ?C?CASTF + C:2580H PUBLIC ?C?CASTF + ------- ENDMOD ?C?CASTF + + ------- MODULE ?C?CLDPTR + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 113 + + + C:2601H PUBLIC ?C?CLDPTR + ------- ENDMOD ?C?CLDPTR + + ------- MODULE ?C?IMUL + C:261AH PUBLIC ?C?IMUL + ------- ENDMOD ?C?IMUL + + ------- MODULE ?C?UIDIV + C:262CH PUBLIC ?C?UIDIV + ------- ENDMOD ?C?UIDIV + + ------- MODULE ?C?IILDX + C:2681H PUBLIC ?C?IILDX + ------- ENDMOD ?C?IILDX + + ------- MODULE ?C?LADD + C:2697H PUBLIC ?C?LADD + ------- ENDMOD ?C?LADD + + ------- MODULE ?C?LSUB + C:26A4H PUBLIC ?C?LSUB + ------- ENDMOD ?C?LSUB + + ------- MODULE ?C?LMUL + C:26B2H PUBLIC ?C?LMUL + ------- ENDMOD ?C?LMUL + + ------- MODULE ?C?ULDIV + C:273DH PUBLIC ?C?ULDIV + ------- ENDMOD ?C?ULDIV + + ------- MODULE ?C?SLDIV + C:6DAFH PUBLIC ?C?SLDIV + ------- ENDMOD ?C?SLDIV + + ------- MODULE ?C?LOR + C:27CFH PUBLIC ?C?LOR + ------- ENDMOD ?C?LOR + + ------- MODULE ?C?LNEG + C:27DCH PUBLIC ?C?LNEG + ------- ENDMOD ?C?LNEG + + ------- MODULE ?C?SLCMP + C:27EAH PUBLIC ?C?SLCMP + ------- ENDMOD ?C?SLCMP + + ------- MODULE ?C?ULCMP + C:2800H PUBLIC ?C?ULCMP + ------- ENDMOD ?C?ULCMP + + ------- MODULE ?C?ULSHR + C:2811H PUBLIC ?C?ULSHR + ------- ENDMOD ?C?ULSHR + + ------- MODULE ?C?SLSHR + C:2824H PUBLIC ?C?SLSHR + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 114 + + + ------- ENDMOD ?C?SLSHR + + ------- MODULE ?C?LSHL + C:2838H PUBLIC ?C?LSHL + ------- ENDMOD ?C?LSHL + + ------- MODULE ?C?LLDIDATA + C:284BH PUBLIC ?C?LLDIDATA + ------- ENDMOD ?C?LLDIDATA + + ------- MODULE ?C?LLDXDATA + C:2857H PUBLIC ?C?LLDXDATA + ------- ENDMOD ?C?LLDXDATA + + ------- MODULE ?C?LLDIDATA0 + C:2863H PUBLIC ?C?LLDIDATA0 + ------- ENDMOD ?C?LLDIDATA0 + + ------- MODULE ?C?LLDXDATA0 + C:2870H PUBLIC ?C?LLDXDATA0 + ------- ENDMOD ?C?LLDXDATA0 + + ------- MODULE ?C?LILDXDATA + C:2885H PUBLIC ?C?LILDXDATA + C:287CH PUBLIC ?C?LILDXDATA1 + C:287EH PUBLIC ?C?LILDXDATA8 + ------- ENDMOD ?C?LILDXDATA + + ------- MODULE ?C?LSTIDATA + C:28B1H PUBLIC ?C?LSTIDATA + ------- ENDMOD ?C?LSTIDATA + + ------- MODULE ?C?LSTXDATA + C:28BDH PUBLIC ?C?LSTXDATA + ------- ENDMOD ?C?LSTXDATA + + ------- MODULE ?C?LSTKIDATA + C:28C9H PUBLIC ?C?LSTKIDATA + ------- ENDMOD ?C?LSTKIDATA + + ------- MODULE ?C?LSTKXDATA + C:28E2H PUBLIC ?C?LSTKXDATA + ------- ENDMOD ?C?LSTKXDATA + + ------- MODULE ?C?OFFXADD + C:2913H PUBLIC ?C?OFFXADD + ------- ENDMOD ?C?OFFXADD + + ------- MODULE ?C?CCASE + C:291FH PUBLIC ?C?CCASE + ------- ENDMOD ?C?CCASE + + ------- MODULE ?C?LIMUL + C:2945H PUBLIC ?C?LIMUL + ------- ENDMOD ?C?LIMUL + + + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 115 + + + +FUNCTION REGISTER MASKS + + +FUNCTION . . . . . . . . . REG MASK +----------------------------------- + +AFEADCDIS. . . . . . . . . @0xf7ff +AFEADCEN . . . . . . . . . @0xf7ff +AFECADCDIS . . . . . . . . @0xf7ff +AFECADCEN. . . . . . . . . @0xf7ff +AFECHGERCHECKDIS . . . . . @0xf7ff +AFECHGERCHECKEN. . . . . . @0xf7ff +AFECLRFLG. . . . . . . . . @0xf7ff +AFEENTERPD . . . . . . . . @0xf7ff +AFEGETTEMPE. . . . . . . . @0xf7ff +AFEGETVOL. . . . . . . . . @0xf7ff +AFEINIT. . . . . . . . . . @0xf7ff +AFELOADCHECKDIS. . . . . . @0xf7ff +AFELOADCHECKEN . . . . . . @0xf7ff +AFERAMCHECK. . . . . . . . @0xf7ff +AFERDFLG . . . . . . . . . @0xf7ff +AFERDSTATUS. . . . . . . . @0xf7ff +AFETEMPADCDIS. . . . . . . @0xf7ff +AFETEMPADCEN . . . . . . . @0xf7ff +AFETWICHECK. . . . . . . . @0xf300 +AFEWDTDIS. . . . . . . . . @0xf7ff +AFEWDTEN . . . . . . . . . @0xf7ff +BALPROCESS . . . . . . . . @0xf7ff +CALICURZERO. . . . . . . . @0xe301 +CALIRTCTIME. . . . . . . . @0xf7ff +CHGERCHECK . . . . . . . . @0xf7ff +CLRRAM . . . . . . . . . . @0xf383 +CTOCHECKVOL. . . . . . . . @0xf300 +CTOTURNONCHECK . . . . . . @0xf300 +DELAY4US . . . . . . . . . @0xf001 +E2PROMBKBOOT . . . . . . . @0xf7ff +E2PROMINIT . . . . . . . . @0xf7ff +E2PROMTWICHECK . . . . . . @0xf300 +GASGAUGEVARIN. . . . . . . @0xffbf +GASGAUGEVAROUT . . . . . . @0xff8f +INITGPIO . . . . . . . . . @0xc000 +INITIRQ. . . . . . . . . . @0xe000 +INITVAR. . . . . . . . . . @0xf797 +INTERRUPTINT4. . . . . . . @0xf003 +INTERRUPTTIMER3. . . . . . @0xf300 +INTERRUPTTIMER3APP . . . . @0xf300 +INTERRUPTUART0APPTX. . . . @0xf38f +KEYSCAN. . . . . . . . . . @0xf000 +LEDAUTOOFF . . . . . . . . @0xf300 +LEDDISPLAY . . . . . . . . @0xf303 +LOADCHECK. . . . . . . . . @0xf7ff +LOWPOWERCHECK. . . . . . . @0xf301 +LOWPOWERPROCESS. . . . . . @0xf7ff +MCUFLASHPROCESS. . . . . . @0xf7bf +MCUFLASHWRWAITCHECK. . . . @0xf300 +MCUINTOIDLE. . . . . . . . @0xc000 + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 116 + + +MCUINTOPD. . . . . . . . . @0xc000 +MOSCTRL. . . . . . . . . . @0xf7ff +MOSSTATUSCHECK . . . . . . @0xc000 +PORPROTECTOTC. . . . . . . @0xf78f +PORPROTECTOTD. . . . . . . @0xf78f +PORPROTECTOV . . . . . . . @0xf782 +PORPROTECTUTC. . . . . . . @0xf78f +PORPROTECTUTD. . . . . . . @0xf78f +PORPROTECTUV . . . . . . . @0xf782 +PROTECTOCRECOVER . . . . . @0xf7ff +PROTECTOTC . . . . . . . . @0xf7af +PROTECTOTD . . . . . . . . @0xf7af +PROTECTOV. . . . . . . . . @0xf7ff +PROTECTUTC . . . . . . . . @0xf7af +PROTECTUTD . . . . . . . . @0xf7af +PROTECTUV. . . . . . . . . @0xf78b +RAMCHECKPROCESS. . . . . . @0xf300 +RTCTWICHECK. . . . . . . . @0xf300 +SYSPARAINIT. . . . . . . . @0xffbf +SYSTEMINTOPD . . . . . . . @0xf7ff +SYSTEMINTOSLEEP. . . . . . @0xf7ff +TWICHKCLKRELEASE . . . . . @0xf00f +TWIINIT. . . . . . . . . . @0x8000 +TWIRESTART . . . . . . . . @0xf001 +TWISTART . . . . . . . . . @0xf001 +TWISTOP. . . . . . . . . . @0xf001 +UART0CALICUROFFSET . . . . @0xf375 +UART0CALIRTC . . . . . . . @0xf377 +UART0CALITS1 . . . . . . . @0xf377 +UART0CALITS2 . . . . . . . @0xf377 +UART0CALIVOLTAGE . . . . . @0xf377 +UART0CHECK . . . . . . . . @0xf300 +UART0HANDSHAKE . . . . . . @0xe300 +UART0IAPCHECKHANDSHAKE . . @0xf7bf +UART0INIT. . . . . . . . . @0xe000 +UART0RDCMDPROCESS. . . . . @0xf3ff +UART0RDE2PROM. . . . . . . @0xf7ff +UART0READSUBCLASSID. . . . @0xf375 +UART0WRITEMANUFACTURE. . . @0xf375 +UART1RDE2PROM. . . . . . . @0xf7ff +UART2RDE2PROM. . . . . . . @0xf7ff +WAKEUPPROCESS. . . . . . . @0xf7ff +_AFEALARMDIS . . . . . . . @0xf7ff +_AFEALARMEN. . . . . . . . @0xf7ff +_AFEBALCTL . . . . . . . . @0xf7ff +_AFEMOSCTL . . . . . . . . @0xf7ff +_AFEREADREG. . . . . . . . @0xf7ff +_AFEWRITEREG . . . . . . . @0xf7ff +_CRC8CAL . . . . . . . . . @0xf365 +_DELAY1MS. . . . . . . . . @0xf03e +_E2PROMREAD. . . . . . . . @0xf7ff +_E2PROMWRITE . . . . . . . @0xf7ff +_GETCYCLEGAIN. . . . . . . @0xf7cf +_INTERRUPTINT4APP. . . . . @0xf003 +_LEDGETDISNUM. . . . . . . @0xf001 +_MCUCLOCKSET . . . . . . . @0xf003 +_MCUFLASHBLANKCHECK. . . . @0xf31c + BL51 BANKED LINKER/LOCATER V6.22 11/29/2023 14:42:56 PAGE 117 + + +_MCUFLASHCHECKFLG. . . . . @0xf303 +_MCUFLASHDATACHECK . . . . @0xf7af +_MCUFLASHREAD. . . . . . . @0xf307 +_MCUFLASHWRITE . . . . . . @0xf7bf +_MCUFLASHWRONEBYTE . . . . @0xf035 +_MCUFLASHWRSECTOR. . . . . @0xf33f +_MEMORYCOPY. . . . . . . . @0xf78d +_MEMORYSET . . . . . . . . @0xf781 +_RTCMODIFYTIME . . . . . . @0xf7ff +_RTCREAD . . . . . . . . . @0xf7ff +_RTCWRITE. . . . . . . . . @0xf7ff +_TWIGETDATA. . . . . . . . @0xf08f +_TWIREAD . . . . . . . . . @0xf7ff +_TWISENDDATA . . . . . . . @0xf01f +_TWIWRITE. . . . . . . . . @0xf7ff +_UART0READINFO . . . . . . @0xf37f +_UART0WRITEINFO. . . . . . @0xf7ff + +Program Size: data=153.5 xdata=1532 code=30577 +LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/MCUCore_uvopt.bak b/MCUCore_uvopt.bak new file mode 100644 index 0000000..7647821 --- /dev/null +++ b/MCUCore_uvopt.bak @@ -0,0 +1,3888 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + McuFlash_Load + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 14 + + + + + + + + + + + BIN\SH51A.dll + + + + 0 + PWSTATINFO + 200,50,700 + + + 0 + DLGTP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + 0 + SH51A + -J0 -DSH39F003 -V-1072775120 -N-2046820256 -O67176199 -S0 -K0 -C0 -Q0 -L0 -M0 -P0 -T0 -F0 -G0 -H0 -A0 -B0 -E0 -I0 -Z000000000000000000000000000000000000000000 + + + 0 + DLGDP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + + + 0 + 1 + E2ucSOC,0x0A + + + 1 + 1 + E2uiCycleCount,0x0A + + + 2 + 1 + E2siDfilterCur,0x0A + + + 3 + 1 + Info,0x0A + + + 4 + 1 + slCadcCurAverage,0x0A + + + 5 + 1 + slCadcCurBuf,0x0A + + + 6 + 1 + E2siCadcGain,0x0A + + + 7 + 1 + E2siCadcOffset,0x0A + + + 8 + 1 + AFE,0x0A + + + 9 + 1 + ucCadcCnt,0x0A + + + 10 + 1 + bISPFlg + + + 11 + 1 + Info + + + 12 + 1 + ucUart1Buf,0x10 + + + 13 + 1 + TWISTA + + + 14 + 1 + TWIBR + + + 15 + 1 + REG.AFEFLAG1 + + + + + 1 + 0 + I:0Xf0 + + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + McuFlalsh_IAP + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 14 + + + + + + + + + + + BIN\SH51A.dll + + + + 0 + DLGTP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + 0 + SH51A + -J0 -DSH39F004 -V-1073496064 -N-2046820256 -O67176199 -S0 -K0 -C0 -Q0 -L0 -M0 -P0 -T0 -F0 -G0 -H0 -A0 -B0 -E0 -I0 -Z000000000000000000000000000000000000000000 + + + 0 + DLGDP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + + + 0 + 0 + 354 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212\SH39F003&F004_DemoCode_V2.12_20221212\code_drv\Protect.c + + +
+ + 1 + 0 + 472 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212-TWI涓嶄紶杈撻暱搴SH39F003&F004_DemoCode_V2.12_20221212\code_app\UartApp.c + + +
+ + 2 + 0 + 46 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212-TWI涓嶄紶杈撻暱搴SH39F003&F004_DemoCode_V2.12_20221212\code_drv\TWI.c + + +
+ + 3 + 0 + 23 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 4 + 0 + 29 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 5 + 0 + 52 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.14\SH39F003&F004_DemoCode_V2.14_20231012\code_drv\KeyScan.c + + +
+ + 6 + 0 + 21 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\code_drv\BootApp.c + + +
+
+ + + 0 + 1 + E2ucSOC,0x0A + + + 1 + 1 + E2ulLastFCC,0x0A + + + 2 + 1 + E2uiCycleCount,0x0A + + + 3 + 1 + uiDfFCC,0x0A + + + 4 + 1 + uiDfRC,0x0A + + + 5 + 1 + uiRCCharge,0x0A + + + 6 + 1 + uiRCDischarge,0x0A + + + 7 + 1 + uiTempBK,0x0A + + + 8 + 1 + ucCycleGain,0x0A + + + 9 + 1 + uiDfRSOC,0x0A + + + 10 + 1 + slCur,0x0A + + + 11 + 1 + E2siDfilterCur,0x0A + + + 12 + 1 + Info,0x0A + + + 13 + 1 + slCadcCurAverage,0x0A + + + 14 + 1 + slCadcCurBuf,0x0A + + + 15 + 1 + E2siCadcGain,0x0A + + + 16 + 1 + E2siCadcOffset,0x0A + + + 17 + 1 + AFE,0x0A + + + 18 + 1 + ucCadcCnt,0x0A + + + + + 1 + 0 + I:0Xf0 + + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + McuFlahs_ISP + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 14 + + + + + + + + + + + BIN\SH51A.dll + + + + 0 + DLGTP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + 0 + SH51A + -J0 -DSH39F004 -V-1073496064 -N-2046820256 -O67176199 -S0 -K0 -C0 -Q0 -L0 -M0 -P0 -T0 -F0 -G0 -H0 -A0 -B0 -E0 -I0 -Z000000000000000000000000000000000000000000 + + + 0 + DLGDP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + + + 0 + 0 + 52 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.14\SH39F003&F004_DemoCode_V2.14_20231012\code_drv\KeyScan.c + + +
+
+ + + 0 + 1 + E2ucSOC,0x0A + + + 1 + 1 + E2ulLastFCC,0x0A + + + 2 + 1 + E2uiCycleCount,0x0A + + + 3 + 1 + uiDfFCC,0x0A + + + 4 + 1 + uiDfRC,0x0A + + + 5 + 1 + uiRCCharge,0x0A + + + 6 + 1 + uiRCDischarge,0x0A + + + 7 + 1 + uiTempBK,0x0A + + + 8 + 1 + ucCycleGain,0x0A + + + 9 + 1 + uiDfRSOC,0x0A + + + 10 + 1 + slCur,0x0A + + + 11 + 1 + E2siDfilterCur,0x0A + + + 12 + 1 + Info,0x0A + + + 13 + 1 + slCadcCurAverage,0x0A + + + 14 + 1 + slCadcCurBuf,0x0A + + + 15 + 1 + E2siCadcGain,0x0A + + + 16 + 1 + E2siCadcOffset,0x0A + + + 17 + 1 + AFE,0x0A + + + 18 + 1 + ucCadcCnt,0x0A + + + + + 1 + 0 + I:0Xf0 + + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + EEPROM + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 9 + + + + + + + + + + + BIN\SH51.DLL + + + + 0 + SH51 + -D -V0 -O67335 -S0 -C0 -L0 -M0 -T0 -F0 -G0 -H0 -Z000000000000000000000000000000000000000000 + + + + + 0 + 0 + 58 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\yangweilei\Desktop\SH39F003&F004_DemoCode_V2.0_200511_hpp\code_drv\McuLib.c + + +
+ + 1 + 0 + 46 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Initial.c + + +
+ + 2 + 0 + 48 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Initial.c + + +
+ + 3 + 0 + 53 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Initial.c + + +
+ + 4 + 0 + 62 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Initial.c + + +
+ + 5 + 0 + 90 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.01.09.37_yangweilei\code_app\Main.c + + +
+ + 6 + 0 + 178 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\閾呴吀鐢垫睜瀹归噺绠$悊鏂规BMS\DemoCode鍗囩骇璋冩祴\SH39F003&F004_DemoCode_V2.0_2020.06.02.09.35_yangweilei\code_drv\Calculate.c + + +
+ + 7 + 0 + 327 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.04.19.11\code_bootloader\IapIsp.c + + +
+ + 8 + 0 + 331 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.04.19.11\code_bootloader\IapIsp.c + + +
+ + 9 + 0 + 103 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.04.19.11\code_bootloader\Main.c + + +
+ + 10 + 0 + 55 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.06.19.58\code_app\Main.c + + +
+ + 11 + 0 + 309 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + E:\SH36730x BMS\DemoCode updata\SH39F003&F004_DemoCode_V2.0_2020.06.15.10.11 淇敼鍐呴儴娓╁害閲囬泦锛屽鍔燙ADC闅忔俯搴﹁皟鏁磑ffset\code_drv\Calculate.c + + +
+ + 12 + 0 + 354 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212\SH39F003&F004_DemoCode_V2.12_20221212\code_drv\Protect.c + + +
+ + 13 + 0 + 472 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + D:\bp-protect\HP-杞欢鏂规\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.12_20221212-TWI涓嶄紶杈撻暱搴SH39F003&F004_DemoCode_V2.12_20221212\code_app\UartApp.c + + +
+ + 14 + 0 + 23 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 15 + 0 + 29 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 16 + 0 + 52 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.14\SH39F003&F004_DemoCode_V2.14_20231012\code_drv\KeyScan.c + + +
+ + 17 + 0 + 21 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\code_drv\BootApp.c + + +
+
+ + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + BootLoad + 0x0 + MCS-51 + + 24000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\output\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 14 + + + + + + + + + + + BIN\SH51A.dll + + + + 0 + DLGTP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + 0 + SH51A + -J0 -DSH39F004 -V-1073512448 -N-2046820256 -O67176199 -S0 -K0 -C0 -Q0 -L0 -M0 -P0 -T0 -F0 -G0 -H0 -A0 -B0 -E0 -I0 -Z000000000000000000000000000000000000000000 + + + 0 + DLGDP51 + (98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0) + + + + + 0 + 0 + 23 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 1 + 0 + 29 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.13_20230309\code_app\Main.c + + +
+ + 2 + 0 + 52 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.14\SH39F003&F004_DemoCode_V2.14_20231012\code_drv\KeyScan.c + + +
+ + 3 + 0 + 21 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + C:\Users\wenhua.wang\Desktop\demo鏂规&user guide浼樺寲\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\code_drv\BootApp.c + + +
+
+ + + 1 + 0 + I:0Xf0 + + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + App + 1 + 0 + 0 + + 1 + 1 + 5 + 0 + 0 + 5266323 + 0 + 53104168 + 17768312 + 0 + .\header_app\Main.h + Main.h + + + 1 + 2 + 1 + 0 + 0 + 50 + 0 + 84 + 84 + 0 + .\code_app\Main.c + Main.c + + + 1 + 3 + 1 + 0 + 0 + 61 + 0 + 525 + 542 + 0 + .\code_app\Initial.c + Initial.c + + + 1 + 4 + 1 + 0 + 0 + 63 + 0 + 17 + 41 + 0 + .\code_app\InterruptApp.c + InterruptApp.c + + + 1 + 5 + 1 + 0 + 0 + 47 + 0 + 62 + 62 + 0 + .\code_app\Led.c + Led.c + + + 1 + 6 + 1 + 0 + 0 + 5266323 + 0 + 53104168 + 17768312 + 0 + .\code_app\KeyApp.c + KeyApp.c + + + 1 + 7 + 1 + 0 + 0 + 8 + 0 + 54 + 89 + 0 + .\code_app\LowPower.c + LowPower.c + + + 1 + 8 + 1 + 0 + 0 + 11 + 0 + 1830 + 1848 + 0 + .\code_app\UartApp.c + UartApp.c + + + 1 + 9 + 1 + 0 + 0 + 5266323 + 0 + 53104168 + 17768312 + 0 + .\code_app\Memory.c + Memory.c + + + 1 + 10 + 5 + 0 + 0 + 5266323 + 0 + 53104168 + 17768312 + 0 + .\readme.txt + readme.txt + + + + + Driver + 1 + 0 + 0 + + 2 + 11 + 1 + 0 + 0 + 48 + 0 + 204 + 213 + 0 + .\code_drv\AFE.c + AFE.c + + + 2 + 12 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\Balance.c + Balance.c + + + 2 + 13 + 1 + 0 + 0 + 5 + 0 + 481 + 481 + 0 + .\code_drv\Calculate.c + Calculate.c + + + 2 + 14 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\Calibrate.c + Calibrate.c + + + 2 + 15 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\ChargerLoad.c + ChargerLoad.c + + + 2 + 16 + 1 + 0 + 0 + 13 + 0 + 349 + 367 + 0 + .\code_drv\ExtE2PRom.c + ExtE2PRom.c + + + 2 + 17 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\Interrupt.c + Interrupt.c + + + 2 + 18 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\KeyScan.c + KeyScan.c + + + 2 + 19 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\McuFlash.c + McuFlash.c + + + 2 + 20 + 1 + 0 + 0 + 21 + 0 + 83 + 83 + 0 + .\code_drv\McuLib.c + McuLib.c + + + 2 + 21 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\MosCtrl.c + MosCtrl.c + + + 2 + 22 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\PorSelfTest.c + PorSelfTest.c + + + 2 + 23 + 1 + 0 + 0 + 5 + 0 + 406 + 406 + 0 + .\code_drv\Protect.c + Protect.c + + + 2 + 24 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\RTC.c + RTC.c + + + 2 + 25 + 1 + 0 + 0 + 14 + 0 + 408 + 408 + 0 + .\code_drv\TWI.c + TWI.c + + + 2 + 26 + 1 + 0 + 0 + 0 + 0 + 103 + 103 + 0 + .\code_drv\Uart.c + Uart.c + + + 2 + 27 + 1 + 0 + 0 + 5266323 + 0 + 1 + 1 + 0 + .\code_drv\Thermistor.c + Thermistor.c + + + 2 + 28 + 1 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\TwiIO.c + TwiIO.c + + + 2 + 29 + 2 + 0 + 0 + 5266323 + 0 + 53104136 + 17768312 + 0 + .\code_drv\STARTUP.A51 + STARTUP.A51 + + + + + Gasguage + 1 + 0 + 0 + + 3 + 30 + 1 + 0 + 0 + 5266323 + 0 + 53104296 + 17768312 + 0 + .\code_gasguage\GasGaugeInter_V4_13.c + GasGaugeInter_V4_13.c + + + 3 + 31 + 4 + 0 + 0 + 5266323 + 0 + 53104296 + 17768312 + 0 + .\code_gasguage\GasGaugeV4_13.LIB + GasGaugeV4_13.LIB + + + + + AppBoot + 1 + 0 + 0 + + 4 + 32 + 1 + 0 + 0 + 5266323 + 0 + 53103992 + 17768312 + 0 + .\code_drv\BootApp.c + BootApp.c + + + 4 + 33 + 1 + 0 + 0 + 5266323 + 0 + 53103992 + 17768312 + 0 + .\code_drv\BootIAP.c + BootIAP.c + + + + + EEPROM + 1 + 0 + 0 + + 5 + 34 + 1 + 0 + 0 + 5266323 + 0 + 53104040 + 17768312 + 0 + .\code_dataflash\DataFlash.c + DataFlash.c + + + + + Header + 0 + 0 + 0 + + 6 + 35 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\Initial.h + Initial.h + + + 6 + 36 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\InterruptApp.h + InterruptApp.h + + + 6 + 37 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\KeyApp.h + KeyApp.h + + + 6 + 38 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\Led.h + Led.h + + + 6 + 39 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\LowPower.h + LowPower.h + + + 6 + 40 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\Main.h + Main.h + + + 6 + 41 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\Memory.h + Memory.h + + + 6 + 42 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_app\UartApp.h + UartApp.h + + + 6 + 43 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Afe.h + Afe.h + + + 6 + 44 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Balance.h + Balance.h + + + 6 + 45 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\c51_type.h + c51_type.h + + + 6 + 46 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Calculate.h + Calculate.h + + + 6 + 47 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Calibrate.h + Calibrate.h + + + 6 + 48 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\ChargerLoad.h + ChargerLoad.h + + + 6 + 49 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\ExtE2PRom.h + ExtE2PRom.h + + + 6 + 50 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Interrupt.h + Interrupt.h + + + 6 + 51 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\ISP.h + ISP.h + + + 6 + 52 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\KeyScan.h + KeyScan.h + + + 6 + 53 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\McuFlash.h + McuFlash.h + + + 6 + 54 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\McuLib.h + McuLib.h + + + 6 + 55 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\MCURegister.h + MCURegister.h + + + 6 + 56 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\MosCtrl.h + MosCtrl.h + + + 6 + 57 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\PorSelfTest.h + PorSelfTest.h + + + 6 + 58 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Protect.h + Protect.h + + + 6 + 59 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\RTC.h + RTC.h + + + 6 + 60 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Twi.h + Twi.h + + + 6 + 61 + 5 + 0 + 0 + 5266323 + 0 + 53104408 + 17768312 + 0 + .\header_drv\Uart.h + Uart.h + + + + + BootLoad + 1 + 0 + 0 + + 7 + 62 + 1 + 0 + 0 + 5266323 + 0 + 53104232 + 17768312 + 0 + .\code_bootloader\Main.c + Main.c + + + 7 + 63 + 1 + 0 + 0 + 5266323 + 0 + 53104232 + 17768312 + 0 + .\code_bootloader\IapIsp.c + IapIsp.c + + + 7 + 64 + 1 + 0 + 0 + 5266323 + 0 + 53104232 + 17768312 + 0 + .\code_bootloader\Flash.c + Flash.c + + + 7 + 65 + 2 + 0 + 0 + 5266323 + 0 + 53104232 + 17768312 + 0 + .\code_bootloader\STARTUP.A51 + STARTUP.A51 + + + + + Default + 1 + Build + 0 + + Default + 1 + + 35824 + 1 + Logic Analyzer + 0 + + 0 + + 1 + 6 + 0 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 1 + 0 + 0 + 0 + + + 59392 + 2 + File + 0 + + 0 + + 1 + 2 + 3 + 0 + 24 + 0 + 50 + 893 + 0 + 0 + 0 + 0 + 100 + 0 + 1 + 0 + + + 59398 + 3 + Build + 0 + + 0 + + 1 + 2 + 3 + 0 + 50 + 0 + 76 + 384 + 0 + 0 + 0 + 0 + 100 + 0 + 0 + 0 + + + 59399 + 4 + Debug + 0 + + 0 + + 1 + 2 + 3 + 0 + 50 + 0 + 76 + 626 + 0 + 0 + 0 + 0 + 100 + 0 + 1 + 0 + + + 197 + 5 + Build Output + 0 + + 0 + + 1 + 2 + 4 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 1 + 1 + 0 + + + 198 + 6 + Command + 197 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 199 + 7 + Find in Files + 198 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 38007 + 8 + Browse + 199 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1939 + 9 + UART #1 + 38007 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1940 + 10 + UART #2 + 1939 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1941 + 11 + UART #3 + 1940 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1942 + 12 + UART #4 + 1941 + + 0 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1944 + 13 + Call Stack + 197 + + 197 + + 1 + 2 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 1 + 1 + 0 + + + 1507 + 14 + Call Stack + 1944 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1935 + 15 + Locals + 1507 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1936 + 16 + Watch 1 + 1935 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1937 + 17 + Watch 2 + 1936 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1465 + 18 + Memory 1 + 1937 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1466 + 19 + Memory 2 + 1465 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1467 + 20 + Memory 3 + 1466 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1468 + 21 + Memory 4 + 1467 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 0 + 0 + + + 1506 + 22 + Symbols + 1468 + + 197 + + 1 + 4 + 2 + 0 + 780 + 0 + 990 + 1920 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1005 + 23 + Project + 0 + + 0 + + 1 + 2 + 1 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 1 + 0 + + + 109 + 24 + Books + 1005 + + 0 + + 1 + 4 + 2 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 195 + 25 + Functions + 109 + + 0 + + 1 + 4 + 2 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 196 + 26 + Templates + 195 + + 0 + + 1 + 4 + 2 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 38003 + 27 + Registers + 196 + + 0 + + 1 + 4 + 2 + 0 + 76 + 0 + 776 + 210 + 0 + 0 + 600 + 250 + 100 + 1 + 1 + 0 + + + 35885 + 28 + not set + 0 + + 0 + + 1 + 2 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35886 + 29 + not set + 35885 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35887 + 30 + not set + 35886 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35888 + 31 + not set + 35887 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35889 + 32 + not set + 35888 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35890 + 33 + not set + 35889 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35891 + 34 + not set + 35890 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35892 + 35 + not set + 35891 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35893 + 36 + not set + 35892 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35894 + 37 + not set + 35893 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35895 + 38 + not set + 35894 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35896 + 39 + not set + 35895 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35897 + 40 + not set + 35896 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35898 + 41 + not set + 35897 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35899 + 42 + not set + 35898 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35900 + 43 + not set + 35899 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35901 + 44 + not set + 35900 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35902 + 45 + not set + 35901 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35903 + 46 + not set + 35902 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35904 + 47 + not set + 35903 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35905 + 48 + not set + 35904 + + 0 + + 1 + 4 + 2 + 0 + 76 + 1710 + 776 + 1920 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 203 + 49 + Disassembly + 0 + + 0 + + 1 + 2 + 3 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 1 + 1 + 0 + + + 1913 + 50 + Instruction Trace + 203 + + 0 + + 1 + 4 + 2 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 343 + 51 + Performance Analyzer + 1913 + + 0 + + 1 + 4 + 2 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 204 + 52 + Performance Analyzer + 343 + + 0 + + 1 + 4 + 2 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 346 + 53 + Code Coverage + 204 + + 0 + + 1 + 4 + 2 + 0 + 76 + 214 + 286 + 1920 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + + + + 1 + 0 + + 100 + 0 + + + .\code_app\Main.c + 50 + 84 + 84 + + + .\code_drv\Uart.c + 0 + 103 + 103 + + + .\header_app\Main.h + 28 + 109 + 145 + + + .\code_app\UartApp.c + 11 + 1830 + 1848 + + + .\HEADER_DRV\MCUREGISTER.H + 0 + 316 + 334 + + + .\code_app\Led.c + 47 + 62 + 62 + + + \Y\KEIL\ZDBMS\SH39F003&F004_DEMOCODE_V2.15\HEADER_APP\LED.H + 28 + 1 + 4 + + + .\code_app\LowPower.c + 8 + 54 + 89 + + + .\HEADER_DRV\UART.H + 47 + 1 + 19 + + + .\code_drv\ExtE2PRom.c + 13 + 349 + 367 + + + \Y\KEIL\ZDBMS\SH39F003&F004_DEMOCODE_V2.15\HEADER_APP\UARTAPP.H + 8 + 65 + 65 + + + .\code_app\Initial.c + 61 + 525 + 542 + + + + + +
diff --git a/MCUCore_uvproj.bak b/MCUCore_uvproj.bak new file mode 100644 index 0000000..273d78a --- /dev/null +++ b/MCUCore_uvproj.bak @@ -0,0 +1,4627 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + McuFlash_Load + 0x0 + MCS-51 + + + SH39F004 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F004.H + + + + + + + + + + + 0 + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + MCUCore_Load + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 14 + + + + + + + + + + + + + + BIN\SH51A.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4106 + + 0 + BIN\SH51A.dll + "" () + + + + + 0 + + + + 2 + 0 + 2 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0xfc00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x200 + 0xaff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 1 + 0 + 1 + 3 + 7 + 2 + 0 + 1 + 0 + 4096 + + + + + .\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_classb\iec60730_proc\Include;.\code_classb\config + + + + 0 + 1 + 0 + 1 + + + + + .\code_classb\iec60730_lib\include;.\code_classb\iec60730_proc\Include;.\code_classb\config + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + 0X0000-0XFBFF + 0X0200-0X0CFE + + + + + + + ?CO?BootIAP(0x0000) + + + + + + + + + + App + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + + + EEPROM + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 0 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + McuFlalsh_IAP + 0x0 + MCS-51 + + + SH39F004 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F004.H + + + + + + + + + + + 0 + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + McuFlash_IAP + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 14 + + + + + + + + + + + + + + BIN\SH51A.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4106 + + 0 + BIN\SH51A.dll + "" () + + + + + 0 + + + + 2 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x1000 + 0x7800 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x200 + 0x8ff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 1 + 0 + 1 + 3 + 7 + 2 + 0 + 1 + 0 + 4096 + + + + + .\header_app;.\header_drv;.\code_gasguage + + + + 0 + 1 + 0 + 1 + + + + + .\header_app;.\header_drv;.\code_gasguage;.\code_isp + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + 0X1000-0X87FF + 0X0200-0X0AFE + + + + + + + ?CO?DATAFLASH(0x8400) + + + + + + + + + + App + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + 2 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + + + + + + EEPROM + + + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + 0 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + McuFlahs_ISP + 0x0 + MCS-51 + + + SH39F004 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F004.H + + + + + + + + + + + 0 + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + McuFlash_ISP + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 14 + + + + + + + + + + + + + + BIN\SH51A.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4106 + + 0 + BIN\SH51A.dll + "" () + + + + + 0 + + + + 2 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x1000 + 0xec00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x200 + 0x8ff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 1 + 0 + 1 + 3 + 7 + 2 + 0 + 1 + 0 + 4096 + + + + + .\header_app;.\header_drv;.\code_gasguage + + + + 0 + 1 + 0 + 1 + + + + + + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + 0X1000-0XFBFF + 0X0200-0X0AFE + + + + + + + ?CO?DATAFLASH(0xF800) + + + + + + + + + + App + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + 2 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + + + + + + EEPROM + + + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + 0 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + EEPROM + 0x0 + MCS-51 + + + SH39F004 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F004.H + + + + + + + + + + + 0 + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + Eeprom + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 9 + + + + + + + + + + + + + + BIN\SH51.DLL + + + + + 1 + 0 + 0 + 1 + 1 + 4101 + + 0 + BIN\SH51.DLL + + + + + + 0 + + + + 2 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x200 + 0x2ff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 0 + 0 + 1 + 0 + 1 + 3 + 7 + 2 + 0 + 1 + 0 + 0 + + + + + .\header + + + + 0 + 1 + 0 + 0 + + + + + + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + + 0X0200-0X04FE + + + + + + + ?CO?DATAFLASH(0x0000) + + + + + + + + + + App + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 0 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 0 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + + + EEPROM + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 0 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + BootLoad + 0x0 + MCS-51 + + + SH39F004 + Sinowealth + IRAM(0-0xFF) IROM(0-0xFFFF) XRAM(0-0xAFF) CLOCK(24000000) + + "LIB\STARTUP.A51"("Standard 8051 Startup Code") + + 0 + SH39F004.H + + + + + + + + + + + 0 + 0 + + + + Sinowealth\ + Sinowealth\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + BootLoad + 1 + 0 + 1 + 1 + 1 + .\output\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + 65535 + + + S8051.DLL + + DP51.DLL + -p51 + S8051.DLL + + TP51.DLL + -p51 + + + + 0 + 0 + 0 + 0 + 16 + + + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 14 + + + + + + + + + + + + + + BIN\SH51A.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4106 + + 0 + BIN\SH51A.dll + "" () + + + + + 0 + + + + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x1000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x10000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0xb00 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 0 + 0 + 1 + 0 + 1 + 3 + 8 + 2 + 1 + 1 + 0 + 0 + + + + + .\header_bootloader + + + + 0 + 1 + 0 + 1 + + + + + .\header_bootloader + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + 16 + + + + + + + + 0X0000-0X0FFF + + + + + + + + ?PR?BOOTIAPISP?IAPISP(0xA6) + + + + + + + + + + App + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Main.h + 5 + .\header_app\Main.h + + + Main.c + 1 + .\code_app\Main.c + + + Initial.c + 1 + .\code_app\Initial.c + + + InterruptApp.c + 1 + .\code_app\InterruptApp.c + + + Led.c + 1 + .\code_app\Led.c + + + KeyApp.c + 1 + .\code_app\KeyApp.c + + + LowPower.c + 1 + .\code_app\LowPower.c + + + UartApp.c + 1 + .\code_app\UartApp.c + + + Memory.c + 1 + .\code_app\Memory.c + + + readme.txt + 5 + .\readme.txt + + + + + Driver + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + AFE.c + 1 + .\code_drv\AFE.c + + + Balance.c + 1 + .\code_drv\Balance.c + + + Calculate.c + 1 + .\code_drv\Calculate.c + + + Calibrate.c + 1 + .\code_drv\Calibrate.c + + + ChargerLoad.c + 1 + .\code_drv\ChargerLoad.c + + + ExtE2PRom.c + 1 + .\code_drv\ExtE2PRom.c + + + Interrupt.c + 1 + .\code_drv\Interrupt.c + + + KeyScan.c + 1 + .\code_drv\KeyScan.c + + + McuFlash.c + 1 + .\code_drv\McuFlash.c + + + McuLib.c + 1 + .\code_drv\McuLib.c + + + MosCtrl.c + 1 + .\code_drv\MosCtrl.c + + + PorSelfTest.c + 1 + .\code_drv\PorSelfTest.c + + + Protect.c + 1 + .\code_drv\Protect.c + + + RTC.c + 1 + .\code_drv\RTC.c + + + TWI.c + 1 + .\code_drv\TWI.c + + + Uart.c + 1 + .\code_drv\Uart.c + + + Thermistor.c + 1 + .\code_drv\Thermistor.c + + + TwiIO.c + 1 + .\code_drv\TwiIO.c + + + STARTUP.A51 + 2 + .\code_drv\STARTUP.A51 + + + + + Gasguage + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + GasGaugeInter_V4_13.c + 1 + .\code_gasguage\GasGaugeInter_V4_13.c + + + GasGaugeV4_13.LIB + 4 + .\code_gasguage\GasGaugeV4_13.LIB + + + + + AppBoot + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + BootApp.c + 1 + .\code_drv\BootApp.c + + + BootIAP.c + 1 + .\code_drv\BootIAP.c + + + + + EEPROM + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 0 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + DataFlash.c + 1 + .\code_dataflash\DataFlash.c + + + + + Header + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + 65535 + + + + 2 + 2 + 2 + 2 + 2 + 8 + 10 + 3 + 2 + 2 + 2 + 0 + + + + + + + + + 2 + 2 + 2 + 2 + + + + + + + + + + + + Initial.h + 5 + .\header_app\Initial.h + + + InterruptApp.h + 5 + .\header_app\InterruptApp.h + + + KeyApp.h + 5 + .\header_app\KeyApp.h + + + Led.h + 5 + .\header_app\Led.h + + + LowPower.h + 5 + .\header_app\LowPower.h + + + Main.h + 5 + .\header_app\Main.h + + + Memory.h + 5 + .\header_app\Memory.h + + + UartApp.h + 5 + .\header_app\UartApp.h + + + Afe.h + 5 + .\header_drv\Afe.h + + + Balance.h + 5 + .\header_drv\Balance.h + + + c51_type.h + 5 + .\header_drv\c51_type.h + + + Calculate.h + 5 + .\header_drv\Calculate.h + + + Calibrate.h + 5 + .\header_drv\Calibrate.h + + + ChargerLoad.h + 5 + .\header_drv\ChargerLoad.h + + + ExtE2PRom.h + 5 + .\header_drv\ExtE2PRom.h + + + Interrupt.h + 5 + .\header_drv\Interrupt.h + + + ISP.h + 5 + .\header_drv\ISP.h + + + KeyScan.h + 5 + .\header_drv\KeyScan.h + + + McuFlash.h + 5 + .\header_drv\McuFlash.h + + + McuLib.h + 5 + .\header_drv\McuLib.h + + + MCURegister.h + 5 + .\header_drv\MCURegister.h + + + MosCtrl.h + 5 + .\header_drv\MosCtrl.h + + + PorSelfTest.h + 5 + .\header_drv\PorSelfTest.h + + + Protect.h + 5 + .\header_drv\Protect.h + + + RTC.h + 5 + .\header_drv\RTC.h + + + Twi.h + 5 + .\header_drv\Twi.h + + + Uart.h + 5 + .\header_drv\Uart.h + + + + + BootLoad + + + Main.c + 1 + .\code_bootloader\Main.c + + + IapIsp.c + 1 + .\code_bootloader\IapIsp.c + + + Flash.c + 1 + .\code_bootloader\Flash.c + + + STARTUP.A51 + 2 + .\code_bootloader\STARTUP.A51 + + + + + + + +
diff --git a/SH39F003&F004_DemoCode浣跨敤鎸囧崡.pdf b/SH39F003&F004_DemoCode浣跨敤鎸囧崡.pdf new file mode 100644 index 0000000..d634fd2 Binary files /dev/null and b/SH39F003&F004_DemoCode浣跨敤鎸囧崡.pdf differ diff --git a/Sino.cfg b/Sino.cfg new file mode 100644 index 0000000..30cfda0 Binary files /dev/null and b/Sino.cfg differ diff --git a/code_app/Initial.c b/code_app/Initial.c new file mode 100644 index 0000000..e2bd66c --- /dev/null +++ b/code_app/Initial.c @@ -0,0 +1,589 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +/************************************************************************************************* +* 函数名: InitVar +* 参 数: 无 +* 返回值: 无 +* 描 述: 初始化变量,主要是非0变量。在ClrRam()函数中,已将所有Xdata/Idata/Data区全部清零 +*************************************************************************************************/ +void InitVar(void) +{ + ucBalanceStep = BALANCE_ENABLE; + MemorySet((U8 xdata *)slCadcCurBuf, 0, sizeof(slCadcCurBuf)); + MemorySet((U8 xdata *)Info.uiVCell, 0, sizeof(Info.uiVCell)); + Info.uiTS[0] = 2731; + Info.uiTS[1] = 2731; + + bSlowDischarge = 0; + bMidDischarge = 0; + ucDsgingSpeed = 2; + bFastDischarge = 1; + bPorSelfTestFlg = 1; + + ucTempeMiddle = 80; +} + +/************************************************************************************************* +* 函数名: SysParaInit +* 参 数: 无 +* 返回值: 无 +* 描 述: 从MCU Flash参数区读取数据,并针对部分变量进行初始化 +*************************************************************************************************/ +void SysParaInit(void) +{ + if(McuFlashCheckFlg(MCUFLASH_BK1_FLG_ADDR)) + { + McuFlashRead(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR, 512); + if(!McuFlashCheckFlg(MCUFLASH_BK2_FLG_ADDR)) + { + McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR); //更新备份区2 + } + } + else if(McuFlashCheckFlg(MCUFLASH_BK2_FLG_ADDR)) + { + McuFlashRead(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR, 512); + McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR); //更新备份区1 + } + else + { + bMcuFlashErr = 1; + return; + } + + uiPackConfig = E2uiPackConfigMap; + Info.uiPackConfig = uiPackConfig; + Info.ulFCC = E2ulFCC; + Info.uiCycleCount = E2uiCycleCount; + + ucCellNum = (uiPackConfig&0x0007)+3; //根据配置初始化电芯串数和Offset + + if(ucCellNum==5 || ucCellNum==10) + { + ucCellNumOffset = 0; + } + else if(ucCellNum==4 || ucCellNum==9) + { + ucCellNumOffset = 1; + } + else + { + ucCellNumOffset = 2; + } +} + +/************************************************************************************************* +* 函数名: InitIRQ +* 参 数: 无 +* 返回值: 无 +* 描 述: 初始化中断 +*************************************************************************************************/ +void InitIRQ(void) +{ + IrqDis(); //关闭总中断源 + #if (UART0_DEFINE != 0) + IrqUart0En(); //初始化UART0中断使能,根据具体使用UART模块来进行选择 //检查UART0是否正常,如果不正常,则复位指针向量 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //初始化UART1中断使能,根据具体使用UART模块来进行选择 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + + IrqTimer3FlgClr(); //使能Timer3中断 + IrqTimer3En(); + + IrqINT4xChEn(INT4_EXS45 | INT4_EXS46); + IrqINT4Trig(INT4_TRIG_FALLING); //下降沿触发 + IrqINT4FlgClr(); //清外部中断标志 + IrqINT4En(); //使能外部中断4 + + IrqEn(); +} + + +/************************************************************************************************* +* 函数名: InitGPIO +* 参 数: 无 +* 返回值: 无 +* 描 述: 初始化I/O端口,未使用的I/O,默认配置为输出低电平,降低MCU功耗 +P0.7[TXD], P0.6[RXD], P0.5[SCL], P0.4[SDA], P0.3[BLPW], P0.2[], P0.1[], P0.0[], +P0.7ST[1], P0.6ST[1], P0.5ST[1], P0.4ST[1], P0.3ST[1], P0.2ST[0], P0.1ST[0], P0.0ST[0], P0 = 0xF8; +P0.7CR[1], P0.6CR[0], P0.5CR[0], P0.4CR[0], P0.3CR[1], P0.2CR[1], P0.1CR[1], P0.0CR[1], P0CR = 0x8F; +P0.7PC[1], P0.6PC[1], P0.5PC[0], P0.4PC[0], P0.3PC[1], P0.2PC[0], P0.1PC[0], P0.0PC[0], P0PCR = 0xC8; + +P1.7[RESET],P1.6[], P1.5[], P1.4[], P1.3[], P1.2[], P1.1[], P1.0[], +P1.7ST[1], P1.6ST[0], P1.5ST[0], P1.4ST[0], P1.3ST[0], P1.2ST[0], P1.1ST[0], P1.0ST[0], P1 = 0x80; +P1.7CR[0], P1.6CR[1], P1.5CR[1], P1.4CR[1], P1.3CR[1], P1.2CR[1], P1.1CR[1], P1.0CR[1], P1CR = 0x7F; +P1.7PC[1], P1.6PC[0], P1.5PC[0], P1.4PC[0], P1.3PC[0], P1.2PC[0], P1.1PC[0], P1.0PC[0], P1PCR = 0x80; + +P2.7[KEY_M],P2.6[ALARM],P2.5[CTLD], P2.4[LED5], P2.3[LED4], P2.2[LED3], P2.1[LED2], P2.0[LED1], +P2.7ST[1], P2.6ST[1], P2.5ST[1], P2.4ST[0], P2.3ST[0], P2.2ST[0], P2.1ST[0], P2.0ST[0], P2 = 0xE0; +P2.7CR[0], P2.6CR[0], P2.5CR[1], P2.4CR[1], P2.3CR[1], P2.2CR[1], P2.1CR[1], P2.0CR[1], P2CR = 0x3F; +P2.7PC[1], P2.6PC[1], P2.5PC[0], P2.4PC[0], P2.3PC[0], P2.2PC[0], P2.1PC[0], P2.0PC[0], P2PCR = 0xC0; + +P3.7[], P3.6[], P3.5[LED6], P3.4[XTAL1],P3.3[XTAL2],P3.2[], P3.1[], P3.0[KLED], +P3.7ST[0], P3.6ST[0], P3.5ST[0], P3.4ST[1], P3.3ST[1], P3.2ST[0], P3.1ST[0], P3.0ST[1], P3 = 0x19; +P3.7CR[1], P3.6CR[1], P3.5CR[1], P3.4CR[0], P3.3CR[0], P3.2CR[1], P3.1CR[1], P3.0CR[0], P3CR = 0xE6; +P3.7PC[0], P3.6PC[0], P3.5PC[0], P3.4PC[1], P3.3PC[1], P3.2PC[0], P3.1PC[0], P3.0PC[1], P3PCR = 0x19; +*************************************************************************************************/ +/************************************************************************************************* +* 函数名: InitGPIO_SL +* 参 数: 无 +* 返回值: 无 +* 描 述: 初始化I/O端口,未使用的I/O,默认配置为输出低电平,降低MCU功耗 +P0.7[TX], P0.6[RX], P0.5[SCL], P0.4[SDA], P0.3[], P0.2[], P0.1[], P0.0[], IO状态:P0.[7,6,5,4,3]有效 +P0.7ST[1], P0.6ST[1], P0.5ST[1], P0.4ST[1], P0.3ST[0], P0.2ST[0], P0.1ST[0], P0.0ST[0], P0 = 0xF0; IO状态:P0.[7,6,5,4,3]有效 +P0.7CR[1], P0.6CR[0], P0.5CR[0], P0.4CR[0], P0.3CR[1], P0.2CR[1], P0.1CR[1], P0.0CR[1], P0CR = 0x8F; IO方向:P0.[7,6,5,4,3]有效,1输出,0输入 +P0.7PC[1], P0.6PC[1], P0.5PC[0], P0.4PC[0], P0.3PC[0], P0.2PC[0], P0.1PC[0], P0.0PC[0], P0PCR = 0xC0; 内部上拉:1开启,0关闭 + +P1.7[RESET],P1.6[], P1.5[], P1.4[], P1.3[], P1.2[], P1.1[], P1.0[], IO状态:P1.[7,6,5,4,3,2]有效 +P1.7ST[1], P1.6ST[0], P1.5ST[0], P1.4ST[0], P1.3ST[0], P1.2ST[0], P1.1ST[0], P1.0ST[0], P1 = 0x80; IO状态:P1.[7,6,5,4,3,2]有效 +P1.7CR[0], P1.6CR[1], P1.5CR[1], P1.4CR[1], P1.3CR[1], P1.2CR[1], P1.1CR[1], P1.0CR[1], P1CR = 0x7F; IO方向:P1.[7,6,5,4,3,2]有效,1输出,0输入 +P1.7PC[1], P1.6PC[0], P1.5PC[0], P1.4PC[0], P1.3PC[0], P1.2PC[0], P1.1PC[0], P1.0PC[0], P1PCR = 0x80; 内部上拉:1开启,0关闭 + +P2.7[], P2.6[ALARM],P2.5[], P2.4[LED], P2.3[], P2.2[], P2.1[], P2.0[485_DE], IO状态:P2.[7,6,5,4,3,2,1,0]有效 +P2.7ST[0], P2.6ST[1], P2.5ST[0], P2.4ST[0], P2.3ST[0], P2.2ST[1], P2.1ST[1], P2.0ST[0], P2 = 0x46; IO状态:P2.[7,6,5,4,3,2,1,0]有效 +P2.7CR[1], P2.6CR[0], P2.5CR[1], P2.4CR[1], P2.3CR[1], P2.2CR[0], P2.1CR[1], P2.0CR[1], P2CR = 0xBB; IO方向:P2.[7,6,5,4,3,2,1,0]有效,1输出,0输入 +P2.7PC[0], P2.6PC[1], P2.5PC[0], P2.4PC[0], P2.3PC[0], P2.2PC[1], P2.1PC[1], P2.0PC[1], P2PCR = 0x46; 内部上拉:1开启,0关闭 + +P3.7[], P3.6[], P3.5[BAT_V_C], P3.4[XTAL1],P3.3[XTAL2],P3.2[], P3.1[], P3.0[BAT_V], IO状态:P3.[5,4,3,...,0]有效 +P3.7ST[0], P3.6ST[0], P3.5ST[0], P3.4ST[1], P3.3ST[1], P3.2ST[0], P3.1ST[0], P3.0ST[0], P3 = 0x18; IO状态:P3.[5,4,3,...,0]有效 +P3.7CR[1], P3.6CR[1], P3.5CR[1], P3.4CR[0], P3.3CR[0], P3.2CR[1], P3.1CR[1], P3.0CR[0], P3CR = 0xE6; IO方向:P3.[5,4,3,...,0]有效,1输出,0输入 +P3.7PC[0], P3.6PC[0], P3.5PC[0], P3.4PC[1], P3.3PC[1], P3.2PC[0], P3.1PC[0], P3.0PC[0], P3PCR = 0x18; 内部上拉:1开启,0关闭 +*************************************************************************************************/ +void InitGPIO(void) +{ + + P0 = 0xF0; + P0CR = 0x8F; + P0PCR = 0xC0; + + P1 = 0x80; + P1CR = 0x7F; + P1PCR = 0x80; + + P2 = 0x46; + P2CR = 0xBB; + P2PCR = 0x46; + + P3 = 0x18; + P3CR = 0xE6; + P3PCR = 0x18; + +//UART0相关IO配置 串口功能映射时注意配置相应IO口的寄存器值,保证功能可正常实现 + #if (UART0_DEFINE == 1) + P0 |= 0xC0; + P0PCR |= 0x80; + #endif + + #if (UART0_DEFINE == 2) + P0 |= 0x40; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + + #if (UART0_DEFINE == 3) + P0 |= 0x40; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + + #if (UART0_DEFINE == 4) + P0 |= 0x41; + P0PCR |= 0x01; + #endif + + #if (UART0_DEFINE == 5) + P0 |= 0x42; + P0PCR |= 0x02; + #endif + + #if (UART0_DEFINE == 6) + P0 |= 0xC0; + P0PCR |= 0x40; + #endif + + #if (UART0_DEFINE == 7) + P0 |= 0x80; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + + #if (UART0_DEFINE == 8) + P0 |= 0x80; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + + #if (UART0_DEFINE == 9) + P0 |= 0x81; + P0PCR |= 0x01; + #endif + + #if (UART0_DEFINE == 10) + P0 |= 0x82; + P0PCR |= 0x02; + #endif + + #if (UART0_DEFINE == 11) + P0 |= 0x40; + P2 |= 0x10; + P0PCR |= 0x40; + #endif + + #if (UART0_DEFINE == 12) + P0 |= 0x80; + P2 |= 0x10; + P0PCR |= 0x80; + #endif + + #if (UART0_DEFINE == 13) + P2 |= 0x30; + P2PCR |= 0x20; + #endif + + #if (UART0_DEFINE == 14) + P0 |= 0x01; + P2 |= 0x10; + P0PCR |= 0x01; + #endif + + #if (UART0_DEFINE == 15) + P0 |= 0x02; + P2 |= 0x10; + P0PCR |= 0x02; + #endif + + #if (UART0_DEFINE == 16) + P0 |= 0x40; + P2 |= 0x20; + P0PCR |= 0x40; + #endif + + #if (UART0_DEFINE == 17) + P0 |= 0x80; + P2 |= 0x20; + P0PCR |= 0x80; + #endif + + #if (UART0_DEFINE == 18) + P2 |= 0x30; + P2PCR |= 0x10; + #endif + + #if (UART0_DEFINE == 19) + P0 |= 0x01; + P2 |= 0x20; + P0PCR |= 0x01; + #endif + + #if (UART0_DEFINE == 20) + P0 |= 0x02; + P2 |= 0x20; + P0PCR |= 0x02; + #endif + + #if (UART0_DEFINE == 21) + P0 |= 0x81; + P0PCR |= 0x80; + #endif + + #if (UART0_DEFINE == 22) + P0 |= 0x01; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + + #if (UART0_DEFINE == 23) + P0 |= 0x01; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + + #if (UART0_DEFINE == 24) + P0 |= 0x41; + P0PCR |= 0x40; + #endif + + #if (UART0_DEFINE == 25) + P0 |= 0x03; + P0PCR |= 0x02; + #endif + + #if (UART0_DEFINE == 26) + P0 |= 0x82; + P0PCR |= 0x80; + #endif + + #if (UART0_DEFINE == 27) + P0 |= 0x02; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + + #if (UART0_DEFINE == 28) + P0 |= 0x02; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + + #if (UART0_DEFINE == 29) + P0 |= 0x42; + P0PCR |= 0x40; + #endif + + #if (UART0_DEFINE == 30) + P0 |= 0x03; + P0PCR |= 0x01; + #endif + +//UART1相关IO配置 + #if (UART1_DEFINE == 1) + P1 |= 0x03; + P1PCR |= 0x02; + #endif + + #if (UART1_DEFINE == 2) + P1 |= 0x01; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + + #if (UART1_DEFINE == 3) + P1 |= 0x01; + P3 |= 0x10; + P3PCR |= 0x10; + #endif + + #if (UART1_DEFINE == 4) + P1 |= 0x01; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + + #if (UART1_DEFINE == 5) + P1 |= 0x01; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + + #if (UART1_DEFINE == 6) + P1 |= 0x03; + P1PCR |= 0x01; + #endif + + #if (UART1_DEFINE == 7) + P1 |= 0x02; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + + #if (UART1_DEFINE == 8) + P1 |= 0x02; + P3 |= 0x10; + P3PCR |= 0x10; + #endif + + #if (UART1_DEFINE == 9) + P1 |= 0x02; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + + #if (UART1_DEFINE == 10) + P1 |= 0x02; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + + #if (UART1_DEFINE == 11) + P1 |= 0x01; + P3 |= 0x08; + P1PCR |= 0x01; + #endif + + #if (UART1_DEFINE == 12) + P1 |= 0x02; + P3 |= 0x08; + P1PCR |= 0x01; + #endif + + #if (UART1_DEFINE == 13) + P3 |= 0x18; + P3PCR |= 0x10; + #endif + + #if (UART1_DEFINE == 14) + P3 |= 0x08; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + + #if (UART1_DEFINE == 15) + P3 |= 0x08; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + + #if (UART1_DEFINE == 16) + P1 |= 0x01; + P3 |= 0x10; + P1PCR |= 0x01; + #endif + + #if (UART1_DEFINE == 17) + P1 |= 0x02; + P3 |= 0x10; + P1PCR |= 0x02; + #endif + + #if (UART1_DEFINE == 18) + P3 |= 0x18; + P3PCR |= 0x08; + #endif + + #if (UART1_DEFINE == 19) + P3 |= 0x10; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + + #if (UART1_DEFINE == 20) + P3 |= 0x10; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + + #if (UART1_DEFINE == 21) + P1 |= 0x01; + P2 |= 0x40; + P1PCR |= 0x01; + #endif + + #if (UART1_DEFINE == 22) + P1 |= 0x02; + P2 |= 0x40; + P1PCR |= 0x02; + #endif + + #if (UART1_DEFINE == 23) + P2 |= 0x40; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + + #if (UART1_DEFINE == 24) + P3 |= 0x10; + P2 |= 0x40; + P3PCR |= 0x10; + #endif + + #if (UART1_DEFINE == 25) + P2 |= 0xC0; + P2PCR |= 0x80; + #endif + + #if (UART1_DEFINE == 26) + P1 |= 0x01; + P2 |= 0x80; + P1PCR |= 0x01; + #endif + + #if (UART1_DEFINE == 27) + P1 |= 0x02; + P2 |= 0x80; + P1PCR |= 0x02; + #endif + + #if (UART1_DEFINE == 28) + P2 |= 0x80; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + + #if (UART1_DEFINE == 29) + P3 |= 0x10; + P2 |= 0x80; + P3PCR |= 0x10; + #endif + + #if (UART1_DEFINE == 30) + P2 |= 0xC0; + P2PCR |= 0x40; + #endif + +//UART2相关IO配置,当前demo板此串口做LED灯显示功能,不支持串口通讯,故demo板配置为不使能uart2串口功能 + #if (UART2_DEFINE == 1) + P2 |= 0x06; + P2PCR |= 0x04; + #endif +} + +/************************************************************************************************* +* 函数名: Initial +* 参 数: 无 +* 返回值: 无 +* 描 述: 初始化 +*************************************************************************************************/ +void Initial(void) +{ + McuClockSet(MCU_CLK_24MHz); //设置系统工作在24MHz + + InitGPIO(); //初始化GPIO + +// ClrRam(); //清空MCU RAM(XDATA、IDATA、DATA) + + SysParaInit(); //初始化系统参数 + + InitVar(); //初始化变量 + + McuTimer3Set(TIM_CLK_128KHz, 5); //初始化Timer,采用128KHz外置晶振,周期为5mS + + #if (UART0_DEFINE != 0) + UART0Init(); //初始化UART0模块,9600Bps + #endif + + #if (UART1_DEFINE != 0) + UART1Init(); //初始化UART0模块,9600Bps + #endif + + #if (UART2_DEFINE != 0) + UART2Init(); //初始化UART0模块,9600Bps + #endif + + TwiInit(); //初始化TWI模块,通讯频率为100Khz + + McuPWM2Set(4000, 100); //初始化PWM2,占空比100% + + AFEInitReg(); //初始化AFE寄存器 + if(!AFEInit()) //初始化AFE,MCU是由AFE的V33供电的,当MCU工作时,AFE已经准备好通讯了 + { + bAfeErr = 1; + } + AFEClrFlg(); //清零AFE状态寄存器 + + if(bEnEEPRomBK) + { + if(!E2PRomInit()) + { + bE2PRErr = 1; //外挂EEPROM模块出错 + } + + if(!RTCInitTime(&RTC)) + { + bRTCErr = 1; //外置RTC模块出错 + } + } + + InitIRQ(); //初始化中断 +} diff --git a/code_app/InterruptApp.c b/code_app/InterruptApp.c new file mode 100644 index 0000000..99a44a9 --- /dev/null +++ b/code_app/InterruptApp.c @@ -0,0 +1,70 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +BOOL bTimer5msFlg; +BOOL bTimer50msFlg; +BOOL bTimer1sFlg; +U8 ucTimer50ms; +U8 ucTimer1s; + +/************************************************************************************************* +* 函数名: InterruptINT4App +* 参 数: IntSource:外部中断4的中断源 +* 返回值: 无 +* 描 述: 外部中断处理,包括ALARM中断和按键中断,用于低功耗唤醒系统 +*************************************************************************************************/ +void InterruptINT4App(U8 IntSource) +{ + if(IntSource == INT4_EXS45) //Alarm + { + if(bPDFlg || bSleepFlg) + { + McuClockSet(MCU_CLK_24MHz); + bWakeupFlg = 1; + } + } + else if(IntSource == INT4_EXS46) //Key wakeup + { + if(bPDFlg || bSleepFlg) + { + McuClockSet(MCU_CLK_24MHz); + bWakeupFlg = 1; + } + } +} + + +/************************************************************************************************* +* 函数名: InterruptTimer3App +* 参 数: 无 +* 返回值: 无 +* 描 述: 定时器,周期为5mS,产生5mS、50mS、1S三个标志 +*************************************************************************************************/ +void InterruptTimer3App(void) +{ + + bTimer5msFlg = 1; //5ms标志为预留标志 + + if(++ucTimer50ms >= TIME_5MS_50MS) + { + ucTimer50ms = 0; + bTimer50msFlg = 1; + } + + if(++ucTimer1s >= TIME_5MS_1S) + { + ucTimer1s = 0; + bTimer1sFlg = 1; + } + + KeyScan(); //扫描按键 +} + diff --git a/code_app/KeyApp.c b/code_app/KeyApp.c new file mode 100644 index 0000000..c6e5bf0 --- /dev/null +++ b/code_app/KeyApp.c @@ -0,0 +1,101 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +U8 xdata ucDsgingSpeed; + +/************************************************************************************************* +* 函数名: KeySwitchSpeed +* 参 数: 无 +* 返回值: 无 +* 描 述: 按键调速,分为三挡 +*************************************************************************************************/ +void KeySwitchSpeed(void) +{ + bSlowDischarge = 0; + bMidDischarge = 0; + bFastDischarge = 0; + if(bDSGING) + { + if(ucDsgingSpeed == 0) + { + ucDsgingSpeed = 1; + bMidDischarge = 1; + McuPWM2Set(E2uiDSG1PWMFreq ,E2ucDSG1PWMRatioH); + McuPWM2En(); + } + else if(ucDsgingSpeed == 1) + { + ucDsgingSpeed = 2; + bFastDischarge = 1; + McuPWM2Set(E2uiDSG1PWMFreq, 100); + McuPWM2En(); + } + else + { + ucDsgingSpeed = 0; + bSlowDischarge = 1; + McuPWM2Set(E2uiDSG1PWMFreq ,E2ucDSG1PWMRatioL); + McuPWM2En(); + } + } + else + { + bSlowDischarge = 0; + bMidDischarge = 0; + bFastDischarge = 0; + } +} + + +/************************************************************************************************* +* 函数名: KeyProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 当检测到有效按键后,处理对应按键 +*************************************************************************************************/ +void KeyProcess(void) +{ + if(bKeyFlg) + { + bKeyFlg = 0; //同一按键一直被按下,如果持续的时间足够长,则会先触发长按,后触发长按持续,但目前我们没有用到长按持续状态 + switch(ucKeyValue) + { + case KEY_ON_S: + KeySwitchSpeed(); + break; + + case KEY_LED_S: + bLedDisFlg = 1; + ucLedTimeCnt = 0; + break; + + case KEY_LED_L: //长按LED进PD模式 + bPDFlg = 1; + break; + + case KEY_ON_L: //长按唤醒按键2S,蓝牙电源开启/关闭 + bLedDisBleFlg = ~bLedDisBleFlg; + if(bLedDisBleFlg) + { + BlueToothPowerEn(); + } + else + { + BlueToothPowerDis(); + } + break; + + default: + break; + } + } +} + diff --git a/code_app/Led.c b/code_app/Led.c new file mode 100644 index 0000000..f2a1cee --- /dev/null +++ b/code_app/Led.c @@ -0,0 +1,155 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +BOOL bLedDisFlg; //LED显示标志 +BOOL bLedDisBleFlg; //蓝牙开启时显示 +U8 xdata ucLedTimeCnt; +U8 xdata ucLedChgFlickCnt; +U8 xdata ucLedBleFlickCnt; + +/************************************************************************************************* +* 函数名: LedGetDisNum +* 参 数: Rsoc:剩余容量百分比 +* 返回值: 无 +* 描 述: 根据剩余容量百分比,计算当前显示的LED数 +*************************************************************************************************/ +U8 LedGetDisNum(U16 Rsoc) +{ + if(Rsoc > 80) + { + return 5; + } + else if(Rsoc > 60) + { + return 4; + } + else if(Rsoc > 40) + { + return 3; + } + else if(Rsoc > 20) + { + return 2; + } + else if(Rsoc > 0) + { + return 1; + } + else + { + return 0; + } +} + + +/************************************************************************************************* +* 函数名: LedAutoOff +* 参 数: 无 +* 返回值: 无 +* 描 述: 按键显示LED持续5S后,关闭LED显示 +*************************************************************************************************/ +void LedAutoOff(void) +{ + if(bLedDisFlg) + { + if(++ucLedTimeCnt >= 100) //100*50mS + { + ucLedTimeCnt = 0; + bLedDisFlg = 0; + } + } +} + +/************************************************************************************************* +* 函数名: LedDisplay +* 参 数: 无 +* 返回值: 无 +* 描 述: 显示LED + 充电时,充电LED指示灯以500mS周期闪烁 + 蓝牙开启时,蓝牙指示灯以250mS周期闪烁 + 显示容量时,LED开启5s后,自动熄灭 +*************************************************************************************************/ +void LedDisplay(void) +{ + U8 LedDisNum; + + if(bCHGING) //显示充电状态 + { + if(++ucLedChgFlickCnt >= 10) //10*50mS + { + ucLedChgFlickCnt = 0; + IO_LED_CHARGE ^= 1; + } + } + else + { + IO_LED_CHARGE = 0; + } + + if(bLedDisBleFlg) //显示蓝牙开启状态 + { + if(++ucLedBleFlickCnt >= 5) //5*50mS + { + ucLedBleFlickCnt = 0; +// IO_LED_BLE ^= 1; + } + } + else + { +// IO_LED_BLE = 0; + } + + if(bLedDisFlg) //显示容量信息 + { + LedDisNum = LedGetDisNum(Info.uiRSOC); + if(LedDisNum == 0) + { +// LEDAllOff(); + } + if(LedDisNum == 1) + { +// LED1On(); + } + else if(LedDisNum == 2) + { +// LED1On(); + LED2On(); + } + else if(LedDisNum == 3) + { +// LED1On(); + LED2On(); + LED3On(); + } + else if(LedDisNum == 4) + { +// LED1On(); + LED2On(); + LED3On(); + LED4On(); + } + else if(LedDisNum == 5) + { +// LEDAllOn(); + } + } + else + { +// LEDAllOff(); + } + + LedAutoOff(); //定时5s关闭容量LED显示 +} + + + + + diff --git a/code_app/LowPower.c b/code_app/LowPower.c new file mode 100644 index 0000000..72831eb --- /dev/null +++ b/code_app/LowPower.c @@ -0,0 +1,225 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +BOOL bSleepFlg; //系统进入IDLE标志 +BOOL bPDFlg; +BOOL bWakeupFlg; +BOOL bPCEnterPDFlg; //PC通知系统进入SLEEP标志 +U8 xdata ucSleepTimerCnt; +U8 xdata ucPDTimerCnt; +U8 xdata ucResetFlag; + +/************************************************************************************************* +* 函数名: WakeUpProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 从Sleep模式唤醒,可通过电流检测和按键唤醒 +*************************************************************************************************/ +void WakeUpProcess(void) +{ + if(bWakeupFlg) + { + bWakeupFlg = 0; + if(bSleepFlg) + { + McuClockSet(MCU_CLK_24MHz); + IrqEn(); + + bSleepFlg = 0; + ucSleepTimerCnt = 0; + Delay1ms(1); + + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + IrqTimer3En(); //开启Timer3中断 + McuTwiEn(); //开启MCU Twi模块 + + AfeAlarmDis(AFE_ALARM_SC | AFE_ALARM_OV | AFE_ALARM_CD); + AfeTempADCEn(); //开启AFE温度采集 + AfeWDTEn(); //开启AFE WDT + } + ucSleepTimerCnt = 0; + ucPDTimerCnt = 0; + ucUart0TimeoutCnt = 0; + ucUart1TimeoutCnt = 0; + ucUart2TimeoutCnt = 0; + } +} + + +/************************************************************************************************* +* 函数名: SystemIntoPD +* 参 数: 无 +* 返回值: 无 +* 描 述: 系统进入掉电模式 +*************************************************************************************************/ +void SystemIntoPD(void) +{ + while(1) + { + McuWDTClear(); //清除看门狗 + + IrqDis(); //关闭中断源 +// LEDAllOff(); //关闭LED显示 + BlueToothPowerDis(); //关闭蓝牙模块 + AFEMosCtl(0); //关闭MOS驱动 + + AFEEnterPD(); //关闭3.3V电源 + } +} + + +/************************************************************************************************* +* 函数名: SystemIntoSleep +* 参 数: 无 +* 返回值: 无 +* 描 述: 低功耗处理,进入IDLE或者PD +*************************************************************************************************/ +void SystemIntoSleep(void) +{ +// LEDAllOff(); //关闭LED显示 + BlueToothPowerDis(); //关闭蓝牙模块 + bLedDisBleFlg = 0; + + AfeWDTDis(); //关闭AFE WDT + AfeTempADCDis(); //关闭AFE温度采集 + AfeAlarmEn(AFE_ALARM_SC | AFE_ALARM_OV | AFE_ALARM_CD); //开启SC,OV,CD的Alarm功能 + McuTwiDis(); //关闭MCU Twi模块降低功耗 + McuPWM2Dis(); //关闭MCU PWM模块 + if(bDSGMOS) //DSG开启时,直接输出高电平 + { + IO_DSG_PWM = 1; + } + else + { + IO_DSG_PWM = 0; + } + Delay1ms(1); + + IrqDis(); //关闭总中断源 + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + IrqTimer3Dis(); //关闭Timer3中断 + IrqINT4FlgClr(); //保留外部中断4,清标志 + McuClockSet(MCU_CLK_128KHz); //设置系统时钟为128KHz + IrqEn(); + + McuIntoPD(); //MCU进入PD,可通过外部按键或ALARM唤醒。由于在系统进sleep后可能没有关DSG MOS,可能因为持续的小电流而将电芯耗空,但是,AFE内部预留FUSE,在VDD电压低于4V时会关闭LDO,使V33断电。 +} + + + + +/************************************************************************************************* +* 函数名: LowPowerCheck +* 参 数: 无 +* 返回值: 无 +* 描 述: 检测是否进入IDLE或者PD +*************************************************************************************************/ +void LowPowerCheck(void) +{ + if(bPCEnterPDFlg && (bUart0SndAckFlg||bUart1SndAckFlg||bUart2SndAckFlg)) //上位机发送名字强制进入PD + { + bPCEnterPDFlg = 0; + bPDFlg = 1; + } + else if(bCTO) //发生断线后,延时进入PD + { + if(++ucPDTimerCnt >= E2ucLowPowerDeley) + { + ucPDTimerCnt = E2ucLowPowerDeley; + bPDFlg = 1; + } + } + else if(!bLedDisFlg) //LED显示关闭后开始检测进入低功耗 + { + if(!bCHGING && !bDSGING) //非充非放状态 + { + if(bUV) //发生欠压保护后,延时进入PD + { + if(++ucPDTimerCnt >= E2ucLowPowerDeley) + { + ucPDTimerCnt = E2ucLowPowerDeley; + bPDFlg = 1; + } + } + else //未发生欠压保护,且未发生其他保护,则延时进入IDLE + { + ucPDTimerCnt = 0; + if(!(bOTC | bUTC | bOV | bOCC | bOTD | bUTD | bUV | bOCD1 | bOCD2 | bAFE_SC | bLedDisBleFlg)) + { + if(++ucSleepTimerCnt >= E2ucLowPowerDeley) + { + ucSleepTimerCnt = E2ucLowPowerDeley; + bSleepFlg = 1; + } + } + else + { + ucSleepTimerCnt = 0; + } + } + } + else + { + ucSleepTimerCnt = 0; + ucPDTimerCnt = 0; + } + } + else + { + ucSleepTimerCnt = 0; + ucPDTimerCnt = 0; + } +} + + +/************************************************************************************************* +* 函数名: LowPowerProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 低功耗处理,进入IDLE或者PD +*************************************************************************************************/ +void LowPowerProcess(void) +{ + if(!bSleepFlg && !bPDFlg) + { + IrqDis(); + if(!(bKeyFlg | bCaliFlg | bMcuFlashWrFlg | bWakeupFlg | bISPFlg | bTimer50msFlg | bTimer1sFlg) && (ucResetFlag!=0x12)) + { + IrqEn(); + McuIntoIdle(); + } + IrqEn(); + } + else if(bPDFlg) + { + bMcuFlashWrFlg = 1; + McuFlashProcess(); + SystemIntoPD(); + } + else if(bSleepFlg) + { + SystemIntoSleep(); + } + + WakeUpProcess(); //系统从低功耗唤醒 +} + + diff --git a/code_app/Main.c b/code_app/Main.c new file mode 100644 index 0000000..cce9d0a --- /dev/null +++ b/code_app/Main.c @@ -0,0 +1,137 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" +#include "stdio.h" + +// 发送字符串 +char putchar(char c) +{ + REN = 0; // 开启发送 + IO_485_DE = 1; // 开启485发送 + SBUF = c; // 发 + while(!TI); + IO_485_DE = 0; // 关闭485发送 + TI = 0; + return c; +} + +/************************************************************************************************* +* 函数名: main +* 参 数: 无 +* 返回值: 无 +* 描 述: 主函数,当初始化结束后,程序会在While(1)中死循环 + 1.可通过定时器来触发各个功能模块的执行 + 2.可通过其他中断源来触发对应模块的执行 +*************************************************************************************************/ +void main(void) +{ + Initial(); //初始化系统 + + printf("SystemClock: 8MHz"); + + while(1) + { + //KeyProcess(); //按键处理 + + if(bTimer50msFlg) //50mS处理和AFE相关的数据采集、计算、保护等 + { + McuWDTClear(); //定时清狗 + + bTimer50msFlg = 0; + AFEInfoProcess(); //获取AFE信息,计算电压、温度、电流 + + BalanceProcess(); //平衡及断线处理 + + ProtectProcess(); //电压、电流、温度保护 + + PorSelfTest(); //第一次上电保护检测(延时较短,暂定50mS一次检测) + + LoadCheck(); //检测负载是否释放 + + ChgerCheck(); //检测充电器是否释放 + + MosCtrl(); //MOS状态检测及控制 + + ProtectOCRecover(); //过流保护自恢复 + + //LedDisplay(); //LED显示 + + #if (UART0_DEFINE != 0) + Uart0Check(); //检查UART0是否正常,如果不正常,则复位指针向量 + #endif + + #if (UART1_DEFINE != 0) + Uart1Check(); //检查UART1是否正常,如果不正常,则复位指针向量 + #endif + + #if (UART2_DEFINE != 0) + Uart2Check(); //检查UART2是否正常,如果不正常,则复位指针向量 + #endif + } + + if(bTimer1sFlg) //1s定时周期 + { + IO_LED = ~IO_LED; //LED + + printf("\r\n"); + printf("BAT0:%.2f mV\r\n", AFE.uiCell[0]*1.0*CALIVOL/E2uiVPackGain); + printf("BAT1:%.2f mV\r\n", AFE.uiCell[1]*1.0*CALIVOL/E2uiVPackGain); + printf("BAT2:%.2f mV\r\n", AFE.uiCell[2]*1.0*CALIVOL/E2uiVPackGain); + printf("BAT3:%.2f mV\r\n", AFE.uiCell[3]*1.0*CALIVOL/E2uiVPackGain); + printf("BAT4:%.2f mV\r\n", AFE.uiCell[4]*1.0*CALIVOL/E2uiVPackGain); + printf("TOTAL:%.2f mV\r\n",(AFE.uiCell[1]+AFE.uiCell[2]+AFE.uiCell[3]+AFE.uiCell[4])*1.0*CALIVOL/E2uiVPackGain); + printf("\r\n"); + printf("TEMP0:%.2f C\r\n", AFE.uiICTempe[0]*17.0/100.0-270); +// printf("TEMP1:%.2f C\r\n", (CalcuTemp(AFE.uiTS[0]) + E2siTS0Offset)*1.0); + printf("TEMP1.0:%.2f C\r\n", AFE.uiTS[0]*1.0); + printf("TEMP1.1:%.2f C\r\n", AFE.uiTS[1]*1.0); + + bTimer1sFlg = 0; + GasGaugeManage(); //Calculate the battery charge and discharge capacity + + AFERamCheck(); //检测AFE寄存器是否误写 + + AFETwiCheck(); //检测AFE有无连续5S通讯错误 + E2PRomTwiCheck(); //检测EEPROM有无连续5S通讯错误 + RTCTwiCheck(); //检测RTC有无连续5S通讯错误 + + if(!RamCheckProcess()) //检测参数变量区是否误写 + { + SysParaInit(); + } + + McuFlashWrWaitCheck(); //检测是否需要更新参数到MCU Flash + + E2PRomBKCheck(); //备份EEPROM + + //LowPowerCheck(); //低功耗检测 + + + } + + SystemResetProcess(); //系统复位 + + ISPProcess(); //在线升级代码 + + CaliProcess(); //校准 + + McuFlashProcess(); //备份参数到MCU Flash区 + + E2PRomBKProcess(); //外挂EEPROM备份 + + //LowPowerProcess(); //低功耗处理 + + Info.uiPackStatus = uiPackStatus; //更新PACK和Battery的信息,可通过UART反馈给主机 + Info.uiBatStatus = uiBatStatus; + + } +} + + + \ No newline at end of file diff --git a/code_app/Memory.c b/code_app/Memory.c new file mode 100644 index 0000000..fb26bdf --- /dev/null +++ b/code_app/Memory.c @@ -0,0 +1,190 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +//*****************************DATA MEMORY START***************************// +U8 idata STACK[0x100-STACK_ADDR] _at_ STACK_ADDR; //堆栈 + +//*****************************BIT MEMORY START***************************// +U16 bdata uiPackConfig; +sbit bCellNum1 = uiPackConfig^8; +sbit bCellNum2 = uiPackConfig^9; +sbit bCellNum3 = uiPackConfig^10; +sbit bLEDNum0 = uiPackConfig^11; //预留,程序未使用 +sbit bLEDNum1 = uiPackConfig^12; +sbit bTempNum = uiPackConfig^13; +sbit bChgerLock = uiPackConfig^14; //是否支持充电器锁定 +sbit bLoadLock = uiPackConfig^15; //是否支持负载锁定 + +sbit bSC_EN = uiPackConfig^0; //00101011 +sbit bOV_EN = uiPackConfig^1; +sbit bOCRC_EN = uiPackConfig^2; //auto reset or nor when OCC +sbit bBAL_EN = uiPackConfig^3; +sbit bPF_EN = uiPackConfig^4; //disable +sbit bCTO_EN = uiPackConfig^5; //cell on +sbit bOCPM = uiPackConfig^6; //disable +sbit bEnEEPRomBK = uiPackConfig^7; + +U16 bdata uiPackStatus; +sbit bCHGMOS = uiPackStatus^8; +sbit bDSGMOS = uiPackStatus^9; +sbit bCHGING = uiPackStatus^10; +sbit bDSGING = uiPackStatus^11; +sbit bSlowDischarge = uiPackStatus^12; +sbit bMidDischarge = uiPackStatus^13; +sbit bFastDischarge = uiPackStatus^14; + +sbit bFC = uiPackStatus^0; +sbit bFD = uiPackStatus^1; +sbit bVDQ = uiPackStatus^2; + + +U16 bdata uiBatStatus; +sbit bOV = uiBatStatus^8; +sbit bUV = uiBatStatus^9; +sbit bOCC = uiBatStatus^10; +sbit bOCD1 = uiBatStatus^11; +sbit bOCD2 = uiBatStatus^12; + +sbit bOTC = uiBatStatus^0; +sbit bOTD = uiBatStatus^1; +sbit bUTC = uiBatStatus^2; +sbit bUTD = uiBatStatus^3; +sbit bAFE_OV = uiBatStatus^4; +sbit bAFE_SC = uiBatStatus^5; +sbit bCTO = uiBatStatus^6; + +U8 bdata ucAFEStatus; +sbit bAfeChger = ucAFEStatus^0; +sbit bAfeLoad = ucAFEStatus^1; +sbit bAfeChging = ucAFEStatus^2; +sbit bAfeDsging = ucAFEStatus^3; +sbit bAfeCHG = ucAFEStatus^4; +sbit bAfeDSG = ucAFEStatus^5; + +/**************************************************************************************/ +//DataFlash中区块地址定义 +/**************************************************************************************/ +//系统信息区开始 SubClassID=0x00 langth=48 +U16 xdata E2uiPackConfigMap _at_ SYS_PARA_MAP_ADDR; +U16 xdata E2uiVOC[10] _at_ SYS_PARA_MAP_ADDR+2; +U32 xdata E2ulDesignCapacity _at_ SYS_PARA_MAP_ADDR+22; +U32 xdata E2ulFCC _at_ SYS_PARA_MAP_ADDR+26; +U32 xdata E2ulCycleThreshold _at_ SYS_PARA_MAP_ADDR+30; +U16 xdata E2uiCycleCount _at_ SYS_PARA_MAP_ADDR+34; +U16 xdata E2uiLearnLowTempe _at_ SYS_PARA_MAP_ADDR+36; +U16 xdata E2Reserve _at_ SYS_PARA_MAP_ADDR+38;//与上位机参数对应,预留占位 +S16 xdata E2siDfilterCur _at_ SYS_PARA_MAP_ADDR+40; +U8 xdata E2ucLowPowerDeley _at_ SYS_PARA_MAP_ADDR+42; +U8 xdata E2ucChgBKDelay _at_ SYS_PARA_MAP_ADDR+43; +S16 xdata E2siChgBKCur _at_ SYS_PARA_MAP_ADDR+44; +U8 xdata E2ucRTCBKDelay _at_ SYS_PARA_MAP_ADDR+46; +U8 xdata E2ucRamCheckFlg0 _at_ SYS_PARA_MAP_ADDR+47; //ucRamCheckFlg + SubClassID + +//用户自定义参数区开始 SubClassID=0x01 langth=50 +U16 xdata E2uiSWVersion _at_ SYSINFO_MAP_ADDR; +U16 xdata E2uiHWVersion _at_ SYSINFO_MAP_ADDR+2; +U8 xdata E2ucID _at_ SYSINFO_MAP_ADDR+4; +U8 xdata E2ucMNFName[12] _at_ SYSINFO_MAP_ADDR+5; +U32 xdata E2ulMNFDate _at_ SYSINFO_MAP_ADDR+17; +U16 xdata E2uiSerialNum _at_ SYSINFO_MAP_ADDR+21; +U8 xdata E2ucDeviceName[12] _at_ SYSINFO_MAP_ADDR+23; +U8 xdata E2ucDeviceChem[12] _at_ SYSINFO_MAP_ADDR+35; +U16 xdata E2uiChemID _at_ SYSINFO_MAP_ADDR+47; +U8 xdata E2ucRamCheckFlg1 _at_ SYSINFO_MAP_ADDR+49; + +//充电参数区开始 SubClassID=0x02 langth=18 +U16 xdata E2uiOVvol _at_ CHG_PARA_MAP_ADDR; +U16 xdata E2uiOVRvol _at_ CHG_PARA_MAP_ADDR+2; +U8 xdata E2ucOVDelay _at_ CHG_PARA_MAP_ADDR+4; +U8 xdata E2ucOVRDelay _at_ CHG_PARA_MAP_ADDR+5; +U16 xdata E2uiChgEndVol _at_ CHG_PARA_MAP_ADDR+6; +S16 xdata E2siChgEndCurr _at_ CHG_PARA_MAP_ADDR+8; +U8 xdata E2ucChgEndDelay _at_ CHG_PARA_MAP_ADDR+10; +S32 xdata E2slOCCCurrent _at_ CHG_PARA_MAP_ADDR+11; +U8 xdata E2ucOCCDelay _at_ CHG_PARA_MAP_ADDR+15; +U8 xdata E2ucOCCRDelay _at_ CHG_PARA_MAP_ADDR+16; +U8 xdata E2ucRamCheckFlg2 _at_ CHG_PARA_MAP_ADDR+17; + +//放电参数区开始 SubClassID=0x03 langth=21 +U16 xdata E2uiUVvol _at_ DSG_PARA_MAP_ADDR; +U16 xdata E2uiUVRvol _at_ DSG_PARA_MAP_ADDR+2; +U8 xdata E2ucUVDelay _at_ DSG_PARA_MAP_ADDR+4; //all the delay unit is 500mS +U8 xdata E2ucUVRDelay _at_ DSG_PARA_MAP_ADDR+5; +U16 xdata E2uiDsgEndVol _at_ DSG_PARA_MAP_ADDR+6; +U8 xdata E2ucDsgEndDelay _at_ DSG_PARA_MAP_ADDR+8; +S32 xdata E2slOCD1Current _at_ DSG_PARA_MAP_ADDR+9; +U8 xdata E2ucOCD1Delay _at_ DSG_PARA_MAP_ADDR+13; +S32 xdata E2slOCD2Current _at_ DSG_PARA_MAP_ADDR+14; +U8 xdata E2ucOCD2Delay _at_ DSG_PARA_MAP_ADDR+18; +U8 xdata E2ucLoadRDelay _at_ DSG_PARA_MAP_ADDR+19; +U8 xdata E2ucRamCheckFlg3 _at_ DSG_PARA_MAP_ADDR+20; + +//预留参数区开始 SubClassID=0x04 +//Reserved + +//放电PWM参数区开始 SubClassID=0x05 langth=5 +U16 xdata E2uiDSG1PWMFreq _at_ DSG_PWM_PARA_MAP_ADDR; +U8 xdata E2ucDSG1PWMRatioL _at_ DSG_PWM_PARA_MAP_ADDR+2; +U8 xdata E2ucDSG1PWMRatioH _at_ DSG_PWM_PARA_MAP_ADDR+3; +U8 xdata E2ucRamCheckFlg5 _at_ DSG_PWM_PARA_MAP_ADDR+4; + +//充电温度保护参数开始 SubClassID=0x06 langth=11 +U16 xdata E2uiTempOTC _at_ CHG_TEMP_PARA_MAP_ADDR; +U16 xdata E2uiTempOTCR _at_ CHG_TEMP_PARA_MAP_ADDR+2; +U16 xdata E2uiTempUTC _at_ CHG_TEMP_PARA_MAP_ADDR+4; +U16 xdata E2uiTempUTCR _at_ CHG_TEMP_PARA_MAP_ADDR+6; +U8 xdata E2ucTempDelay _at_ CHG_TEMP_PARA_MAP_ADDR+8; +U8 xdata E2ucTempRDelay _at_ CHG_TEMP_PARA_MAP_ADDR+9; +U8 xdata E2ucRamCheckFlg6 _at_ CHG_TEMP_PARA_MAP_ADDR+10; + +//放电温度保护参数开始 SubClassID=0x07 langth=9 +U16 xdata E2uiTempOTD _at_ DSG_TEMP_PARA_MAP_ADDR; +U16 xdata E2uiTempOTDR _at_ DSG_TEMP_PARA_MAP_ADDR+2; +U16 xdata E2uiTempUTD _at_ DSG_TEMP_PARA_MAP_ADDR+4; +U16 xdata E2uiTempUTDR _at_ DSG_TEMP_PARA_MAP_ADDR+6; +U8 xdata E2ucRamCheckFlg7 _at_ DSG_TEMP_PARA_MAP_ADDR+8; + +//平衡参数区开始 SubClassID=0x08 langth=8 +U16 xdata E2uiBalanceVol _at_ BAL_PARA_MAP_ADDR; +U16 xdata E2uiBalanceVolDiff _at_ BAL_PARA_MAP_ADDR+2; +S16 xdata E2siBalCurrent _at_ BAL_PARA_MAP_ADDR+4; +U8 xdata E2ucBalanceDelay _at_ BAL_PARA_MAP_ADDR+6; +U8 xdata E2ucRamCheckFlg8 _at_ BAL_PARA_MAP_ADDR+7; + +//容量统计参数开始 SubClassID=0x09 length=17 +U8 xdata E2ucSOC _at_ SOC_PARA_MAP_ADDR; +U32 xdata E2ulDfRC _at_ SOC_PARA_MAP_ADDR+1; +S32 xdata E2slDsgEndCurr _at_ SOC_PARA_MAP_ADDR+5; //放电截止电流 +U32 xdata E2ulCycleThresholdCount _at_ SOC_PARA_MAP_ADDR+9; +U16 xdata E2uiLastCCount _at_ SOC_PARA_MAP_ADDR+13; +U8 xdata E2ucDsgEndFlg _at_ SOC_PARA_MAP_ADDR+15; //放电截至标志 +U8 xdata E2ucRamCheckFlg9 _at_ SOC_PARA_MAP_ADDR+16; + + +//AFE参数区开始 SubClassID=0x0A langth=4 +U8 xdata E2ucAFEProtectConfig _at_ AFE_PARA_MAP_ADDR; +U16 xdata E2uiAFEOVvol _at_ AFE_PARA_MAP_ADDR+1; +U8 xdata E2ucRamCheckFlgA _at_ AFE_PARA_MAP_ADDR+3; + +//校准参数区开始 SubClassID=0x0B langth=12 +U16 xdata E2uiVPackGain _at_ CALI_PARA_MAP_ADDR; +S16 xdata E2siCadcGain _at_ CALI_PARA_MAP_ADDR+2; +S16 xdata E2siCadcOffset _at_ CALI_PARA_MAP_ADDR+4; +S16 xdata E2siTS0Offset _at_ CALI_PARA_MAP_ADDR+6; +S16 xdata E2siTS1Offset _at_ CALI_PARA_MAP_ADDR+8; +U8 xdata E2ucCalibrated _at_ CALI_PARA_MAP_ADDR+10; +U8 xdata E2ucRamCheckFlgB _at_ CALI_PARA_MAP_ADDR+11; + +U8 xdata Reserved[RESERVED_DATA_LEN] _at_ RESERVED_DATA_MAP_ADDR; + +//DataflashCheck +U16 xdata E2uiCheckFlag _at_ XRAM_MAP_ADDR+510; + diff --git a/code_app/UartApp.c b/code_app/UartApp.c new file mode 100644 index 0000000..877a237 --- /dev/null +++ b/code_app/UartApp.c @@ -0,0 +1,2127 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +BOOL bISPFlg; //ISP升级标志,进入ISP程序 +BOOL bUart0ReadFlg; +BOOL bUart0WriteFlg; +BOOL bUart0SndAckFlg; //UART已经发送ACK给主机 + +BOOL bUart1ReadFlg; +BOOL bUart1WriteFlg; +BOOL bUart1SndAckFlg; //UART已经发送ACK给主机 + +BOOL bUart2ReadFlg; +BOOL bUart2WriteFlg; +BOOL bUart2SndAckFlg; //UART已经发送ACK给主机 + +U8 xdata ucSubClassID; +U8 xdata ucUart0Buf[150] _at_ 0x400; //UART接收数据的BUF +U8 xdata ucUart0BufPT; //UART数据指针 +U8 xdata ucUart0SndLength; //UART数据长度 +U8 xdata ucUart0TimeoutCnt; //UART通讯定时器计数 + +U8 xdata ucUart1Buf[150] _at_ 0x4a0; //UART接收数据的BUF +U8 xdata ucUart1BufPT; //UART数据指针 +U8 xdata ucUart1SndLength; //UART数据长度 +U8 xdata ucUart1TimeoutCnt; //UART通讯定时器计数 + +U8 xdata ucUart2Buf[150] _at_ 0x540; //UART接收数据的BUF +U8 xdata ucUart2BufPT; //UART数据指针 +U8 xdata ucUart2SndLength; //UART数据长度 +U8 xdata ucUart2TimeoutCnt; //UART通讯定时器计数 + +U16 xdata uiReceCheckSum; //帧头判断正确 +U8 xdata ucUartErrCode; + + +/******************************************************************************* +Function: Page1WrRdFuncTable() +Description: +Input: NULL +Output: NULL +Others: NULL +*******************************************************************************/ +U16 code Page1WrRdFuncTable[18]= +{ + SYS_PARA_MAP_ADDR, //SubClassID 0x00 + SYSINFO_MAP_ADDR, //0x01 + CHG_PARA_MAP_ADDR, //0x02 + DSG_PARA_MAP_ADDR, //0x03 + 0x00, //0x04 + DSG_PWM_PARA_MAP_ADDR, //0x05 + CHG_TEMP_PARA_MAP_ADDR, //0x06 + DSG_TEMP_PARA_MAP_ADDR, //0x07 + BAL_PARA_MAP_ADDR, //0x08 + SOC_PARA_MAP_ADDR, //0x09 + AFE_PARA_MAP_ADDR, //0x0A + CALI_PARA_MAP_ADDR, //0x0B + DataflashCheck_Map_ADDR, //0x0C + 0x00, //0x0D + 0x00, //0x0E + 0x00, //0x0F + 0x00, //0x10 + 0x00, //0x11 +}; + +/******************************************************************************* +Function: Page2WrRdFuncTable() +Description: +Input: NULL +Output: NULL +Others: NULL +*******************************************************************************/ +U16 code Page2WrRdFuncTable[18]= +{ + SYS_PARA_MAP_ADDR+32, //SubClassID 0x00 + SYSINFO_MAP_ADDR+32, //0x01 + CHG_PARA_MAP_ADDR+32, //0x02 + DSG_PARA_MAP_ADDR+32, //0x03 + 0x00, //0x04 + DSG_PWM_PARA_MAP_ADDR+32, //0x05 + CHG_TEMP_PARA_MAP_ADDR+32, //0x06 + DSG_TEMP_PARA_MAP_ADDR+32, //0x07 + BAL_PARA_MAP_ADDR+32, //0x08 + SOC_PARA_MAP_ADDR+32, //0x09 + AFE_PARA_MAP_ADDR+32, //0x0A + CALI_PARA_MAP_ADDR+32, //0x0B + DataflashCheck_Map_ADDR+32, //0x0C + 0x00, //0x0D + 0x00, //0x0E + 0x00, //0x0F + 0x00, //0x10 + 0x00, //0x11 +}; + +#if (UART0_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0Handshake +* 参 数: 无 +* 返回值: 无 +* 描 述: UART0通讯握手协议 +*************************************************************************************************/ +void Uart0Handshake(void) +{ + if(ucUart0Buf[2] == 0x00) //Testing equipment is properly + { + Uart0SendAck(); + } + else + { + Uart0SendNack(); + } +} +#endif + +#if (UART1_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart1Handshake +* 参 数: 无 +* 返回值: 无 +* 描 述: UART1通讯握手协议 +*************************************************************************************************/ +void Uart1Handshake(void) +{ + if(ucUart1Buf[2] == 0x00) //Testing equipment is properly + { + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } +} +#endif + +#if (UART2_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart2Handshake +* 参 数: 无 +* 返回值: 无 +* 描 述: UART2通讯握手协议 +*************************************************************************************************/ +void Uart2Handshake(void) +{ + if(ucUart2Buf[2] == 0x00) //Testing equipment is properly + { + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } +} +#endif + +#if (UART0_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0WriteInfo +* 参 数: ptr:数据需要写入的起始地址 +* 返回值: 无 +* 描 述: UART0写数据 +*************************************************************************************************/ +void Uart0WriteInfo(U8 xdata *ptr) +{ + U8 i; + + if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + { + for(i=0; i 140) + { + ucUart0Buf[UART_LENGTH] = 0; + } + for(i=0; i 140) + { + ucUart1Buf[UART_LENGTH] = 0; + } + for(i=0; i 140) + { + ucUart2Buf[UART_LENGTH] = 0; + } + for(i=0; i= 128) + { + bE2PProcessFlg = 1; + bUart0E2PRdData = 1; + } + else if(ucUart0Buf[UART_CMD_NO] == SUB_PAGE1 && ucSubClassID == RTC_SUBID) + { + bE2PProcessFlg = 1; + bUart0RTCRdTime = 1; + } + else if(ucUart0Buf[UART_CMD_NO] == SUB_PAGE1) + { + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart0ReadInfo(rdaddr); + } + else if(ucUart0Buf[UART_CMD_NO] == SUB_PAGE2) + { + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart0ReadInfo(rdaddr); + } + break; + } +} +#endif + +#if (UART1_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0RdCmdProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: UART读命令处理函数 +*************************************************************************************************/ +void Uart1RdCmdProcess(void) +{ + U8 xdata *rdaddr; + + switch(ucUart1Buf[UART_CMD_NO]) + { + case CELL1: + case CELL2: + case CELL3: + case CELL4: + case CELL5: + case CELL6: + case CELL7: + case CELL8: + case CELL9: + case CELL10: + Uart1ReadInfo((U8 xdata *)&Info.uiVCell[ucUart1Buf[UART_CMD_NO]-1]); + break; + + case TOTAL_VOLTAGE: + Uart1ReadInfo((U8 xdata *)&Info.ulVoltage); + break; + + case CADC_CURRENT: + Uart1ReadInfo((U8 xdata *)&Info.slCurr); + break; + + case EXT_TEMP1: + Uart1ReadInfo((U8 xdata *)&Info.uiTS[0]); + break; + + case EXT_TEMP2: + Uart1ReadInfo((U8 xdata *)&Info.uiTS[1]); + break; + + case DIE_TEMP1: + Uart1ReadInfo((U8 xdata *)&Info.uiICTempe[0]); + break; + + case DIE_TEMP2: + Uart1ReadInfo((U8 xdata *)&Info.uiICTempe[1]); + break; + + case FULL_CHG_CAP: + Uart1ReadInfo((U8 xdata *)&Info.ulFCC); + break; + + case REMAIN_CAP: + Uart1ReadInfo((U8 xdata *)&Info.ulRC); + break; + + case R_SOC: + Uart1ReadInfo((U8 xdata *)&Info.uiRSOC); + break; + + case CYCLE_COUNT: + Uart1ReadInfo((U8 xdata *)&Info.uiCycleCount); + break; + + case PACK_STATUS: + Uart1ReadInfo((U8 xdata *)&Info.uiPackStatus); + break; + + case BATTERY_STATUS: + Uart1ReadInfo((U8 xdata *)&Info.uiBatStatus); + break; + + case PACK_CONFIG: + Uart1ReadInfo((U8 xdata *)&Info.uiPackConfig); + break; + + case MANUFACTURE_COMMAND: + Uart1ReadInfo((U8 xdata *)&Info.uiManuCommand); + break; + + default: //read extern EEPRom data + if(ucUart1Buf[UART_LENGTH] >= 128) + { + bE2PProcessFlg = 1; + bUart1E2PRdData = 1; + } + else if(ucUart1Buf[UART_CMD_NO] == SUB_PAGE1 && ucSubClassID == RTC_SUBID) + { + bE2PProcessFlg = 1; + bUart1RTCRdTime = 1; + } + else if(ucUart1Buf[UART_CMD_NO] == SUB_PAGE1) + { + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart1ReadInfo(rdaddr); + } + else if(ucUart1Buf[UART_CMD_NO] == SUB_PAGE2) + { + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart1ReadInfo(rdaddr); + } + break; + } +} +#endif + +#if (UART2_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0RdCmdProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: UART读命令处理函数 +*************************************************************************************************/ +void Uart2RdCmdProcess(void) +{ + U8 xdata *rdaddr; + + switch(ucUart2Buf[UART_CMD_NO]) + { + case CELL1: + case CELL2: + case CELL3: + case CELL4: + case CELL5: + case CELL6: + case CELL7: + case CELL8: + case CELL9: + case CELL10: + Uart2ReadInfo((U8 xdata *)&Info.uiVCell[ucUart2Buf[UART_CMD_NO]-1]); + break; + + case TOTAL_VOLTAGE: + Uart2ReadInfo((U8 xdata *)&Info.ulVoltage); + break; + + case CADC_CURRENT: + Uart2ReadInfo((U8 xdata *)&Info.slCurr); + break; + + case EXT_TEMP1: + Uart2ReadInfo((U8 xdata *)&Info.uiTS[0]); + break; + + case EXT_TEMP2: + Uart2ReadInfo((U8 xdata *)&Info.uiTS[1]); + break; + + case DIE_TEMP1: + Uart2ReadInfo((U8 xdata *)&Info.uiICTempe[0]); + break; + + case DIE_TEMP2: + Uart2ReadInfo((U8 xdata *)&Info.uiICTempe[1]); + break; + + case FULL_CHG_CAP: + Uart2ReadInfo((U8 xdata *)&Info.ulFCC); + break; + + case REMAIN_CAP: + Uart2ReadInfo((U8 xdata *)&Info.ulRC); + break; + + case R_SOC: + Uart2ReadInfo((U8 xdata *)&Info.uiRSOC); + break; + + case CYCLE_COUNT: + Uart2ReadInfo((U8 xdata *)&Info.uiCycleCount); + break; + + case PACK_STATUS: + Uart2ReadInfo((U8 xdata *)&Info.uiPackStatus); + break; + + case BATTERY_STATUS: + Uart2ReadInfo((U8 xdata *)&Info.uiBatStatus); + break; + + case PACK_CONFIG: + Uart2ReadInfo((U8 xdata *)&Info.uiPackConfig); + break; + + case MANUFACTURE_COMMAND: + Uart2ReadInfo((U8 xdata *)&Info.uiManuCommand); + break; + + default: //read extern EEPRom data + if(ucUart2Buf[UART_LENGTH] >= 128) + { + bE2PProcessFlg = 1; + bUart2E2PRdData = 1; + } + else if(ucUart2Buf[UART_CMD_NO] == SUB_PAGE1 && ucSubClassID == RTC_SUBID) + { + bE2PProcessFlg = 1; + bUart2RTCRdTime = 1; + } + else if(ucUart2Buf[UART_CMD_NO] == SUB_PAGE1) + { + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart2ReadInfo(rdaddr); + } + else if(ucUart2Buf[UART_CMD_NO] == SUB_PAGE2) + { + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart2ReadInfo(rdaddr); + } + break; + } +} +#endif + +#if (UART0_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0CaliCurrent +* 参 数: 无 +* 返回值: 无 +* 描 述: UART0通讯发送校准总电压的数据 +*************************************************************************************************/ +void Uart0CaliVoltage(void) +{ + if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + { + ulExtVPack = ((U16)ucUart0Buf[3]<<8)|ucUart0Buf[4]; + + if(!ulExtVPack) + { + Uart0SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x01; + Uart0SendAck(); + } + } + else + { + Uart0SendNack(); + } +} +#endif + +#if (UART1_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart1CaliCurrent +* 参 数: 无 +* 返回值: 无 +* 描 述: UART1通讯发送校准总电压的数据 +*************************************************************************************************/ +void Uart1CaliVoltage(void) +{ + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + ulExtVPack = ((U16)ucUart1Buf[3]<<8)|ucUart1Buf[4]; + + if(!ulExtVPack) + { + Uart1SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x01; + Uart1SendAck(); + } + } + else + { + Uart1SendNack(); + } +} +#endif + +#if (UART2_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart2CaliCurrent +* 参 数: 无 +* 返回值: 无 +* 描 述: UART2通讯发送校准总电压的数据 +*************************************************************************************************/ +void Uart2CaliVoltage(void) +{ + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + ulExtVPack = ((U16)ucUart2Buf[3]<<8)|ucUart2Buf[4]; + + if(!ulExtVPack) + { + Uart2SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x01; + Uart2SendAck(); + } + } + else + { + Uart2SendNack(); + } +} +#endif + +#if (UART0_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0CaliCurrent、Uart0CaliCurOffset +* 参 数: 无 +* 返回值: 无 +* 描 述: UART0通讯发送校准电流采集增益&Offset的数据 +*************************************************************************************************/ +void Uart0CaliCurrent(void) +{ + if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + { + slExtCur = ((U32)ucUart0Buf[3]<<24) + | ((U32)ucUart0Buf[4]<<16) + | ((U32)ucUart0Buf[5]<<8) + | ((U32)ucUart0Buf[6]); + + if((!AFE.siCurr) || (!slExtCur)) + { + Uart0SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x10; + Uart0SendAck(); + } + } + else + { + Uart0SendNack(); + } +} + + +void Uart0CaliCurOffset(void) +{ + if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration offset Current + ucExtcaliSwitch1 |= 0x20; + + Uart0SendAck(); + } + else + { + Uart0SendNack(); + } +} +#endif + +#if (UART1_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart1CaliCurrent、Uart1CaliCurOffset +* 参 数: 无 +* 返回值: 无 +* 描 述: UART1通讯发送校准电流采集增益&Offset的数据 +*************************************************************************************************/ +void Uart1CaliCurrent(void) +{ + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + slExtCur = ((U32)ucUart1Buf[3]<<24) + | ((U32)ucUart1Buf[4]<<16) + | ((U32)ucUart1Buf[5]<<8) + | ((U32)ucUart1Buf[6]); + + if((!AFE.siCurr) || (!slExtCur)) + { + Uart1SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x10; + Uart1SendAck(); + } + } + else + { + Uart1SendNack(); + } +} + + +void Uart1CaliCurOffset(void) +{ + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration offset Current + ucExtcaliSwitch1 |= 0x20; + + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } +} +#endif + +#if (UART2_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart2CaliCurrent、Uart2CaliCurOffset +* 参 数: 无 +* 返回值: 无 +* 描 述: UART2通讯发送校准电流采集增益&Offset的数据 +*************************************************************************************************/ +void Uart2CaliCurrent(void) +{ + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + slExtCur = ((U32)ucUart2Buf[3]<<24) + | ((U32)ucUart2Buf[4]<<16) + | ((U32)ucUart2Buf[5]<<8) + | ((U32)ucUart2Buf[6]); + + if((!AFE.siCurr) || (!slExtCur)) + { + Uart2SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x10; + Uart2SendAck(); + } + } + else + { + Uart2SendNack(); + } +} + + +void Uart2CaliCurOffset(void) +{ + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration offset Current + ucExtcaliSwitch1 |= 0x20; + + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } +} +#endif + +#if (UART0_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0CaliTS1、Uart0CaliTS2 +* 参 数: 无 +* 返回值: 无 +* 描 述: UART0通讯发送校准TS1/TS2数据 +*************************************************************************************************/ +void Uart0CaliTS1(void) +{ + if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS1 + uiExtTemp1 = ((U16)ucUart0Buf[3]<<8)|ucUart0Buf[4]; + ucExtcaliSwitch1 |= 0x04; + + Uart0SendAck(); + } + else + { + Uart0SendNack(); + } +} + + +void Uart0CaliTS2(void) +{ + if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS2 + uiExtTemp2 = ((U16)ucUart0Buf[3]<<8)|ucUart0Buf[4]; + ucExtcaliSwitch1 |= 0x08; + + Uart0SendAck(); + } + else + { + Uart0SendNack(); + } +} +#endif + +#if (UART1_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart1CaliTS1、Uart1CaliTS2 +* 参 数: 无 +* 返回值: 无 +* 描 述: UART1通讯发送校准TS1/TS2数据 +*************************************************************************************************/ +void Uart1CaliTS1(void) +{ + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS1 + uiExtTemp1 = ((U16)ucUart1Buf[3]<<8)|ucUart1Buf[4]; + ucExtcaliSwitch1 |= 0x04; + + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } +} + + +void Uart1CaliTS2(void) +{ + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS2 + uiExtTemp2 = ((U16)ucUart1Buf[3]<<8)|ucUart1Buf[4]; + ucExtcaliSwitch1 |= 0x08; + + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } +} +#endif + +#if (UART2_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart2CaliTS1、Uart2CaliTS2 +* 参 数: 无 +* 返回值: 无 +* 描 述: UART2通讯发送校准TS1/TS2数据 +*************************************************************************************************/ +void Uart2CaliTS1(void) +{ + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS1 + uiExtTemp1 = ((U16)ucUart2Buf[3]<<8)|ucUart2Buf[4]; + ucExtcaliSwitch1 |= 0x04; + + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } +} + + +void Uart2CaliTS2(void) +{ + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS2 + uiExtTemp2 = ((U16)ucUart2Buf[3]<<8)|ucUart2Buf[4]; + ucExtcaliSwitch1 |= 0x08; + + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } +} +#endif + +#if (UART0_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0CaliRTC +* 参 数: 无 +* 返回值: 无 +* 描 述: UART0通讯发送校准RTC数据 +*************************************************************************************************/ +void Uart0CaliRTC(void) +{ + U8 i; + + if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + { + for(i=0; i<7; i++) + { + ucExtRTC[i] = ucUart0Buf[3+i]; + } + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x80; + Uart0SendAck(); + } + else + { + Uart0SendNack(); + } +} +#endif + +#if (UART1_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart1CaliRTC +* 参 数: 无 +* 返回值: 无 +* 描 述: UART1通讯发送校准RTC数据 +*************************************************************************************************/ +void Uart1CaliRTC(void) +{ + U8 i; + + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + for(i=0; i<7; i++) + { + ucExtRTC[i] = ucUart1Buf[3+i]; + } + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x80; + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } +} +#endif + +#if (UART2_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart2CaliRTC +* 参 数: 无 +* 返回值: 无 +* 描 述: UART2通讯发送校准RTC数据 +*************************************************************************************************/ +void Uart2CaliRTC(void) +{ + U8 i; + + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + for(i=0; i<7; i++) + { + ucExtRTC[i] = ucUart2Buf[3+i]; + } + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x80; + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } +} +#endif + +#if (UART0_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0WrCmdProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: UART0写命令处理函数 +*************************************************************************************************/ +void Uart0WrCmdProcess(void) +{ + U8 xdata *rdaddr; + switch(ucUart0Buf[UART_CMD_NO]) + { + case MANUFACTURE_COMMAND: + Uart0WriteManufacture(); + break; + case DATA_FLASH_COMMAND: + Uart0ReadSubClassID(); //accept command is dataflashcommand 0x77 + break; + case CALI_CUR_COMMAND: + Uart0CaliCurrent(); + break; + case CALI_VOL_COMMAND: + Uart0CaliVoltage(); + break; + case CALI_ZERO_CUR_COMMAND: + Uart0CaliCurOffset(); + break; + case CALI_TS1_COMMAND: + Uart0CaliTS1(); + break; + case CALI_TS2_COMMAND: + Uart0CaliTS2(); + break; + + case CALI_RTC_COMMAND: + Uart0CaliRTC(); + break; + case SUB_PAGE1: + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart0WriteInfo(rdaddr); + break; + case SUB_PAGE2: + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart0WriteInfo(rdaddr); + break; + + case CMD_E2PROM_ERASE: + if(ucUart0Buf[UART_DATA] == 0x55) //Testing equipment is properly + { + bE2PProcessFlg = 1; + bE2PErase = 1; + Uart0SendAck(); + } + else + { + Uart0SendNack(); + } + break; + } +} +#endif + +#if (UART1_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart1WrCmdProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: UART1写命令处理函数 +*************************************************************************************************/ +void Uart1WrCmdProcess(void) +{ + U8 xdata *rdaddr; + switch(ucUart1Buf[UART_CMD_NO]) + { + case MANUFACTURE_COMMAND: + Uart1WriteManufacture(); + break; + case DATA_FLASH_COMMAND: + Uart1ReadSubClassID(); //accept command is dataflashcommand 0x77 + break; + case CALI_CUR_COMMAND: + Uart1CaliCurrent(); + break; + case CALI_VOL_COMMAND: + Uart1CaliVoltage(); + break; + case CALI_ZERO_CUR_COMMAND: + Uart1CaliCurOffset(); + break; + case CALI_TS1_COMMAND: + Uart1CaliTS1(); + break; + case CALI_TS2_COMMAND: + Uart1CaliTS2(); + break; + + case CALI_RTC_COMMAND: + Uart1CaliRTC(); + break; + case SUB_PAGE1: + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart1WriteInfo(rdaddr); + break; + case SUB_PAGE2: + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart1WriteInfo(rdaddr); + break; + + case CMD_E2PROM_ERASE: + if(ucUart1Buf[UART_DATA] == 0x55) //Testing equipment is properly + { + bE2PProcessFlg = 1; + bE2PErase = 1; + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } + break; + } +} +#endif + +#if (UART2_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart2WrCmdProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: UART2写命令处理函数 +*************************************************************************************************/ +void Uart2WrCmdProcess(void) +{ + U8 xdata *rdaddr; + switch(ucUart2Buf[UART_CMD_NO]) + { + case MANUFACTURE_COMMAND: + Uart2WriteManufacture(); + break; + case DATA_FLASH_COMMAND: + Uart2ReadSubClassID(); //accept command is dataflashcommand 0x77 + break; + case CALI_CUR_COMMAND: + Uart2CaliCurrent(); + break; + case CALI_VOL_COMMAND: + Uart2CaliVoltage(); + break; + case CALI_ZERO_CUR_COMMAND: + Uart2CaliCurOffset(); + break; + case CALI_TS1_COMMAND: + Uart2CaliTS1(); + break; + case CALI_TS2_COMMAND: + Uart2CaliTS2(); + break; + + case CALI_RTC_COMMAND: + Uart2CaliRTC(); + break; + case SUB_PAGE1: + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart2WriteInfo(rdaddr); + break; + case SUB_PAGE2: + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart2WriteInfo(rdaddr); + break; + + case CMD_E2PROM_ERASE: + if(ucUart2Buf[UART_DATA] == 0x55) //Testing equipment is properly + { + bE2PProcessFlg = 1; + bE2PErase = 1; + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } + break; + } +} +#endif + +#if (UART0_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart0IapCheckHandshake +* 参 数: 无 +* 返回值: 无 +* 描 述: IAP和ISP握手协议 +*************************************************************************************************/ +void Uart0IapCheckHandshake(void) +{ + U8 i, databak; + U16 checksum = 0; + + if(ucUart0BufPT == 2) + { + if(ucUart0Buf[HEARD2] != 0xA5) + { + ucUart0BufPT = 0; + } + else + { + uiReceCheckSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + if(ucUart0BufPT < (ucUart0Buf[LENGTH]+9)) + { + if(ucUart0BufPT <= (ucUart0Buf[LENGTH]+7)) + { + uiReceCheckSum += ucUart0Buf[ucUart0BufPT-1]; + } + if(ucUart0BufPT == (TARGET+1)) //检查ID + { + if(ucUart0Buf[TARGET] != IAP_BMSID) + { + ucUart0BufPT = 0; + } + } + else if(ucUart0BufPT == (COMMAND+1)) //检查COMMAND + { + if((ucUart0Buf[COMMAND] != IAP_CMD_HANDSHAKE)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + ucUart0BufPT = 0; + if(uiReceCheckSum != ((ucUart0Buf[ucUart0Buf[LENGTH]+8]<<8) + ucUart0Buf[ucUart0Buf[LENGTH]+7])) + { + ucUartErrCode |= IAPERROR_CHECKSUM; + } + + if(ucUartErrCode != 0) //如果有错误代码则不执行命令处理 + { + ucUart0Buf[INDEXES] = ucUartErrCode; + } + else + { + bISPFlg = 1; //跳转到BOOT区 + ucUart0Buf[INDEXES] = 0; + } + + ucUart0Buf[LENGTH] = 0; + ucUart0Buf[COMMAND] = 0x0B; + + databak = ucUart0Buf[SOURCE]; //交换源ID和目标ID + ucUart0Buf[SOURCE] = ucUart0Buf[TARGET]; + ucUart0Buf[TARGET] = databak; + + for(i=2; i<(ucUart0Buf[LENGTH]+7); i++) + { + checksum += ucUart0Buf[i]; + } + + ucUart0Buf[7+ucUart0Buf[LENGTH]] = checksum%256; + ucUart0Buf[8+ucUart0Buf[LENGTH]] = checksum/256; + + Uart0SendAck(); + } + } +} +#endif + +#if (UART1_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart1IapCheckHandshake +* 参 数: 无 +* 返回值: 无 +* 描 述: IAP和ISP握手协议 +*************************************************************************************************/ +void Uart1IapCheckHandshake(void) +{ + U8 i, databak; + U16 checksum = 0; + + if(ucUart1BufPT == 2) + { + if(ucUart1Buf[HEARD2] != 0xA5) + { + ucUart1BufPT = 0; + } + else + { + uiReceCheckSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + if(ucUart1BufPT < (ucUart1Buf[LENGTH]+9)) + { + if(ucUart1BufPT <= (ucUart1Buf[LENGTH]+7)) + { + uiReceCheckSum += ucUart1Buf[ucUart1BufPT-1]; + } + if(ucUart1BufPT == (TARGET+1)) //检查ID + { + if(ucUart1Buf[TARGET] != IAP_BMSID) + { + ucUart1BufPT = 0; + } + } + else if(ucUart1BufPT == (COMMAND+1)) //检查COMMAND + { + if((ucUart1Buf[COMMAND] != IAP_CMD_HANDSHAKE)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + ucUart1BufPT = 0; + if(uiReceCheckSum != ((ucUart1Buf[ucUart1Buf[LENGTH]+8]<<8) + ucUart1Buf[ucUart1Buf[LENGTH]+7])) + { + ucUartErrCode |= IAPERROR_CHECKSUM; + } + + if(ucUartErrCode != 0) //如果有错误代码则不执行命令处理 + { + ucUart1Buf[INDEXES] = ucUartErrCode; + } + else + { + bISPFlg = 1; //跳转到BOOT区 + ucUart1Buf[INDEXES] = 0; + } + + ucUart1Buf[LENGTH] = 0; + ucUart1Buf[COMMAND] = 0x0B; + + databak = ucUart1Buf[SOURCE]; //交换源ID和目标ID + ucUart1Buf[SOURCE] = ucUart1Buf[TARGET]; + ucUart1Buf[TARGET] = databak; + + for(i=2; i<(ucUart1Buf[LENGTH]+7); i++) + { + checksum += ucUart1Buf[i]; + } + + ucUart1Buf[7+ucUart1Buf[LENGTH]] = checksum%256; + ucUart1Buf[8+ucUart1Buf[LENGTH]] = checksum/256; + + Uart1SendAck(); + } + } +} +#endif + +#if (UART2_DEFINE != 0) +/************************************************************************************************* +* 函数名: Uart2IapCheckHandshake +* 参 数: 无 +* 返回值: 无 +* 描 述: IAP和ISP握手协议 +*************************************************************************************************/ +void Uart2IapCheckHandshake(void) +{ + U8 i, databak; + U16 checksum = 0; + + if(ucUart2BufPT == 2) + { + if(ucUart2Buf[HEARD2] != 0xA5) + { + ucUart2BufPT = 0; + } + else + { + uiReceCheckSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + if(ucUart2BufPT < (ucUart2Buf[LENGTH]+9)) + { + if(ucUart2BufPT <= (ucUart2Buf[LENGTH]+7)) + { + uiReceCheckSum += ucUart2Buf[ucUart2BufPT-1]; + } + if(ucUart2BufPT == (TARGET+1)) //检查ID + { + if(ucUart2Buf[TARGET] != IAP_BMSID) + { + ucUart2BufPT = 0; + } + } + else if(ucUart2BufPT == (COMMAND+1)) //检查COMMAND + { + if((ucUart2Buf[COMMAND] != IAP_CMD_HANDSHAKE)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + ucUart2BufPT = 0; + if(uiReceCheckSum != ((ucUart2Buf[ucUart2Buf[LENGTH]+8]<<8) + ucUart2Buf[ucUart2Buf[LENGTH]+7])) + { + ucUartErrCode |= IAPERROR_CHECKSUM; + } + + if(ucUartErrCode != 0) //如果有错误代码则不执行命令处理 + { + ucUart2Buf[INDEXES] = ucUartErrCode; + } + else + { + bISPFlg = 1; //跳转到BOOT区 + ucUart2Buf[INDEXES] = 0; + } + + ucUart2Buf[LENGTH] = 0; + ucUart2Buf[COMMAND] = 0x0B; + + databak = ucUart2Buf[SOURCE]; //交换源ID和目标ID + ucUart2Buf[SOURCE] = ucUart2Buf[TARGET]; + ucUart2Buf[TARGET] = databak; + + for(i=2; i<(ucUart2Buf[LENGTH]+7); i++) + { + checksum += ucUart2Buf[i]; + } + + ucUart2Buf[7+ucUart2Buf[LENGTH]] = checksum%256; + ucUart2Buf[8+ucUart2Buf[LENGTH]] = checksum/256; + + Uart2SendAck(); + } + } +} +#endif + +#if (UART0_DEFINE != 0) +/************************************************************************************************* +* 函数名: InterruptUart0AppRx +* 参 数: RxData:Uart0接收的数据,从SBUF0获取 +* 返回值: 无 +* 描 述: UART接收中断服务程序接口,中断处理函数会调用该函数 +ucUart0Buf[0]--Slave Addr +ucUart0Buf[1]--CMD No. +ucUart0Buf[2]--Offset +ucUart0Buf[3]--Data Length +ucUart0Buf[4...]--Data +*************************************************************************************************/ +void InterruptUart0AppRx(U8 RxData) +{ + ucUart0Buf[ucUart0BufPT] = RxData; + ucUart0BufPT++; + if(ucUart0BufPT >= 140) + { + ucUart0BufPT = 0; + } + if(ucUart0BufPT == 1) + { + if((ucUart0Buf[UART_SLAVE_ADDR]&0xFE) == SADDR) //接收的第一个字节是否和UART地址匹配 + { + if((ucUart0Buf[UART_SLAVE_ADDR]&0x01)==0) //bit7是R/W标志;0--R, 1--W + { + bUart0ReadFlg = 1; + bUart0WriteFlg = 0; + } + else + { + bUart0WriteFlg = 1; + bUart0ReadFlg = 0; + } + } + else if(ucUart0Buf[HEARD1] != 0x5A) //判断是否为IAP/ISP的起始帧 + { + ucUart0BufPT = 0; //如果帧头错误,则复位指针 + } + } + + if(bUart0ReadFlg) + { + if(ucUart0BufPT==3) + { + Uart0RdCmdProcess(); //Read the command process + } + } + else if(bUart0WriteFlg) + { + if(ucUart0BufPT > (ucUart0Buf[UART_LENGTH]+3)) //If a write operation, and complete all the data has been received + { + Uart0WrCmdProcess(); //Write the command peocess + bUart0WriteFlg = 0; //PC write MCU communiaction over + ucUart0BufPT = 0; + } + } + else //非读非写操作时,即为ISP或者IAP的begin命令 + { + Uart0IapCheckHandshake(); + } + bUart0SndAckFlg = 0; + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + ucUart0TimeoutCnt = 0; +} + + +/************************************************************************************************* +* 函数名: InterruptUart0AppTx +* 参 数: 无 +* 返回值: 无 +* 描 述: UART0发送中断服务程序接口,中断处理函数会调用该函数 +*************************************************************************************************/ +void InterruptUart0AppTx(void) +{ + if((ucUart0Buf[HEARD1] == 0x5A) && (ucUart0Buf[HEARD2] == 0xA5) || bISPFlg) + { + if(ucUart0BufPT >= (ucUart0Buf[LENGTH]+8)) + { + Uart0RxEn(); //Allow UART receive data + ucUart0BufPT = 0; + bUart0ReadFlg = 0; //PC read MCU communication over + ucUart0Buf[0] = 0; + ucUart0Buf[1] = 0; + ucUart0Buf[2] = 0; + ucUart0Buf[3] = 0; + bUart0SndAckFlg = 1; + } + else + { + ucUart0BufPT++; + Uart0TxEn(ucUart0Buf[ucUart0BufPT]); //20220620 + } + } + else if((ucUart0BufPT==0) || (ucUart0BufPT>=ucUart0Buf[UART_LENGTH]+3)) + { + Uart0RxEn(); //UART允许接收数据 + ucUart0BufPT = 0; + bUart0ReadFlg = 0; + ucUart0Buf[0] = 0; + ucUart0Buf[1] = 0; + ucUart0Buf[2] = 0; + ucUart0Buf[3] = 0; + bUart0SndAckFlg = 1; //UART已发送过数据,主要用于需要等待发送ACK才能进一步操作的功能 + } + else + { + ucUart0BufPT++; + Uart0TxEn(ucUart0Buf[ucUart0BufPT]); + } + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + ucUart0TimeoutCnt = 0; +} + + +/************************************************************************************************* +* 函数名: InterruptUart0AppTx +* 参 数: 无 +* 返回值: 无 +* 描 述: UART0发送中断服务程序接口,中断处理函数会调用该函数 +*************************************************************************************************/ +void Uart0Check(void) +{ + if(++ucUart0TimeoutCnt >= 4) //如果4*50mS没有UART通讯,则复位指针向量,并切换到接收模式 + { + ucUart0TimeoutCnt = 0; + ucUart0BufPT = 0; + Uart0RxEn(); //UART允许接收数据 + } +} +#endif + +#if (UART1_DEFINE != 0) +/************************************************************************************************* +* 函数名: InterruptUart1AppRx +* 参 数: RxData:Uart1接收的数据,从SBUF1获取 +* 返回值: 无 +* 描 述: UART1接收中断服务程序接口,中断处理函数会调用该函数 +ucUart1Buf[0]--Slave Addr +ucUart1Buf[1]--CMD No. +ucUart1Buf[2]--Offset +ucUart1Buf[3]--Data Length +ucUart1Buf[4...]--Data +*************************************************************************************************/ +void InterruptUart1AppRx(U8 RxData) +{ + ucUart1Buf[ucUart1BufPT] = RxData; + ucUart1BufPT++; + if(ucUart1BufPT >= 140) + { + ucUart1BufPT = 0; + } + if(ucUart1BufPT == 1) + { + McuBank1Sel(); + if((ucUart1Buf[UART_SLAVE_ADDR]&0xFE) == SADDR1) //接收的第一个字节是否和UART地址匹配 + { + McuBank0Sel(); + if((ucUart1Buf[UART_SLAVE_ADDR]&0x01)==0) //bit7是R/W标志;0--R, 1--W + { + bUart1ReadFlg = 1; + bUart1WriteFlg = 0; + } + else + { + bUart1WriteFlg = 1; + bUart1ReadFlg = 0; + } + } + else if(ucUart1Buf[HEARD1] != 0x5A) //判断是否为IAP/ISP的起始帧 + { + ucUart1BufPT = 0; //如果帧头错误,则复位指针 + } + } + + if(bUart1ReadFlg) + { + if(ucUart1BufPT==3) + { + Uart1RdCmdProcess(); //Read the command process + } + } + else if (bUart1WriteFlg) + { + if(ucUart1BufPT > (ucUart1Buf[UART_LENGTH]+3)) //If a write operation, and complete all the data has been received + { + Uart1WrCmdProcess(); //Write the command peocess + bUart1WriteFlg = 0; //PC write MCU communiaction over + ucUart1BufPT = 0; + } + } + else //非读非写操作时,即为ISP或者IAP的begin命令 + { + Uart1IapCheckHandshake(); + } + bUart1SndAckFlg = 0; + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + ucUart1TimeoutCnt = 0; +} + + +/************************************************************************************************* +* 函数名: InterruptUart1AppTx +* 参 数: 无 +* 返回值: 无 +* 描 述: UART1发送中断服务程序接口,中断处理函数会调用该函数 +*************************************************************************************************/ +void InterruptUart1AppTx(void) +{ + if((ucUart1Buf[HEARD1] == 0x5A) && (ucUart1Buf[HEARD2] == 0xA5) || bISPFlg) + { + if(ucUart1BufPT >= (ucUart1Buf[LENGTH]+8)) + { + Uart1RxEn(); //Allow UART receive data + ucUart1BufPT = 0; + bUart1ReadFlg = 0; //PC read MCU communication over + ucUart1Buf[0] = 0; + ucUart1Buf[1] = 0; + ucUart1Buf[2] = 0; + ucUart1Buf[3] = 0; + bUart1SndAckFlg = 1; + } + else + { + ucUart1BufPT++; + Uart1TxEn(ucUart1Buf[ucUart1BufPT]); //20220620 + } + } + else if((ucUart1BufPT==0) || (ucUart1BufPT>=ucUart1Buf[UART_LENGTH]+3)) + { + Uart1RxEn(); //UART允许接收数据 + ucUart1BufPT = 0; + bUart1ReadFlg = 0; + ucUart1Buf[0] = 0; + ucUart1Buf[1] = 0; + ucUart1Buf[2] = 0; + ucUart1Buf[3] = 0; + bUart1SndAckFlg = 1; //UART已发送过数据,主要用于需要等待发送ACK才能进一步操作的功能 + } + else + { + ucUart1BufPT++; + Uart1TxEn(ucUart1Buf[ucUart1BufPT]); + } + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + ucUart1TimeoutCnt = 0; +} + + +/************************************************************************************************* +* 函数名: InterruptUart1AppTx +* 参 数: 无 +* 返回值: 无 +* 描 述: UART1发送中断服务程序接口,中断处理函数会调用该函数 +*************************************************************************************************/ +void Uart1Check(void) +{ + if(++ucUart1TimeoutCnt >= 4) //如果4*50mS没有UART通讯,则复位指针向量,并切换到接收模式 + { + ucUart1TimeoutCnt = 0; + ucUart1BufPT = 0; + Uart1RxEn(); //UART允许接收数据 + } +} +#endif + +#if (UART2_DEFINE != 0) +/************************************************************************************************* +* 函数名: InterruptUart2AppRx +* 参 数: RxData:Uart2接收的数据,从SBUF2获取 +* 返回值: 无 +* 描 述: UART2接收中断服务程序接口,中断处理函数会调用该函数 +ucUart2Buf[0]--Slave Addr +ucUart2Buf[1]--CMD No. +ucUart2Buf[2]--Offset +ucUart2Buf[3]--Data Length +ucUart2Buf[4...]--Data +*************************************************************************************************/ +void InterruptUart2AppRx(U8 RxData) +{ + ucUart2Buf[ucUart2BufPT] = RxData; + ucUart2BufPT++; + if(ucUart2BufPT >= 140) + { + ucUart2BufPT = 0; + } + if(ucUart2BufPT == 1) + { + McuBank1Sel(); + if((ucUart2Buf[UART_SLAVE_ADDR]&0xFE) == SADDR2) //接收的第一个字节是否和UART地址匹配 + { + McuBank0Sel(); + if((ucUart2Buf[UART_SLAVE_ADDR]&0x01)==0) //bit7是R/W标志;0--R, 1--W + { + bUart2ReadFlg = 1; + bUart2WriteFlg = 0; + } + else + { + bUart2WriteFlg = 1; + bUart2ReadFlg = 0; + } + } + else if(ucUart2Buf[HEARD1] != 0x5A) //判断是否为IAP/ISP的起始帧 + { + ucUart2BufPT = 0; //如果帧头错误,则复位指针 + } + } + + if(bUart2ReadFlg) + { + if(ucUart2BufPT==3) + { + Uart2RdCmdProcess(); //Read the command process + } + } + else if(bUart2WriteFlg) + { + if(ucUart2BufPT > (ucUart2Buf[UART_LENGTH]+3)) //If a write operation, and complete all the data has been received + { + Uart2WrCmdProcess(); //Write the command peocess + bUart2WriteFlg = 0; //PC write MCU communiaction over + ucUart2BufPT = 0; + } + } + else //非读非写操作时,即为ISP或者IAP的begin命令 + { + Uart2IapCheckHandshake(); + } + bUart2SndAckFlg = 0; + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + ucUart2TimeoutCnt = 0; +} + + +/************************************************************************************************* +* 函数名: InterruptUartAppTx +* 参 数: 无 +* 返回值: 无 +* 描 述: UART发送中断服务程序接口,中断处理函数会调用该函数 +*************************************************************************************************/ +void InterruptUart2AppTx(void) +{ + if((ucUart2Buf[HEARD1] == 0x5A) && (ucUart2Buf[HEARD2] == 0xA5) || bISPFlg) + { + if(ucUart2BufPT >= (ucUart2Buf[LENGTH]+8)) + { + Uart2RxEn(); //Allow UART receive data + ucUart2BufPT = 0; + bUart2ReadFlg = 0; //PC read MCU communication over + ucUart2Buf[0] = 0; + ucUart2Buf[1] = 0; + ucUart2Buf[2] = 0; + ucUart2Buf[3] = 0; + bUart2SndAckFlg = 1; + } + else + { + ucUart2BufPT++; + Uart2TxEn(ucUart2Buf[ucUart2BufPT]); //20220620 + } + } + else if((ucUart2BufPT==0) || (ucUart2BufPT>=ucUart2Buf[UART_LENGTH]+3)) + { + Uart2RxEn(); //UART允许接收数据 + ucUart2BufPT = 0; + bUart2ReadFlg = 0; + ucUart2Buf[0] = 0; + ucUart2Buf[1] = 0; + ucUart2Buf[2] = 0; + ucUart2Buf[3] = 0; + bUart2SndAckFlg = 1; //UART已发送过数据,主要用于需要等待发送ACK才能进一步操作的功能 + } + else + { + ucUart2BufPT++; + Uart2TxEn(ucUart2Buf[ucUart2BufPT]); + } + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + ucUart2TimeoutCnt = 0; +} + + +/************************************************************************************************* +* 函数名: InterruptUart0AppTx +* 参 数: 无 +* 返回值: 无 +* 描 述: UART发送中断服务程序接口,中断处理函数会调用该函数 +*************************************************************************************************/ +void Uart2Check(void) +{ + if(++ucUart2TimeoutCnt >= 4) //如果4*50mS没有UART通讯,则复位指针向量,并切换到接收模式 + { + ucUart2TimeoutCnt = 0; + ucUart2BufPT = 0; + Uart2RxEn(); //UART允许接收数据 + } +} +#endif diff --git a/code_bootloader/Flash.c b/code_bootloader/Flash.c new file mode 100644 index 0000000..0082fc5 --- /dev/null +++ b/code_bootloader/Flash.c @@ -0,0 +1,210 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "MCURegister.h" +#include "C51_TYPE.H" +#include "Flash.h" +#include +#include + +U8 ucMcuFlashWrValid; + + +/************************************************************************************************* +* 函数名: McuFlashEraseSector +* 参 数: McuFlashAddr:起始地址;McuType:擦除CODE区或者EEPROM +* 返回值: 无 +* 描 述: 擦除Sector +*************************************************************************************************/ +void McuFlashEraseSector(U32 xdata McuFlashAddr, U8 xdata McuType) +{ + FLASHCON = McuType; + XPAGE = McuFlashAddr>>8; + + IB_CON1 = 0xE6; + if(!EA) //防止误写 + { + IB_CON2 = 0x05; + if(FLASHCON == McuType) //防止误写 + { + IB_CON3 = 0x0A; + if(ucMcuFlashWrValid == 0x55) //防止误写 + { + IB_CON4 = 0x09; + if(XPAGE == (McuFlashAddr>>8)) //防止误写 + { + IB_CON5 = 0x06; + _nop_(); + _nop_(); + _nop_(); + _nop_(); + } + } + } +} + + FLASHCON = MCU_TYPE_CODE; +} + + +/************************************************************************************************* +* 函数名: McuFlashBlankCheck +* 参 数: McuFlashAddr:起始地址 +* 返回值: 0:非全0,Erase失败;1:全0,Erase成功 +* 描 述: 当Erase完1个Sector,需检查是否全为0 +*************************************************************************************************/ +BOOL McuFlashBlankCheck(U32 xdata McuFlashAddr, U8 xdata McuType) +{ + BOOL Result = 1; + U16 i; + + FLASHCON = McuType; + for(i=0; i>8; + IB_OFFSET = McuFlashAddr % 256; + + IB_DATA = WrData; + IB_CON1 = 0x6E; + if(!EA) //防止误写 + { + IB_CON2 = 0x05; + if(FLASHCON == McuType) //防止误写 + { + IB_CON3 = 0x0A; + if(ucMcuFlashWrValid == 0x55) //防止误写 + { + IB_CON4 = 0x09; + if(XPAGE == (McuFlashAddr>>8)) //防止误写 + { + IB_CON5 = 0x06; + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + } + } + } + } + + FLASHCON = MCU_TYPE_CODE; +} + + +/************************************************************************************************* +* 函数名: McuFlashRdOneByte +* 参 数: McuFlashAddr:读取CODE区的地址 +* 返回值: 返回当前Code字节 +* 描 述: 读1个字节 +*************************************************************************************************/ +U8 McuFlashRdOneByte(U32 xdata McuFlashAddr, U8 xdata McuType) +{ + U8 GetData = 0; + + FLASHCON = McuType; + GetData = CBYTE[McuFlashAddr]; + FLASHCON = MCU_TYPE_CODE; + return GetData; +} + + +/************************************************************************************************* +* 函数名: BootProgram +* 参 数: 无 +* 返回值: 无 +* 描 述: Boot区进行升级代码操作:Erase->Program->Verify + 每擦除1个Sector,即刻写入数据,校验数据 +*************************************************************************************************/ +U8 BootProgram(void) +{ + U8 i, McuCode, McuFlashType; + U16 j; + U32 McuFlashAddr; + + for(i=0; iProgram->Verify +*************************************************************************************************/ +BOOL BootUpgradeCode(void) +{ + BOOL Result = 1; + + if(BootProgram() == BOOT_PGR_OK) + { + McuFlashEraseSector(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); //写入成功,擦除远程升级标志位 + Result = McuFlashBlankCheck(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); //擦除结束后,需要查空 + } + else + { + Result = 0; + } + + return Result; +} + diff --git a/code_bootloader/IapIsp.c b/code_bootloader/IapIsp.c new file mode 100644 index 0000000..c318d99 --- /dev/null +++ b/code_bootloader/IapIsp.c @@ -0,0 +1,788 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "MCURegister.h" +#include "C51_TYPE.H" +#include "Flash.h" +#include "IapIsp.h" + +BOOL bIapIspFlg; //0:表示当前执行IAP操作;1:表示当前执行ISP操作 +BOOL bHandsheakOkFlg; +BOOL bUartSndOverFlg; +U16 uiUartRcvChkSum; +U8 ucUartErrCode; +U8 ucUartBufPT; +U32 ulIapDataPtr; +U32 ulIapChksum; +U32 ulIapRecDataLen; +U8 ucIapIndexBk; +U8 ucIapRestCommand; +U8 xdata ucUartBuf[150]; +U8 xdata ucIapBuf[MCU_CODE_SECTOR_SIZE]; + +extern void UARTInit(void); +/************************************************************************************************* +* 函数名: UartSendAck +* 参 数: 无 +* 返回值: 无 +* 描 述: 当Slave接收完数据并处理完成后,开始返回数据 +*************************************************************************************************/ +void UartSendAck(void) +{ + U8 i, DataBak; + U16 CheckSum = 0; + + ucUartBuf[LENGTH] = 0x00; + ucUartBuf[COMMAND] = 0x0B; + + DataBak = ucUartBuf[SOURCE]; //交换源ID和目标ID + ucUartBuf[SOURCE] = ucUartBuf[TARGET]; + ucUartBuf[TARGET] = DataBak; + + for(i=2; i<(ucUartBuf[LENGTH]+7); i++) + { + CheckSum += ucUartBuf[i]; + } + + ucUartBuf[7+ucUartBuf[LENGTH]] = (U8)CheckSum; + ucUartBuf[8+ucUartBuf[LENGTH]] = (U8)(CheckSum>>8); + + bUartSndOverFlg = 0; + UartTxEn(ucUartBuf[ucUartBufPT]); +} + + +/************************************************************************************************* +* 函数名: IapHandShake +* 参 数: 无 +* 返回值: 无 +* 描 述: 握手协议,进入IAP或者ISP烧写流程 + bIapIspFlg: 0--IAP操作;1--ISP操作 +*************************************************************************************************/ +void IapHandShake(void) +{ + ucUartBuf[INDEXES] = 0; + if(ucUartBuf[DATA]=='I' && ucUartBuf[DATA+1]=='A' && ucUartBuf[DATA+2]=='P') + { + bIapIspFlg = IAP_MODE; + bHandsheakOkFlg = 1; + } + else if(ucUartBuf[DATA]=='I' && ucUartBuf[DATA+1]=='S' && ucUartBuf[DATA+2]=='P') + { + bIapIspFlg = ISP_MODE; + bHandsheakOkFlg = 1; + } + else + { + ucUartBuf[INDEXES] = IAPERROR_HANDSHAKE; //握手失败 + bHandsheakOkFlg = 0; + } +} + + +/************************************************************************************************* +* 函数名: IapBeginAck +* 参 数: 无 +* 返回值: 无 +* 描 述: IAP或ISP开始操作,擦除CODE的备份区30K +*************************************************************************************************/ +void IapBeginAck(void) +{ + U8 i, SectorNum, McuFlashType; + U32 McuFlashAddr; + + ulIapDataPtr = 0; + ulIapChksum = 0; + ulIapRecDataLen = 0; + ulIapRecDataLen = ((U32)ucUartBuf[DATA+3]<<24) //数据长度 + | ((U32)ucUartBuf[DATA+2]<<16) + | ((U32)ucUartBuf[DATA+1]<<8) + | (U32)ucUartBuf[DATA]; + + if(!bHandsheakOkFlg) + { + ucUartBuf[INDEXES] = IAPERROR_HANDSHAKE; //握手失败 + } + + if((ulIapRecDataLen > IAP_BK_CODE_SIZE) && (bIapIspFlg == IAP_MODE)) + { + ucUartBuf[INDEXES] = IAPERROR_SIZE; //如果数据长度不等于IAP和ISP长度,则默认为长度异常 + } + else if((ulIapRecDataLen > ISP_CODE_SIZE) && (bIapIspFlg == ISP_MODE)) + { + ucUartBuf[INDEXES] = IAPERROR_SIZE; //如果数据长度不等于IAP和ISP长度,则默认为长度异常 + } + else + { + ucUartBuf[INDEXES] = 0; //先预设回复成功 + ucIapIndexBk = 0; + +//1. 如果当前操作是ISP,则先擦除BOOT区的标志,然后在BOOT_FLG_ISP_ADD中写ISP_FLG标志0xA5 + ucMcuFlashWrValid = 0x55; //设置MCU Code区可操作标志,防止误写 + McuFlashEraseSector(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); + if(McuFlashBlankCheck(BOOT_FLG_START_ADDR, MCU_TYPE_CODE)) //擦除结束后,需要查空 + { + if(bIapIspFlg == ISP_MODE) + { + McuFlashWrOneByte(BOOT_FLG_ISP_ADDR, ISP_FLG, MCU_TYPE_CODE); + if(McuFlashRdOneByte(BOOT_FLG_ISP_ADDR, MCU_TYPE_CODE) != ISP_FLG) + { + ucUartBuf[INDEXES] = IAPERROR_WR; //Write失败 + } + } + } + else + { + ucUartBuf[INDEXES] = IAPERROR_ERASE; //Erase失败 + } + ucMcuFlashWrValid = 0; + +//2. 不管是IAP还是ISP,都先擦除程序的所有Sector,如果是ISP,则还需要擦除EEPROM区 + if(ucUartBuf[INDEXES] == 0) //检查ucUartBuf[INDEXES] + { + SectorNum = ulIapRecDataLen/MCU_CODE_SECTOR_SIZE; + for(i=0; i=(SectorNum-APP_PARA_SIZE/MCU_CODE_SECTOR_SIZE)) //EEPROM按sector擦除 + { + McuFlashType = MCU_TYPE_E2P; + McuFlashAddr = (U16)(i+APP_PARA_SIZE/MCU_CODE_SECTOR_SIZE-SectorNum)*512; + } + } + + ucMcuFlashWrValid = 0x55; //设置MCU Code区可操作标志,防止误写 + McuFlashEraseSector(McuFlashAddr, McuFlashType); + if(!McuFlashBlankCheck(McuFlashAddr, McuFlashType)) //擦除结束后,需要查空 + { + ucUartBuf[INDEXES] = IAPERROR_ERASE; //Erase失败 + } + ucMcuFlashWrValid = 0; + } + } + else + { + ucUartBuf[INDEXES] = IAPERROR_INDEX; + } + } +} + + +/************************************************************************************************* +* 函数名: IapWrSector +* 参 数: 无 +* 返回值: 无 +* 描 述: 写入1个Sector数据 +*************************************************************************************************/ +BOOL IapWrSector(void) +{ + BOOL Result = 1; + U16 i; + U32 McuFlashAddr; + U8 McuFlashType; + + for(i=0; i= (ulIapRecDataLen+BOOT_CODE_SIZE-APP_PARA_SIZE)) + { + McuFlashAddr = McuFlashAddr - (ulIapRecDataLen+BOOT_CODE_SIZE-APP_PARA_SIZE); + McuFlashType = MCU_TYPE_E2P; //ISP更新EEPROM区 + } + } + else + { + McuFlashAddr = IAP_BK_CODE_START_ADDR + ulIapDataPtr; + } + McuFlashWrOneByte(McuFlashAddr, ucIapBuf[i], McuFlashType); + if(ucIapBuf[i] != McuFlashRdOneByte(McuFlashAddr, McuFlashType)) + { + Result = 0; + break; + } + ulIapDataPtr++; + } + + return Result; +} + + +/************************************************************************************************* +* 函数名: IapReceiveData +* 参 数: 无 +* 返回值: 无 +* 描 述: 接收数据,同时将数据写入的MCU CODE区 +*************************************************************************************************/ +void IapReceiveData(void) +{ + U16 i; + U8 j; + U32 McuFlashAddr; + U8 McuFlashType; + + bHandsheakOkFlg = 0; + + if( ((ucUartBuf[INDEXES](ucIapIndexBk+4))) && (ucUartBuf[INDEXES] != 0) ) //yangweilei + { + ucUartBuf[INDEXES] = IAPERROR_INDEX; //数据索引错误,首先判断是否连续,其次判断是否超出范围 + } + else + { + ucIapIndexBk = ucUartBuf[INDEXES]; + ucUartBuf[INDEXES] = 0; + if(ucUartBuf[LENGTH] == 0) + { + ulIapDataPtr += 512; //如果传递的长度为0,表示当前128个字节为0,指针加,但不写(增加150mS/1K) + } + else + { + j = ucIapIndexBk % 4; //目前暂定sector长度为512bytes,每次传输128bytes,所以定义为4 + for(i=0; i= MCU_CODE_SECTOR_SIZE) + { + ulIapDataPtr -= MCU_CODE_SECTOR_SIZE; //指针返回到该Sector起始 + } + else + { + ulIapDataPtr = 0; + } + + McuFlashType = MCU_TYPE_CODE; //默认是CODE区 + if(bIapIspFlg == ISP_MODE) //ISP + { + McuFlashAddr = ISP_CODE_START_ADDR + ulIapDataPtr; + if(McuFlashAddr >= (ulIapRecDataLen+BOOT_CODE_SIZE-APP_PARA_SIZE)) + { + McuFlashAddr = McuFlashAddr - (ulIapRecDataLen+BOOT_CODE_SIZE-APP_PARA_SIZE); + McuFlashType = MCU_TYPE_E2P; //ISP更新EEPROM区 + } + } + else + { + McuFlashAddr = IAP_BK_CODE_START_ADDR + ulIapDataPtr; + } + ucMcuFlashWrValid = 0x55; + McuFlashEraseSector(McuFlashAddr, McuFlashType); + if(McuFlashBlankCheck(McuFlashAddr, McuFlashType)) //擦除结束后,需要查空 + { + if(!IapWrSector()) //如果连续写两次错误,则返回给上位机异常 + { + ucUartBuf[INDEXES] = IAPERROR_WR; //写入错误 + } + else + { + goto UpdateChksum; + } + } + else + { + ucUartBuf[INDEXES] = IAPERROR_ERASE; //擦除错误 + } + } + else //512Bytes写入正确,才更新checksum值 + { +UpdateChksum: + for(j=0; j= 1)&&(UART_DEFINE<= 30)) + { + if(RI) + { + //BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯,则判定通讯异常,触发看门狗 + ucUartBuf[ucUartBufPT] = SBUF; + ucUartBufPT++; + if(ucUartBufPT >= 140) //该指针不会超过140 + { + ucUartBufPT = 0; + } + if(ucUartBufPT == 1) + { + if(ucUartBuf[HEARD1] != 0x5A) //检查帧头是否Wie0x5AA5 + { + ucUartBufPT = 0; + } + + } + else if(ucUartBufPT == 2) + { + + if(ucUartBuf[HEARD2] != 0xA5) + { + ucUartBufPT = 0; + } + else + { + uiUartRcvChkSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + + if(ucUartBufPT < (ucUartBuf[LENGTH]+9)) + { + if(ucUartBufPT <= (ucUartBuf[LENGTH]+7)) + { + uiUartRcvChkSum += ucUartBuf[ucUartBufPT-1]; + } + + if(ucUartBufPT == (TARGET+1)) //检查ID + { + + if(ucUartBuf[TARGET] != IAP_BMSID) + { + ucUartBufPT = 0; + } + } + else if(ucUartBufPT == (COMMAND+1)) //检测COMMAND + { + if((ucUartBuf[COMMAND] != IAP_CMD_HANDSHAKE) + && (ucUartBuf[COMMAND] != IAP_CMD_BEGIN) + && (ucUartBuf[COMMAND] != IAP_CMD_TRANS) + && (ucUartBuf[COMMAND] != IAP_CMD_VERIFY) + && (ucUartBuf[COMMAND] != IAP_CMD_RESET)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + BootMcuWdtClear(); + UartCmdProcess(); + } + } + RI = 0; + } + + if(TI) + { + BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯,则判定通讯异常,触发看门狗 + + if(ucUartBufPT >= (ucUartBuf[LENGTH]+8)) + { + UartRxEn(); //Allow UART receive data + ucUartBufPT = 0; + ucUartBuf[0] = 0; + ucUartBuf[1] = 0; + ucUartBuf[2] = 0; + bUartSndOverFlg = 1; + } + else + { + ucUartBufPT++; + UartTxEn(ucUartBuf[ucUartBufPT]); + } + + TI = 0; + } + + if(ucIapRestCommand == IAP_CMD_RESET) + { + BootMcuWdtClear(); + if(bUartSndOverFlg) //Reset帧回复结束 + { + bUartSndOverFlg = 0; + ucIapRestCommand = 0; + ((void(code*)(void))0x0000)(); + } + } + } + #elif ((UART_DEFINE >= 31)&&(UART_DEFINE<= 60)) + { + INSCON = 0x40; + if(RI1) + { + //BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯,则判定通讯异常,触发看门狗 + ucUartBuf[ucUartBufPT] = SBUF1; + INSCON = 0x00; + ucUartBufPT++; + if(ucUartBufPT >= 140) //该指针不会超过140 + { + ucUartBufPT = 0; + } + if(ucUartBufPT == 1) + { + if(ucUartBuf[HEARD1] != 0x5A) //检查帧头是否Wie0x5AA5 + { + ucUartBufPT = 0; + } + + } + else if(ucUartBufPT == 2) + { + + if(ucUartBuf[HEARD2] != 0xA5) + { + ucUartBufPT = 0; + } + else + { + uiUartRcvChkSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + + if(ucUartBufPT < (ucUartBuf[LENGTH]+9)) + { + if(ucUartBufPT <= (ucUartBuf[LENGTH]+7)) + { + uiUartRcvChkSum += ucUartBuf[ucUartBufPT-1]; + } + + if(ucUartBufPT == (TARGET+1)) //检查ID + { + + if(ucUartBuf[TARGET] != IAP_BMSID) + { + ucUartBufPT = 0; + } + } + else if(ucUartBufPT == (COMMAND+1)) //检测COMMAND + { + if((ucUartBuf[COMMAND] != IAP_CMD_HANDSHAKE) + && (ucUartBuf[COMMAND] != IAP_CMD_BEGIN) + && (ucUartBuf[COMMAND] != IAP_CMD_TRANS) + && (ucUartBuf[COMMAND] != IAP_CMD_VERIFY) + && (ucUartBuf[COMMAND] != IAP_CMD_RESET)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + BootMcuWdtClear(); + UartCmdProcess(); + } + } + INSCON = 0x40; + RI1 = 0; + INSCON = 0x00; + } + INSCON = 0x40; + + if(TI1) + { + INSCON = 0x00; + BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯,则判定通讯异常,触发看门狗 + + if(ucUartBufPT >= (ucUartBuf[LENGTH]+8)) + { + UartRxEn(); //Allow UART receive data + ucUartBufPT = 0; + ucUartBuf[0] = 0; + ucUartBuf[1] = 0; + ucUartBuf[2] = 0; + bUartSndOverFlg = 1; + } + else + { + ucUartBufPT++; + UartTxEn(ucUartBuf[ucUartBufPT]); + } + INSCON = 0x40; + + TI1 = 0; + INSCON = 0x00; + } + + if(ucIapRestCommand == IAP_CMD_RESET) + { + BootMcuWdtClear(); + if(bUartSndOverFlg) //Reset帧回复结束 + { + bUartSndOverFlg = 0; + ucIapRestCommand = 0; + ((void(code*)(void))0x0000)(); + } + } + } + #elif ( UART_DEFINE == 61) + { + INSCON = 0x40; + if(RI2) + { + //BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯,则判定通讯异常,触发看门狗 + ucUartBuf[ucUartBufPT] = SBUF2; + INSCON = 0x00; + ucUartBufPT++; + if(ucUartBufPT >= 140) //该指针不会超过140 + { + ucUartBufPT = 0; + } + if(ucUartBufPT == 1) + { + if(ucUartBuf[HEARD1] != 0x5A) //检查帧头是否Wie0x5AA5 + { + ucUartBufPT = 0; + } + + } + else if(ucUartBufPT == 2) + { + + if(ucUartBuf[HEARD2] != 0xA5) + { + ucUartBufPT = 0; + } + else + { + uiUartRcvChkSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + + if(ucUartBufPT < (ucUartBuf[LENGTH]+9)) + { + if(ucUartBufPT <= (ucUartBuf[LENGTH]+7)) + { + uiUartRcvChkSum += ucUartBuf[ucUartBufPT-1]; + } + + if(ucUartBufPT == (TARGET+1)) //检查ID + { + + if(ucUartBuf[TARGET] != IAP_BMSID) + { + ucUartBufPT = 0; + } + } + else if(ucUartBufPT == (COMMAND+1)) //检测COMMAND + { + if((ucUartBuf[COMMAND] != IAP_CMD_HANDSHAKE) + && (ucUartBuf[COMMAND] != IAP_CMD_BEGIN) + && (ucUartBuf[COMMAND] != IAP_CMD_TRANS) + && (ucUartBuf[COMMAND] != IAP_CMD_VERIFY) + && (ucUartBuf[COMMAND] != IAP_CMD_RESET)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + BootMcuWdtClear(); + UartCmdProcess(); + } + } + INSCON = 0x40; + RI2 = 0; + INSCON = 0x00; + } + INSCON = 0x40; + + if(TI2) + { + INSCON = 0x00; + BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯,则判定通讯异常,触发看门狗 + + if(ucUartBufPT >= (ucUartBuf[LENGTH]+8)) + { + UartRxEn(); //Allow UART receive data + ucUartBufPT = 0; + ucUartBuf[0] = 0; + ucUartBuf[1] = 0; + ucUartBuf[2] = 0; + bUartSndOverFlg = 1; + } + else + { + ucUartBufPT++; + UartTxEn(ucUartBuf[ucUartBufPT]); + } + INSCON = 0x40; + + TI2 = 0; + INSCON = 0x00; + } + + if(ucIapRestCommand == IAP_CMD_RESET) + { + BootMcuWdtClear(); + if(bUartSndOverFlg) //Reset帧回复结束 + { + bUartSndOverFlg = 0; + ucIapRestCommand = 0; + ((void(code*)(void))0x0000)(); + } + } + } + #endif + } +} + + + + + + + diff --git a/code_bootloader/Main.c b/code_bootloader/Main.c new file mode 100644 index 0000000..1fedc90 --- /dev/null +++ b/code_bootloader/Main.c @@ -0,0 +1,647 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "MCURegister.h" +#include "C51_TYPE.H" +#include "Flash.h" +#include "IapIsp.h" +#include "INTRINS.H" + + + +/************************************************************************************************* +* 函数名: InitGPIO +* 参 数: 无 +* 返回值: 无 +* 描 述: 只需要初始化和供电系统相关的IO端口 +*************************************************************************************************/ +void InitGPIO(void) +{ + P0 = 0xF8; + P0CR = 0x8F; + P0PCR = 0xC8; + + P1 = 0x80; + P1CR = 0x7F; + P1PCR = 0x80; + + P2 = 0xE0; + P2CR = 0x3F; + P2PCR = 0xC0; + + P3 = 0x19; + P3CR = 0xE6; + P3PCR = 0x19; + + #if (UART_DEFINE == 1) + P0 |= 0xC0; + P0PCR |= 0x80; + #endif + + #if (UART_DEFINE == 2) + P0 |= 0x40; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + + #if (UART_DEFINE == 3) + P0 |= 0x40; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + + #if (UART_DEFINE == 4) + P0 |= 0x41; + P0PCR |= 0x01; + #endif + + #if (UART_DEFINE == 5) + P0 |= 0x42; + P0PCR |= 0x02; + #endif + + #if (UART_DEFINE == 6) + P0 |= 0xC0; + P0PCR |= 0x40; + #endif + + #if (UART_DEFINE == 7) + P0 |= 0x80; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + + #if (UART_DEFINE == 8) + P0 |= 0x80; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + + #if (UART_DEFINE == 9) + P0 |= 0x81; + P0PCR |= 0x01; + #endif + + #if (UART_DEFINE == 10) + P0 |= 0x82; + P0PCR |= 0x02; + #endif + + #if (UART_DEFINE == 11) + P0 |= 0x40; + P2 |= 0x10; + P0PCR |= 0x40; + #endif + + #if (UART_DEFINE == 12) + P0 |= 0x80; + P2 |= 0x10; + P0PCR |= 0x80; + #endif + + #if (UART_DEFINE == 13) + P2 |= 0x30; + P2PCR |= 0x20; + #endif + + #if (UART_DEFINE == 14) + P0 |= 0x01; + P2 |= 0x10; + P0PCR |= 0x01; + #endif + + #if (UART_DEFINE == 15) + P0 |= 0x02; + P2 |= 0x10; + P0PCR |= 0x02; + #endif + + #if (UART_DEFINE == 16) + P0 |= 0x40; + P2 |= 0x20; + P0PCR |= 0x40; + #endif + + #if (UART_DEFINE == 17) + P0 |= 0x80; + P2 |= 0x20; + P0PCR |= 0x80; + #endif + + #if (UART_DEFINE == 18) + P2 |= 0x30; + P2PCR |= 0x10; + #endif + + #if (UART_DEFINE == 19) + P0 |= 0x01; + P2 |= 0x20; + P0PCR |= 0x01; + #endif + + #if (UART_DEFINE == 20) + P0 |= 0x02; + P2 |= 0x20; + P0PCR |= 0x02; + #endif + + #if (UART_DEFINE == 21) + P0 |= 0x81; + P0PCR |= 0x80; + #endif + + #if (UART_DEFINE == 22) + P0 |= 0x01; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + + #if (UART_DEFINE == 23) + P0 |= 0x01; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + + #if (UART_DEFINE == 24) + P0 |= 0x41; + P0PCR |= 0x40; + #endif + + #if (UART_DEFINE == 25) + P0 |= 0x03; + P0PCR |= 0x02; + #endif + + #if (UART_DEFINE == 26) + P0 |= 0x82; + P0PCR |= 0x80; + #endif + + #if (UART_DEFINE == 27) + P0 |= 0x02; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + + #if (UART_DEFINE == 28) + P0 |= 0x02; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + + #if (UART_DEFINE == 29) + P0 |= 0x42; + P0PCR |= 0x40; + #endif + + #if (UART_DEFINE == 30) + P0 |= 0x03; + P0PCR |= 0x01; + #endif + +//UART1相关IO配置 + #if (UART_DEFINE == 31) + P1 |= 0x03; + P1PCR |= 0x02; + #endif + + #if (UART_DEFINE == 32) + P1 |= 0x01; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + + #if (UART_DEFINE == 33) + P1 |= 0x01; + P3 |= 0x10; + P3PCR |= 0x10; + #endif + + #if (UART_DEFINE == 34) + P1 |= 0x01; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + + #if (UART_DEFINE == 35) + P1 |= 0x01; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + + #if (UART_DEFINE == 36) + P1 |= 0x03; + P1PCR |= 0x01; + #endif + + #if (UART_DEFINE == 37) + P1 |= 0x02; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + + #if (UART_DEFINE == 38) + P1 |= 0x02; + P3 |= 0x10; + P3PCR |= 0x10; + #endif + + #if (UART_DEFINE == 39) + P1 |= 0x02; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + + #if (UART_DEFINE == 40) + P1 |= 0x02; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + + #if (UART_DEFINE == 41) + P1 |= 0x01; + P3 |= 0x08; + P1PCR |= 0x01; + #endif + + #if (UART_DEFINE == 42) + P1 |= 0x02; + P3 |= 0x08; + P1PCR |= 0x01; + #endif + + #if (UART_DEFINE == 43) + P3 |= 0x18; + P3PCR |= 0x10; + #endif + + #if (UART_DEFINE == 44) + P3 |= 0x08; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + + #if (UART_DEFINE == 45) + P3 |= 0x08; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + + #if (UART_DEFINE == 46) + P1 |= 0x01; + P3 |= 0x10; + P1PCR |= 0x01; + #endif + + #if (UART_DEFINE == 47) + P1 |= 0x02; + P3 |= 0x10; + P1PCR |= 0x02; + #endif + + #if (UART_DEFINE == 48) + P3 |= 0x18; + P3PCR |= 0x08; + #endif + + #if (UART_DEFINE == 49) + P3 |= 0x10; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + + #if (UART_DEFINE == 50) + P3 |= 0x10; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + + #if (UART_DEFINE == 51) + P1 |= 0x01; + P2 |= 0x40; + P1PCR |= 0x01; + #endif + + #if (UART_DEFINE == 52) + P1 |= 0x02; + P2 |= 0x40; + P1PCR |= 0x02; + #endif + + #if (UART_DEFINE == 53) + P2 |= 0x40; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + + #if (UART_DEFINE == 54) + P3 |= 0x10; + P2 |= 0x40; + P3PCR |= 0x10; + #endif + + #if (UART_DEFINE == 55) + P2 |= 0xC0; + P2PCR |= 0x80; + #endif + + #if (UART_DEFINE == 56) + P1 |= 0x01; + P2 |= 0x80; + P1PCR |= 0x01; + #endif + + #if (UART_DEFINE == 57) + P1 |= 0x02; + P2 |= 0x80; + P1PCR |= 0x02; + #endif + + #if (UART_DEFINE == 58) + P2 |= 0x80; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + + #if (UART_DEFINE == 59) + P3 |= 0x10; + P2 |= 0x80; + P3PCR |= 0x10; + #endif + + #if (UART_DEFINE == 60) + P2 |= 0xC0; + P2PCR |= 0x40; + #endif + +//UART2相关IO配置,当前demo板此串口做LED灯显示功能,不支持串口通讯,故demo板配置为不使能uart2串口功能 + #if (UART_DEFINE == 61) + P2 |= 0x06; + P2PCR |= 0x02; + #endif +} + +/************************************************************************************************* +* 函数名: InitIRQ +* 参 数: 无 +* 返回值: 无 +* 描 述: 关闭所有中断即可 +*************************************************************************************************/ +void InitIRQ(void) +{ + IEN0 = 0x00; + IEN1 = 0x00; + IEN2 = 0x00; +} +#if ((UART_DEFINE >= 1)&&(UART_DEFINE<= 30)) +/************************************************************************************************* +* 函数名: UARTInit +* 参 数: Bps: UART通讯波特率 +* 返回值: 无 +* 描 述: 初始化UART模块 +*************************************************************************************************/ +void UARTInit(void) +{ + #if UART_DEFINE == 1 + UART0CR = 0x32; + #elif UART_DEFINE == 2 + UART0CR = 0x42; + #elif UART_DEFINE == 3 + UART0CR = 0x52; + #elif UART_DEFINE == 4 + UART0CR = 0x02; + #elif UART_DEFINE == 5 + UART0CR = 0x12; + #elif UART_DEFINE == 6 + UART0CR = 0x23; + #elif UART_DEFINE == 7 + UART0CR = 0x43; + #elif UART_DEFINE == 8 + UART0CR = 0x53; + #elif UART_DEFINE == 9 + UART0CR = 0x03; + #elif UART_DEFINE == 10 + UART0CR = 0x13; + #elif UART_DEFINE == 11 + UART0CR = 0x24; + #elif UART_DEFINE == 12 + UART0CR = 0x34; + #elif UART_DEFINE == 13 + UART0CR = 0x54; + #elif UART_DEFINE == 14 + UART0CR = 0x04; + #elif UART_DEFINE == 15 + UART0CR = 0x14; + #elif UART_DEFINE == 16 + UART0CR = 0x25; + #elif UART_DEFINE == 17 + UART0CR = 0x35; + #elif UART_DEFINE == 18 + UART0CR = 0x45; + #elif UART_DEFINE == 19 + UART0CR = 0x05; + #elif UART_DEFINE == 20 + UART0CR = 0x15; + #elif UART_DEFINE == 21 + UART0CR = 0x30; + #elif UART_DEFINE == 22 + UART0CR = 0x40; + #elif UART_DEFINE == 23 + UART0CR = 0x50; + #elif UART_DEFINE == 24 + UART0CR = 0x20; + #elif UART_DEFINE == 25 + UART0CR = 0x10; + #elif UART_DEFINE == 26 + UART0CR = 0x31; + #elif UART_DEFINE == 27 + UART0CR = 0x41; + #elif UART_DEFINE == 28 + UART0CR = 0x51; + #elif UART_DEFINE == 29 + UART0CR = 0x21; + #elif UART_DEFINE == 30 + UART0CR = 0x01; + #endif + + PCON = 0x00; + SCON = 0x50; + SBRTH = UART_BPS_H; + SBRTL = UART_BPS_L; + SFINE = UART_BPS_F; + SBRTH |= 0x80; + SADDR = 0x0A; + SADEN = 0xFF; +} + +#elif ((UART_DEFINE >= 31)&&(UART_DEFINE<= 60)) +void UARTInit(void) +{ + INSCON = 0x00; + #if UART_DEFINE == 31 + UART1CR = 0x10; + #elif UART_DEFINE == 32 + UART1CR = 0x40; + #elif UART_DEFINE == 33 + UART1CR = 0x50; + #elif UART_DEFINE == 34 + UART1CR = 0x20; + #elif UART_DEFINE == 35 + UART1CR = 0x30; + #elif UART_DEFINE == 36 + UART1CR = 0x01; + #elif UART_DEFINE == 37 + UART1CR = 0x41; + #elif UART_DEFINE == 38 + UART1CR = 0x51; + #elif UART_DEFINE == 39 + UART1CR = 0x21; + #elif UART_DEFINE == 40 + UART1CR = 0x31; + #elif UART_DEFINE == 41 + UART1CR = 0x04; + #elif UART_DEFINE == 42 + UART1CR = 0x14; + #elif UART_DEFINE == 43 + UART1CR = 0x54; + #elif UART_DEFINE == 44 + UART1CR = 0x24; + #elif UART_DEFINE == 45 + UART1CR = 0x34; + #elif UART_DEFINE == 46 + UART1CR = 0x05; + #elif UART_DEFINE == 47 + UART1CR = 0x15; + #elif UART_DEFINE == 48 + UART1CR = 0x45; + #elif UART_DEFINE == 49 + UART1CR = 0x25; + #elif UART_DEFINE == 50 + UART1CR = 0x35; + #elif UART_DEFINE == 51 + UART1CR = 0x02; + #elif UART_DEFINE == 52 + UART1CR = 0x12; + #elif UART_DEFINE == 53 + UART1CR = 0x42; + #elif UART_DEFINE == 54 + UART1CR = 0x52; + #elif UART_DEFINE == 55 + UART1CR = 0x32; + #elif UART_DEFINE == 56 + UART1CR = 0x03; + #elif UART_DEFINE == 57 + UART1CR = 0x13; + #elif UART_DEFINE == 58 + UART1CR = 0x43; + #elif UART_DEFINE == 59 + UART1CR = 0x53; + #elif UART_DEFINE == 60 + UART1CR = 0x23; + #endif + INSCON = 0x40; + + PCON1 = 0x00; + SCON1 = 0x50; //配置Uart工作在模式1 + SBRTH1 = UART_BPS_H; + SBRTL1 = UART_BPS_L; + SFINE1 = UART_BPS_F; + SBRTH1 |= 0x80; //使能波特率发生器 + SADDR1 = 0x0A; //UART地址初始化,默认为0x0A + SADEN1 = 0xFF; + INSCON = 0x00; +} +#elif (UART_DEFINE == 61) +void UARTInit(void) +{ + INSCON = 0x40; + PCON2 = 0x00; + SCON2 = 0x50; //配置Uart工作在模式1 + SBRTH2 = UART_BPS_H; //115200bps + SBRTL2 = UART_BPS_L; + SFINE2 = UART_BPS_F; + SBRTH2 |= 0x80; //使能波特率发生器 + SADDR2 = 0x0A; //UART地址初始化,默认为0x0A + SADEN2 = 0xFF; + INSCON = 0x00; +} +#else +#Error: "UART_DEFINE ERROR" +#endif + + +/************************************************************************************************* +* 函数名: Initial +* 参 数: 无 +* 返回值: 无 +* 描 述: 初始化系统 +*************************************************************************************************/ +void Initial(void) +{ + InitIRQ(); + InitGPIO(); + bHandsheakOkFlg = 0; +} + + +/************************************************************************************************* +* 函数名: main +* 参 数: 无 +* 返回值: 无 +* 描 述: Boot区主函数 +*************************************************************************************************/ +void main(void) +{ + BootMcuWdtClear(); + Initial(); //硬件资源初始化 + +//1.获取远程升级标志位状态,存在IAP程序升级标志,需要进行程序升级处理 + if(McuFlashRdOneByte(BOOT_FLG_IAP_ADDR, MCU_TYPE_CODE) == IAP_FLG) + { + bIapIspFlg = IAP_MODE; + ucMcuFlashWrValid = 0x55; //设置MCU Code区可操作标志,防止误写 + if(BootUpgradeCode()) //升级程序 + { + ucMcuFlashWrValid = 0; + ((void(code*)(void))IAP_CODE_START_ADDR)(); //升级成功则跳转到应用程序首地址 + } + else if(BootUpgradeCode()) //升级程序 + { + ucMcuFlashWrValid = 0; + ((void(code*)(void))IAP_CODE_START_ADDR)(); //升级成功则跳转到应用程序首地址 + } + else + { + while(1) + { + ucMcuFlashWrValid = 0; + SUSLO = 0x55; + PCON |= 0x02; + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + } + } + } +//2.判断是否ISP成功,如果该标志存在表示之前的ISP失败,需要在BOOT区重新ISP + else if(McuFlashRdOneByte(BOOT_FLG_ISP_ADDR, MCU_TYPE_CODE) == ISP_FLG) + { + bIapIspFlg = ISP_MODE; + BootIapIsp(); + } +//3.无升级需求,直接跳转到应用程序区 + else + { + ((void(code*)(void))IAP_CODE_START_ADDR)(); + } +} + + + diff --git a/code_bootloader/STARTUP.A51 b/code_bootloader/STARTUP.A51 new file mode 100644 index 0000000..39dc91c --- /dev/null +++ b/code_bootloader/STARTUP.A51 @@ -0,0 +1,110 @@ +$NOMOD51 +NAME ?C_STARTUP + +EXTRN CODE (?C_START) +PUBLIC ?C_STARTUP +IDATALEN EQU 100H +CLKCON EQU 0B2H +SSP_LEN EQU 0x1000 //偏移到4K的起始位置 + + ISEG AT 0x80 +STACK: DS 128 + + CSEG AT 0 +?C_STARTUP: + LJMP STARTUP1 + + ?C_C51STARTUP SEGMENT CODE + RSEG ?C_C51STARTUP +STARTUP1: + MOV SP, #STACK-1 + MOV CLKCON, #08H ;SETB HFON + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + ORL CLKCON, #04H ;SETB FS, SYSCLK=24M + +IF IDATALEN <> 0 + MOV R0,#IDATALEN - 1 + CLR A +IDATALOOP: MOV @R0,A + DJNZ R0,IDATALOOP +ENDIF + + LJMP ?C_START + + + + + CSEG AT 00003H + LJMP SSP_LEN+00003H + + CSEG AT 0000BH + LJMP SSP_LEN+0000BH + + CSEG AT 00013H + LJMP SSP_LEN+00013H + + CSEG AT 0001BH + LJMP SSP_LEN+0001BH + + CSEG AT 00023H + LJMP SSP_LEN+00023H + + CSEG AT 0002BH + LJMP SSP_LEN+0002BH + + CSEG AT 00033H + LJMP SSP_LEN+00033H + + CSEG AT 0003BH + LJMP SSP_LEN+0003BH + + CSEG AT 00043H + LJMP SSP_LEN+00043H + + CSEG AT 0004BH + LJMP SSP_LEN+0004BH + + CSEG AT 00053H + LJMP SSP_LEN+00053H + + CSEG AT 0005BH + LJMP SSP_LEN+0005BH + + CSEG AT 00063H + LJMP SSP_LEN+00063H + + CSEG AT 0006BH + LJMP SSP_LEN+0006BH + + CSEG AT 00073H + LJMP SSP_LEN+00073H + + CSEG AT 0007BH + LJMP SSP_LEN+0007BH + + CSEG AT 00083H + LJMP SSP_LEN+00083H + + CSEG AT 0008BH + LJMP SSP_LEN+0008BH + + CSEG AT 00093H + LJMP SSP_LEN+00093H + + CSEG AT 0009BH + LJMP SSP_LEN+0009BH + + CSEG AT 000A3H + LJMP SSP_LEN+000A3H + + CSEG AT (1000H-200H) +FlagCode: DS 512 + +END \ No newline at end of file diff --git a/code_dataflash/DataFlash.c b/code_dataflash/DataFlash.c new file mode 100644 index 0000000..bc27b1b --- /dev/null +++ b/code_dataflash/DataFlash.c @@ -0,0 +1,655 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2014/09/10 +History: +V0.0 2014/09/10 Preliminary +********************************************************************************/ +//*** <<< use Configuration Wizard in Context Menu >>> *** +#define _RAM_CHECK_DATA 0x5A +#define _FLASH_CHECK_DATA 0x5AA5 + +// 系统信息区(SubClassID=0x00 length=48) +// 电池包信息(E2uiPackConfigMap) +// 负载锁定 +#define _EPCM_LOAD_LOCK 0 //BIT15; 0:不使能负载锁定; 1:使能负载锁定 +// 充电器锁定 +#define _EPCM_CHARGER_LOCK 0 //BIT14; 0:不支持充电器锁定; 1:支持充电器锁定 +// 温度检测点个数 +#define _EPCM_TEMP_NUM 1 //BIT13; 0:单个温度检测点 1:两个温度检测点 +// LED显示个数 +#define _EPCM_LED_NUM 0 //BIT11~12; 未调用 +// 电芯串数 +#define _EPCM_CELL_NUM 10 //BIT8~10; 电芯串数,6~10串 +// 外挂EEPROM备份 +#define _EPCM_EEPROM_EN 0 //BIT7; 0:不使能外挂EE备份功能; 1:使能外挂EE备份功能 +// 放电过流MOS控制 +#define _EPCM_OCPM 0 //BIT6; 未调用(0:放电过流关闭放电mos 1:放电过流关闭充放电mos) +// 断线检测 +#define _EPCM_CTO_EN 1 //BIT5; 0:不使能断线保护功能; 1:使能断线保护功能 +// 二级保护 +#define _EPCM_PF_EN 1 //BIT4; 0:不使能二级保护功能; 1:使能二级保护功能 +// 均衡 +#define _EPCM_BAL_EN 0 //BIT3; 0:不使能均衡功能; 1:使能均衡功能 +// 过流自恢复 +#define _EPCM_OCRC_EN 0 //BIT2; 0:不使能过流自恢复功能; 1:使能过流自恢复功能 +// 硬件过压保护 +#define _EPCM_OV_EN 1 //BIT1; 0:不使能硬件过压功能; 1:使能硬件过压功能 +// 硬件短路保护 +#define _EPCM_SC 1 //BIT0; 0:不使能硬件短路保护功能; 1:使能硬件短路保护功能 + +#define _E2_PACKCONFIGMAP (_EPCM_EEPROM_EN<<15)|(_EPCM_OCPM<<14)|(_EPCM_CTO_EN<<13)|(_EPCM_PF_EN<<12)\ + |(_EPCM_BAL_EN<<11)|(_EPCM_OCRC_EN<<10)|(_EPCM_OV_EN<<9)\ + |(_EPCM_SC<<8)|(_EPCM_LOAD_LOCK<<7)|(_EPCM_CHARGER_LOCK<<6)\ + |(_EPCM_TEMP_NUM<<5)|(_EPCM_LED_NUM<<4)|(_EPCM_CELL_NUM-3) //U16 xdata E2uiPackConfigMap + +// + +// OCV电压(mV) +// 10%容量对应电压 +#define _E2_VOC10 3200 //U16 xdata VOC10 +// 20%容量对应电压 +#define _E2_VOC20 3400 //U16 xdata VOC10 +// 30%容量对应电压 +#define _E2_VOC30 3550 //U16 xdata VOC10 +// 40%容量对应电压 +#define _E2_VOC40 3700 //U16 xdata VOC10 +// 50%容量对应电压 +#define _E2_VOC50 3800 //U16 xdata VOC10 +// 60%容量对应电压 +#define _E2_VOC60 3900 //U16 xdata VOC10 +// 70%容量对应电压 +#define _E2_VOC70 4000 //U16 xdata VOC10 +// 80%容量对应电压 +#define _E2_VOC80 4100 //U16 xdata VOC10 +// 90%容量对应电压 +#define _E2_VOC90 4150 //U16 xdata VOC10 +// 100%容量对应电压 +#define _E2_VOC100 4200 //U16 xdata VOC10 +// + +// 延时参数及预留容量参数 +// 设计容量(mAh) +#define _E2_ulDesignCapacity 4000 //U32 xdata E2ulDesignCapacity +// 满充容量(mAh) +#define _E2_ulFCC 4000 //U32 xdata E2ulFCC +// 循环次数更新阈值 +#define _E2_ulCycleThreshold 3000 // U32 xdata E2ulCycleThreshold +// 循环次数 +#define _E2_uiCycleCount 0 // U16 xdata E2uiCycleCount +// 容量学习温度 +#define _E2_uiLearnLowTempe 2881 // U16 xdata E2uiLearnLowTempe +#define _E2_Reserve 0 // U16 xdata E2Reserve 预留占位 +// 充放电检测阈值 +#define _E2_siDfilterCur 100 // U16 xdata E2siDfilterCur +// 低功耗检测延时 +#define _E2_ucLowPowerDeley 20 // U16 xdata E2ucLowPowerDeley +// 充电备份检测延时 +#define _E2_ucChgBKDelay 1 // U16 xdata E2ucChgBKDelay +// 充电备份检测电流 +#define _E2_siChgBKCur 100 // U16 xdata E2siChgBKCur +// RTC备份检测延时 +#define _E2_ucRTCBKDelay 5 // U16 xdata E2ucRTCBKDelay +#define _E2_ucRamCheckFlg0 _RAM_CHECK_DATA // U16 xdata E2ucRamCheckFlg0 +// +// + +// 用户自定义参数(SubClassID=0x01 length=50) +// 软件版本(EXP:0x0106 = V1.06)<0x0000-0xffff> +#define _E2_SWVersion 0x0215 // U16 xdata SWVersion +// 硬件版本(EXP:0x0106 = V1.06)<0x0000-0xffff> +#define _E2_HWVersion 0x0130 // U16 xdata HWVersion +// 设备ID<0x00-0xff> +#define _E2_ID 0x00 // U8 xdata ID +// 制造商名称 +#define _E2_MNFName "sinowealth" // U8 xdata MNFName[12] +// 生产日期(exp:0x20230404=2023.04.04)<0x00000000-0xffffffff> +#define _E2_MNFDate 0x20231222 // U32 xdata MNFDate +// 序列号<0x0000-0xffff> +#define _E2_SerialNum 0x0000 // U16 xdata SerialNum +// 设备名称 +#define _E2_DeviceName "SH39F004" // U8 xdata DeviceName[12] +// 电芯材料 +#define _E2_DeviceChem "LION" // U8 xdata DeviceChem[12] +// 电芯化学ID<0x0000-0xffff> +#define _E2_ChemID 0x0000 // U16 xdata ChemID +#define _E2_ucRamCheckFlg1 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg2 +// + +// 充电参数(SubClassID=0x02 length=18) +// 过压保护阈值 +#define _E2_uiOVvol 4250 // U16 xdata E2uiOVvol +// 过压保护恢复阈值 +#define _E2_uiOVRvol 4150 // U16 xdata E2uiOVRvol +// 过压保护延时 +#define _E2_ucDelayOV 2 // U8 xdata E2ucDelayOV +// 过压保护恢复延时 +#define _E2_ucDelayOVR 2 // U8 xdata E2ucDelayOVR +// 充电截止电压(mV) +#define _E2_uiChgEndVol 4160 // U16 xdata E2uiChgEndVol +// 充电截止电流(mA) +#define _E2_siChgEndCurr 100 // S16 xdata E2siChgEndCurr +// 充电截止延时(S) +#define _E2_ucChgEndDelay 5 // U8 xdata E2ucChgEndDelay +// 充电过流保护阈值 +#define _E2_slOCCvol 3000 // U32 xdata E2slOCCvol +// 充电过流保护延时 +#define _E2_ucDelayOCC 2 // U8 xdata E2ucDelayOCC +// 充电过流保护恢复延时 +#define _E2_ucDelayOCCR 2 // U8 xdata E2ucDelayOCCR +#define _E2_ucRamCheckFlg2 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg2 +// + +// 放电参数(SubClassID=0x03 length=21) +// 欠压保护电压 +#define _E2_uiUVvol 2700 // U16 xdata E2uiUVvol +// 欠压保护恢复电压 +#define _E2_uiUVRvol 3000 // U16 xdata E2uiUVRvol +// 欠压保护延时 +#define _E2_ucDelayUV 2 // U8 xdata E2ucDelayUV +// 欠压保护恢复延时 +#define _E2_ucDelayUVR 2 // U8 xdata E2ucDelayUVR +// 放电截止延时(S) +#define _E2_ucDsgEndDelay 5 // U8 xdata E2ucDsgEndDelay +// 放电截止电压(mV) +#define _E2_uiDsgEndVol 2900 // U16 xdata E2uiDsgEndVol +// 放电过流1保护阈值 +#define _E2_uiOCDvol -20000 //U32 xdata E2uiOCDvol +// 放电过流1保护延时 +#define _E2_ucDelayOCD 2 //U8 xdata E2ucDelayOCD +// 放电过流2保护阈值 +#define _E2_slOCD2vol -40000 // S32 xdata E2slOCD2vol +// 放电过流2保护延时 +#define _E2_ucDelayOCD2 2 //U8 xdata E2ucDelayOCD2 +// 负载移除检测延时 +#define _E2_ucDelayLoadR 4 //U8 xdata E2ucDelayLoadR +#define _E2_ucRamCheckFlg3 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg3 +// + +// 放电PWM参数(SubClassID=0x05 length=5) +// PWM频率(Hz) +#define _E2_DSG1PWMFreq 4000 // U16 xdata DSG1PWMFreq +// PWM低档占空比(%) +#define _E2_DSG1PWMRatioL 30 // U8 xdata DSG1PWMRatioL +// PWM高档占空比(%) +#define _E2_DSG1PWMRatioH 70 // U8 xdata DSG1PWMRatioH +#define _E2_ucRamCheckFlg5 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg5 +// + +// 充电温度保护参数(SubClassID=0x06 length=11) +// 充电高温保护温度(_E2_TempOTC=保护温度*10+2731) +#define _E2_TempOTC 3231 // U16 xdata TempOTC +// 充电高温保护释放温度(_E2_TempOTCR=释放温度*10+2731) +#define _E2_TempOTCR 3181 // U16 xdata TempOTCR +// 充电低温保护温度(_E2_TempUTC=保护温度*10+2731) +#define _E2_TempUTC 2731 // U16 xdata TempUTC +// 充电低温保护释放温度(_E2_TempUTCR=释放温度*10+2731) +#define _E2_TempUTCR 2781 // U16 xdata TempUTCR +// 温度保护延时(s) +#define _E2_DelayOTC 3 // U8 xdata DelayOTC +// 温度保护释放延时(s) +#define _E2_DelayOTCR 3 // U8 xdata DelayOTCR +#define _E2_ucRamCheckFlg6 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg6 +// + +// 放电温度保护参数(SubClassID=0x07 length=9) +// 放电高温保护温度(_E2_TempOTC=保护温度*10+2731) +#define _E2_TempOTD 3431 // U16 xdata TempOTD +// 放电高温保护释放温度(_E2_TempOTCR=释放温度*10+2731) +#define _E2_TempOTDR 3281 // U16 xdata TempOTDR +// 放电低温保护温度(_E2_TempUTC=保护温度*10+2731) +#define _E2_TempUTD 2631 // U16 xdata TempUTD +// 放电低温保护释放温度(_E2_TempUTCR=释放温度*10+2731) +#define _E2_TempUTDR 2681 // U16 xdata TempUTDR +#define _E2_ucRamCheckFlg7 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg6 +// + +// 平衡参数(SubClassID=0x08 length=8) +// 平衡电压(mV) +#define _E2_BalanceVol 4180 // U16 xdata BalanceVol +// 平衡压差(mV) +#define _E2_BalanceVolDiff 20 // U16 xdata BalanceVolDiff +// 平衡电流(mA) +#define _E2_BalCurrent 100 // S16 xdata BalCurrent +// 平衡检测延时(S) +#define _E2_BalanceDelay 2 // U8 xdata BalanceDelay +#define _E2_ucRamCheckFlg8 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg8 +// + +// 容量统计参数(SubClassID=0x09 length=17) +// 容量百分比SOC(%) +#define _E2_ucSOC 100 // U8 xdata E2ucSOC +// 剩余容量E2ulDfRC(mAh) +#define _E2_ulDfRC 3000 // U32 xdata E2ulLastFCC +// 放电截止电流 +#define _E2_slDsgEndCurr -5000 // U32 xdata E2slDsgEndCurr +// 放电循环次数变更计数值 +#define _E2_ulCycleThresholdCount 0 // U32 xdata E2ulCycleThresholdCount +// 上次更新容量时的循环次数 +#define _E2_uiLastCCount 0 // U16 xdata E2uiLastCCount +// 放电截止标志 +#define _E2_ucDsgEndFlg 0 //U8 xdata E2ucDsgEndFlg +#define _E2_ucRamCheckFlg9 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg9 +// + +// AFE参数(SubClassID=0x0A length=4) +// 保护配置 +#define _E2_AFEProtectConfig 0x74 // U8 xdata AFEProtectConfig +// 硬件过压保护阈值 +#define _E2_AFEOVvol 4400 // U16 xdata AFEOVvol +#define _E2_ucRamCheckFlgA _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlgA +// + +// 校准参数(SubClassID=0x0B length=12) +// 电压校准增益 +#define _E2_uiVPackGain 2594 // U16 xdata E2uiVPackGain +// 电流校准增益 +#define _E2_siCadcGain -82 // S16 xdata E2siCadcGain +// 电流零漂 +#define _E2_siCadcOffset 1 // S16 xdata E2siCadcOffset +// 外部温度零漂(TS0) +#define _E2_siTS0Offset 0 // S16 xdata E2siTS0Offset +// 外部温度零漂(TS1) +#define _E2_siTS1Offset 0 // S16 xdata E2siTS1Offset +// 校准参数预留 +#define _E2_ucCalibrated 0 // U8 xdata E2ucCalibrated +#define _E2_ucRamCheckFlgB _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlgB +// + +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ + +struct DataFlashStu +{ +//系统信息区开始 SubClassID=0x00 length=48 + unsigned int E2uiPackConfigMap; + unsigned int E2uiVOC[10]; + unsigned long E2ulDesignCapacity; + unsigned long E2ulFCC; + unsigned long E2ulCycleThreshold; + unsigned int E2uiCycleCount; + unsigned int E2uiLearnLowTempe; + unsigned int E2Reserve; + signed int E2siDfilterCur; + unsigned char E2ucLowPowerDeley; + unsigned char E2ucChgBKDelay; + unsigned int E2siChgBKCur; + unsigned char E2ucRTCBKDelay; + unsigned char E2ucRamCheckFlg0; + +//用户自定义参数区开始 SubClassID=0x01 langth=50 + unsigned int E2uiSWVersion; + unsigned int E2uiHWVersion; + unsigned char E2ucID; + unsigned char E2ucMNFName[12]; + unsigned long E2ulMNFDate; + unsigned int E2uiSerialNum; + unsigned char E2ucDeviceName[12]; + unsigned char E2ucDeviceChem[12]; + unsigned int E2uiChemID; + unsigned char E2ucRamCheckFlg1; + +//充电参数区开始 SubClassID=0x02 langth=18 + unsigned int E2uiOVvol; + unsigned int E2uiOVRvol; + unsigned char E2ucOVDelay; + unsigned char E2ucOVRDelay; + unsigned int E2uiChgEndVol0; + signed int E2siChgEndCurr0; + unsigned char E2ucChgEndDelay0; + signed long E2slOCCvol; + unsigned char E2ucDelayOCC; + unsigned char E2ucDelayOCCR; + unsigned char E2ucRamCheckFlg2; + +//放电参数区开始 SubClassID=0x03 langth=21 + unsigned int E2uiUVvol; + unsigned int E2uiUVRvol; + unsigned char E2ucDelayUV; + unsigned char E2ucDelayUVR; + unsigned int E2uiDsgEndVol; + unsigned char E2ucDsgEndDelay; + signed long E2uiOCDvol; + unsigned char E2ucDelayOCD; + signed long E2slOCD2vol; + unsigned char E2ucDelayOCD2; + unsigned char E2ucDelayLoadR; + unsigned char E2ucRamCheckFlg3; + +//放电PWM参数区开始 SubClassID=0x05 langth=5 + unsigned int DSG1PWMFreq; + unsigned char DSG1PWMRatioL; + unsigned char DSG1PWMRatioH; + unsigned char E2ucRamCheckFlg5; + + +//充电温度保护参数开始 SubClassID=0x06 langth=11 + unsigned int TempOTC; + unsigned int TempOTCR; + unsigned int TempUTC; + unsigned int TempUTCR; + unsigned char DelayOTC; + unsigned char DelayOTCR; + unsigned char E2ucRamCheckFlg6; + +//放电温度保护参数开始 SubClassID=0x07 langth=9 + unsigned int TempOTD; + unsigned int TempOTDR; + unsigned int TempUTD; + unsigned int TempUTDR; + unsigned char E2ucRamCheckFlg7; + +//平衡参数区开始 SubClassID=0x08 langth=8 + unsigned int BalanceVol; + unsigned int BalanceVolDiff; + unsigned int BalCurrent; + unsigned char BalanceDelay; + unsigned char E2ucRamCheckFlg8; + +//容量统计 SubClassID=0x09 length=17 + unsigned char E2ucSOC; + unsigned long E2ulDfRC; + signed long E2slDsgEndCurr; + unsigned long E2ulCycleThresholdCount; + unsigned int E2uiLastCCount; + unsigned char E2ucDsgEndFlg; + unsigned char E2ucRamCheckFlg9; + +//AFE参数区开始 SubClassID=0x0A length=4 + unsigned char AFEProtectConfig; + unsigned int AFEOVvol; + unsigned char E2ucRamCheckFlgA; + +//校准参数区开始 SubClassID=0x0B length=12 + unsigned int E2uiVPackGain; + signed int E2siCadcGain; + unsigned int E2siCadcOffset; + unsigned int E2siTS0Offset; + unsigned int E2siTS1Offset; + unsigned char E2ucCalibrated; + unsigned char E2ucRamCheckFlgB; +}; + +union DataFlashUn +{ + struct DataFlashStu DataFlashStu0; /*一定要先声明结构体再定义数组*/ + unsigned char reversed[510]; +}; + +struct DataFlashStr +{ + union DataFlashUn DataFlashUnRaw; + unsigned int FlashCheck1; + union DataFlashUn DataFlashUnBak; + unsigned int FlashCheck2; +}; + +struct DataFlashStr code dataflashstr = +{ +/*****************************************************************************************************************/ +//备份A区 +/*****************************************************************************************************************/ + //系统信息区开始 SubClassID=0x00 length=48 + { + _E2_PACKCONFIGMAP, //U16 xdata E2uiPackConfigMap + _E2_VOC10, //U16 xdata VOC10 + _E2_VOC20, //U16 xdata VOC20 + _E2_VOC30, //U16 xdata VOC30 + _E2_VOC40, //U16 xdata VOC40 + _E2_VOC50, //U16 xdata VOC50 + _E2_VOC60, //U16 xdata VOC60 + _E2_VOC70, //U16 xdata VOC70 + _E2_VOC80, //U16 xdata VOC80 + _E2_VOC90, //U16 xdata VOC90 + _E2_VOC100, //U16 xdata VOC100 + _E2_ulDesignCapacity, // U32 xdata E2ulDesignCapacity + _E2_ulFCC, // U32 xdata E2ulFCC + _E2_ulCycleThreshold, // U32 xdata E2uiCycleThreshold + _E2_uiCycleCount, // U16 xdata E2uiCycleCount + _E2_uiLearnLowTempe, // U16 xdata E2uiLearnLowTempe + _E2_Reserve, // U16 xdata E2Reserve + _E2_siDfilterCur, // S16 xdata E2siDfilterCur + _E2_ucLowPowerDeley, // U8 xdata E2ucLowPowerDeley + _E2_ucChgBKDelay, // U8 xdata E2ucChgBKDelay + _E2_siChgBKCur, // S16 xdata E2siChgBKCur + _E2_ucRTCBKDelay, // U8 xdata E2ucRTCBKDelay + _E2_ucRamCheckFlg0, // U8 xdata E2ucRamCheckFlg0 + + + //用户自定义参数区开始 SubClassID=0x01 length=50 + _E2_SWVersion, //U16 xdata SWVersion + _E2_HWVersion, //U16 xdata HWVersion + _E2_ID, //U8 xdata ID + _E2_MNFName, //U8 xdata MNFName[12] + _E2_MNFDate, //U32 xdata MNFDate + _E2_SerialNum, //U16 xdata SerialNum + _E2_DeviceName, //U8 xdata DeviceName[12] + _E2_DeviceChem, //U8 xdata DeviceChem[12] + _E2_ChemID, //U16 xdata ChemID + _E2_ucRamCheckFlg1, //U8 xdata E2ucRamCheckFlg1 + + //充电参数区开始 SubClassID=0x02 length=18 + _E2_uiOVvol, //U16 xdata E2uiOVvol + _E2_uiOVRvol, //U16 xdata E2uiOVRvol + _E2_ucDelayOV, //U8 xdata E2ucDelayOV + _E2_ucDelayOVR, //U8 xdata E2ucDelayOVR + _E2_uiChgEndVol, + _E2_siChgEndCurr, + _E2_ucChgEndDelay, + _E2_slOCCvol, //S32 xdata E2slOCCvol + _E2_ucDelayOCC, //U8 xdata E2ucDelayOCC + _E2_ucDelayOCCR, //U8 xdata E2ucDelayOCCR + _E2_ucRamCheckFlg2, //U8 xdata E2ucRamCheckFlg2 + + //放电参数区开始 SubClassID=0x03 langth=21 + _E2_uiUVvol, //U16 xdata E2uiUVvol + _E2_uiUVRvol, //U16 xdata E2uiUVRvol + _E2_ucDelayUV, //U8 xdata E2ucDelayUV + _E2_ucDelayUVR, //U8 xdata E2ucDelayUVR + _E2_uiDsgEndVol, + _E2_ucDsgEndDelay, + _E2_uiOCDvol, //S32 xdata E2uiOCDvol + _E2_ucDelayOCD, //U8 xdata E2ucDelayOCD + _E2_slOCD2vol, //S32 xdata E2slOCD2vol + _E2_ucDelayOCD2, //U8 xdata E2ucDelayOCD2 + _E2_ucDelayLoadR, //U8 xdata E2ucDelayLoadR + _E2_ucRamCheckFlg3, //U8 xdata E2ucRamCheckFlg3 + + + //放电PWM参数区开始 SubClassID=0x05 langth=5 + _E2_DSG1PWMFreq, //U16 xdata DSG1PWMFreq + _E2_DSG1PWMRatioL, //U8 xdata DSG1PWMRatioL + _E2_DSG1PWMRatioH, //U8 xdata DSG1PWMRatioH + _E2_ucRamCheckFlg5, //U8 xdata E2ucRamCheckFlg5 + +//充电温度保护参数开始 SubClassID=0x06 langth=11 + _E2_TempOTC, //U16 xdata TempOTC + _E2_TempOTCR, //U16 xdata TempOTCR + _E2_TempUTC, //U16 xdata TempUTC + _E2_TempUTCR, //U16 xdata TempUTCR + _E2_DelayOTC, //U8 xdata DelayOTC + _E2_DelayOTCR, //U8 xdata DelayOTCR + _E2_ucRamCheckFlg6, //U8 xdata E2ucRamCheckFlg6 + +//放电温度保护参数开始 SubClassID=0x07 langth=9 + _E2_TempOTD, //U16 xdata TempOTD + _E2_TempOTDR, //U16 xdata TempOTDR + _E2_TempUTD, //U16 xdata TempUTD + _E2_TempUTDR, //U16 xdata TempUTDR + _E2_ucRamCheckFlg7, //U8 xdata E2ucRamCheckFlg7 + +//平衡参数区开始 SubClassID=0x08 langth=8 + _E2_BalanceVol, // U16 xdata BalanceVol + _E2_BalanceVolDiff, // U16 xdata BalanceVolDiff + _E2_BalCurrent, // S16 xdata BalCurrent + _E2_BalanceDelay, // U8 xdata BalanceDelay + _E2_ucRamCheckFlg8, // U8 xdata E2ucRamCheckFlg8 + +//容量统计 SubClassID=0x09 langth=17 + + _E2_ucSOC, //U8 xdata E2ucSOC + + _E2_ulDfRC, //U32 xdata E2ulLastFCC + + _E2_slDsgEndCurr, //U32 xdata E2slDsgEndCurr + _E2_ulCycleThresholdCount, //U32 xdata E2ulCycleThresholdCount + _E2_uiLastCCount, + _E2_ucDsgEndFlg, //U8 xdata E2ucDsgEndFlg + _E2_ucRamCheckFlg9, //U8 xdata E2ucRamCheckFlg9 + +//AFE参数区开始 SubClassID=0x0A langth=4 + _E2_AFEProtectConfig, // U8 xdata AFEProtectConfig + _E2_AFEOVvol, // U16 xdata AFEOVvol + _E2_ucRamCheckFlgA, // U8 xdata E2ucRamCheckFlgA + +//校准参数区开始 SubClassID=0x0B langth=12 + _E2_uiVPackGain, //U16 xdata E2uiVPackGain + _E2_siCadcGain, //S16 xdata E2siCadcGain + _E2_siCadcOffset, //S16 xdata E2siCadcOffset + _E2_siTS0Offset, //S16 xdata E2siTS0Offset + _E2_siTS1Offset, //S16 xdata E2siTS1Offset + _E2_ucCalibrated, //S16 xdata E2ucCalibrated + _E2_ucRamCheckFlgB, //U8 xdata E2ucRamCheckFlgB + }, + + _FLASH_CHECK_DATA, // U16 xdata FlashCheck +/*****************************************************************************************************************/ +//备份B区 +/*****************************************************************************************************************/ +/*****************************************************************************************************************/ +//系统信息区开始 SubClassID=0x00 langth=48 + { + _E2_PACKCONFIGMAP, //U16 xdata E2uiPackConfigMap + _E2_VOC10, //U16 xdata VOC10 + _E2_VOC20, //U16 xdata VOC20 + _E2_VOC30, //U16 xdata VOC30 + _E2_VOC40, //U16 xdata VOC40 + _E2_VOC50, //U16 xdata VOC50 + _E2_VOC60, //U16 xdata VOC60 + _E2_VOC70, //U16 xdata VOC70 + _E2_VOC80, //U16 xdata VOC80 + _E2_VOC90, //U16 xdata VOC90 + _E2_VOC100, //U16 xdata VOC100 + _E2_ulDesignCapacity, // U32 xdata E2ulDesignCapacity + _E2_ulFCC, // U32 xdata E2ulFCC + _E2_ulCycleThreshold, // U32 xdata E2uiCycleThreshold + _E2_uiCycleCount, // U16 xdata E2uiCycleCount + _E2_uiLearnLowTempe, // U16 xdata E2uiLearnLowTempe + _E2_Reserve, // U16 xdata E2Reserve + _E2_siDfilterCur, // S16 xdata E2siDfilterCur + _E2_ucLowPowerDeley, // U8 xdata E2ucLowPowerDeley + _E2_ucChgBKDelay, // U8 xdata E2ucChgBKDelay + _E2_siChgBKCur, // S16 xdata E2siChgBKCur + _E2_ucRTCBKDelay, // U8 xdata E2ucRTCBKDelay + _E2_ucRamCheckFlg0, // U8 xdata E2ucRamCheckFlg0 + + +//用户自定义参数区开始 SubClassID=0x01 length=50 + _E2_SWVersion, //U16 xdata SWVersion + _E2_HWVersion, //U16 xdata HWVersion + _E2_ID, //U8 xdata ID + _E2_MNFName, //U8 xdata MNFName[12] + _E2_MNFDate, //U32 xdata MNFDate + _E2_SerialNum, //U16 xdata SerialNum + _E2_DeviceName, //U8 xdata DeviceName[12] + _E2_DeviceChem, //U8 xdata DeviceChem[12] + _E2_ChemID, //U16 xdata ChemID + _E2_ucRamCheckFlg1, //U8 xdata E2ucRamCheckFlg1 + +//充电参数区开始 SubClassID=0x02 length=18 + _E2_uiOVvol, //U16 xdata E2uiOVvol + _E2_uiOVRvol, //U16 xdata E2uiOVRvol + _E2_ucDelayOV, //U8 xdata E2ucDelayOV + _E2_ucDelayOVR, //U8 xdata E2ucDelayOVR + _E2_uiChgEndVol, + _E2_siChgEndCurr, + _E2_ucChgEndDelay, + _E2_slOCCvol, //S32 xdata E2slOCCvol + _E2_ucDelayOCC, //U8 xdata E2ucDelayOCC + _E2_ucDelayOCCR, //U8 xdata E2ucDelayOCCR + _E2_ucRamCheckFlg2, //U8 xdata E2ucRamCheckFlg2 + +//放电参数区开始 SubClassID=0x03 langth=21 + _E2_uiUVvol, //U16 xdata E2uiUVvol + _E2_uiUVRvol, //U16 xdata E2uiUVRvol + _E2_ucDelayUV, //U8 xdata E2ucDelayUV + _E2_ucDelayUVR, //U8 xdata E2ucDelayUVR + _E2_uiDsgEndVol, + _E2_ucDsgEndDelay, + _E2_uiOCDvol, //S32 xdata E2uiOCDvol + _E2_ucDelayOCD, //U8 xdata E2ucDelayOCD + _E2_slOCD2vol, //S32 xdata E2slOCD2vol + _E2_ucDelayOCD2, //U8 xdata E2ucDelayOCD2 + _E2_ucDelayLoadR, //U8 xdata E2ucDelayLoadR + _E2_ucRamCheckFlg3, //U8 xdata E2ucRamCheckFlg3 + + +//放电PWM参数区开始 SubClassID=0x05 langth=5 + _E2_DSG1PWMFreq, //U16 xdata DSG1PWMFreq + _E2_DSG1PWMRatioL, //U8 xdata DSG1PWMRatioL + _E2_DSG1PWMRatioH, //U8 xdata DSG1PWMRatioH + _E2_ucRamCheckFlg5, //U8 xdata E2ucRamCheckFlg5 + +//充电温度保护参数开始 SubClassID=0x06 langth=11 + _E2_TempOTC, //U16 xdata TempOTC + _E2_TempOTCR, //U16 xdata TempOTCR + _E2_TempUTC, //U16 xdata TempUTC + _E2_TempUTCR, //U16 xdata TempUTCR + _E2_DelayOTC, //U8 xdata DelayOTC + _E2_DelayOTCR, //U8 xdata DelayOTCR + _E2_ucRamCheckFlg6, //U8 xdata E2ucRamCheckFlg6 + +//放电温度保护参数开始 SubClassID=0x07 langth=9 + _E2_TempOTD, //U16 xdata TempOTD + _E2_TempOTDR, //U16 xdata TempOTDR + _E2_TempUTD, //U16 xdata TempUTD + _E2_TempUTDR, //U16 xdata TempUTDR + _E2_ucRamCheckFlg7, //U8 xdata E2ucRamCheckFlg7 + +//平衡参数区开始 SubClassID=0x08 langth=8 + _E2_BalanceVol, // U16 xdata BalanceVol + _E2_BalanceVolDiff, // U16 xdata BalanceVolDiff + _E2_BalCurrent, // S16 xdata BalCurrent + _E2_BalanceDelay, // U8 xdata BalanceDelay + _E2_ucRamCheckFlg8, // U8 xdata E2ucRamCheckFlg8 + +//容量统计 SubClassID=0x09 langth=17 + _E2_ucSOC, //U8 xdata E2ucSOC + _E2_ulDfRC, //U32 xdata E2ulLastFCC + _E2_slDsgEndCurr, //U32 xdata E2slDsgEndCurr + _E2_ulCycleThresholdCount, //U32 xdata E2ulCycleThresholdCount + _E2_uiLastCCount, + _E2_ucDsgEndFlg, //U8 xdata E2ucDsgEndFlg + + _E2_ucRamCheckFlg9, //U8 xdata E2ucRamCheckFlg9 + +//AFE参数区开始 SubClassID=0x0A langth=4 + _E2_AFEProtectConfig, // U8 xdata AFEProtectConfig + _E2_AFEOVvol, // U16 xdata AFEOVvol + _E2_ucRamCheckFlgA, // U8 xdata E2ucRamCheckFlgA + +//校准参数区开始 SubClassID=0x0B langth=12 + _E2_uiVPackGain, //U16 xdata E2uiVPackGain + _E2_siCadcGain, //S16 xdata E2siCadcGain + _E2_siCadcOffset, //S16 xdata E2siCadcOffset + _E2_siTS0Offset, //S16 xdata E2siTS0Offset + _E2_siTS1Offset, //S16 xdata E2siTS1Offset + _E2_ucCalibrated, //S16 xdata E2ucCalibrated + _E2_ucRamCheckFlgB, //U8 xdata E2ucRamCheckFlgB + }, + + _FLASH_CHECK_DATA, // U16 xdata FlashCheck +}; + +//*** <<< end of configuration section >>> *** diff --git a/code_drv/AFE.c b/code_drv/AFE.c new file mode 100644 index 0000000..c98d94d --- /dev/null +++ b/code_drv/AFE.c @@ -0,0 +1,517 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + +//AFE相关的变量 +BOOL bAfeAlarmFlg; +BOOL bCADCFlg; +BOOL bVADCFlg; +BOOL bAfeI2CRWErrFlg; +BOOL bAfeErr; +U8 data ucCellNum; //当前硬件电芯串数 +U8 data ucCellNumOffset; //当前硬件电芯连接方式对应的偏移,用于程序读取AFE对应寄存器 +U16 data uiCellVmax; //电芯电压最大值 +U16 data uiCellVmin; //电芯电压最小值 +U16 xdata uiVadcVmax; //ADC采集最大值 +U16 xdata uiVadcVmin; //ADC采集最小值 +U8 xdata ucTempeMiddle; +U16 xdata uiTempeMin; +U16 xdata uiTempeMax; +S32 xdata slCadcCurrent; +S32 xdata slCadcCurAverage; +U8 xdata ucCadcCnt; +S32 xdata slCadcCurBuf[16]; +U8 xdata ucAfeI2CErrDelayCnt; +SYSINFOR xdata Info; //经过计算的值 +AFEDATA xdata AFE; //AFE寄存器读取的值 +AFEREG xdata REG; //AFE寄存器预设值 + + + +/************************************************************************************************* +* 函数名: AFETwiCheck +* 参 数: 无 +* 返回值: 无 +* 描 述: 连续5S检测到AFE的I2C通讯错误,则置位bAfeErr=1 +*************************************************************************************************/ +void AFETwiCheck(void) +{ + if(bAfeI2CRWErrFlg) + { + if(++ucAfeI2CErrDelayCnt >= TIME_1S_5S) + { + bAfeErr = 1; + ucAfeI2CErrDelayCnt = TIME_1S_5S; + } + } + else + { + ucAfeI2CErrDelayCnt = 0; + } +} + + +/************************************************************************************************* +* 函数名: AFEWriteReg +* 参 数: Reg:寄存器地址 + WrBuf:写的数据:1Byte数据+1Byte CRC +* 返回值: 1:成功;0:失败 +* 描 述: 写AFE寄存器,每次写一个寄存器 +*************************************************************************************************/ +BOOL AFEWriteReg(U8 Reg, U8 Length, U8 xdata *WrBuf) +{ + BOOL Result = 0; + U8 Times = 0; + U8 i; + + if(!bAfeErr) + { + for(i=0; i= 5) + { + break; + } + else + { + Times = 0; + Reg++; + WrBuf++; + } + Delay1ms(1); + } + } + bAfeI2CRWErrFlg = !Result; //标记通讯是否正常 + + return Result; +} + + +/************************************************************************************************* +* 函数名: AFEReadReg +* 参 数: Reg:寄存器地址 + RdBuf:读的数据:2Byte数据+1Byte CRC +* 返回值: 1:成功;0:失败 +* 描 述: 读AFE寄存器,每次连续读两个寄存器 +*************************************************************************************************/ +BOOL AFEReadReg(U8 Reg, U8 Length , U8 xdata *RdBuf) +{ + BOOL Result = 0; + U8 Times = 0; + + if(!bAfeErr) + { + while(Times++ < 5) //如果读数出错,则Try 5次 + { + #ifdef TWI_Hardware_Module + Result = TwiRead(AFE_ID, Reg, TWI_ADDR_1B, Length, TWI_CRC_YES, RdBuf); + #else + Result = TwiRead(AFE_ID, Reg, Length, RdBuf); + #endif + if(Result) //如果读数成功且CRC校验正确,则退出循环返回成功标标志 + { + break; + } + else //如果TWI读数或CRC校验失败,则延时1mS之后再读取 + { + TWICON = 0; //Close TWI module + Delay1ms(1); + TwiInit(); //Reinitial + Delay1ms(1); + } + } + } + bAfeI2CRWErrFlg = !Result; //标记通讯是否正常 + + return Result; +} + + +/************************************************************************************************* +* 函数名: AFEClrFlg +* 参 数: +* 返回值: 无 +* 描 述: 清零AFE标志寄存器 +*************************************************************************************************/ +void AFEClrFlg(void) +{ + if(AFEReadReg(AFE_FLAG1, 2, ®.AFEFLAG1)) + { + if((REG.AFEFLAG1!=0) || (REG.AFEFLAG2!=0)) + { + REG.AFESCONF1 |= 0x80; + AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + REG.AFESCONF1 &= ~0x80; + AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + } + } +} + + +/************************************************************************************************* +* 函数名: AFEInitReg +* 参 数: 无 +* 返回值: 无 +* 描 述: 初始化AFE寄存器 +*************************************************************************************************/ +void AFEInitReg(void) +{ + U16 TempVar; + + REG.AFEINTEN = 0x00; //采取查询式,故不需要ALARM中断 + REG.AFESCONF1 = 0x50; //使能CTLD和WDT功能 + REG.AFESCONF2 = 0x00; //AFE引脚配置为复位信号,ALARM输出低电平脉冲,放电MOS与充电MOS都关闭 + REG.AFESCONF3 = 0xF8; //默认VADC和CADC都开启,CADC连续采样,10位ADC,VADC只采集电压转换周期50ms + REG.AFESCONF4 = 0x00; //默认关闭平衡BAT6-10 + REG.AFESCONF5 = 0x00; //默认关闭平衡BAT1-5 + REG.AFESCONF6 = 0x70; //CADC采集200mV范围,复位信号宽度1S,硬件短路保护电压100mV,硬件短路保护延时50uS + REG.AFESCONF7 = 0x01; //硬件过冲保护延时1个转换周期,充放电状态阈值选择位1.4mV,配置看门狗溢出10S + REG.AFESCONF8 = 0x03; //SCONF8 + SCONF9 = 11 1111 1111 = 1023 + REG.AFESCONF9 = 0xff; //硬件过冲保护阈值1023*5.86mV = 5994.78 + REG.AFESCONF10= 0x00; //低功耗控制位,写入0x33再写PD_EN=1进入低功耗 + + if(bSC_EN) //配置使能AFE短路功能 + { + REG.AFESCONF1 |= 0x08; + REG.AFESCONF6 |= (E2ucAFEProtectConfig&0x0f);//将FLASH内参数写入AFE寄存器 + } + if(bOV_EN) //配置使能AFE过压功能 + { + REG.AFESCONF1 |= 0x04; + REG.AFESCONF7 |= (E2ucAFEProtectConfig&0xf0);//将FLASH内参数写入AFE寄存器 + TempVar = (U32)E2uiAFEOVvol*50/293; //取出过压保护电压 + REG.AFESCONF8 = TempVar>>8; //写高两位 + REG.AFESCONF9 = TempVar; //写低八位 + } +} + + + +/************************************************************************************************* +* 函数名: AFEInit +* 参 数: +* 返回值: 1:成功;0:失败 +* 描 述: 初始化AFE +*************************************************************************************************/ +BOOL AFEInit(void) +{ + U8 xdata RdBuf[2]; + U8 i; + BOOL Result = 1; + U8 j = 3; + + while(j--) + { + if( AFEWriteReg(AFE_INT_EN, 11, ®.AFEINTEN)) + { + for(i=3; i<=11; i=i+2) + { + AFEReadReg(i, 2, RdBuf); + + if((RdBuf[0]!=*(®.AFEFLAG1+i)) || (RdBuf[1]!=*(®.AFEFLAG1+i+1))) + { + if(i != 7) //平衡寄存器除外,因为平衡寄存器不置位,持续30s会自动清零 + { + Result = 0; + break; + } + } + } + } + else + { + Result = 0; + } + if(Result) + { + break; + } + } + return Result; + +} + + +/************************************************************************************************* +* 函数名: AFERdFlg +* 参 数: +* 返回值: 无 +* 描 述: 读取AFE标志寄存器 + AFE_SC表示发生短路保护 + FLAG2的bit2为1表示发生LVR复位,需要重新初始化AFE +*************************************************************************************************/ +void AFERdFlg(void) +{ + if(AFEReadReg(AFE_FLAG1, 2, ®.AFEFLAG1)) + { + if((REG.AFEFLAG2&0x02) != 0) //CADC 电流转换完成 + { + bCADCFlg = 1; + } + + if((REG.AFEFLAG2&0x01) != 0) //VADC 电压转换完成 + { + bVADCFlg = 1; + } + + if((REG.AFEFLAG1&0x08) != 0 && (bLoadChkingFlg != 1)) //AFE短路保护 + { + bAFE_SC = 1; + bLoadStartCheckFlg = 1; //开启负载检测 + } + if((REG.AFEFLAG1&0x04) != 0) //AFE 硬件过压保护 + { + bAFE_OV= 1; + } + + if((REG.AFEFLAG2&0x04) != 0) //判断FLAG2的bit2是否为1,如为1则表示AFE发生过LVR,需要重新初始化AFE寄存器 + { + AFEInit(); + } + } +} + + +/************************************************************************************************* +* 函数名: AFERdStatus +* 参 数: +* 返回值: 无 +* 描 述: 读取AFE状态寄存器 +*************************************************************************************************/ +void AFERdStatus(void) +{ + U8 RegTemp[2]; + if(AFEReadReg(AFE_BSTATUS, 2, RegTemp))//®.AFEBSTATUS))//AFE固定读2Bytes,只取1Byte + { + ucAFEStatus = REG.AFEBSTATUS = RegTemp[0]; //更新充电器、负载的检测结果 + } +} + + +/************************************************************************************************* +* 函数名: AFERamCheck +* 参 数: +* 返回值: 无 +* 描 述: 定时检测AFE的寄存器是否被改写,如果是则重新初始化 +*************************************************************************************************/ +void AFERamCheck(void) +{ + U8 xdata RdBuf[2]; + U8 i; + + for(i=3; i<=11; i=i+2) + { + AFEReadReg(i, 2, RdBuf); + + if((RdBuf[0]!=*(®.AFEFLAG1+i)) || (RdBuf[1]!=*(®.AFEFLAG1+i+1))) + { + if(i != 7) //平衡寄存器除外,因为平衡寄存器不置位,持续30s会自动清零 + { + if(!AFEInit()) + { + bPDFlg = 1; + } + break; + } + } + } +} + + +/************************************************************************************************* +* 函数名: AFEEnterPD +* 参 数: +* 返回值: 无 +* 描 述: 控制AFE进入PD状态,关闭3.3V输出 +*************************************************************************************************/ +void AFEEnterPD(void) +{ + REG.AFESCONF10 = 0x33; + if(AFEWriteReg(AFE_SCONF10, 1, ®.AFESCONF10)) + { + REG.AFESCONF1 |= 0x20; + AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + } +} + + +/************************************************************************************************* +* 函数名: AFEMosCtl +* 参 数: MosStatus:MOS状态。1:开启;0:关闭 +* 返回值: 无 +* 描 述: 控制充放电MOS的开启和关闭 +*************************************************************************************************/ +void AFEMosCtl(U8 MosStatus) +{ + REG.AFESCONF2 &= ~0x03; + REG.AFESCONF2 |= MosStatus; + AFEWriteReg(AFE_SCONF2, 1, ®.AFESCONF2); +} + + + +/************************************************************************************************* +* 函数名: AFEChgerCheckEn、AFEChgerCheckDis、AFELoadCheckEn、AFELoadCheckDis +* 参 数: +* 返回值: 无 +* 描 述: 使能/关闭充电器检测、负载检测 +*************************************************************************************************/ +void AFEChgerCheckEn(void) +{ + REG.AFESCONF1 |= 0x01; + AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); +} + + +void AFEChgerCheckDis(void) +{ + REG.AFESCONF1 &= ~0x01; + AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); +} + + +void AFELoadCheckEn(void) +{ + REG.AFESCONF1 |= 0x02; + AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); +} + + +void AFELoadCheckDis(void) +{ + REG.AFESCONF1 &= ~0x02; + AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); +} + + +/************************************************************************************************* +* 函数名: AfeBalEn +* 参 数: BalChTemp:平衡对应的CELL,如果全部为0,则关闭平衡 +* 返回值: 无 +* 描 述: 开启和关闭平衡 +*************************************************************************************************/ +void AfeBalCtl(U16 BalChTemp) +{ + REG.AFESCONF4 = BalChTemp>>5; + if(AFEWriteReg(AFE_SCONF4, 1, ®.AFESCONF4)) + { + REG.AFESCONF5 = BalChTemp; + AFEWriteReg(AFE_SCONF5, 1, ®.AFESCONF5); + } +} + + +/************************************************************************************************* +* 函数名: AfeWDTEn, AfeWDTDis +* 参 数: +* 返回值: 无 +* 描 述: 开启和关闭看门狗模块 +*************************************************************************************************/ +void AfeWDTEn(void) +{ + REG.AFESCONF1 |= 0x10; + AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); +} + + +void AfeWDTDis(void) +{ + REG.AFESCONF1 &= ~0x10; + AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); +} + + +/************************************************************************************************* +* 函数名: AfeWDTEn, AfeWDTDis +* 参 数: 无 +* 返回值: 无 +* 描 述: 开启和关闭看门狗模块 +*************************************************************************************************/ +void AfeADCEn(void) +{ + REG.AFESCONF3 |= 0xf8; + AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); +} + + +void AfeADCDis(void) +{ + REG.AFESCONF3 &= ~0xf8; + AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); +} + +void AfeCADCEn(void) +{ + REG.AFESCONF3 |= 0xe0; + AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); +} + + +void AfeCADCDis(void) +{ + REG.AFESCONF3 &= ~0xe0; + AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); +} + +void AfeTempADCEn(void) +{ + REG.AFESCONF3 |= 0x08; + AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); +} + + +void AfeTempADCDis(void) +{ + REG.AFESCONF3 &= ~0x08; + AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); +} + + +/************************************************************************************************* +* 函数名: AfeAlarmEn,AfeAlarmDis +* 参 数: AlarmFlg:置位对应的ALARM位 +* 返回值: 无 +* 描 述: 开启和关闭对应的ALARM中断触发 +*************************************************************************************************/ +void AfeAlarmEn(U8 AlarmFlg) +{ + REG.AFEINTEN |= AlarmFlg; + AFEWriteReg(AFE_INT_EN, 1, ®.AFEINTEN); +} + +void AfeAlarmDis(U8 AlarmFlg) +{ + REG.AFEINTEN &= ~AlarmFlg; + AFEWriteReg(AFE_INT_EN, 1, ®.AFEINTEN); +} + + diff --git a/code_drv/Balance.c b/code_drv/Balance.c new file mode 100644 index 0000000..2fb7509 --- /dev/null +++ b/code_drv/Balance.c @@ -0,0 +1,253 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +BOOL bBalanceFlg; +BOOL bBalancingFlg; +BOOL bBalanceOddFlg; +BOOL bCTOValidFlg; //当电芯压差超过1200mV时,才认为存在断线,主要解决电芯电压低于2V情况下 +BOOL bCellOpenDecFlag; +U16 xdata uiBalanceChannel; +U8 xdata ucBalanceTimeCnt; +U8 xdata ucBalanceStep; +U8 xdata ucCellOpenDecCnt; +U8 xdata ucCtoCnt; + +/************************************************************************************************* +* 函数名: BalTurnOnCheck +* 参 数: 无 +* 返回值: 无 +* 描 述: + 1. 平衡开启条件是电压、压差及电流 同时满足 + 2. 平衡过程中,不再进行平衡检测 + 3. 断线检测借用平衡 +*************************************************************************************************/ +void BalTurnOnCheck(void) +{ + U8 i; + + if(!bBalancingFlg && !bCellOpenDecFlag) //在一个平衡周期中或开启断线检测时不判定是否进行平衡 + { + if(bBAL_EN) + { + uiBalanceChannel = 0; + if(((uiCellVmax>E2uiOVvol)&&(!bOV)) //发生温度保护时不进行平衡,判定进入过压、过压恢复、进入充电截止时暂停平衡 + ||((uiCellVmax < E2uiOVRvol)&&(bOV)) + || bOTC || bUTC || bOTD || bUTD) + { + bBalanceFlg = 0; + ucBalanceTimeCnt = 0; + } + else + { + if(((uiCellVmax>E2uiBalanceVol) && (uiCellVmax-uiCellVmin)>=E2uiBalanceVolDiff) && (Info.slCurr>=E2siBalCurrent)) + { + if(!bBalanceFlg) + { + ucBalanceTimeCnt++; + } + if(ucBalanceTimeCnt >= BAL_DELAY_CNT) + { + for(i=ucCellNumOffset; i=E2uiBalanceVolDiff)&&(Info.uiVCell[i]>=E2uiBalanceVol)) //电芯电压大于平衡电压,且压差大于阈值,开启该电芯平衡 + { + uiBalanceChannel |= (1<= TIME_50MS_500MS) //断线 500mS + { + bCTO = 1; + } + } + else + { + bCTOValidFlg = 0; + ucCtoCnt = 0; + } + } + } +#ifdef SP_CTO_RECOVER + else //断线恢复功能,每250mS一个周期判断最小电压 + { + if(uiVadcVmin >= VOL_CELL_CUT_180MV) //180mV + { + if(++ucCtoRCnt >= TIME_250MS_1S) + { + bCTO = 0; + } + } + else + { + ucCtoRCnt = 0; + } + } +#endif + } + + return bResult; +} + + +/************************************************************************************************* +* 函数名: BalProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: + 1. 平衡周期分为5个STEP,合计250mS + 2. 平衡效率<100/(250mS*2)(采用奇偶平衡) + 3. 如果检测到断线,则持续开启平衡进行断线检测 + 4. 平衡开启后,正常的电压保护判断延时可能会多延时250mS(一个平衡周期) +*************************************************************************************************/ +void BalProcess(void) +{ + U16 BalChTemp; + +//判断电芯电压压差是否超过1.2V,如果超过则允许判断断线,主要解决电芯电压<2V情况下平衡会触发断线判断条件 +//判断电芯最大电压是否小于1.38V,如果小于则允许判断断线,主要解决未有效检测电芯电压的情况下压差不满足断线判断条件 + if((uiCellVmax-uiCellVmin>=VOL_CELL_CUT_1200MV) || (uiCellVmax<=VOL_CELL_CUT_1380MV)) + { + bCTOValidFlg = 1; + } + + switch(ucBalanceStep) + { + case BALANCE_ENABLE: //VADC采集的数据用于正常电压判断 + if(bCellOpenDecFlag || bBalanceFlg) + { + if(bBalanceOddFlg) //odd balance + { + BalChTemp = uiBalanceChannel&0x5555; + } + else //even balance + { + BalChTemp = uiBalanceChannel&0xAAAA; + } + AfeBalCtl(BalChTemp); //开启平衡 + ucBalanceStep = BALANCE_START; + bBalancingFlg = 1; + } + break; + + case BALANCE_START: //VADC采集的电压数据丢掉 + ucBalanceStep = BALANCING; + break; + + case BALANCING: //VADC采集的电压数据判断断线 + if(!CTOCheckVol()) //如果发现有断线则连续检测断线 + { + AfeBalCtl(0); //关闭平衡 + ucBalanceStep = BALANCE_DISABLE; + bBalanceOddFlg = ~bBalanceOddFlg; + } + break; + + case BALANCE_DISABLE: //VADC采集的电压数据丢掉 + if(!CTOCheckVol()) //如果发现有断线则连续检测断线 + { + ucBalanceStep = BALANCE_NULL; + } + else + { + ucBalanceStep = BALANCE_ENABLE; + bBalanceOddFlg = ~bBalanceOddFlg; + } + break; + + case BALANCE_NULL: //VADC采集的数据用于正常电压判断 + ucBalanceStep = BALANCE_ENABLE; + bCellOpenDecFlag = 0; + bBalanceFlg = 0; + bBalancingFlg = 0; + break; + } +} + + +/************************************************************************************************* +* 函数名: CellOpenProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 每2S开启一次断线检测 +*************************************************************************************************/ +void CTOTurnOnCheck(void) +{ +#ifdef SP_CTO_RECOVER + if(bCTO_EN) //支持断线恢复 +#else + if(bCTO_EN && !bCTO) //如果已发生断线则不检测 +#endif + { + if(++ucCellOpenDecCnt >= TIME_50MS_2250MS) //2S + { + ucCellOpenDecCnt = TIME_50MS_2250MS; //避免该检测周期是平衡的偶数倍关系 + if(!bBalancingFlg) //如果正在平衡,则等一个平衡周期结束后再开启断线检测 + { + ucCellOpenDecCnt = 0; + bCellOpenDecFlag = 1; + uiBalanceChannel = 0x03ff; + } + } + } +} + +/************************************************************************************************* +* 函数名: BalanceProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 平衡与断线检测处理 +*************************************************************************************************/ +void BalanceProcess(void) +{ + BalTurnOnCheck(); //检测是否满足平衡开启条件 + + CTOTurnOnCheck(); //定时开启断线检测 + + BalProcess(); //处理平衡和断线时序 +} + + + + diff --git a/code_drv/BootApp.c b/code_drv/BootApp.c new file mode 100644 index 0000000..4726dac --- /dev/null +++ b/code_drv/BootApp.c @@ -0,0 +1,29 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: sino +Version: V1.0 +Date: 2020/12/29 +History: + V0.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + +/************************************************************************************************* +* 函数名: ISPProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: ISP和IAP的接口函数 +*************************************************************************************************/ +void ISPProcess(void) +{ + if(bISPFlg &&( bUart0SndAckFlg ||bUart1SndAckFlg||bUart2SndAckFlg)) + { + bISPFlg = 0; + bUart0SndAckFlg = 0; + bUart1SndAckFlg = 0; + bUart2SndAckFlg = 0; + IrqDis(); //关闭总中断源 + AfeWDTDis(); //关闭AFE的看门狗功能,否则在更新程序时MCU会复位 + ((void(code*)(void))0x00A6)(); //Boot区,IAP和ISP程序升级入口 + } +} diff --git a/code_drv/BootIAP.c b/code_drv/BootIAP.c new file mode 100644 index 0000000..ac8ccf3 --- /dev/null +++ b/code_drv/BootIAP.c @@ -0,0 +1,266 @@ +#include "Main.H" + + +unsigned char code g_loadercode[4096]={ + 0x02,0x0D,0x7A,0x02,0x10,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x0B,0x00,0x00, //0000 + 0x00,0x00,0x00,0x02,0x10,0x13,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x1B,0x00,0x00, //0010 + 0x00,0x00,0x00,0x02,0x10,0x23,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x2B,0x00,0x00, //0020 + 0x00,0x00,0x00,0x02,0x10,0x33,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x3B,0x00,0x00, //0030 + 0x00,0x00,0x00,0x02,0x10,0x43,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x4B,0x00,0x00, //0040 + 0x00,0x00,0x00,0x02,0x10,0x53,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x5B,0x00,0x00, //0050 + 0x00,0x00,0x00,0x02,0x10,0x63,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x6B,0x00,0x00, //0060 + 0x00,0x00,0x00,0x02,0x10,0x73,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x7B,0x00,0x00, //0070 + 0x00,0x00,0x00,0x02,0x10,0x83,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x8B,0x00,0x00, //0080 + 0x00,0x00,0x00,0x02,0x10,0x93,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x9B,0x00,0x00, //0090 + 0x00,0x00,0x00,0x02,0x10,0xA3,0xE4,0xF5,0x26,0xF5,0x25,0xF5,0x24,0xF5,0x23,0xF5, //00A0 + 0x30,0xF5,0x2F,0xF5,0x2E,0xF5,0x2D,0xF5,0x2C,0x12,0x0D,0x5E,0x20,0x98,0x03,0x02, //00B0 + 0x01,0x8E,0x74,0x00,0x25,0x2B,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE5,0x99,0xF0, //00C0 + 0x05,0x2B,0xE5,0x2B,0xC3,0x94,0x8C,0x40,0x03,0xE4,0xF5,0x2B,0xE5,0x2B,0xB4,0x01, //00D0 + 0x0D,0x90,0x02,0x00,0xE0,0x64,0x5A,0x70,0x03,0x02,0x01,0x8C,0x80,0x6B,0xE5,0x2B, //00E0 + 0xB4,0x02,0x14,0x90,0x02,0x01,0xE0,0x64,0xA5,0x60,0x02,0x80,0x5C,0xE4,0xF5,0x31, //00F0 + 0xF5,0x32,0xF5,0x22,0x02,0x01,0x8C,0x90,0x02,0x02,0xE0,0xFF,0x7E,0x00,0x24,0x09, //0100 + 0xFD,0xEE,0x33,0xFC,0xAB,0x2B,0x7A,0x00,0xC3,0xEB,0x9D,0xEC,0x64,0x80,0xF8,0x74, //0110 + 0x80,0x98,0x50,0x62,0xEF,0x24,0x07,0xFF,0xEE,0x33,0xFE,0xD3,0xEB,0x9F,0xEE,0x64, //0120 + 0x80,0xF8,0x74,0x80,0x98,0x50,0x15,0x74,0xFF,0x25,0x2B,0xF5,0x82,0xE4,0x34,0x01, //0130 + 0xF5,0x83,0xE0,0x25,0x32,0xF5,0x32,0xE4,0x35,0x31,0xF5,0x31,0xE5,0x2B,0xB4,0x05, //0140 + 0x0D,0x90,0x02,0x04,0xE0,0x64,0x07,0x60,0x33,0xE4,0xF5,0x2B,0x80,0x2E,0xE5,0x2B, //0150 + 0x64,0x06,0x70,0x28,0x90,0x02,0x05,0xE0,0xFF,0x64,0x06,0x60,0x1F,0xEF,0x64,0x07, //0160 + 0x60,0x1A,0xEF,0x64,0x08,0x60,0x15,0xEF,0x64,0x09,0x60,0x10,0xEF,0x64,0x0A,0x60, //0170 + 0x0B,0x43,0x22,0x30,0x80,0x06,0x53,0xB1,0xF8,0x12,0x0A,0x9D,0xC2,0x98,0x30,0x99, //0180 + 0x44,0x53,0xB1,0xF8,0x90,0x02,0x02,0xE0,0x24,0x08,0xFF,0xE4,0x33,0xFE,0xC3,0xE5, //0190 + 0x2B,0x9F,0xEE,0x64,0x80,0xF8,0x74,0x80,0x98,0x40,0x13,0xE4,0xF5,0x86,0xD2,0x9C, //01A0 + 0xF5,0x2B,0x90,0x02,0x00,0xF0,0xA3,0xF0,0xA3,0xF0,0xD2,0x02,0x80,0x15,0x05,0x2B, //01B0 + 0xE4,0xF5,0x86,0xC2,0x9C,0x74,0x00,0x25,0x2B,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83, //01C0 + 0xE0,0xF5,0x99,0xC2,0x99,0xE5,0x2C,0x64,0x0A,0x60,0x03,0x02,0x00,0xBC,0x53,0xB1, //01D0 + 0xF8,0x20,0x02,0x03,0x02,0x00,0xBC,0xC2,0x02,0xF5,0x2C,0x12,0x00,0x00,0x02,0x00, //01E0 + 0xBC,0xC2,0x00,0x90,0x02,0x06,0xE0,0xFF,0xC3,0x95,0x21,0x40,0x14,0xE5,0x21,0x24, //01F0 + 0x04,0xFD,0xE4,0x33,0xFC,0xD3,0xEF,0x9D,0xEC,0x64,0x80,0xF8,0x74,0x80,0x98,0x40, //0200 + 0x0A,0x90,0x02,0x06,0xE0,0x60,0x04,0x74,0x05,0xF0,0x22,0x90,0x02,0x06,0xE0,0xF5, //0210 + 0x21,0xE4,0xF0,0x90,0x02,0x02,0xE0,0x70,0x15,0x25,0x26,0xF5,0x26,0xE5,0x25,0x34, //0220 + 0x02,0xF5,0x25,0xE4,0x35,0x24,0xF5,0x24,0xE4,0x35,0x23,0xF5,0x23,0x22,0xE5,0x21, //0230 + 0x54,0x03,0xF5,0x0A,0xE4,0xF5,0x08,0xF5,0x09,0x90,0x02,0x02,0xE0,0xFD,0x7C,0x00, //0240 + 0xC3,0xE5,0x09,0x9D,0xE5,0x08,0x9C,0x50,0x32,0x74,0x07,0x25,0x09,0xF5,0x82,0xE4, //0250 + 0x34,0x02,0xF5,0x83,0xE0,0xFB,0xAF,0x0A,0x7E,0x00,0x12,0x06,0x38,0xE5,0x09,0x2F, //0260 + 0xFF,0xE5,0x08,0x3E,0xFE,0x74,0x00,0x2F,0xF5,0x82,0x74,0x00,0x3E,0xF5,0x83,0xEB, //0270 + 0xF0,0x05,0x09,0xE5,0x09,0x70,0xC2,0x05,0x08,0x80,0xBE,0xE5,0x0A,0x64,0x03,0x60, //0280 + 0x03,0x02,0x04,0x4F,0x75,0x1D,0x55,0x12,0x08,0x95,0x50,0x03,0x02,0x03,0x86,0xE4, //0290 + 0xFF,0x7E,0x02,0xFD,0xFC,0xAB,0x26,0xAA,0x25,0xA9,0x24,0xA8,0x23,0x12,0x07,0x18, //02A0 + 0x40,0x1A,0xE5,0x26,0x94,0x00,0xF5,0x26,0xE5,0x25,0x94,0x02,0xF5,0x25,0xE5,0x24, //02B0 + 0x94,0x00,0xF5,0x24,0xE5,0x23,0x94,0x00,0xF5,0x23,0x80,0x09,0xE4,0xF5,0x26,0xF5, //02C0 + 0x25,0xF5,0x24,0xF5,0x23,0xE4,0xF5,0x0F,0x30,0x01,0x5E,0x25,0x26,0xF5,0x0E,0xE5, //02D0 + 0x25,0x34,0x10,0xF5,0x0D,0xE4,0x35,0x24,0xF5,0x0C,0xE4,0x35,0x23,0xF5,0x0B,0xE4, //02E0 + 0x25,0x2A,0xFF,0xE5,0x29,0x34,0x0C,0xFE,0xE4,0x35,0x28,0xFD,0xE4,0x35,0x27,0xFC, //02F0 + 0xAB,0x0E,0xAA,0x0D,0xA9,0x0C,0xA8,0x0B,0xC3,0x12,0x07,0x18,0x40,0x40,0xE4,0x25, //0300 + 0x2A,0xFB,0xE5,0x29,0x34,0x0C,0xFA,0xE4,0x35,0x28,0xF9,0xE4,0x35,0x27,0xF8,0xC3, //0310 + 0xE5,0x0E,0x9B,0xF5,0x0E,0xE5,0x0D,0x9A,0xF5,0x0D,0xE5,0x0C,0x99,0xF5,0x0C,0xE5, //0320 + 0x0B,0x98,0xF5,0x0B,0x75,0x0F,0x01,0x80,0x15,0xE4,0x25,0x26,0xF5,0x0E,0xE5,0x25, //0330 + 0x34,0x84,0xF5,0x0D,0xE4,0x35,0x24,0xF5,0x0C,0xE4,0x35,0x23,0xF5,0x0B,0x75,0x1D, //0340 + 0x55,0xAF,0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0F,0x15,0x12,0x0B,0x7E,0xAF, //0350 + 0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0F,0x15,0x12,0x0C,0x8C,0x50,0x0E,0x12, //0360 + 0x08,0x95,0x40,0x12,0x90,0x02,0x06,0x74,0x03,0xF0,0x02,0x04,0x4C,0x90,0x02,0x06, //0370 + 0x74,0x02,0xF0,0x02,0x04,0x4C,0xE4,0xF5,0x0A,0x75,0xF0,0x04,0xE5,0x0A,0xA4,0x24, //0380 + 0x02,0xF5,0x82,0xE5,0xF0,0x34,0x00,0xF5,0x83,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78, //0390 + 0x10,0x12,0x07,0x3C,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0x75,0xF0,0x04,0xE5, //03A0 + 0x0A,0xA4,0x24,0x03,0xF5,0x82,0xE5,0xF0,0x34,0x00,0xF5,0x83,0xE0,0xFF,0xE4,0xFC, //03B0 + 0xFD,0xFE,0x78,0x18,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF, //03C0 + 0x4B,0xFF,0xEE,0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0xC0,0x04,0xC0,0x05,0xC0, //03D0 + 0x06,0xC0,0x07,0x75,0xF0,0x04,0xE5,0x0A,0xA4,0x24,0x01,0xF5,0x82,0xE5,0xF0,0x34, //03E0 + 0x00,0xF5,0x83,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78,0x08,0x12,0x07,0x3C,0xD0,0x03, //03F0 + 0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFB,0xEE,0x4A,0xFA,0xED,0x49,0xF9,0xEC, //0400 + 0x48,0xF8,0x75,0xF0,0x04,0xE5,0x0A,0xA4,0x24,0x00,0xF5,0x82,0xE5,0xF0,0x34,0x00, //0410 + 0xF5,0x83,0xE0,0xFF,0xEB,0x4F,0xFF,0xEA,0xFE,0xE9,0xFD,0xE8,0xFC,0xE5,0x30,0x2F, //0420 + 0xF5,0x30,0xE5,0x2F,0x3E,0xF5,0x2F,0xE5,0x2E,0x3D,0xF5,0x2E,0xE5,0x2D,0x3C,0xF5, //0430 + 0x2D,0x05,0x0A,0xE5,0x0A,0x64,0x80,0x60,0x03,0x02,0x03,0x89,0xE4,0xF5,0x1D,0x22, //0440 + 0xE4,0xF5,0x26,0xF5,0x25,0xF5,0x24,0xF5,0x23,0xF5,0x30,0xF5,0x2F,0xF5,0x2E,0xF5, //0450 + 0x2D,0xF5,0x2A,0xF5,0x29,0xF5,0x28,0xF5,0x27,0x90,0x02,0x09,0xE0,0xFF,0xE4,0xFC, //0460 + 0xFD,0xFE,0x78,0x10,0x12,0x07,0x3C,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xA3, //0470 + 0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78,0x18,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0, //0480 + 0x01,0xD0,0x00,0xEF,0x4B,0xFF,0xEE,0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0xC0, //0490 + 0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0x90,0x02,0x08,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE, //04A0 + 0x78,0x08,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFB, //04B0 + 0xEE,0x4A,0xFA,0xED,0x49,0xF9,0xEC,0x48,0xF8,0x90,0x02,0x07,0xE0,0xFF,0xEB,0x4F, //04C0 + 0xF5,0x2A,0xEA,0xF5,0x29,0xE9,0xF5,0x28,0xE8,0xF5,0x27,0x20,0x00,0x06,0x90,0x02, //04D0 + 0x06,0x74,0x0A,0xF0,0xE4,0xFF,0x7E,0x78,0xFD,0xFC,0xAB,0x2A,0xAA,0x29,0xA9,0x28, //04E0 + 0xA8,0x27,0xD3,0x12,0x07,0x18,0x40,0x05,0x20,0x01,0x02,0x80,0x17,0xE4,0xFF,0x7E, //04F0 + 0xEC,0xFD,0xFC,0xAB,0x2A,0xAA,0x29,0xA9,0x28,0xA8,0x27,0xD3,0x12,0x07,0x18,0x40, //0500 + 0x0A,0x30,0x01,0x07,0x90,0x02,0x06,0x74,0x01,0xF0,0x22,0xE4,0x90,0x02,0x06,0xF0, //0510 + 0xF5,0x21,0x75,0x1D,0x55,0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0B,0x7E,0xE4, //0520 + 0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0C,0x8C,0x50,0x2B,0x30,0x01,0x2E,0x75, //0530 + 0x1B,0xA5,0xE4,0xF5,0x1C,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0B,0x15,0xE4,0xF5, //0540 + 0x1B,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94,0xEF,0x64,0xA5,0x60,0x0E,0x90, //0550 + 0x02,0x06,0x74,0x03,0xF0,0x80,0x06,0x90,0x02,0x06,0x74,0x02,0xF0,0xE4,0xF5,0x1D, //0560 + 0x90,0x02,0x06,0xE0,0x60,0x03,0x02,0x06,0x31,0xFB,0x7A,0x02,0xF9,0xF8,0xAF,0x2A, //0570 + 0xAE,0x29,0xAD,0x28,0xAC,0x27,0x12,0x06,0x86,0x8F,0x09,0xE4,0xF5,0x08,0xE5,0x08, //0580 + 0xC3,0x95,0x09,0x40,0x03,0x02,0x06,0x37,0xE4,0xF5,0x0A,0x30,0x01,0x07,0xF5,0x0E, //0590 + 0x75,0x0D,0x10,0x80,0x06,0xE4,0xF5,0x0E,0x75,0x0D,0x84,0xF5,0x0C,0xF5,0x0B,0xE5, //05A0 + 0x08,0x25,0xE0,0xFE,0xE4,0xFC,0xFD,0x25,0x0E,0xF5,0x0E,0xE5,0x0D,0x3E,0xF5,0x0D, //05B0 + 0xED,0x35,0x0C,0xF5,0x0C,0xEC,0x35,0x0B,0xF5,0x0B,0x30,0x01,0x35,0xE5,0x09,0x24, //05C0 + 0xFE,0xFB,0xE4,0x34,0xFF,0xFA,0xED,0x34,0xFF,0xF9,0xEC,0x34,0xFF,0xF8,0xAF,0x08, //05D0 + 0xE4,0xFE,0xD3,0x12,0x07,0x18,0x50,0x1A,0x75,0x0A,0x01,0xE5,0x08,0x24,0x02,0xFF, //05E0 + 0xC3,0xEF,0x95,0x09,0xFF,0xEF,0x25,0xE0,0xFE,0xE4,0xF5,0x0E,0x8E,0x0D,0xF5,0x0C, //05F0 + 0xF5,0x0B,0x75,0x1D,0x55,0xAF,0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0A,0x15, //0600 + 0x12,0x0B,0x7E,0xAF,0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0A,0x15,0x12,0x0C, //0610 + 0x8C,0x40,0x06,0x90,0x02,0x06,0x74,0x02,0xF0,0xE4,0xF5,0x1D,0x05,0x08,0x02,0x05, //0620 + 0x8E,0x90,0x02,0x06,0x74,0x05,0xF0,0x22,0xEF,0x8D,0xF0,0xA4,0xA8,0xF0,0xCF,0x8C, //0630 + 0xF0,0xA4,0x28,0xCE,0x8D,0xF0,0xA4,0x2E,0xFE,0x22,0x75,0xF0,0x08,0x75,0x82,0x00, //0640 + 0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,0x33,0xC5, //0650 + 0x82,0x9B,0xED,0x9A,0xEC,0x99,0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,0x9B,0xFE, //0660 + 0xED,0x9A,0xFD,0xEC,0x99,0xFC,0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,0xCD,0xFA, //0670 + 0xE4,0xCC,0xF9,0xA8,0x82,0x22,0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,0x2D,0xEC, //0680 + 0x8B,0xF0,0x84,0xCF,0xCE,0xCD,0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,0x2F,0xFF, //0690 + 0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,0x03,0x99, //06A0 + 0x40,0x04,0xEB,0x99,0xFB,0x0F,0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,0xEF,0x2F, //06B0 + 0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,0xD7,0x05, //06C0 + 0x9B,0xE9,0x9A,0x40,0x07,0xEC,0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,0xE4,0xC9, //06D0 + 0xFA,0xE4,0xCC,0xFB,0x22,0x75,0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33, //06E0 + 0xFD,0xCC,0x33,0xCC,0xC8,0x33,0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,0x99,0x40, //06F0 + 0x0A,0xED,0x9B,0xFD,0xEC,0x9A,0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,0xE4,0xCD, //0700 + 0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,0x42,0xF0, //0710 + 0xE9,0x9D,0x42,0xF0,0xE8,0x9C,0x45,0xF0,0x22,0xE8,0x60,0x0F,0xEC,0xC3,0x13,0xFC, //0720 + 0xED,0x13,0xFD,0xEE,0x13,0xFE,0xEF,0x13,0xFF,0xD8,0xF1,0x22,0xE8,0x60,0x0F,0xEF, //0730 + 0xC3,0x33,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xD8,0xF1,0x22,0xEC, //0740 + 0x8E,0xF0,0xA4,0xCC,0xC5,0xF0,0xCC,0xCD,0xF8,0xEF,0xA4,0xCE,0xC5,0xF0,0x2D,0xFD, //0750 + 0xE4,0x3C,0xFC,0xE8,0xA4,0x2E,0xC8,0xC5,0xF0,0x3D,0xFD,0xE4,0x3C,0xFC,0xEF,0xA4, //0760 + 0xFF,0xE5,0xF0,0x28,0xFE,0xE4,0x3D,0xFD,0xE4,0x3C,0xFC,0x22,0xE4,0xF5,0x08,0x53, //0770 + 0xB1,0xF8,0xE5,0x08,0xC3,0x94,0x3A,0x50,0x1F,0xE4,0xF5,0x0A,0xAF,0x08,0xFE,0x7C, //0780 + 0x02,0xFD,0x12,0x07,0x4F,0xE4,0x2F,0xF5,0x10,0xEE,0x34,0x10,0xF5,0x0F,0xE4,0x3D, //0790 + 0xF5,0x0E,0xE4,0x3C,0xF5,0x0D,0x80,0x21,0x75,0x0A,0x01,0xAF,0x08,0x7E,0x00,0x7C, //07A0 + 0x02,0x7D,0x00,0x12,0x07,0x4F,0xE4,0x2F,0xF5,0x10,0xEE,0x34,0x8C,0xF5,0x0F,0xED, //07B0 + 0x34,0xFF,0xF5,0x0E,0xEC,0x34,0xFF,0xF5,0x0D,0x75,0x1D,0x55,0xAF,0x10,0xAE,0x0F, //07C0 + 0xAD,0x0E,0xAC,0x0D,0x85,0x0A,0x15,0x12,0x0B,0x7E,0xAF,0x10,0xAE,0x0F,0xAD,0x0E, //07D0 + 0xAC,0x0D,0x85,0x0A,0x15,0x12,0x0C,0x8C,0x40,0x03,0x02,0x08,0x83,0xE4,0xF5,0x0B, //07E0 + 0xF5,0x0C,0xAE,0x0B,0xAF,0x0C,0xE4,0xFC,0xFD,0xFB,0x7A,0x02,0xF9,0xF8,0xD3,0x12, //07F0 + 0x07,0x18,0x50,0x03,0x02,0x08,0x86,0xAF,0x08,0x7E,0x00,0x7C,0x02,0x7D,0x00,0x12, //0800 + 0x07,0x4F,0xA8,0x04,0xA9,0x05,0xAA,0x06,0xAB,0x07,0xE4,0x25,0x0C,0xFF,0xE5,0x0B, //0810 + 0x34,0x84,0xFE,0xE4,0x33,0xFD,0xE4,0x33,0xFC,0xEB,0x2F,0xFF,0xEA,0x3E,0xFE,0xE9, //0820 + 0x3D,0xFD,0xE8,0x3C,0xFC,0xE4,0xF5,0x1B,0x12,0x0D,0x94,0x8F,0x09,0xE5,0x0C,0x25, //0830 + 0x10,0xFF,0xE5,0x0B,0x35,0x0F,0xFE,0xE4,0x35,0x0E,0xFD,0xE4,0x35,0x0D,0xFC,0x85, //0840 + 0x09,0x1B,0x85,0x0A,0x1C,0x12,0x0B,0x15,0xE5,0x0C,0x25,0x10,0xFF,0xE5,0x0B,0x35, //0850 + 0x0F,0xFE,0xE4,0x35,0x0E,0xFD,0xE4,0x35,0x0D,0xFC,0x85,0x0A,0x1B,0x12,0x0D,0x94, //0860 + 0xEF,0x65,0x09,0x60,0x03,0x7F,0x02,0x22,0x05,0x0C,0xE5,0x0C,0x70,0x02,0x05,0x0B, //0870 + 0x02,0x07,0xF2,0x7F,0x01,0x22,0x05,0x08,0xE5,0x08,0xC3,0x94,0x3C,0x50,0x03,0x02, //0880 + 0x07,0x7F,0x7F,0x00,0x22,0xD2,0x03,0xE4,0xF5,0x10,0xF5,0x11,0xAE,0x10,0xAF,0x11, //0890 + 0xE4,0xFC,0xFD,0xFB,0x7A,0x02,0xF9,0xF8,0xD3,0x12,0x07,0x18,0x50,0x03,0x02,0x09, //08A0 + 0x8C,0xE4,0xF5,0x16,0x30,0x01,0x5E,0x25,0x26,0xF5,0x15,0xE5,0x25,0x34,0x10,0xF5, //08B0 + 0x14,0xE4,0x35,0x24,0xF5,0x13,0xE4,0x35,0x23,0xF5,0x12,0xE4,0x25,0x2A,0xFF,0xE5, //08C0 + 0x29,0x34,0x0C,0xFE,0xE4,0x35,0x28,0xFD,0xE4,0x35,0x27,0xFC,0xAB,0x15,0xAA,0x14, //08D0 + 0xA9,0x13,0xA8,0x12,0xC3,0x12,0x07,0x18,0x40,0x40,0xE4,0x25,0x2A,0xFB,0xE5,0x29, //08E0 + 0x34,0x0C,0xFA,0xE4,0x35,0x28,0xF9,0xE4,0x35,0x27,0xF8,0xC3,0xE5,0x15,0x9B,0xF5, //08F0 + 0x15,0xE5,0x14,0x9A,0xF5,0x14,0xE5,0x13,0x99,0xF5,0x13,0xE5,0x12,0x98,0xF5,0x12, //0900 + 0x75,0x16,0x01,0x80,0x15,0xE4,0x25,0x26,0xF5,0x15,0xE5,0x25,0x34,0x84,0xF5,0x14, //0910 + 0xE4,0x35,0x24,0xF5,0x13,0xE4,0x35,0x23,0xF5,0x12,0xAF,0x15,0xAE,0x14,0xAD,0x13, //0920 + 0xAC,0x12,0x74,0x00,0x25,0x11,0xF5,0x82,0x74,0x00,0x35,0x10,0xF5,0x83,0xE0,0xF5, //0930 + 0x1B,0x85,0x16,0x1C,0x12,0x0B,0x15,0xAF,0x15,0xAE,0x14,0xAD,0x13,0xAC,0x12,0x85, //0940 + 0x16,0x1B,0x12,0x0D,0x94,0x74,0x00,0x25,0x11,0xF5,0x82,0x74,0x00,0x35,0x10,0xF5, //0950 + 0x83,0xE0,0x6F,0x60,0x04,0xC2,0x03,0x80,0x23,0xE5,0x26,0x24,0x01,0xF5,0x26,0xE4, //0960 + 0x35,0x25,0xF5,0x25,0xE4,0x35,0x24,0xF5,0x24,0xE4,0x35,0x23,0xF5,0x23,0x05,0x11, //0970 + 0xE5,0x11,0x60,0x03,0x02,0x08,0x9C,0x05,0x10,0x02,0x08,0x9C,0xA2,0x03,0x22,0x7E, //0980 + 0x00,0x7D,0x00,0x7C,0x00,0x90,0x02,0x09,0xE0,0xFF,0xE4,0x78,0x10,0x12,0x07,0x3C, //0990 + 0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xA3,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78, //09A0 + 0x18,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFF,0xEE, //09B0 + 0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07, //09C0 + 0x90,0x02,0x08,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78,0x08,0x12,0x07,0x3C,0xD0,0x03, //09D0 + 0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFB,0xEE,0x4A,0xFA,0xED,0x49,0xF9,0xEC, //09E0 + 0x48,0xF8,0x90,0x02,0x07,0xE0,0xFF,0xEB,0x4F,0xFF,0xEA,0xFE,0xE9,0xFD,0xE8,0xFC, //09F0 + 0xAB,0x30,0xAA,0x2F,0xA9,0x2E,0xA8,0x2D,0xC3,0x12,0x07,0x18,0x60,0x07,0x90,0x02, //0A00 + 0x06,0x74,0x08,0xF0,0x22,0xE4,0x90,0x02,0x06,0xF0,0x22,0xE4,0xF5,0x08,0xF5,0x09, //0A10 + 0x90,0x02,0x02,0xF0,0x90,0x02,0x05,0x74,0x0B,0xF0,0x90,0x02,0x03,0xE0,0xFF,0xA3, //0A20 + 0xE0,0x90,0x02,0x03,0xF0,0xA3,0xEF,0xF0,0x7F,0x02,0x90,0x02,0x02,0xE0,0xFE,0x24, //0A30 + 0x07,0xFD,0xE4,0x33,0xFC,0xEF,0xC3,0x9D,0xEC,0x64,0x80,0xF8,0x74,0x80,0x98,0x50, //0A40 + 0x17,0x74,0x00,0x2F,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0x25,0x09,0xF5,0x09, //0A50 + 0xE4,0x35,0x08,0xF5,0x08,0x0F,0x80,0xD2,0x74,0x07,0x2E,0xF5,0x82,0xE4,0x34,0x02, //0A60 + 0xF5,0x83,0xE5,0x09,0xF0,0xE5,0x08,0xFF,0x90,0x02,0x02,0xE0,0x24,0x08,0xF5,0x82, //0A70 + 0xE4,0x34,0x02,0xF5,0x83,0xEF,0xF0,0xC2,0x02,0xE4,0xF5,0x86,0xC2,0x9C,0x74,0x00, //0A80 + 0x25,0x2B,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0xF5,0x99,0x22,0xE4,0xF5,0x2B, //0A90 + 0x90,0x02,0x02,0xE0,0xFD,0x24,0x08,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0xFE, //0AA0 + 0x74,0x07,0x2D,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0x7C,0x00,0x24,0x00,0xFF, //0AB0 + 0xEC,0x3E,0xFE,0xEF,0x65,0x32,0x70,0x03,0xEE,0x65,0x31,0x60,0x03,0x43,0x22,0x80, //0AC0 + 0xE5,0x22,0x60,0x06,0x90,0x02,0x06,0xF0,0x80,0x38,0x90,0x02,0x05,0xE0,0xFE,0xB4, //0AD0 + 0x06,0x05,0x12,0x0C,0xD5,0x80,0x2B,0xEE,0xB4,0x07,0x05,0x12,0x04,0x50,0x80,0x22, //0AE0 + 0x90,0x02,0x05,0xE0,0xB4,0x08,0x05,0x12,0x01,0xF1,0x80,0x16,0x90,0x02,0x05,0xE0, //0AF0 + 0xB4,0x09,0x05,0x12,0x09,0x8F,0x80,0x0A,0x90,0x02,0x05,0xE0,0xB4,0x0A,0x03,0x12, //0B00 + 0x0B,0xDE,0x02,0x0A,0x1B,0x8F,0x1A,0x8E,0x19,0x8D,0x18,0x8C,0x17,0x85,0x1C,0xA7, //0B10 + 0xAF,0x1A,0xAE,0x19,0xAD,0x18,0xAC,0x17,0x78,0x08,0x12,0x07,0x29,0x8F,0xF7,0xE5, //0B20 + 0x1A,0xFF,0x8F,0xFB,0x85,0x1B,0xFC,0x75,0xF2,0x6E,0x20,0xAF,0x3D,0x75,0xF3,0x05, //0B30 + 0xE5,0xA7,0x65,0x1C,0x70,0x34,0x75,0xF4,0x0A,0xE5,0x1D,0xB4,0x55,0x2C,0x75,0xF5, //0B40 + 0x09,0xAF,0x1A,0xAE,0x19,0xAD,0x18,0xAC,0x17,0x78,0x08,0x12,0x07,0x29,0xA8,0x04, //0B50 + 0xA9,0x05,0xAA,0x06,0xAB,0x07,0xAF,0xF7,0xE4,0xFC,0xFD,0xFE,0xC3,0x12,0x07,0x18, //0B60 + 0x70,0x08,0x75,0xF6,0x06,0x00,0x00,0x00,0x00,0x00,0xE4,0xF5,0xA7,0x22,0x8F,0x14, //0B70 + 0x8E,0x13,0x8D,0x12,0x8C,0x11,0x85,0x15,0xA7,0xAF,0x14,0xAE,0x13,0xAD,0x12,0xAC, //0B80 + 0x11,0x78,0x08,0x12,0x07,0x29,0x8F,0xF7,0x75,0xF2,0xE6,0x20,0xAF,0x3C,0x75,0xF3, //0B90 + 0x05,0xE5,0xA7,0x65,0x15,0x70,0x33,0x75,0xF4,0x0A,0xE5,0x1D,0xB4,0x55,0x2B,0x75, //0BA0 + 0xF5,0x09,0xAF,0x14,0xAE,0x13,0xAD,0x12,0xAC,0x11,0x78,0x08,0x12,0x07,0x29,0xA8, //0BB0 + 0x04,0xA9,0x05,0xAA,0x06,0xAB,0x07,0xAF,0xF7,0xE4,0xFC,0xFD,0xFE,0xC3,0x12,0x07, //0BC0 + 0x18,0x70,0x07,0x75,0xF6,0x06,0x00,0x00,0x00,0x00,0xE4,0xF5,0xA7,0x22,0xE4,0x90, //0BD0 + 0x02,0x06,0xF0,0x75,0x2C,0x0A,0x75,0x1D,0x55,0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC, //0BE0 + 0x12,0x0B,0x7E,0xE4,0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0C,0x8C,0x50,0x2A, //0BF0 + 0x20,0x01,0x30,0x75,0x1B,0x5A,0xE4,0xF5,0x1C,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12, //0C00 + 0x0B,0x15,0xE4,0xF5,0x1B,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94,0xEF,0x64, //0C10 + 0x5A,0x60,0x10,0x90,0x02,0x06,0x74,0x03,0x80,0x05,0x90,0x02,0x06,0x74,0x02,0xF0, //0C20 + 0xE4,0xF5,0x2C,0xE4,0xF5,0x1D,0x22,0x53,0xB1,0xF8,0x12,0x0D,0xAC,0xE4,0xF5,0x1B, //0C30 + 0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94,0xEF,0x64,0x5A,0x70,0x26,0xC2,0x01, //0C40 + 0x75,0x1D,0x55,0x12,0x0D,0x38,0x50,0x02,0x80,0x05,0x12,0x0D,0x38,0x50,0x05,0xE4, //0C50 + 0xF5,0x1D,0x80,0x24,0xE4,0xF5,0x1D,0x75,0x8E,0x55,0x43,0x87,0x02,0x00,0x00,0x00, //0C60 + 0x00,0x00,0x80,0xF0,0xE4,0xF5,0x1B,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94, //0C70 + 0xBF,0xA5,0x05,0xD2,0x01,0x02,0x00,0xA6,0x12,0x10,0x00,0x22,0x8F,0x14,0x8E,0x13, //0C80 + 0x8D,0x12,0x8C,0x11,0xD2,0x04,0x85,0x15,0xA7,0xE4,0xF5,0x16,0xF5,0x17,0xAE,0x16, //0C90 + 0xAF,0x17,0xE4,0xFC,0xFD,0xFB,0x7A,0x02,0xF9,0xF8,0xD3,0x12,0x07,0x18,0x40,0x1F, //0CA0 + 0xE5,0x17,0x25,0x14,0xFF,0xE5,0x16,0x35,0x13,0x8F,0x82,0xF5,0x83,0xE4,0x93,0x60, //0CB0 + 0x04,0xC2,0x04,0x80,0x0A,0x05,0x17,0xE5,0x17,0x70,0xD3,0x05,0x16,0x80,0xCF,0xE4, //0CC0 + 0xF5,0xA7,0xA2,0x04,0x22,0xE4,0x90,0x02,0x06,0xF0,0xA3,0xE0,0xFF,0xB4,0x49,0x0F, //0CD0 + 0xA3,0xE0,0xB4,0x41,0x0A,0xA3,0xE0,0xB4,0x50,0x05,0xC2,0x01,0xD2,0x00,0x22,0xEF, //0CE0 + 0xB4,0x49,0x11,0x90,0x02,0x08,0xE0,0xB4,0x53,0x0A,0xA3,0xE0,0xB4,0x50,0x05,0xD2, //0CF0 + 0x01,0xD2,0x00,0x22,0x90,0x02,0x06,0x74,0x0A,0xF0,0xC2,0x00,0x22,0x75,0x80,0xF8, //0D00 + 0x75,0xE1,0x8F,0x75,0xE9,0xC8,0x75,0x90,0x80,0x75,0xE2,0x7F,0x75,0xEA,0x80,0x75, //0D10 + 0xA0,0xE0,0x75,0xE3,0x3F,0x75,0xEB,0xC0,0x75,0xB0,0x19,0x75,0xE4,0xE6,0x75,0xEC, //0D20 + 0x19,0x43,0x80,0xC0,0x43,0xE9,0x80,0x22,0xD2,0x03,0x12,0x07,0x7C,0xEF,0x70,0x19, //0D30 + 0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0B,0x7E,0xE4,0xF5,0x15,0xFF,0x7E,0x0E, //0D40 + 0xFD,0xFC,0x12,0x0C,0x8C,0x92,0x03,0x80,0x02,0xC2,0x03,0xA2,0x03,0x22,0x75,0xC4, //0D50 + 0x32,0xE4,0xF5,0x87,0x75,0x98,0x50,0x75,0x9D,0x7F,0x75,0x9C,0x64,0x75,0x9E,0x04, //0D60 + 0x43,0x9D,0x80,0x75,0x9A,0x0A,0x75,0x9B,0xFF,0x22,0x75,0x81,0x7F,0x75,0xB2,0x08, //0D70 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0xB2,0x04,0x78,0xFF,0xE4,0xF6,0xD8, //0D80 + 0xFD,0x02,0x0C,0x37,0x8F,0x1A,0x8E,0x19,0x8D,0x18,0x8C,0x17,0xE4,0x85,0x1B,0xA7, //0D90 + 0x85,0x1A,0x82,0x85,0x19,0x83,0x93,0xFF,0xE4,0xF5,0xA7,0x22,0x12,0x0D,0xB5,0x12, //0DA0 + 0x0D,0x0D,0xC2,0x00,0x22,0xE4,0xF5,0xA8,0xF5,0xA9,0xF5,0xAA,0x22,0x00,0x00,0x00, //0DB0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DC0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DD0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DE0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DF0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E00 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E10 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E20 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E30 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E40 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E50 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E60 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E70 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E80 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E90 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EA0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EB0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EC0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0ED0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EE0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EF0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F00 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F10 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F20 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F30 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F40 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F50 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F60 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F70 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F80 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F90 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FA0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FB0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FC0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FD0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FE0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //0FF0 +}; + + + + + diff --git a/code_drv/Calculate.c b/code_drv/Calculate.c new file mode 100644 index 0000000..9b1f8b0 --- /dev/null +++ b/code_drv/Calculate.c @@ -0,0 +1,496 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +U8 xdata ucChgingCheckCnt; +U8 xdata ucDsgingCheckCnt; + +/************************************************************************************************* +* 函数名: CalcuTemp +* 参 数: 无 +* 返回值: 无 +* 描 述: 根据计算的阻值来查表,获取对应温度。温度变量保存的为开尔文温度*10 + 例如摄氏度25°,温度变量保存的值为2731+250 +*************************************************************************************************/ +U16 CalcuTemp(U16 getdata) +{ + U8 i; + U16 Temperature; + U32 Tempcalcu; + +#if (AFE_ID == 0x34) + Tempcalcu = (U32)getdata*REF_RES_VAL/(32768-getdata); +#else + Tempcalcu= (U32)getdata*REF_RES_VAL/(4096-getdata); //calculte the resistance value of 103AT + if(Tempcalcu > 10) + { + Tempcalcu -= 10; + } +#endif + + if(Tempcalcu >= NTC103AT[0]) //look up table to find the resieter correspond temp + { + Temperature = 2731+(TEMP_LOWER_LIMIT *10); + } + else if(Tempcalcu <= NTC103AT[NTC103AT_ARRAY_LEN-1]) + { + Temperature = 2731+(TEMP_UPPER_LIMIT *10); + } + else + { + i = ucTempeMiddle; //the ucTempeMiddle must be initialized in InitVar() + if(Tempcalcu > NTC103AT[i]) + { + for(i=ucTempeMiddle-1; i>=0; i--) + { + if(Tempcalcu <= NTC103AT[i]) //NTC103AT[i+1] NTC103AT[i]) //NTC103AT[i-1] 5) //6~10串应用时 + { + if(!AFEReadReg(AFE_TEMP2H, 2, (U8 xdata *)&AFE.uiICTempe[1])) + { + Result = 0; + } + } + + return Result; +} + + +/************************************************************************************************* +* 函数名: AfeCalcuTempe +* 参 数: 无 +* 返回值: 无 +* 描 述: 计算温度,更新uiTempeMax、uiTempeMin +*************************************************************************************************/ +void AfeCalcuTempe(void) +{ + U16 TempeData; + + if(AfeGetTempe()) + { + TempeData = CalcuTemp(AFE.uiTS[0]) + E2siTS0Offset; //计算外部温度1 + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + Info.uiTS[0] = TempeData; + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + TempeData = (U32)AFE.uiICTempe[0]*17/10+31; //计算内部温度1 + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + Info.uiICTempe[0] = TempeData; + + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + + if(ucCellNum > 5) //6~10串应用时 + { + TempeData = (U32)AFE.uiICTempe[1]*17/10+31; //计算内部温度2 + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + Info.uiICTempe[1] = TempeData; + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + } + + uiTempeMin = Info.uiTS[0]; + uiTempeMax = Info.uiTS[0]; + if(bTempNum) + { + TempeData = CalcuTemp(AFE.uiTS[1]) + E2siTS1Offset; //计算外部温度2 + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + Info.uiTS[1] = TempeData; + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + + if(TempeData < uiTempeMin) + { + uiTempeMin = TempeData; + } + else + { + uiTempeMax = TempeData; + } + } + } +} + + +/************************************************************************************************* +* 函数名: AfeCalcuVol +* 参 数: 无 +* 返回值: 无 +* 描 述: 计算电压,同步更新最大值最小值uiVadcVmax、uiVadcVmin,用于断线判断 + 当没有平衡时,才更新uiCellVmax、uiCellVmin,用于保护判断 +*************************************************************************************************/ +void AfeCalcuVol(void) +{ + U8 i; + U32 TempPackVol=0, TempCellVol=0; + uiVadcVmax = 0; + uiVadcVmin = 6000; + + if(AfeGetVol()) + { + for(i=ucCellNumOffset; i<(ucCellNum+ucCellNumOffset); i++) + { + TempCellVol = (U32)AFE.uiCell[i]*CALIVOL/E2uiVPackGain; + + if(TempCellVol > uiVadcVmax) //计算最大值&最小值 + { + uiVadcVmax = TempCellVol; + } + if(TempCellVol < uiVadcVmin) + { + uiVadcVmin = TempCellVol; + } + + if(!bBalancingFlg) //if bCellOpenDecFlag this data will throw away + { + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + Info.uiVCell[i] = TempCellVol; + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + TempPackVol += TempCellVol; + } + } + + if(!bBalancingFlg) + { + uiCellVmax = uiVadcVmax; + uiCellVmin = uiVadcVmin; + + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + Info.ulVoltage = TempPackVol; //Calculate the total voltage + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + } + } +} + + +/************************************************************************************************* +* 函数名: CurTempOffset +* 参 数: 无 +* 返回值: 无 +* 描 述: 不同芯片温度下ADC的补偿值 +*************************************************************************************************/ +S16 code siCurTempOffset[2][13]= +{ /**0****1****2****3***4***5***6***7***8***9**10**11**12**/ + {-40, -30, -20, -10, 0, 10, 25, 35, 45, 55, 65, 75, 85}, + { -5, -4, -3, -2, -1, -1, 0, 1, 1, 2, 3, 4, 5}, +}; + +/************************************************************************************************* +* 函数名: OffsetCalculate() +* 参 数: 无 +* 返回值: 无 +* 描 述: 根据芯片内部温度实时调整0电流补偿值,以便消除温度对ADC采集产生的影响 +*************************************************************************************************/ +S16 OffsetCalculate(void) +{ + S16 xdata siCadcTempOffset=0; //20220620 + U8 xdata i; + + for(i=0; i<12; i++) + { + if(Info.uiICTempe[0] <= (((S32)siCurTempOffset[0][i] + siCurTempOffset[0][i+1]) / 2 * 10 + 2731)) + { + siCadcTempOffset = siCurTempOffset[1][i]; + break; + } + } + return siCadcTempOffset; +} + +/************************************************************************************************* +* 函数名: AfeCalcuCurr +* 参 数: 无 +* 返回值: 无 +* 描 述: 计算CADC采集的电流数据 +*************************************************************************************************/ +void AfeCalcuCurr(void) +{ + U8 i; + S32 Tempdata=0; + + AFEReadReg(AFE_CURH, 2, (U8 xdata *)&AFE.siCurr); //通过TWI读取CADC采集的电流值 + + if((AFE.siCurr&0x1000) != 0) //根据bit12判断是否为负数(放电电流为负值),如为负值高位补0 + { + AFE.siCurr|=0xE000; + } + slCadcCurrent = (S32)CALICUR*(AFE.siCurr-E2siCadcOffset+OffsetCalculate())/E2siCadcGain; + + slCadcCurBuf[ucCadcCnt] = slCadcCurrent; //对连续采集的16次电流取平均值,作为当前电流值 + if(++ucCadcCnt >= 16) + { + ucCadcCnt = 0; + } + for(i=0; i<16; i++) + { + Tempdata += slCadcCurBuf[i]; + } + slCadcCurAverage = Tempdata/16; + + bDSGING = 0; //根据电流判定充放电状态 + bCHGING = 0; + if(slCadcCurAverage < (-E2siDfilterCur)) + { + if(++ucDsgingCheckCnt >= TIME_50MS_500MS) //充放电状态检测延时10*50mS + { + ucDsgingCheckCnt = TIME_50MS_500MS; + bDSGING = 1; + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + Info.slCurr = slCadcCurAverage; + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + } + } + else if(slCadcCurAverage > E2siDfilterCur) + { + if(++ucChgingCheckCnt >= TIME_50MS_500MS) //充放电状态检测延时10*50mS + { + ucChgingCheckCnt = TIME_50MS_500MS; + bCHGING = 1; + McuPWM2Set(4000, 100); + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + Info.slCurr = slCadcCurAverage; + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + } + } + else + { + #if (UART0_DEFINE != 0) + IrqUart0Dis(); + #endif + #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + Info.slCurr = 0; + #if (UART0_DEFINE != 0) + IrqUart0En(); //开启uart0中断 + #endif + #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + } +} + + +/************************************************************************************************* +* 函数名: AFEInfoProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 每50mS读取AFE信息,并更新电压、电流、温度数据 +*************************************************************************************************/ +void AFEInfoProcess(void) +{ + AFERdFlg(); + + bVADCFlg = 0; + AfeCalcuVol(); + AfeCalcuTempe(); + + if(bCADCFlg) //当CADC转换完成后,才读取AFE电流信息并计算 + { + bCADCFlg = 0; + AfeCalcuCurr(); + } +} + + diff --git a/code_drv/Calibrate.c b/code_drv/Calibrate.c new file mode 100644 index 0000000..4eec810 --- /dev/null +++ b/code_drv/Calibrate.c @@ -0,0 +1,175 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +BOOL bCaliFlg; //上位机发送校准命令后置位该标志 +U16 xdata ulExtVPack; +S32 xdata slExtCur; +U16 xdata uiExtTemp1; +U16 xdata uiExtTemp2; +U8 xdata ucExtRTC[7]; +U8 xdata ucExtcaliSwitch1; + +/************************************************************************************************* +* 函数名: CaliVoltage +* 参 数: 无 +* 返回值: 无 +* 描 述: 校准总电压,更新E2uiVPackGain增益 +*************************************************************************************************/ +void CaliVoltage(void) +{ + U8 i; + U16 VPackTemp = 0; + + for(i=ucCellNumOffset; i<(ucCellNumOffset+ucCellNum); i++) + { + VPackTemp += AFE.uiCell[i]; + } + + E2uiVPackGain = (U32)CALIPACKVOL*VPackTemp/ulExtVPack; +} + + +/************************************************************************************************* +* 函数名: CaliCurrentGain +* 参 数: 无 +* 返回值: 无 +* 描 述: 校准电流增益E2siCadcGain,连续两次采集的电流求平均后再校准更新 +*************************************************************************************************/ +void CaliCurrentGain(void) +{ + S16 TempGain; + + TempGain = (S32)CALICUR*(AFE.siCurr-E2siCadcOffset)/slExtCur; + if(TempGain != 0) + { + E2siCadcGain = TempGain; + } +} + + +/************************************************************************************************* +* 函数名: CaliCurZero +* 参 数: 无 +* 返回值: 无 +* 描 述: 校准零电流 +*************************************************************************************************/ +void CaliCurZero(void) +{ + E2siCadcOffset = AFE.siCurr; +} + + +/************************************************************************************************* +* 函数名: CaliTS1、CaliTS2 +* 参 数: 无 +* 返回值: 无 +* 描 述: 校准温度,温度偏差小于15℃才允许校准 +*************************************************************************************************/ +void CaliTS1(void) +{ + S16 Tempe; + + Tempe = uiExtTemp1 - CalcuTemp(AFE.uiTS[0]); + if(((Tempe-E2siTS0Offset)<150) && ((Tempe-E2siTS0Offset)>-150)) + { + E2siTS0Offset = Tempe; + } +} + +void CaliTS2(void) +{ + S16 Tempe; + + Tempe = uiExtTemp2 - CalcuTemp(AFE.uiTS[1]); + if(((Tempe-E2siTS1Offset)<150) && ((Tempe-E2siTS1Offset)>-150)) + { + E2siTS1Offset = Tempe; + } +} + + + +/************************************************************************************************* +* 函数名: CaliRTCTime +* 参 数: 无 +* 返回值: 无 +* 描 述: 校准RTC +*************************************************************************************************/ +void CaliRTCTime(void) +{ + RTC.Second = ucExtRTC[0]; + RTC.Minute = ucExtRTC[1]; + RTC.Hour = ucExtRTC[2]; + RTC.Date = ucExtRTC[3]; + RTC.Month = ucExtRTC[4]; + RTC.Year = ucExtRTC[5]; + RTC.Week = ucExtRTC[6]; + + RTCModifyTime(&RTC); + + bE2PProcessFlg = 1; //校准RTC之后,需要保存RTC数据至外部EEP + bE2PBKRtc = 1; +} + + + +/************************************************************************************************* +* 函数名: CaliProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 处理校准,通讯中断会置位当前需要校准模块对应的标志。 + 校准结束后,将校准参数写入Flash +*************************************************************************************************/ +void CaliProcess(void) +{ + if(bCaliFlg) + { + bCaliFlg = 0; + + if((ucExtcaliSwitch1 & 0x01) != 0) //校准总电压 + { + CaliVoltage(); + } + + if((ucExtcaliSwitch1 & 0x10) != 0) //校准电流增益 + { + CaliCurrentGain(); + } + + if((ucExtcaliSwitch1 & 0x20) != 0) //校准零电流 + { + CaliCurZero(); + } + + if((ucExtcaliSwitch1 & 0x04) != 0) //校准TS1 + { + CaliTS1(); + } + + if((ucExtcaliSwitch1 & 0x08) != 0) //校准TS2 + { + CaliTS2(); + } + + if((ucExtcaliSwitch1 & 0x80) != 0) //校准RTC + { + CaliRTCTime(); + } + + ucExtcaliSwitch1 = 0; + bMcuFlashWrWaitFlg = 1; //更新Flash参数 + bMcuFlashWrWaitCnt = MCU_FLASH_WATI_DELAY; //立即写 + } +} + + + + diff --git a/code_drv/ChargerLoad.c b/code_drv/ChargerLoad.c new file mode 100644 index 0000000..b723858 --- /dev/null +++ b/code_drv/ChargerLoad.c @@ -0,0 +1,97 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +//充电器和负载检测 +BOOL bChgerStartCheckFlg; +BOOL bChgerChkingFlg; +BOOL bLoadStartCheckFlg; +BOOL bLoadChkingFlg; +U8 xdata ucChgerRCnt; +U8 xdata ucLoadRCnt; + +/************************************************************************************************* +* 函数名: LoadCheck +* 参 数: 无 +* 返回值: 无 +* 描 述: 负载检测,欠压和过流保护后,需启动负载锁定功能 +*************************************************************************************************/ +void LoadCheck(void) +{ + if(bLoadStartCheckFlg) //如果发生欠压保护,且电压已经恢复;如果已经发生过流保护 + { + bLoadStartCheckFlg = 0; + bLoadChkingFlg = 1; + ucLoadRCnt = 0; + AFELoadCheckEn(); //开启AFE负载检测 + } + else if(bLoadChkingFlg) + { + AFERdStatus(); + if(!bAfeLoad) //检测到负载释放 + { + if(++ucLoadRCnt >= LOAD_DELAY_CNT) + { + bLoadChkingFlg = 0; + ucLoadRCnt = 0; + AFELoadCheckDis(); //关闭负载检测 + if(bUVLock) + { + bUV = 0; //释放欠压、过流 + } + bOCD1 = 0; + bOCD2 = 0; + if(bAFE_SC) + { + bAFE_SC = 0; + AFEClrFlg(); //清除短路保护标志 + } + } + } + } +} + + +/************************************************************************************************* +* 函数名: ChgerCheck +* 参 数: 无 +* 返回值: 无 +* 描 述: 检测充电器,当发生欠压后检测充电器是否连接;当发生充电过流后检测充电器是否移除 +*************************************************************************************************/ +void ChgerCheck(void) +{ + if(bChgerStartCheckFlg) + { + bChgerStartCheckFlg = 0; + bChgerChkingFlg = 1; + ucChgerRCnt = 0; + AFEChgerCheckEn(); //开启充电器检测 + } + else if(bChgerChkingFlg) + { + AFERdStatus(); + if(!bAfeChger) //充电器移除 + { + if(++ucChgerRCnt >= CHGER_DELAY_CNT) + { + bChgerChkingFlg = 0; + ucChgerRCnt = 0; + AFEChgerCheckDis(); //关闭充电器检测 + if(bOVLock) + { + bOV = 0; //释放过压 + bAFE_OV = 0; + AFEClrFlg(); + } + bOCC = 0; + } + } + } +} diff --git a/code_drv/ExtE2PRom.c b/code_drv/ExtE2PRom.c new file mode 100644 index 0000000..f49cd69 --- /dev/null +++ b/code_drv/ExtE2PRom.c @@ -0,0 +1,561 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + +BOOL bE2PProcessFlg; //EEPROM处理标志 +BOOL bE2PBKDsgEnd; //放电结束标志,需要备份信息到外挂EEPROM +BOOL bE2PBKDsgEndValid; +BOOL bE2PBKChgStop; //充电结束标志,需要备份信息到外挂EEPROM +BOOL bE2PBKChgStart; //充电开始标志,需要备份信息到外挂EEPROM +BOOL bE2PBKRtc; //RTC定时备份标志,需要备份信息到外挂EEPROM +BOOL bE2PErase; //擦除外挂EEPROM标志 +U8 xdata bUart0E2PRdData; //读取外挂EEPROM标志 +U8 xdata bUart1E2PRdData; //读取外挂EEPROM标志 +U8 xdata bUart2E2PRdData; //读取外挂EEPROM标志 +BOOL bE2PRErr; +BOOL bE2PTwiRWErrFlg; +U8 xdata bUart0RTCRdTime; //读取RTC时间标志 +U8 xdata bUart1RTCRdTime; //读取RTC时间标志 +U8 xdata bUart2RTCRdTime; //读取RTC时间标志 +BOOL bDsgToChgFlg; //放电转换为充电,需要备份数据 +BOOL bChgToDsgFlg; //充电转换为放电,需要备份数据 +U16 xdata uiE2PDataAddr; +U8 xdata ucE2PTwiRWErrDelayCnt; +U8 xdata ucRTCBKTime1; +U16 xdata uiRTCBKTime2; +U8 idata ucUpDataLimitTime; +U16 xdata uiCHGValidTime; +U8 xdata ucRTCBuf[7]; + + +/************************************************************************************************* +* 函数名: AFEI2CCheck +* 参 数: 无 +* 返回值: 无 +* 描 述: 连续5S检测到AFE的I2C通讯错误,则置位bAfeErr=1 +*************************************************************************************************/ +void E2PRomTwiCheck(void) +{ + if(bEnEEPRomBK) + { + if(bE2PTwiRWErrFlg) + { + if(++ucE2PTwiRWErrDelayCnt >= TIME_1S_5S) + { + bE2PRErr = 1; + ucE2PTwiRWErrDelayCnt = TIME_1S_5S; + } + } + else + { + ucE2PTwiRWErrDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: E2PRomWrite +* 参 数: Addr:地址;Length:长度;WrBuf:写入存放的Buf +* 返回值: 无 +* 描 述: 写入EEPROm +*************************************************************************************************/ +BOOL E2PRomWrite(U16 WrAddr, U8 Length, U8 xdata *WrBuf) +{ + BOOL Result = 0; + U8 i; + + if(!bE2PRErr) + { + for(i=0; i<5; i++) + { + #ifdef TWI_Hardware_Module + if(TwiWrite(E2PROM_ID, WrAddr, TWI_ADDR_2B, Length, TWI_CRC_NO, WrBuf)) + { + Result = 1; + break; + } + #else + if(TwiWrite(E2PROM_ID, WrAddr, Length, WrBuf)) + { + Result = 1; + break; + } + #endif + Delay1ms(1); + } + } + bE2PTwiRWErrFlg = !Result; //标记通讯是否正常 + + return Result; +} + + +/************************************************************************************************* +* 函数名: E2PRomRead +* 参 数: Addr:地址;Length:长度;RdBuf:读取存放的Buf +* 返回值: 无 +* 描 述: 读取EEPROm +*************************************************************************************************/ +BOOL E2PRomRead(U16 RdAddr, U8 Length, U8 xdata *RdBuf) +{ + BOOL Result = 0; + U8 i; + + if(!bE2PRErr) + { + for(i=0; i<5; i++) + { + #ifdef TWI_Hardware_Module + if(TwiRead(E2PROM_ID, RdAddr, TWI_ADDR_2B, Length, TWI_CRC_NO, RdBuf)) + { + Result = 1; + break; + } + #else + if(TwiRead(E2PROM_ID, RdAddr, Length, RdBuf)) + { + Result = 1; + break; + } + #endif + Delay1ms(1); + } + } + bE2PTwiRWErrFlg = !Result; //标记通讯是否正常 + + return Result; +} + + + +/************************************************************************************************* +* 函数名: E2PRomErase +* 参 数: 无 +* 返回值: 无 +* 描 述: 擦除EEPROM +*************************************************************************************************/ +void E2PRomErase(void) +{ + U16 i; + U8 xdata WrBuf[8]; + + MemorySet(WrBuf, 0, 8); //clr Info.uiVCell[] + + for(i=0; i<(E2PROM_SIZE/32-1); i++) + { + McuWDTClear(); + E2PRomWrite(i*32+31, 1, WrBuf); + } + + E2PRomWrite(E2PROM_BOOT_ADDR, 8, WrBuf); + uiE2PDataAddr = 0; +} + + +/************************************************************************************************* +* 函数名: InitE2PRom +* 参 数: 无 +* 返回值: 无 +* 描 述: 初始化EEPROM的地址 +*************************************************************************************************/ +BOOL E2PRomInit(void) +{ + BOOL Result = 0; + + U8 xdata RdBuf[8]; + + Result = E2PRomRead(E2PROM_BOOT_ADDR, 8, RdBuf); + + RdBuf[2] = RdBuf[0]+RdBuf[1]; + RdBuf[6] = RdBuf[4]+RdBuf[5]; + + if(RdBuf[2] == RdBuf[3]) + { + uiE2PDataAddr = ((U16)RdBuf[0]<<8) + RdBuf[1]; + } + else if(RdBuf[6] == RdBuf[7]) + { + uiE2PDataAddr = ((U16)RdBuf[4]<<8) + RdBuf[5]; + } + else + { + uiE2PDataAddr = 0; + } + + return Result; +} + + +/************************************************************************************************* +* 函数名: E2PRomBKRTC +* 参 数: 无 +* 返回值: 无 +* 描 述: 备份RTC +*************************************************************************************************/ +void E2PRomBKRTC(void) +{ + U8 xdata WrBuf[9]; + U8 i, checksum = 0; + + RTCReadTime(&RTC); + MemoryCopy((U8 xdata *)&(RTC.Second), WrBuf, 7); + for(i=0; i<7; i++) + { + checksum += WrBuf[i]; + } + WrBuf[7] = checksum; + WrBuf[8] = 0x5A; + + E2PRomWrite(E2PROM_RTC_ADDR, 9, WrBuf); +} + + +/************************************************************************************************* +* 函数名: E2PRomBKBoot +* 参 数: 无 +* 返回值: 无 +* 描 述: 备份EEPROM的Boot区 +*************************************************************************************************/ +void E2PRomBKBoot(void) +{ + U8 xdata WrBuf[8]; + + WrBuf[0] = (uiE2PDataAddr>>8); + WrBuf[1] = uiE2PDataAddr; + WrBuf[3] = WrBuf[0]+WrBuf[1]; //Calculate checksum + + WrBuf[4] = WrBuf[0]; + WrBuf[5] = WrBuf[1]; + WrBuf[7] = WrBuf[3]; + + E2PRomWrite(E2PROM_BOOT_ADDR, 8, WrBuf); +} + + +/************************************************************************************************* +* 函数名: E2PRomBKData +* 参 数: BKType:备份类型 +* 返回值: 无 +* 描 述: 读取外挂EEPROM +*************************************************************************************************/ +void E2PRomBKData(U8 BKType) +{ + U8 xdata WrBuf[32]; + + if(BKType == E2PROM_BKTYPE_CHG_START) //充电开始 + { + MemoryCopy((U8 xdata *)&ucRTCBuf[0], WrBuf, 3); + MemoryCopy((U8 xdata *)&ucRTCBuf[4], WrBuf + 3, 3); + } + else + { + RTCReadTime(&RTC); + MemoryCopy((U8 xdata *)&(RTC.Second), WrBuf, 3); + MemoryCopy((U8 xdata *)&(RTC.Date), WrBuf + 3, 3); + } + + WrBuf[6] = (Info.uiPackStatus>>8); + WrBuf[7] = Info.uiPackStatus; + WrBuf[8] = (Info.uiBatStatus>>8); + WrBuf[9] = Info.uiBatStatus; + WrBuf[10] = (Info.ulFCC>>24); + WrBuf[11] = (Info.ulFCC>>16); + WrBuf[12] = (Info.ulFCC>>8); + WrBuf[13] = Info.ulFCC; + WrBuf[14] = (Info.ulRC>>24); + WrBuf[15] = (Info.ulRC>>16); + WrBuf[16] = (Info.ulRC>>8); + WrBuf[17] = Info.ulRC; + WrBuf[18] = (Info.ulVoltage>>24); + WrBuf[19] = (Info.ulVoltage>>16); + WrBuf[20] = (Info.ulVoltage>>8); + WrBuf[21] = Info.ulVoltage; + WrBuf[22] = (Info.slCurr>>24); + WrBuf[23] = (Info.slCurr>>16); + WrBuf[24] = (Info.slCurr>>8); + WrBuf[25] = Info.slCurr; + WrBuf[26] = (Info.uiTS[0]>>8); + WrBuf[27] = Info.uiTS[0]; + WrBuf[28] = (Info.uiCycleCount>>8); + WrBuf[29] = Info.uiCycleCount; + WrBuf[30] = BKType; + WrBuf[31] = 0x5A; + + E2PRomWrite(uiE2PDataAddr, 32, WrBuf); + + uiE2PDataAddr += 32; + if(uiE2PDataAddr >= E2PROM_BOOT_ADDR) + { + uiE2PDataAddr = 0; + } + + E2PRomBKBoot(); +} + + +/************************************************************************************************* +* 函数名: Uart0RdE2PRom +* 参 数: 无 +* 返回值: 无 +* 描 述: 读取外挂EEPROM +*************************************************************************************************/ +void Uart0RdE2PRom(void) +{ + U16 RdAddr; + + RdAddr = ((U16)ucUart0Buf[UART_CMD_NO]-CMD_RD_EEPROM)*128+((U16)ucSubClassID-0x80)*4096; + E2PRomRead(RdAddr, ucUart0Buf[UART_LENGTH], &ucUart0Buf[UART_DATA]); + + ucUart0Buf[UART_DATA+ucUart0Buf[UART_LENGTH]] = CRC8cal(&ucUart0Buf,ucUart0Buf[UART_LENGTH]+UART_DATA); + Uart0SendData(); //Start Send Data; Set UART REG +} + +/************************************************************************************************* +* 函数名: Uart1RdE2PRom +* 参 数: 无 +* 返回值: 无 +* 描 述: 读取外挂EEPROM +*************************************************************************************************/ +void Uart1RdE2PRom(void) +{ + U16 RdAddr; + + RdAddr = ((U16)ucUart1Buf[UART_CMD_NO]-CMD_RD_EEPROM)*128+((U16)ucSubClassID-0x80)*4096; + E2PRomRead(RdAddr, ucUart1Buf[UART_LENGTH], &ucUart1Buf[UART_DATA]); + + ucUart1Buf[UART_DATA+ucUart1Buf[UART_LENGTH]] = CRC8cal(&ucUart1Buf,ucUart1Buf[UART_LENGTH]+UART_DATA); + Uart1SendData(); //Start Send Data; Set UART REG +} + +/************************************************************************************************* +* 函数名: Uart2RdE2PRom +* 参 数: 无 +* 返回值: 无 +* 描 述: 读取外挂EEPROM +*************************************************************************************************/ +void Uart2RdE2PRom(void) +{ + U16 RdAddr; + + RdAddr = ((U16)ucUart2Buf[UART_CMD_NO]-CMD_RD_EEPROM)*128+((U16)ucSubClassID-0x80)*4096; + E2PRomRead(RdAddr, ucUart2Buf[UART_LENGTH], &ucUart2Buf[UART_DATA]); + + ucUart2Buf[UART_DATA+ucUart2Buf[UART_LENGTH]] = CRC8cal(&ucUart2Buf,ucUart2Buf[UART_LENGTH]+UART_DATA); + Uart2SendData(); //Start Send Data; Set UART REG +} + + +/************************************************************************************************* +* 函数名: UartRdRTC +* 参 数: 无 +* 返回值: 无 +* 描 述: 读取RTC时间:秒、分、时、日、月、年,并返回给UART +*************************************************************************************************/ +void Uart0RdRTC(void) +{ + RTCReadTime(&RTC); + MemoryCopy((U8 xdata *)&(RTC.Second), &ucUart0Buf[UART_DATA], 7); + + ucUart0Buf[UART_DATA+ucUart0Buf[UART_LENGTH]] = CRC8cal(&ucUart0Buf,ucUart0Buf[UART_LENGTH]+UART_DATA); + Uart0SendData(); //Start Send Data; Set UART REG +} + + +/************************************************************************************************* +* 函数名: Uart1RdRTC +* 参 数: 无 +* 返回值: 无 +* 描 述: 读取RTC时间:秒、分、时、日、月、年,并返回给UART +*************************************************************************************************/ +void Uart1RdRTC(void) +{ + RTCReadTime(&RTC); + MemoryCopy((U8 xdata *)&(RTC.Second), &ucUart1Buf[UART_DATA], 7); + + ucUart1Buf[UART_DATA+ucUart1Buf[UART_LENGTH]] = CRC8cal(&ucUart1Buf,ucUart1Buf[UART_LENGTH]+UART_DATA); + Uart1SendData(); //Start Send Data; Set UART REG +} + +/************************************************************************************************* +* 函数名: Uart2RdRTC +* 参 数: 无 +* 返回值: 无 +* 描 述: 读取RTC时间:秒、分、时、日、月、年,并返回给UART +*************************************************************************************************/ +void Uart2RdRTC(void) +{ + RTCReadTime(&RTC); + MemoryCopy((U8 xdata *)&(RTC.Second), &ucUart2Buf[UART_DATA], 7); + + ucUart2Buf[UART_DATA+ucUart2Buf[UART_LENGTH]] = CRC8cal(&ucUart2Buf,ucUart2Buf[UART_LENGTH]+UART_DATA); + Uart2SendData(); //Start Send Data; Set UART REG +} + +/************************************************************************************************* +* 函数名: E2PRomBKProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 对外挂EEPROM进行相应处理 +*************************************************************************************************/ +void E2PRomBKProcess(void) +{ + U8 BKType; + + if(bEnEEPRomBK && bE2PProcessFlg) + { + bE2PProcessFlg = 0; +// E2PRomInit(); +// RTCInitTime(&RTC); + + if(bE2PErase) + { + bE2PErase = 0; + E2PRomErase(); + } + + if(bUart0E2PRdData||bUart1E2PRdData||bUart2E2PRdData) + { + if(bUart0E2PRdData ) + { + bUart0E2PRdData = 0; + Uart0RdE2PRom(); + } + if(bUart1E2PRdData) + { + bUart1E2PRdData = 0; + Uart2RdE2PRom(); + } + if(bUart2E2PRdData) + { + bUart2E2PRdData = 0; + Uart2RdE2PRom(); + } + + } + + if(bUart0RTCRdTime||bUart1RTCRdTime||bUart2RTCRdTime) + { + if(bUart0RTCRdTime) + { + bUart0RTCRdTime = 0; + Uart0RdRTC(); + } + if(bUart1RTCRdTime) + { + bUart1RTCRdTime = 0; + Uart1RdRTC(); + } + if(bUart2RTCRdTime) + { + bUart2RTCRdTime = 0; + Uart2RdRTC(); + } + } + + if(bE2PBKRtc) + { + bE2PBKRtc = 0; + E2PRomBKRTC(); + } + + if(bE2PBKChgStart) + { + bE2PBKChgStart = 0; + BKType = E2PROM_BKTYPE_CHG_START; + E2PRomBKData(BKType); + } + + if(bE2PBKChgStop) + { + bE2PBKChgStop = 0; + BKType = E2PROM_BKTYPE_CHG_END; + E2PRomBKData(BKType); + } + + if(bE2PBKDsgEnd) + { + bE2PBKDsgEnd = 0; + BKType = E2PROM_BKTYPE_DSG_END; + E2PRomBKData(BKType); + } + } +} + + +/************************************************************************************************* +* 函数名: E2PRomBKCheck +* 参 数: 无 +* 返回值: 无 +* 描 述: 每1s检测是否需要备份RTC及EEPROM数据 +*************************************************************************************************/ +void E2PRomBKCheck(void) +{ + if(bEnEEPRomBK) + { +// E2PRomInit(); +// RTCInitTime(&RTC); + + if(++ucRTCBKTime1 >= E2ucRTCBKDelay) + { + ucRTCBKTime1 = 0; + RTCReadTime(&RTC); + } + + if(++uiRTCBKTime2 >= 3600) //1h + { + uiRTCBKTime2 = 0; + bE2PProcessFlg = 1; + bE2PBKRtc = 1; + } + + if(!bCHGING) + { + bDsgToChgFlg = 1; + if(bChgToDsgFlg) + { + bChgToDsgFlg = 0; + bE2PProcessFlg = 1; + bE2PBKChgStop = 1; + } + if(bUV && bE2PBKDsgEndValid) + { + bE2PBKDsgEndValid = 0; + bE2PProcessFlg = 1; + bE2PBKDsgEnd = 1; + } + else if(!bUV) + { + bE2PBKDsgEndValid = 1; + } + } + + if((bDsgToChgFlg && Info.slCurr>=E2siChgBKCur)) + { + if(!uiCHGValidTime) + { + RTCReadTime(&RTC); + MemoryCopy((U8 xdata *)&RTC, ucRTCBuf, 7); + } + + if(++uiCHGValidTime > ((U16)E2ucChgBKDelay*60)) //1分钟 + { + uiCHGValidTime = 0; + bChgToDsgFlg = 1; + bDsgToChgFlg = 0; + bE2PProcessFlg = 1; + bE2PBKChgStart = 1; + } + } + else + { + uiCHGValidTime = 0; + } + } +} diff --git a/code_drv/ISP.c b/code_drv/ISP.c new file mode 100644 index 0000000..de29714 --- /dev/null +++ b/code_drv/ISP.c @@ -0,0 +1,287 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2014/05/30 +History: + V0.0 2014/05/30 Preliminary +********************************************************************************/ +#include "Main.h" +#include "ISP.h" + + +/******************************************************************************** +ucUartBuf[0]--Slave Addr +ucUartBuf[1]--length +ucUartBuf[2]--Command-H +ucUartBuf[3]--Command-L +********************************************************************************/ +void ISP(void) +{ + EA = 0; + SP = STACK - 1; + CLKCON = 0x08; //SETB HFON + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + CLKCON |= 0x04; //SETB FS, SYSCLK=24M + + ucUartBufPT = 0; + ucUartBuf[0] = 0; + ucUartBuf[1] = 0; + ucUartBuf[2] = 0; + ucUartBuf[3] = 0; + ucUartSndLength = 0; + + P0 = 0xF2; + P0PCR = 0xC2; + P0CR = 0x81; + + SCON = 0x50; //配置Uart工作在模式1 + SBRTH = 0xff; //配置波特率参数,波特率9600 + SBRTL = 0x64; //计算公式:(int)X=FSY/(16*波特率) ; SBRT=32768-X ; SFINE=(FSY/波特率)-16*X FSY=24M + SFINE = 0x04; + SADDR = 0x0A; + SADEN = 0xFF; + + while(1) + { + RSTSTAT = 0x00; + if(RI) + { + ucUartBuf[ucUartBufPT] = SBUF; + ucUartBufPT++; + if(ucUartBuf[0] != SADDR) + { + ucUartBufPT = 0; + ucUartBuf[1] = 0; + } + else if(ucUartBuf[1] == CMD_ISP_HANDSHAKE) + { + if(ucUartBufPT > (ucUartBuf[3]+3)) //If a write operation, and complete all the data has been received + { + ucUartBufPT = 0; + ucUartSndLength = 1; + if((ucUartBuf[8]!='I') || (ucUartBuf[9]!='S') || (ucUartBuf[10]!='P')) + { + REN = 0; + SBUF = CMD_INVALID_ACK; //UART发送NACK + } + else + { + REN = 0; + SBUF = CMD_VALID_ACK; //UART发送ACK + } + } + } + + else if(ucUartBufPT > 2) + { + if(ucUartBufPT >= ucUartBuf[1]) + { + ISPProcessCMD(); + ucUartBufPT = 0; + } + } + RI = 0; + } + + if(TI) + { + ucUartBufPT++; + if(ucUartBufPT >= ucUartSndLength) + { + REN = 1; //Allow UART receive data + ucUartBufPT = 0; + } + else + { + REN = 0; //Disable Receive + SBUF = ucUartBuf[ucUartBufPT]; + } + TI = 0; + } + } +} + +/******************************************************************************* +Function: ISPProcessCMD() +Description: +Input: +Output: +Others: +*******************************************************************************/ +void ISPProcessCMD(void) +{ + U8 data i, DataChksum, SendState; + U16 data j, UartStartAddr, UartDataLen, UartChksum; + + if((ucUartBuf[2]==0xff) && (ucUartBuf[4]=='I') && (ucUartBuf[5]=='S') && (ucUartBuf[6]=='P')) + { +//Erase Sector + if(ucUartBuf[3] == UART_ERASE) + { + FLASHCON = ucUartBuf[7]; +// if((FLASHCON&0x01) == 0) +// { +// UartDataLen = CODE_SECTOR*512; +// XPAGE = ucUartBuf[8]<<1; //Code Area +// } +// else + { + UartDataLen = E2P_SECTOR*512; + XPAGE = ucUartBuf[8]<<1; //EEPRom + } + + IB_CON1 = 0xE6; + IB_CON2 = 0x05; + IB_CON3 = 0x0A; + IB_CON4 = 0x09; + IB_CON5 = 0x06; + _nop_(); + _nop_(); + _nop_(); + _nop_(); + + + SendState = STATE_OK; //Send Data: Erase OK + for(j=0; j= KEY_S_TIME) //按键按下滤波计数器,当按键被按下后一直计数,按键弹起后停止计数 + { //按下又弹起且未触发长按时,如果uiKeyValidCnt >= KEY_S_TIME,则可能是短按 + if(uiKeyInvalidCnt >= KEY_S_TIME) //按键弹起滤波计数器达到短按消抖时间,则认为是一次按下和弹起都消抖过的有效按键 + { + if(uiKeyValidCnt >= KEY_L_TIME) //在此区分是短按,还是长按结束 + { + ucKeyValue = ucKeyOldValue | KEY_STATE_LE; //按下的时间超过长按时间,认为是长按已经结束了。该状态目前未使用 + } + else + { + ucKeyValue = ucKeyOldValue | KEY_STATE_S; //按下的时间没有超过长按时间,认为是一次有效的短按按键 + } + bKeyFlg = 1; //短按有效,暂停按键检测,去处理按键事件 + goto scanend; + } +// else +// { +// uiKeyValidCnt++; //该行应该删掉,否则当KEY_S_TIME等于KEY_L_TIME的一半及以上时,会把短按误识别为长按结束。 +// } + } + else //每当按键按下的时间连短按消抖时间都不够时,认为是无效按键,重新初始化 + { + goto scanend; + } + } + else //ucKeyValueBK中存放了新的键值,新键值跟老键值相同,说明是同一个按键。 + { + if(ucKeyValueBK != KEYVAL_NULL) //继续处理被按下的按键 + { + uiKeyInvalidCnt = 0; //清弹起计数器 + uiKeyValidCnt++; //累加按下计数器 + if(uiKeyValidCnt == KEY_L_TIME) //当按下时间达到长按滤波时间时,认为此按键为长按键 + { + ucKeyValue = ucKeyOldValue | KEY_STATE_L; + bKeyFlg = 1; + } + else if(uiKeyValidCnt == KEY_LC_TIME) //当按下时间达到长按持续滤波时间时,认为此按键为长按持续 + { + uiKeyValidCnt = KEY_L_TIME; + ucKeyValue = ucKeyOldValue | KEY_STATE_LC; + bKeyFlg = 1; + } + } + else //新键值是空键值,说明全部按键都释放了 + { + ucKeyValue = KEYVAL_NULL; //全部按键都释放了,需要重新初始化检测寄存器 +scanend: + uiKeyValidCnt = 0; + uiKeyInvalidCnt = 0; + ucKeyOldValue = ucKeyValueBK; + } + } + } +} diff --git a/code_drv/McuFlash.c b/code_drv/McuFlash.c new file mode 100644 index 0000000..da219b1 --- /dev/null +++ b/code_drv/McuFlash.c @@ -0,0 +1,368 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +BOOL bMcuFlashWrWaitFlg; +BOOL bMcuFlashWrFlg; +BOOL bMcuFlashErr; +U8 xdata ucMcuFlashWrValid; +U8 xdata bMcuFlashWrWaitCnt; + +/************************************************************************************************* +* 函数名: McuFlashWrOneByte +* 参 数: McuFlashAddr:起始地址;WrData:写入的注释 +* 返回值: 无 +* 描 述: 写1个字节 +*************************************************************************************************/ +void McuFlashWrOneByte(U16 McuFlashAddr, U8 WrData) +{ + IrqDis(); + McuFlashEn(); + + XPAGE = McuFlashAddr>>8; + IB_OFFSET = McuFlashAddr % 256; + IB_DATA = WrData; + + IB_CON1 = 0x6E; + IB_CON2 = 0x05; + IB_CON3 = 0x0A; + IB_CON4 = 0x09; + if(XPAGE == (McuFlashAddr>>8)) + { + IB_CON5 = 0x06; + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + } + + McuFlashDis(); + IrqEn(); +} + + +/************************************************************************************************* +* 函数名: McuFlashBlankCheck +* 参 数: McuFlashAddr:起始地址 +* 返回值: 0:非全0,Erase失败;1:全0,Erase成功 +* 描 述: 当Erase完1个Sector,需检查是否全为0 +*************************************************************************************************/ +BOOL McuFlashBlankCheck(U16 McuFlashAddr) +{ + BOOL Result = 1; + U16 i; + + for(i=0; i>8; + IB_DATA = *(ptr+i); + IB_CON1 = 0x6E; + if(!EA) + { + IB_CON2 = 0x05; + if(FLASHCON) + { + IB_CON3 = 0x0A; + if(ucMcuFlashWrValid == 0x55) + { + IB_CON4 = 0x09; + if(XPAGE == ((McuFlashAddr+i)>>8)) + { + IB_CON5 = 0x06; + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + Result = 1; + } + else + { + Result = 0; + break; + } + } + else + { + Result = 0; + break; + } + } + else + { + Result = 0; + break; + } + } + else + { + Result = 0; + break; + } + } + + return Result; +} + + +/************************************************************************************************* +* 函数名: McuFlashWrite +* 参 数: McuFlashAddr:写入的地址,长度固定为1个Sector +* 返回值: 0:写入失败;1:写入成功 +* 描 述: 写MCU Flash的1个Sector: + 1.Erase Sector + 2.检查当前Sector是否全为0 + 3.将XRAM数据写入 + 4.校验XRAM和MCU Flash区数据是否一致 +*************************************************************************************************/ +BOOL McuFlashWrite(U16 McuFlashAddr, U16 XramAddr) +{ + BOOL Result = 0; + + McuWDTClear(); //清看门狗 + IrqDis(); //关闭中断源 + McuFlashEn(); + + XPAGE = McuFlashAddr >> 8; + IB_CON1 = 0xE6; + if(!EA) + { + IB_CON2 = 0x05; + if(FLASHCON) + { + IB_CON3 = 0x0A; + if(ucMcuFlashWrValid == 0x55) + { + IB_CON4 = 0x09; + if(XPAGE == (McuFlashAddr >> 8)) + { + IB_CON5 = 0x06; + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + + if(McuFlashBlankCheck(McuFlashAddr)) //查空 + { + if(McuFlashWrSector(McuFlashAddr, XramAddr)) //写入 + { + if(McuFlashDataCheck(McuFlashAddr, XramAddr)) //校验 + { + Result = 1; + } + } + } + } + } + } + } + + IB_CON1 = 0; + IB_CON2 = 0; + IB_CON3 = 0; + IB_CON4 = 0; + IB_CON5 = 0; + + McuFlashDis(); + XPAGE = 0x00; + IrqEn(); + + return Result; +} + + + + + + +/************************************************************************************************* +* 函数名: McuFlashProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 写MCU Flash,同时更新备份1区和2区 +*************************************************************************************************/ +void McuFlashProcess(void) +{ + BOOL McuFlashBk1WrFailFlg = 0, McuFlashBk2WrFailFlg = 0; + U16 VoltageMin; + + if(bMcuFlashWrFlg) + { + bMcuFlashWrFlg = 0; + + ucMcuFlashWrValid = 0x55; //防误写检验标志 + if(ucCellNum > 5) //6~10串应用,需要总电压超过10V + { + VoltageMin = 10000; + } + else //3~5串应用,需要总电压超过5V + { + VoltageMin = 5000; + } + + if((Info.ulVoltage>=VoltageMin) && (E2uiCheckFlag==0x5AA5)) + { + if(!McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR)) //连续写两次,如果都错误则置位错误标志 + { + if(!McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR)) + { + McuFlashBk1WrFailFlg = 1; + E2uiCheckFlag = 0xFFFF; + McuFlashWrOneByte(MCUFLASH_BK1_ADDR+510,0xFF); + McuFlashWrOneByte(MCUFLASH_BK1_ADDR+511,0xFF); + } + } + + if(!McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR)) + { + if(!McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR)) + { + McuFlashBk2WrFailFlg = 1; + E2uiCheckFlag = 0xFFFF; + McuFlashWrOneByte(MCUFLASH_BK2_ADDR+510,0xFF); + McuFlashWrOneByte(MCUFLASH_BK2_ADDR+511,0xFF); + } + } + } + else + { + McuFlashBk1WrFailFlg = 1; + McuFlashBk2WrFailFlg = 1; + } + ucMcuFlashWrValid = 0x00; + + if(McuFlashBk1WrFailFlg && McuFlashBk2WrFailFlg) //如果Flash两个区都操作错误,则置位Flash错误标志 + { + bMcuFlashErr = 1; + } + } +} + + +/************************************************************************************************* +* 函数名: McuFlashRead +* 参 数: SourceAddr:源地址;TargetAddr:目标地址;Length:数据长度 +* 返回值: 0:数据正确;1:数据错误 +* 描 述: 判断MCU Flash参数区的最后一个字节是否为0x5AA5,检查数据区是否被破坏 +*************************************************************************************************/ +BOOL McuFlashRead(U16 SourceAddr, U8 xdata *TargetAddr, U16 Length) +{ + U16 i; + BOOL Result = 1; + U8 xdata *data TargetAddr1 = TargetAddr; //*后面的data关键字的作用,是把指针TargetAddr1定义在data区中 + + IrqDis(); + McuFlashEn(); + McuWDTClear(); + for(i=0; i= MCU_FLASH_WATI_DELAY) + { + bMcuFlashWrWaitFlg = 0; + bMcuFlashWrWaitCnt = 0; + bMcuFlashWrFlg = 1; + } + } +} + + +/************************************************************************************************* +* 函数名: McuFlashCheckFlg +* 参 数: McuFlashAddr:MCU Flash区的地址 +* 返回值: 0:数据正确;1:数据错误 +* 描 述: 判断MCU Flash参数区的最后一个字节是否为0x5AA5,检查数据区是否被破坏 +*************************************************************************************************/ +BOOL McuFlashCheckFlg(U16 McuFlashAddr) +{ + BOOL Result = 0; + + McuFlashEn(); + if(CWORD[McuFlashAddr/2] == 0x5AA5) + { + Result = 1; + } + McuFlashDis(); + + return Result; +} + diff --git a/code_drv/McuLib.c b/code_drv/McuLib.c new file mode 100644 index 0000000..159f2c2 --- /dev/null +++ b/code_drv/McuLib.c @@ -0,0 +1,343 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + + +/************************************************************************************************* +* 函数名: McuTimer3Set +* 参 数: ClkSource: 定时器的基准源(分别为32KHz,128KHz,24MHz的系统时钟) + XmS,定时器周期(当周期小于1000mS时,可选择以上三个时钟;当周期大于1000mS时,只能选择32KHz和128KHz) +* 返回值: 无 +* 描 述: 初始化Timer3定时器,并开启定时器 +*************************************************************************************************/ +void McuTimer3Set(U8 ClkSource, U16 XmS) +{ + U16 TempVal; + + McuBank1Sel(); + +// if(ClkSource == TIM_CLK_32KHz) +// { +// if(XmS < 1000) +// { +// T3CON = 0x02; //外部32.768kHz为时钟源,1分频,最大2S +// TempVal = (U32)0x10000 - (U32)32.768*XmS; +// } +// else +// { +// T3CON = 0x22; //外部32.768kHz为时钟源,64分频,最大128s +// TempVal = 0x10000 - (U32)32.768*XmS/64; +// } +// } +// else if(ClkSource == TIM_CLK_128KHz) +// { +// if(XmS < 4000) +// { +// T3CON = 0x12; //外部128kHz为时钟源,8分频,最大4.096S +// TempVal = 0x10000 - (U32)128*XmS/8; +// } +// else +// { +// T3CON = 0x32; //外部128kHz为时钟源,256分频,最大131.072S +// TempVal = 0x10000 - (U32)128*XmS/256; +// } +// } +// else if(ClkSource == TIM_CLK_24MHz) +// { +// if(XmS < 500) +// { +// T3CON = 0x30; //系统24MHz为时钟源,256分频,最大669.5ms +// TempVal = 0x10000 - (U32)24000*XmS/256; +// } +// else +// { +// T3CON = 0x32; //外部128kHz为时钟源,256分频,最大131.072S +// TempVal = 0x10000 - (U32)128*XmS/256; +// } +// } + + //8MHz晶振 + T3CON = 0x30; //系统8MHz为时钟源,256分频,最大669.5ms + TempVal = 0x10000 - (U32)8000*XmS/256; + + TL3 = TempVal; + TH3 = TempVal>>8; + TR3 = 1; //启动定时器3 + + McuBank0Sel(); +} + + +/************************************************************************************************* +* 函数名: McuClockSet +* 参 数: SysClock:当前所需设置的系统时钟 +* 返回值: 无 +* 描 述: 初始化AFE +*************************************************************************************************/ +void McuClockSet(U8 SysClock) +{ + U8 ea; + + ea = EA; + EA = 0; + + CLKCON |= 0x08; //SETB HFON + + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + _nop_(); + + CLKCON &= 0x60; + + CLKCON |= 0x04; //SETB FS, SYSCLK=24M + + EA = ea; +} + + +/************************************************************************************************* +* 函数名: McuPWM0Set、McuPWM1Set、McuPWM2Set +* 参 数: PwmFreq:PWM的频率Hz;DutyRatio:PWM的高电平占空比 +* 返回值: 无 +* 描 述: 初始化AFE +*************************************************************************************************/ +void McuPWM0Set(U16 PwmFreq, U8 DutyRatio) +{ + PWM0CON = 0xb0; //系统时钟/64 + PWM0PL = 375000/PwmFreq; //PWM2P=24000000/(64*E2uiDSG1PWMFreq); + PWM0PH = (375000/PwmFreq) >> 8; + PWM0DL = (U16)(PWM0PL+PWM0PH*256)*DutyRatio/100; + PWM0DH = ((U16)(PWM0PL+PWM0PH*256)*DutyRatio/100) >> 8; +} + +void McuPWM1Set(U16 PwmFreq, U8 DutyRatio) +{ + PWM1CON = 0xb0; //系统时钟/64 + PWM1PL = 375000/PwmFreq; //PWM2P=24000000/(64*E2uiDSG1PWMFreq); + PWM1PH = (375000/PwmFreq) >> 8; + PWM1DL = (U16)(PWM1PL+(U16)PWM1PH*256)*DutyRatio/100; + PWM1DH = ((U16)(PWM1PL+(U16)PWM1PH*256)*DutyRatio/100) >> 8; +} + +void McuPWM2Set(U16 PwmFreq, U8 DutyRatio) +{ + PWM2CON = 0xb0; //系统时钟/64 + PWM2PL = 375000/PwmFreq; //PWM2P=24000000/(64*E2uiDSG1PWMFreq); + PWM2PH = (375000/PwmFreq) >> 8; + PWM2DL = (U16)(PWM2PL+(U16)PWM2PH*256)*DutyRatio/100; + PWM2DH = ((U16)(PWM2PL+(U16)PWM2PH*256)*DutyRatio/100) >> 8; +} + + +/************************************************************************************************* +* 函数名: Delay1ms +* 参 数: Xms:延迟多少mS +* 返回值: 无 +* 描 述: 延时函数,单位为1mS +特别注意该函数的延时准确性问题,在不同优化等级时,反汇编不同造成延时不一致,实测如下: +1.当配置选项里的代码优化等级设置为3时,j=1670,若禁止所有中断,则实际延时为3.484ms,不禁止中断则受中断影响,达到3.804ms +2.当配置选项里的代码优化等级设置为3时,j=480,若禁止所有中断,则实际延时为1.010ms,不禁止中断则受中断影响,达到1.104ms +3.当配置选项里的代码优化等级设置为7时,j=1670,若禁止所有中断,则实际延时为1.002ms,不禁止中断则受中断影响,达到1.090ms +*************************************************************************************************/ +void Delay1ms(U8 Xms) +{ + U8 i; + U16 j, Tcnt; + + if((CLKCON&0x70) == MCU_CLK_24MHz) + { + Tcnt = 1670; + } + else if((CLKCON&0x70) == MCU_CLK_12MHz) + { + Tcnt = 1670/2; + } + else if((CLKCON&0x70) == MCU_CLK_6MHz) + { + Tcnt = 1670/4; + } + else //2MHz + { + Tcnt = 1670/12; + } + + + for(i=0; i E2uiOVvol) + { + if(++uiOVDelayCnt >= TIME_50mS_50mS) + { + bOV = 1; + uiOVDelayCnt = 0; + } + } + else if(uiCellVmax < E2uiOVRvol) + { + uiOVDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: PorProtectUV +* 参 数: 无 +* 返回值: 无 +* 描 述: 单节电芯欠压保护检测,保护后置位bUV为1 +*************************************************************************************************/ +void PorProtectUV(void) +{ + if(!bUV) + { + if(uiCellVmin < E2uiUVvol) + { + if(++uiUVDelayCnt >= TIME_50mS_50mS) + { + bUV = 1; + uiUVDelayCnt = 0; + } + } + else if(uiCellVmin > E2uiUVRvol) + { + uiUVDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: PorProtectOTC +* 参 数: 无 +* 返回值: 无 +* 描 述: 充电高温保护检测,保护后置位bOTC为1 +*************************************************************************************************/ +void PorProtectOTC(void) +{ + if(!bOTC) + { + if(uiTempeMax > E2uiTempOTC) + { + if(++uiOTCDelayCnt >= TIME_50mS_50mS) + { + bOTC = 1; + uiOTCDelayCnt = 0; + } + } + else if(uiTempeMax < E2uiTempOTCR) + { + uiOTCDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: PorProtectUTC +* 参 数: 无 +* 返回值: 无 +* 描 述: 充电低温保护检测,保护后置位bUTC为1 +*************************************************************************************************/ +void PorProtectUTC(void) +{ + if(!bUTC) + { + if(uiTempeMin < E2uiTempUTC) + { + if(++uiUTCDelayCnt >= TIME_50mS_50mS) + { + bUTC = 1; + uiUTCDelayCnt = 0; + } + } + else if(uiTempeMin > E2uiTempUTCR) + { + uiUTCDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: PorProtectOTD +* 参 数: 无 +* 返回值: 无 +* 描 述: 放电高温保护检测,保护后置位bOTD为1 +*************************************************************************************************/ +void PorProtectOTD(void) +{ + if(!bOTD) + { + if(uiTempeMax > E2uiTempOTD) + { + if(++uiOTDDelayCnt >= TIME_50mS_50mS) + { + bOTD = 1; + uiOTDDelayCnt = 0; + } + } + else if(uiTempeMax < E2uiTempOTDR) + { + uiOTDDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: PorProtectUTD +* 参 数: 无 +* 返回值: 无 +* 描 述: 放电低温保护检测,保护后置位bUTD为1 +*************************************************************************************************/ +void PorProtectUTD(void) +{ + if(!bUTD) + { + if(uiTempeMin < E2uiTempUTD) + { + if(++uiUTDDelayCnt >= TIME_50mS_50mS) + { + bUTD = 1; + uiUTDDelayCnt = 0; + } + } + else if(uiTempeMin > E2uiTempUTDR) + { + uiUTDDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: ProtectProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 第一次上电时的自检,持续100mS,上电自检最快完成时间为50mS +*************************************************************************************************/ +void PorSelfTest(void) +{ + if(bPorSelfTestFlg) + { + AfeCalcuVol(); //第一次上电50mS后自动读取电压数据和温度数据 + AfeCalcuTempe(); + PorProtectOV(); //检测过压保护及其释放 + PorProtectUV(); //检测欠压保护及其释放 + + PorProtectOTC(); //检测充电高温保护及其释放 + PorProtectUTC(); //检测充电低温保护及其释放 + PorProtectOTD(); //检测放电高温保护及其释放 + PorProtectUTD(); //检测放电低温保护及其释放 + + if(++ucPorSelfTestDelayCnt >= TIME_50mS_100mS) //如果需要最快自检完成,则将TIME_50mS_100mS修改为TIME_50mS_50mS + { + bPorSelfTestFlg = 0; //1S自检结束后根据当前状态确定是否进入PD或者是否开关MOS + if(bAfeErr || bE2PRErr || bRTCErr || bMcuFlashErr) + { + bPDFlg = 1; + } + else + { + GasGaugeInit(); //计算电量值 + } + } + } +} + diff --git a/code_drv/Protect.c b/code_drv/Protect.c new file mode 100644 index 0000000..28b47a4 --- /dev/null +++ b/code_drv/Protect.c @@ -0,0 +1,465 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +//保护相关的参数 +BOOL bUVLock; //负载锁定,当欠压恢复后,置位该标志,而不是直接清零bUV,当负载释放后,再清零bUV +BOOL bOVLock; //充电器锁定,当过压恢复后,置位该标志,而不是直接清零bOV,当充电器释放后,再清零bOV +U16 xdata uiOVDelayCnt; +U16 xdata uiOVRDelayCnt; +U16 xdata uiUVDelayCnt; +U16 xdata uiUVRDelayCnt; +U16 xdata uiOTCDelayCnt; +U16 xdata uiOTCRDelayCnt; +U16 xdata uiUTCDelayCnt; +U16 xdata uiUTCRDelayCnt; +U16 xdata uiOTDDelayCnt; +U16 xdata uiOTDRDelayCnt; +U16 xdata uiUTDDelayCnt; +U16 xdata uiUTDRDelayCnt; +U16 xdata uiOCCDelayCnt; +U16 xdata uiOCD1DelayCnt; +U16 xdata uiOCD2DelayCnt; +U16 xdata uiOCCRcnt; +U16 xdata uiOCDRcnt; + +/************************************************************************************************* +* 函数名: ProtectOV +* 参 数: 无 +* 返回值: 无 +* 描 述: 单节电池过压保护检测,过压后置位bOV为1 +*************************************************************************************************/ +void ProtectOV(void) +{ + if(!(bOV||bAFE_OV)) + { + if(uiCellVmax > E2uiOVvol) + { + if(++uiOVDelayCnt >= OV_DELAY_CNT) + { + bOV = 1; + bOVLock = 0; + uiOVDelayCnt = 0; + uiOVRDelayCnt = 0; + } + } + else if(uiCellVmax < E2uiOVRvol) + { + uiOVDelayCnt = 0; + } + } + else if(!bOVLock) + { + if(uiCellVmax < E2uiOVRvol) + { + if(++uiOVRDelayCnt >= OVR_DELAY_CNT) + { + if(bChgerLock) + { + bOVLock = 1; //过压阈值恢复,但是还需检测负载释放释放 + bChgerStartCheckFlg = 1; //开启充电器 + } + else + { + bOV = 0; + bAFE_OV = 0; + AFEClrFlg(); + } + uiOVDelayCnt = 0; + uiOVRDelayCnt = 0; + } + } + else if(uiCellVmax > E2uiOVvol) + { + uiOVRDelayCnt = 0; + } + } +} + +/************************************************************************************************* +* 函数名: ProtectUV +* 参 数: 无 +* 返回值: 无 +* 描 述: 单节电芯欠压保护检测,保护后置位bUV为1 +*************************************************************************************************/ +void ProtectUV(void) +{ + if(!bUV) + { + if(uiCellVmin < E2uiUVvol) + { + if(++uiUVDelayCnt >= UV_DELAY_CNT) + { + bUV = 1; + bUVLock = 0; + uiUVDelayCnt = 0; + uiUVRDelayCnt = 0; + } + } + else if(uiCellVmin > E2uiUVRvol) + { + uiUVDelayCnt = 0; + } + } + else if(!bUVLock) + { + if(uiCellVmin > E2uiUVRvol) + { + if(++uiUVRDelayCnt >= UVR_DELAY_CNT) + { + if(bLoadLock) //如果支持负载锁定,则不立刻清UV标志,需要负载释放后再清零 + { + bUVLock = 1; //欠压阈值恢复,但是还需检测负载释放释放 + bLoadStartCheckFlg = 1; //开启负载检测 + } + else + { + bUV = 0; + } + uiUVDelayCnt = 0; + uiUVRDelayCnt = 0; + } + } + else if(uiCellVmin < E2uiUVvol) + { + uiUVRDelayCnt = 0; + } + } +} + +/************************************************************************************************* +* 函数名: ProtectOTC +* 参 数: 无 +* 返回值: 无 +* 描 述: 充电高温保护检测,保护后置位bOTC为1 +*************************************************************************************************/ +void ProtectOTC(void) +{ + if(!bOTC) + { + if(uiTempeMax > E2uiTempOTC) + { + if(++uiOTCDelayCnt >= TEMPE_DELAY_CNT) + { + bOTC = 1; + uiOTCDelayCnt = 0; + uiOTCRDelayCnt = 0; + } + } + else if(uiTempeMax < E2uiTempOTCR) + { + uiOTCDelayCnt = 0; + } + } + else + { + if(uiTempeMax < E2uiTempOTCR) + { + if(++uiOTCRDelayCnt >= TEMPER_DELAY_CNT) + { + bOTC = 0; + uiOTCDelayCnt = 0; + uiOTCRDelayCnt = 0; + } + } + else if(uiTempeMax > E2uiTempOTC) + { + uiOTCRDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: ProtectUTC +* 参 数: 无 +* 返回值: 无 +* 描 述: 充电低温保护检测,保护后置位bUTC为1 +*************************************************************************************************/ +void ProtectUTC(void) +{ + if(!bUTC) + { + if(uiTempeMin < E2uiTempUTC) + { + if(++uiUTCDelayCnt >= TEMPE_DELAY_CNT) + { + bUTC = 1; + uiUTCDelayCnt = 0; + uiUTCRDelayCnt = 0; + } + } + else if(uiTempeMin > E2uiTempUTCR) + { + uiUTCDelayCnt = 0; + } + } + else + { + if(uiTempeMin > E2uiTempUTCR) + { + if(++uiUTCRDelayCnt >= TEMPER_DELAY_CNT) + { + bUTC = 0; + uiUTCDelayCnt = 0; + uiUTCRDelayCnt = 0; + } + } + else if(uiTempeMin < E2uiTempUTC) + { + uiUTCRDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: ProtectOTD +* 参 数: 无 +* 返回值: 无 +* 描 述: 放电高温保护检测,保护后置位bOTD为1 +*************************************************************************************************/ +void ProtectOTD(void) +{ + if(!bOTD) + { + if(uiTempeMax > E2uiTempOTD) + { + if(++uiOTDDelayCnt >= TEMPE_DELAY_CNT) + { + bOTD = 1; + uiOTDDelayCnt = 0; + uiOTDRDelayCnt = 0; + } + } + else if(uiTempeMax < E2uiTempOTDR) + { + uiOTDDelayCnt = 0; + } + } + else + { + if(uiTempeMax < E2uiTempOTDR) + { + if(++uiOTDRDelayCnt >= TEMPER_DELAY_CNT) + { + bOTD = 0; + uiOTDDelayCnt = 0; + uiOTDRDelayCnt = 0; + } + } + else if(uiTempeMax > E2uiTempOTD) + { + uiOTDRDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: ProtectUTD +* 参 数: 无 +* 返回值: 无 +* 描 述: 放电低温保护检测,保护后置位bUTD为1 +*************************************************************************************************/ +void ProtectUTD(void) +{ + if(!bUTD) + { + if(uiTempeMin < E2uiTempUTD) + { + if(++uiUTDDelayCnt >= TEMPE_DELAY_CNT) + { + bUTD = 1; + uiUTDDelayCnt = 0; + uiUTDRDelayCnt = 0; + } + } + else if(uiTempeMin > E2uiTempUTDR) + { + uiUTDDelayCnt = 0; + } + } + else + { + if(uiTempeMin > E2uiTempUTDR) + { + if(++uiUTDRDelayCnt >= TEMPER_DELAY_CNT) + { + bUTD = 0; + uiUTDDelayCnt = 0; + uiUTDRDelayCnt = 0; + } + } + else if(uiTempeMin < E2uiTempUTD) + { + uiUTDRDelayCnt = 0; + } + } +} + + + +/************************************************************************************************* +* 函数名: ProtectOCC +* 参 数: 无 +* 返回值: 无 +* 描 述: 充电过流保护检测,保护后置位bOCC为1 +*************************************************************************************************/ +void ProtectOCC(void) +{ + if(!bOCC) + { + if(slCadcCurrent > E2slOCCCurrent) + { + if(++uiOCCDelayCnt >= OCC_DELAY_CNT) + { + bOCC = 1; + bChgerStartCheckFlg = 1; //设置充电器开始检测标志 + uiOCCDelayCnt = 0; + } + } + else if(!bChgerChkingFlg) + { + if(uiOCCDelayCnt > 0) + { + uiOCCDelayCnt--; + } + } + } +} + + +/************************************************************************************************* +* 函数名: ProtectOCD1 +* 参 数: 无 +* 返回值: 无 +* 描 述: 放电过流1保护检测,保护后置位bOCD1为1 +*************************************************************************************************/ +void ProtectOCD1(void) +{ + if(!bOCD1) + { + if(slCadcCurrent < E2slOCD1Current) + { + if(++uiOCD1DelayCnt >= OCD1_DELAY_CNT) + { + uiOCD1DelayCnt = 0; + bOCD1 = 1; + bLoadStartCheckFlg = 1; //开启负载检测 + } + } + else if(!bLoadChkingFlg) + { + if(uiOCD1DelayCnt > 0) + { + uiOCD1DelayCnt--; + } + } + } +} + + +/************************************************************************************************* +* 函数名: ProtectOCD2 +* 参 数: 无 +* 返回值: 无 +* 描 述: 放电过流2保护检测,保护后置位bOCD2为1 +*************************************************************************************************/ +void ProtectOCD2(void) +{ + if(!bOCD2) + { + if(slCadcCurrent < E2slOCD2Current) + { + if(++uiOCD2DelayCnt > OCD2_DELAY_CNT) + { + uiOCD2DelayCnt = 0; + bOCD2 = 1; + bLoadStartCheckFlg = 1; //开启负载检测 + } + } + else if(!bLoadChkingFlg) + { + if(uiOCD2DelayCnt > 0) + { + uiOCD2DelayCnt--; + } + } + } +} + + +/************************************************************************************************* +* 函数名: ProtectProcess +* 参 数: 无 +* 返回值: 无 +* 描 述: 各种保护检测 +*************************************************************************************************/ +void ProtectProcess(void) +{ + if(!bPorSelfTestFlg) //如果是上电1s自检过程中,则不检测正常保护 + { + ProtectOV(); //检测过压保护及其释放 + ProtectUV(); //检测欠压保护及其释放 + + ProtectOTC(); //检测充电高温保护及其释放 + ProtectUTC(); //检测充电低温保护及其释放 + ProtectOTD(); //检测放电高温保护及其释放 + ProtectUTD(); //检测放电低温保护及其释放 + + ProtectOCC(); //充电过流保护 + ProtectOCD1(); //放电过流1保护 + ProtectOCD2(); //放电过流2保护 + } +} + + +/************************************************************************************************* +* 函数名: ProtectOCRecover +* 参 数: 无 +* 返回值: 无 +* 描 述: 电流保护自恢复 +*************************************************************************************************/ +void ProtectOCRecover(void) +{ + if(bOCRC_EN) + { + if(bOCD1 || bOCD2 || bAFE_SC) + { + if(++uiOCDRcnt >= OCDR_DELAY_CNT) + { + ucLoadRCnt = 0; + uiOCDRcnt = 0; + bOCD1 = 0; + bOCD2 = 0; + bLoadStartCheckFlg = 0; + bLoadChkingFlg = 0; + if(bAFE_SC) + { + bAFE_SC = 0; + AFEClrFlg(); + } + } + } + + if(bOCC) + { + if(++uiOCCRcnt > OCCR_DELAY_CNT) + { + uiOCCRcnt = 0; + bOCC = 0; + ucChgerRCnt = 0; + bChgerChkingFlg = 0; + } + } + } +} + diff --git a/code_drv/RTC.c b/code_drv/RTC.c new file mode 100644 index 0000000..550f7e5 --- /dev/null +++ b/code_drv/RTC.c @@ -0,0 +1,244 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + + +BOOL bRTCErr; +BOOL bRTCTwiRWErr; +U8 xdata ucRTCTwiRWErrDelayCnt; +RTC_VAR xdata RTC; //For External RTC + +/************************************************************************************************* +* 函数名: RTCTwiCheck +* 参 数: 无 +* 返回值: 无 +* 描 述: 连续5S检测到RTC的I2C通讯错误,则置位bRTCErr=1 +*************************************************************************************************/ +void RTCTwiCheck(void) +{ + if(bEnEEPRomBK) + { + if(bRTCTwiRWErr) + { + if(++ucRTCTwiRWErrDelayCnt >= TIME_1S_5S) + { + bRTCErr = 1; + ucRTCTwiRWErrDelayCnt = TIME_1S_5S; + } + } + else + { + ucRTCTwiRWErrDelayCnt = 0; + } + } +} + + +/************************************************************************************************* +* 函数名: RTCWrite +* 参 数: WrAddr: 寄存器地址;Length:数据长度;WrBuf:数据缓存Buf +* 返回值: 无 +* 描 述: RTC写寄存器操作,如果出错连续写两次 +*************************************************************************************************/ +BOOL RTCWrite(U8 WrAddr, U8 Length, U8 xdata *WrBuf) +{ + BOOL Result = 0; + U8 i; + + if(!bRTCErr) + { + for(i=0; i<5; i++) + { + #ifdef TWI_Hardware_Module + if(TwiWrite(RTC_ID, WrAddr, TWI_ADDR_1B, Length, TWI_CRC_NO, WrBuf)) + { + Result = 1; + break; + } + #else + if(Result = TwiWrite(RTC_ID, WrAddr, Length, WrBuf)) + { + Result = 1; + break; + } + #endif + Delay1ms(1); + } + } + bRTCTwiRWErr = !Result; + + return Result; +} + + +/************************************************************************************************* +* 函数名: RTCRead +* 参 数: RdAddr: 寄存器地址;Length:数据长度;WrBuf:数据缓存Buf +* 返回值: 无 +* 描 述: RTC读寄存器操作,如果出错连续读两次 +*************************************************************************************************/ +BOOL RTCRead(U8 RdAddr, U8 Length, U8 xdata *RdBuf) +{ + BOOL Result = 0; + U8 i; + + if(!bRTCErr) + { + for(i=0; i<5; i++) + { + #ifdef TWI_Hardware_Module + if(TwiRead(RTC_ID, RdAddr, TWI_ADDR_1B, Length, TWI_CRC_NO, RdBuf)) + { + Result = 1; + break; + } + #else + if(TwiRead(RTC_ID, RdAddr, Length, RdBuf)) + { + Result = 1; + break; + } + #endif + Delay1ms(1); + } + } + bRTCTwiRWErr = !Result; + + return Result; +} + +/************************************************************************************************* +* 函数名: RTCReadTime +* 参 数: RdAddr: 寄存器地址;Length:数据长度;WrBuf:数据缓存Buf +* 返回值: 无 +* 描 述: RTC读寄存器操作,如果出错连续读两次 +*************************************************************************************************/ +BOOL RTCReadTime(RTC_VAR xdata *RtcRdVal) +{ + U8 xdata rtcbuf[9]; + BOOL Result = 0; + + if(RTCRead(0x00, 9, &rtcbuf)) //从RTC读取时间 + { + if((rtcbuf[7]&0x01) == 0x00) //judge RTCF bit,看是否曾经掉过电 + { + if( ((rtcbuf[2]&0x80) == 0) //不是24小时制 + || ((rtcbuf[0]&0x70) > 0x50) || ((rtcbuf[0]&0x0F) > 0x09) || ((rtcbuf[0]&0x7F) > 0x59) + || ((rtcbuf[1]&0x70) > 0x50) || ((rtcbuf[1]&0x0F) > 0x09) || ((rtcbuf[1]&0x7F) > 0x59) + || ((rtcbuf[2]&0x30) > 0x20) || ((rtcbuf[2]&0x0F) > 0x09) || ((rtcbuf[2]&0x2F) > 0x24) + || ((rtcbuf[3]&0x30) > 0x30) || ((rtcbuf[3]&0x0F) > 0x09) || ((rtcbuf[3]&0x3F) > 0x31) || (!(rtcbuf[3]&0x3F)) + || ((rtcbuf[4]&0x10) > 0x10) || ((rtcbuf[4]&0x0F) > 0x09) || ((rtcbuf[4]&0x1F) > 0x12) || (!(rtcbuf[4]&0x1F)) + || ((rtcbuf[5]&0xF0) > 0x90) || ((rtcbuf[5]&0x0F) > 0x09) || ((rtcbuf[5]&0xFF) > 0x99) + || ((rtcbuf[6]&0x07) > 0x06) ) //对小时制及数据合法性进行检查 + { + rtcbuf[0] = RtcRdVal->Second; //数据不合法,可能是因为RTC未初始化导致 + rtcbuf[1] = RtcRdVal->Minute; + rtcbuf[2] = RtcRdVal->Hour; + rtcbuf[3] = RtcRdVal->Date; + rtcbuf[4] = RtcRdVal->Month; + rtcbuf[5] = RtcRdVal->Year; + rtcbuf[6] = RtcRdVal->Week; + + Result = RTCModifyTime((RTC_VAR xdata *)(&rtcbuf)); + } + else + { + RtcRdVal->Second = rtcbuf[0]; //数据合法,则保存从RTC读回的时间 + RtcRdVal->Minute = rtcbuf[1]; + RtcRdVal->Hour = rtcbuf[2]&0x1F; + RtcRdVal->Date = rtcbuf[3]; + RtcRdVal->Month = rtcbuf[4]; + RtcRdVal->Year = rtcbuf[5]; + RtcRdVal->Week = rtcbuf[6]; + + Result = 1; + } + } + else //曾经掉电过,认为RTC不准。 + { + Result = RTCModifyTime((RTC_VAR xdata *)RtcRdVal); //将当前的时间,或从E2中读取的时间,或固定时间重新写入RTC + } + } + + return Result; +} + + +/************************************************************************************************* +* 函数名: RTCModifyTime +* 参 数: RTC:将RTC参数传递进来,进行RTC更新 +* 返回值: 无 +* 描 述: RTC读寄存器操作,如果出错连续读两次 +*************************************************************************************************/ +BOOL RTCModifyTime(RTC_VAR xdata *RtcMdyVal) +{ + BOOL Result = 0; + U8 xdata rtcdata; + U8 xdata rtctemp[7]; + + rtcdata = 0x90; + Result = RTCWrite(RTC_REG_STATUS, 1, &rtcdata); + + rtctemp[0] = RtcMdyVal->Second; + rtctemp[1] = RtcMdyVal->Minute; + rtctemp[2] = RtcMdyVal->Hour|0x80; //设置为24小时制 + rtctemp[3] = RtcMdyVal->Date; + rtctemp[4] = RtcMdyVal->Month; + rtctemp[5] = RtcMdyVal->Year; + rtctemp[6] = RtcMdyVal->Week; + + Result = RTCWrite(RTC_REG_SECOND, 7, (U8 xdata *)&rtctemp); + + return Result; +} + + +/************************************************************************************************* +* 函数名: RTCInitTime +* 参 数: RTC:将RTC参数传递进来,进行RTC初始化 +* 返回值: 无 +* 描 述: 初始化,从EEP读取保存的RTC时间参数进行第一次初始化,如果EEP没有保存,则默认初始化时间:20年5月1日12点 +*************************************************************************************************/ +BOOL RTCInitTime(RTC_VAR xdata *RtcInitVal) +{ + BOOL Result = 0; + U8 xdata rtcbuf[9]; + U8 xdata i; + U8 xdata checksum = 0; + + MemorySet(rtcbuf, 0, sizeof(rtcbuf)); + + E2PRomRead(E2PROM_RTC_ADDR, 9, rtcbuf); //从E2备份区读出RTC数据 + for(i=0; i<7; i++) + { + checksum += rtcbuf[i]; + } + + if((rtcbuf[7]!=checksum) || (rtcbuf[8]!=0x5a)) //若校验失败,说明E2读出的时间不可靠,直接把出厂时间拿来用 + { + rtcbuf[0] = 0x00; //second + rtcbuf[1] = 0x00; //minute + rtcbuf[2] = 0x12; //hour + rtcbuf[3] = 0x01; //date + rtcbuf[4] = 0x05; //month + rtcbuf[5] = 0x20; //year + rtcbuf[6] = 0x05; //week + } + + MemoryCopy(rtcbuf, (U8 xdata *)RtcInitVal, 7); //从E2读出的时间或出厂时间先放到RTC时间寄存器中存起来 + Result = RTCReadTime((RTC_VAR xdata *)RtcInitVal); + + return Result; +} + + + + + + diff --git a/code_drv/STARTUP.A51 b/code_drv/STARTUP.A51 new file mode 100644 index 0000000..3f0e178 --- /dev/null +++ b/code_drv/STARTUP.A51 @@ -0,0 +1,39 @@ +$NOMOD51 +NAME ?C_STARTUP + +EXTRN CODE (?C_START) +PUBLIC ?C_STARTUP + +CLKCON EQU 0B2H + +EXTRN IDATA (STACK) + + CSEG AT 1000H +?C_STARTUP: LJMP STARTUP1 + + +?C_C51STARTUP SEGMENT CODE + RSEG ?C_C51STARTUP +STARTUP1: + MOV SP, #STACK-1 + NOP + ;此处在全局变量初始化之前,可清除ram + ;清除idata + MOV R0,#0x08 +FOR_EACH_IDATA: + MOV @R0,#0x00 + INC R0 + CJNE R0,#STACK,FOR_EACH_IDATA + ;清除xdata + CLR A + MOV DPTR,#0x0000 +FOR_EACH_XDATA: + MOVX @DPTR,A + INC DPTR + MOV R0,DPL + MOV R1,DPH + CJNE R0,#0xDC,FOR_EACH_XDATA + CJNE R1,#0x07,FOR_EACH_XDATA + NOP + LJMP ?C_START + END \ No newline at end of file diff --git a/code_drv/TWI.c b/code_drv/TWI.c new file mode 100644 index 0000000..a5d008d --- /dev/null +++ b/code_drv/TWI.c @@ -0,0 +1,444 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2020/04/26 +History: + V2.0 2020/04/26 Preliminary +********************************************************************************/ +#include "Main.h" + +#ifdef TWI_Hardware_Module + +U8 code CRC8Table[256]= +{ //120424-1 CRC Table + 0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D, + 0x70,0x77,0x7E,0x79,0x6C,0x6B,0x62,0x65,0x48,0x4F,0x46,0x41,0x54,0x53,0x5A,0x5D, + 0xE0,0xE7,0xEE,0xE9,0xFC,0xFB,0xF2,0xF5,0xD8,0xDF,0xD6,0xD1,0xC4,0xC3,0xCA,0xCD, + 0x90,0x97,0x9E,0x99,0x8C,0x8B,0x82,0x85,0xA8,0xAF,0xA6,0xA1,0xB4,0xB3,0xBA,0xBD, + 0xC7,0xC0,0xC9,0xCE,0xDB,0xDC,0xD5,0xD2,0xFF,0xF8,0xF1,0xF6,0xE3,0xE4,0xED,0xEA, + 0xB7,0xB0,0xB9,0xBE,0xAB,0xAC,0xA5,0xA2,0x8F,0x88,0x81,0x86,0x93,0x94,0x9D,0x9A, + 0x27,0x20,0x29,0x2E,0x3B,0x3C,0x35,0x32,0x1F,0x18,0x11,0x16,0x03,0x04,0x0D,0x0A, + 0x57,0x50,0x59,0x5E,0x4B,0x4C,0x45,0x42,0x6F,0x68,0x61,0x66,0x73,0x74,0x7D,0x7A, + 0x89,0x8E,0x87,0x80,0x95,0x92,0x9B,0x9C,0xB1,0xB6,0xBF,0xB8,0xAD,0xAA,0xA3,0xA4, + 0xF9,0xFE,0xF7,0xF0,0xE5,0xE2,0xEB,0xEC,0xC1,0xC6,0xCF,0xC8,0xDD,0xDA,0xD3,0xD4, + 0x69,0x6E,0x67,0x60,0x75,0x72,0x7B,0x7C,0x51,0x56,0x5F,0x58,0x4D,0x4A,0x43,0x44, + 0x19,0x1E,0x17,0x10,0x05,0x02,0x0B,0x0C,0x21,0x26,0x2F,0x28,0x3D,0x3A,0x33,0x34, + 0x4E,0x49,0x40,0x47,0x52,0x55,0x5C,0x5B,0x76,0x71,0x78,0x7F,0x6A,0x6D,0x64,0x63, + 0x3E,0x39,0x30,0x37,0x22,0x25,0x2C,0x2B,0x06,0x01,0x08,0x0F,0x1A,0x1D,0x14,0x13, + 0xAE,0xA9,0xA0,0xA7,0xB2,0xB5,0xBC,0xBB,0x96,0x91,0x98,0x9F,0x8A,0x8D,0x84,0x83, + 0xDE,0xD9,0xD0,0xD7,0xC2,0xC5,0xCC,0xCB,0xE6,0xE1,0xE8,0xEF,0xFA,0xFD,0xF4,0xF3 +}; +/************************************************************************************************* +* 函数名: CRC8cal +* 参 数: *p:数据指针;counter:所需计算的长度 +* 返回值: 无 +* 描 述: CRC8就散 +*************************************************************************************************/ +U8 CRC8cal(U8 *p, U8 counter) //look-up table calculte CRC +{ + U8 crc8 = 0; + + for( ; counter > 0; counter--) + { + crc8 = CRC8Table[crc8^*p]; + p++; + } + return(crc8); +} + + + + +/************************************************************************************************* +* 函数名: TWICheckStatus +* 参 数: Status:当前TWI的状态 +* 返回值: 无 +* 描 述: 检测TWI的各个状态是否正常 +*************************************************************************************************/ +BOOL TWICheckStatus(U8 Status) +{ + BOOL Result = 1; + U16 timeoutcount = 48000; //硬件IIC时timeoutcount大于100可正常通讯,软件IIC建议保持原值 (标准DEMO板) + + while((TWICON&0x08)==0) //等待TWI通讯结束 + { + McuWDTClear(); //清除看门狗 + if(timeoutcount) + { + timeoutcount--; + } + else + { + break; + } + } + if((TWISTA&0xf8) != Status) + { + Result = 0; //Error + } + + return Result; +} + + + + +/************************************************************************************************* +* 函数名: TwiWrite +* 参 数: SlaveID: Slave ID + WrAddr: 写入地址 + AddrType:地址长度,0:长度为1Byte;1:长度为2Bytes + Length: 数据长度(不含CRC字节) + CrcFlg: Twi通讯是否支持CRC校验,0:不支持CRC,1:支持CRC + *WrBuf: 写入数据存放地址 +* 返回值: 无 +* 描 述: Twi写入操作,包括写入AFE(支持CRC)、RTC和EEPROM(地址长度为2Bytes) +*************************************************************************************************/ +BOOL TwiWrite(U8 SlaveID, U16 WrAddr, U8 AddrType, U8 Length, U8 CrcFlg, U8 xdata *WrBuf) +{ + U8 i; + U8 TempBuf[4]; + BOOL Result = 1; + U16 timeoutcount = 48000; + + TempBuf[0] = SlaveID; + TempBuf[1] = (U8)WrAddr; + TempBuf[2] = *WrBuf; + TempBuf[3] = CRC8cal(TempBuf, 3); + + if(Length > 0) + { + HTimeoutChk(); + TWICON = 0x60; //Start + if((!TWICheckStatus(0x08))&&(!TWICheckStatus(0x10))) + { + Result = 0; + goto WrErr; + } + + TWIDAT = SlaveID; //Slave地址 + TWICON = 0x40; + if(!TWICheckStatus(0x18)) + { + Result = 0; + goto WrErr; + } + + if(AddrType == TWI_ADDR_2B) + { + TWIDAT = (U8)(WrAddr>>8); //写寄存器高字节地址-仅针对外挂EEPROM + TWICON = 0x40; + if(!TWICheckStatus(0x28)) + { + Result = 0; + goto WrErr; + } + } + + TWIDAT = (U8)WrAddr; //写寄存器地址 + TWICON = 0x40; + if(!TWICheckStatus(0x28)) + { + Result = 0; + goto WrErr; + } + + if(CrcFlg == TWI_CRC_YES) //如果是写AFE寄存器,则固定写一个字节+CRC + { + TWIDAT = *WrBuf; //Write Data + TWICON = 0x40; + if(!TWICheckStatus(0x28)) + { + Result = 0; + goto WrErr; + } + + TWIDAT = TempBuf[3]; //Write CRC + TWICON = 0x40; + if(!TWICheckStatus(0x28)) + { + Result = 0; + goto WrErr; + } + } + else //写EEPROM和RTC + { + for(i=0; i 0) + { + HTimeoutChk(); + TWICON = 0x60; //Start + if((!TWICheckStatus(0x08))&&(!TWICheckStatus(0x10))) + { + Result = 0; + goto RdErr; + } + + TWIDAT = SlaveID; //发送Slave写地址 + TWICON = 0x40; + if(!TWICheckStatus(0x18)) + { + Result = 0; + goto RdErr; + } + + if(AddrType == TWI_ADDR_2B) //地址为2Bytes + { + TWIDAT = (U8)(RdAddr>>8); //读寄存器高字节地址-仅针对外挂EEPROM + TWICON = 0x40; + if(!TWICheckStatus(0x28)) + { + Result = 0; + goto RdErr; + } + } + + TWIDAT = (U8)RdAddr; //发送寄存器低字节地址 + TWICON = 0x40; + if(!TWICheckStatus(0x28)) + { + Result = 0; + goto RdErr; + } + +// if(SlaveID != AFE_ID) +// { +// TWIDAT = Length; //发送读取数据长度 +// TWICON = 0x40; +// if(!TWICheckStatus(0x28)) +// { +// Result = 0; +// goto RdErr; +// } +// } + + TWICON = 0x60; //发送RStart + if((!TWICheckStatus(0x08))&&(!TWICheckStatus(0x10))) + { + Result = 0; + goto RdErr; + } + + TWIDAT = SlaveID|0x01; //发送Slave读地址 + TWICON = 0x40; + if(!TWICheckStatus(0x40)) + { + Result = 0; + goto RdErr; + } + + for(i=0; i= 10)&&(TWI_FREQ_KHz <= 400)) +// { +// #if TWIBR1 < 256 +// TWIBR = TWIBR1; +// TWISTA |= 0x06; +// #elif TWIBR2 < 256 +// TWIBR = TWIBR2; +// TWISTA |= 0x04; +// #elif TWIBR3 < 256 +// TWIBR = TWIBR3; +// TWISTA |= 0x02; +// #elif TWIBR4 < 256 +// TWIBR = TWIBR4; +// TWISTA |= 0x00; +// #endif +// } +// #else +// { +// #error: "Please enter a number(TWI_FREQ_KHz) from 10 to 400!"; +// } +// +// #endif + + TWICON = 0x40; //ENTWI ,禁止高电平超时 + TWTFREE = 0xff; //最大超时配置 + TWIDAT = 0x00; +} + + +//void TwiInit(void) +//{ +// U16 i,k; +// U8 j; +// TWICR = 0x32; //默认配置:SCL--P0.5;SDA--P0.4 +// TWITOUT = 0x00; //外部有上拉电阻,故芯片内部上拉不用使能 +// i = (24000/TWI_FREQ_KHz-16)/2; //配置发送波特率,禁止总线超时判断,f=fsys/(16+2*CR*TWIBR)=24MHz/(16+2*16*TWIBR)=**KHz +// for(j=1;j<4;j++) +// { +// k =1<<(2*j-2); +// if(i / k <= 255) +// { +// TWIBR = i / k; +// switch (j) +// { +// case 1: +// TWISTA = 0x00; +// break; +// +// case 2: +// TWISTA = 0x02; +// break; +// +// case 3: +// TWISTA = 0x04; +// break; +// +// case 4: +// TWISTA = 0x06; +// break; +// } +// goto loop; +// } +// } +//loop: +//// TWISTA = 0x06; //16分频 +// TWICON = 0x40; //ENTWI ,禁止高电平超时 +// TWTFREE = 0xff; //最大超时配置 +// TWIDAT = 0x00; +//} + +#endif \ No newline at end of file diff --git a/code_drv/Thermistor.c b/code_drv/Thermistor.c new file mode 100644 index 0000000..7809dbb --- /dev/null +++ b/code_drv/Thermistor.c @@ -0,0 +1,359 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V1.0 +Date: 2020/12/29 +History: + V0.0 2014/08/28 Preliminary +********************************************************************************/ +#include "Main.h" + +/************************************************************************************************* +* 函数名: NTC103AT +* 参 数: 无 +* 返回值: 无 +* 描 述: b值为3435的NTC阻值表,单位为10 ohms +*************************************************************************************************/ +#if RT_TABLE == NTC_103AT_3435 +U16 code NTC103AT[NTC103AT_ARRAY_LEN]= //103AT,b值为3435 +{ + 32950, //-50 + 30970, //-49 + 29124, //-48 + 27404, //-47 + 25799, //-46 + 24770, //-45 + 23335, //-44 + 21995, //-43 + 20743, //-42 + 19572, //-41 + 18850, //-40 + 17796, //-39 + 16810, //-38 + 15885, //-37 + 15019, //-36 + 14410, //-35 + 13633, //-34 + 12904, //-33 + 12219, //-32 + 11576, //-31 + 11130, //-30 + 10550, //-29 + 10005, //-28 + 9492, //-27 + 9009, //-26 + 8643, //-25 + 8208, //-24 + 7798, //-23 + 7412, //-22 + 7048, //-21 + 6777, //-20 + 6447, //-19 + 6136, //-18 + 5842, //-17 + 5564, //-16 + 5341, //-15 + 5090, //-14 + 4852, //-13 + 4627, //-12 + 4414, //-11 + 4247, //-10 + 4053, //-09 + 3870, //-08 + 3696, //-07 + 3532, //-06 + 3390, //-05 + 3241, //-04 + 3099, //-03 + 2964, //-02 + 2836, //-01 + 2728, //00 + 2611, //01 + 2501, //02 + 2395, //03 + 2295, //04 + 2205, //05 + 2114, //06 + 2027, //07 + 1944, //08 + 1866, //09 + 1796, //10 + 1724, //11 + 1655, //12 + 1590, //13 + 1527, //14 + 1469, //15 + 1412, //16 + 1357, //17 + 1305, //18 + 1256, //19 + 1209, //20 + 1163, //21 + 1120, //22 + 1078, //23 + 1038, //24 + 1000, //25 + 963, //26 + 928, //27 + 894, //28 + 862, //29 + 831, //30 + 801, //31 + 772, //32 + 745, //33 + 719, //34 + 694, //35 + 670, //36 + 646, //37 + 624, //38 + 603, //39 + 583, //40 + 562, //41 + 543, //42 + 525, //43 + 508, //44 + 491, //45 + 474, //46 + 459, //47 + 444, //48 + 430, //49 + 416, //50 + 402, //51 + 389, //52 + 377, //53 + 365, //54 + 354, //55 + 342, //56 + 331, //57 + 321, //58 + 311, //59 + 302, //60 + 292, //61 + 283, //62 + 275, //63 + 267, //64 + 259, //65 + 251, //66 + 243, //67 + 236, //68 + 229, //69 + 223, //70 + 216, //71 + 210, //72 + 204, //73 + 198, //74 + 192, //75 + 186, //76 + 181, //77 + 176, //78 + 171, //79 + 167, //80 + 162, //81 + 157, //82 + 153, //83 + 149, //84 + 145, //85 + 141, //86 + 137, //87 + 133, //88 + 130, //89 + 127, //90 + 123, //91 + 120, //92 + 117, //93 + 114, //94 + 111, //95 + 108, //96 + 105, //97 + 102, //98 + 100, //99 + 97, //100 + 95, //101 + 92, //102 + 90, //103 + 88, //104 + 86, //105 + 83, //106 + 81, //107 + 79, //108 + 78, //109 + 76 //110 +}; + +/************************************************************************************************* +* 函数名: NTC103AT +* 参 数: 无 +* 返回值: 无 +* 描 述: b值为3950的NTC阻值表,单位为10 ohms +*************************************************************************************************/ +#elif RT_TABLE == NTC_103AT_3950 +U16 code NTC103AT[NTC103AT_ARRAY_LEN]= //103AT,b值为3950 +{ + 65535, //-50 + 65535, //-49 + 61567, //-48 + 57293, //-47 + 53466, //-46 + 49698, //-45 + 46324, //-44 + 43202, //-43 + 40310, //-42 + 37632, //-41 + 35150, //-40 + 32847, //-39 + 30711, //-38 + 28728, //-37 + 26886, //-36 + 25174, //-35 + 23583, //-34 + 22102, //-33 + 20724, //-32 + 19441, //-31 + 18246, //-30 + 17132, //-29 + 16093, //-28 + 15124, //-27 + 14120, //-26 + 13375, //-25 + 12586, //-24 + 11846, //-23 + 11159, //-22 + 10514, //-21 + 9910, //-20 + 9345, //-19 + 8816, //-18 + 8319, //-17 + 7854, //-16 + 7418, //-15 + 7009, //-14 + 6625, //-13 + 6264, //-12 + 5926, //-11 + 5607, //-10 + 5308, //-09 + 5026, //-08 + 4761, //-07 + 4512, //-06 + 4277, //-05 + 4056, //-04 + 3848, //-03 + 3652, //-02 + 3466, //-01 + 3292, //00 + 3127, //01 + 2972, //02 + 2825, //03 + 2686, //04 + 2555, //05 + 2430, //06 + 2314, //07 + 2203, //08 + 2098, //09 + 1999, //10 + 1904, //11 + 1815, //12 + 1731, //13 + 1651, //14 + 1575, //15 + 1503, //16 + 1435, //17 + 1370, //18 + 1309, //19 + 1250, //20 + 1195, //21 + 1143, //22 + 1093, //23 + 1045, //24 + 1000, //25 + 956, //26 + 915, //27 + 876, //28 + 838, //29 + 805, //30 + 771, //31 + 739, //32 + 709, //33 + 680, //34 + 652, //35 + 625, //36 + 600, //37 + 576, //38 + 553, //39 + 531, //40 + 510, //41 + 490, //42 + 471, //43 + 453, //44 + 435, //45 + 419, //46 + 403, //47 + 387, //48 + 373, //49 + 359, //50 + 345, //51 + 333, //52 + 320, //53 + 309, //54 + 297, //55 + 287, //56 + 276, //57 + 266, //58 + 257, //59 + 248, //60 + 239, //61 + 230, //62 + 222, //63 + 215, //64 + 207, //65 + 200, //66 + 193, //67 + 186, //68 + 180, //69 + 174, //70 + 168, //71 + 162, //72 + 157, //73 + 152, //74 + 146, //75 + 142, //76 + 137, //77 + 132, //78 + 128, //79 + 124, //80 + 120, //81 + 116, //82 + 112, //83 + 109, //84 + 105, //85 + 102, //86 + 99, //87 + 96, //88 + 93, //89 + 90, //90 + 87, //91 + 84, //92 + 82, //93 + 79, //94 + 77, //95 + 74, //96 + 72, //97 + 70, //98 + 68, //99 + 66, //100 + 64, //101 + 62, //102 + 60, //103 + 59, //104 + 57, //105 + 55, //106 + 54, //107 + 53, //108 + 52, //109 + 50 //110 +}; +#else + #error "underfined RT_TABLE!" +#endif + + + diff --git a/code_drv/TwiIO.c b/code_drv/TwiIO.c new file mode 100644 index 0000000..1204615 --- /dev/null +++ b/code_drv/TwiIO.c @@ -0,0 +1,451 @@ +/******************************************************************************** +Copyright (C), Sinowealth Electronic. Ltd. +Author: Sino +Version: V0.0 +Date: 2018/08/30 +History: + V0.0 2018/08/30 Preliminary +********************************************************************************/ + +#include "Main.h" +//#include "ExtE2PRomRTC.h" + + +#ifdef TWI_IO_OPERATE +/******************************************************************************* +Function: CRC8Table[] +Description: +Input: +Output: +Others: +*******************************************************************************/ +U8 code CRC8Table[]= +{ //120424-1 CRC Table + 0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D, + 0x70,0x77,0x7E,0x79,0x6C,0x6B,0x62,0x65,0x48,0x4F,0x46,0x41,0x54,0x53,0x5A,0x5D, + 0xE0,0xE7,0xEE,0xE9,0xFC,0xFB,0xF2,0xF5,0xD8,0xDF,0xD6,0xD1,0xC4,0xC3,0xCA,0xCD, + 0x90,0x97,0x9E,0x99,0x8C,0x8B,0x82,0x85,0xA8,0xAF,0xA6,0xA1,0xB4,0xB3,0xBA,0xBD, + 0xC7,0xC0,0xC9,0xCE,0xDB,0xDC,0xD5,0xD2,0xFF,0xF8,0xF1,0xF6,0xE3,0xE4,0xED,0xEA, + 0xB7,0xB0,0xB9,0xBE,0xAB,0xAC,0xA5,0xA2,0x8F,0x88,0x81,0x86,0x93,0x94,0x9D,0x9A, + 0x27,0x20,0x29,0x2E,0x3B,0x3C,0x35,0x32,0x1F,0x18,0x11,0x16,0x03,0x04,0x0D,0x0A, + 0x57,0x50,0x59,0x5E,0x4B,0x4C,0x45,0x42,0x6F,0x68,0x61,0x66,0x73,0x74,0x7D,0x7A, + 0x89,0x8E,0x87,0x80,0x95,0x92,0x9B,0x9C,0xB1,0xB6,0xBF,0xB8,0xAD,0xAA,0xA3,0xA4, + 0xF9,0xFE,0xF7,0xF0,0xE5,0xE2,0xEB,0xEC,0xC1,0xC6,0xCF,0xC8,0xDD,0xDA,0xD3,0xD4, + 0x69,0x6E,0x67,0x60,0x75,0x72,0x7B,0x7C,0x51,0x56,0x5F,0x58,0x4D,0x4A,0x43,0x44, + 0x19,0x1E,0x17,0x10,0x05,0x02,0x0B,0x0C,0x21,0x26,0x2F,0x28,0x3D,0x3A,0x33,0x34, + 0x4E,0x49,0x40,0x47,0x52,0x55,0x5C,0x5B,0x76,0x71,0x78,0x7F,0x6A,0x6D,0x64,0x63, + 0x3E,0x39,0x30,0x37,0x22,0x25,0x2C,0x2B,0x06,0x01,0x08,0x0F,0x1A,0x1D,0x14,0x13, + 0xAE,0xA9,0xA0,0xA7,0xB2,0xB5,0xBC,0xBB,0x96,0x91,0x98,0x9F,0x8A,0x8D,0x84,0x83, + 0xDE,0xD9,0xD0,0xD7,0xC2,0xC5,0xCC,0xCB,0xE6,0xE1,0xE8,0xEF,0xFA,0xFD,0xF4,0xF3 +}; + +/******************************************************************************* +Function: Delay4us() +Description: +Input: +Output: +Others: +*******************************************************************************/ +void Delay4us(void) +{ + U8 i; + for(i=0; i<13; i++) + { + } +} + +/******************************************************************************* +Function: +1. TwiStart() +2. TwiReStart() +3. TwiStop() +Input: +Output: +********************************************************************************/ +void TwiStart(void) +{ + TWI_DAT_OUT; + TWI_CLK_OUT; + + TWI_DAT_HIGH; + TWI_CLK_HIGH; + TWI_DAT_OUT; + TWI_CLK_OUT; + TWI_DAT_LOW; + Delay4us(); + TWI_CLK_LOW; +} + +void TwiReStart(void) +{ + TWI_DAT_HIGH; + TWI_CLK_HIGH; + Delay4us(); + TWI_DAT_LOW; + Delay4us(); + TWI_CLK_LOW; +} + +void TwiStop(void) +{ + TWI_DAT_OUT; + TWI_DAT_LOW; + Delay4us(); + TWI_CLK_HIGH; + Delay4us(); + TWI_DAT_HIGH; + Delay4us(); + TWI_DAT_IN; + TWI_CLK_IN; +} + +bit TwiChkClkRelease(void) +{ + U16 TimeoutCnt=1000; //If Clock is not released within 4ms, is considered overtime + BOOL result=0; + + TWI_CLK_IN; + while(TimeoutCnt--) + { + RSTSTAT = 0x00; + Delay4us(); + if(TWI_RD_CLK) + { + result = 1; + break; + } + } + + TWI_CLK_HIGH; + TWI_CLK_OUT; + + return result; +} + + +/******************************************************************************* +Function: TwiSendData() +Description: +Input: +Output: +********************************************************************************/ + +bit TwiSendData(U8 Data, U8 ClkFlg) +{ + U8 i; + BOOL result=0; + +//1. After sending the Start signal, there is no need to detect Clock is released, And sending the first bit + if(Data&0x80) + { + TWI_DAT_HIGH; + } + else + { + TWI_DAT_LOW; + } + if(ClkFlg == 1) + { + Delay4us(); + if(TwiChkClkRelease()) + { + TWI_CLK_LOW; + } + else + { + return result; + } + } + else + { + Delay4us(); + TWI_CLK_HIGH; + Delay4us(); + TWI_CLK_LOW; + } + +//2. Send the remaining seven bit + Data = Data<<1; + for(i=0; i<7; i++) + { + if(Data&0x80) + { + TWI_DAT_HIGH; + } + else + { + TWI_DAT_LOW; + } + Data = Data<<1; + Delay4us(); + TWI_CLK_HIGH; + Delay4us(); + TWI_CLK_LOW; + } + TWI_DAT_IN; + Delay4us(); + + for(i=0; i<10; i++) + { + if(TWI_RD_DAT == 0) + { + result = 1; + break; + } + } + TWI_CLK_HIGH; + + Delay4us(); + TWI_DAT_LOW; + TWI_DAT_OUT; + TWI_CLK_LOW; + Delay4us(); + + return result; +} + + +/******************************************************************************* +Function: TwiGetData() +Description: i2c get data(one byte) +Input: R6: 0 means no need send ack +Output: A: the data received +********************************************************************************/ +U8 TwiGetData(U8 AckFlg) +{ + U8 i, RdData=0; + + TWI_DAT_IN; + Delay4us(); + + for(i=0; i<8; i++) + { + TWI_CLK_HIGH; + Delay4us(); + if(TWI_RD_DAT) + { + RdData |= (1<<(7-i)); + } + TWI_CLK_LOW; + Delay4us(); + } + + TWI_DAT_OUT; + if(AckFlg != 0) + { + TWI_DAT_LOW; + } + else + { + TWI_DAT_HIGH; + } + TWI_CLK_HIGH; + Delay4us(); + TWI_CLK_LOW; + Delay4us(); + + return RdData; +} + + +/******************************************************************************* +Function: CRC8cal() +Description: +Input: +Output: +********************************************************************************/ +U8 CRC8cal(U8 *p, U8 Length) //look-up table calculte CRC +{ + U8 crc8 = 0; + + for(; Length > 0; Length--) + { + RSTSTAT = 0x00; + crc8 = CRC8Table[crc8^*p]; + p++; + } + + return(crc8); +} + + +/******************************************************************************* +Function: TWIWrite() +Description: write one byte +Input: SlaveID--Slave Address + RegAddr--register addr + RegData--register data +Output: CY:1--OK + 0--Error +********************************************************************************/ +BOOL TwiWrite(U8 SlaveID, U16 WrAddr, U8 Length, U8 xdata *WrBuf) +{ + U8 i; + U8 TempBuf[4]; + BOOL result = 0; + + TempBuf[0] = SlaveID; + TempBuf[1] = (U8)WrAddr; + TempBuf[2] = *WrBuf; + TempBuf[3] = CRC8cal(TempBuf, 3); + + EA = 0; + if(Length > 0) + { + TwiStart(); + + if(!TwiSendData(SlaveID, 1)) //Send Slave E2ucID + { + goto WrErr; + } + + if(SlaveID == E2PROM_ID) + { + if(!TwiSendData(WrAddr>>8, 0)) //Send Write Address(High 8bit) For EEPROM + { + goto WrErr; + } + } + if(TwiSendData(WrAddr, 0)) //Send Write Address(Low 8bit) + { + result = 1; + for(i=0; i 0) + { + TwiStart(); + + if(!TwiSendData(SlaveID, 1)) //Send Slave E2ucID + { + goto RdErr; + } + + if(SlaveID == E2PROM_ID) + { + if(!TwiSendData(RdAddr>>8, 0)) //Send Read Address(High 8bit) For EEPROM + { + goto RdErr; + } + } + if(!TwiSendData(RdAddr, 0)) //Send Read Address(Low 8bit) + { + goto RdErr; + } + +// if(SlaveID==AFE_CHIP_ID) //CRC +// { +// if(!TwiSendData(Length, 0)) +// { +// goto RdErr; +// } +// } + + TwiReStart(); + + if(TwiSendData(SlaveID|0x1, 0)) //Send Slave E2ucID + { + result = 1; + if(SlaveID==AFE_CHIP_ID) + { + for(i=0; i>> ------------------ + +// 串口选择-uart0 +// 串口选择:切换串口号后,需要手动修改InitGPIO()端口初始化确保升级或运行过程中不会误点灯或开MOS,另外带IAP/ISP的工程也需要同步切换 +// <0=>Uart0 : 不使能uart0 +// <1=>Uart0 : P0.6 For RXD0,P0.7 For TXD0 UART0CR=32(UART0默认) +// <2=>Uart0 : P0.6 For RXD0,P2.4 For TXD0 UART0CR=42 +// <3=>Uart0 : P0.6 For RXD0,P2.5 For TXD0 UART0CR=52 +// <4=>Uart0 : P0.6 For RXD0,P0.0 For TXD0 UART0CR=02 +// <5=>Uart0 : P0.6 For RXD0,P0.1 For TXD0 UART0CR=12 +// <6=>Uart0 : P0.7 For RXD0,P0.6 For TXD0 UART0CR=23 +// <7=>Uart0 : P0.7 For RXD0,P2.4 For TXD0 UART0CR=43 +// <8=>Uart0 : P0.7 For RXD0,P2.5 For TXD0 UART0CR=53 +// <9=>Uart0 : P0.7 For RXD0,P0.0 For TXD0 UART0CR=03 +// <10=>Uart0 : P0.7 For RXD0,P0.1 For TXD0 UART0CR=13 +// <11=>Uart0 : P2.4 For RXD0,P0.6 For TXD0 UART0CR=24 +// <12=>Uart0 : P2.4 For RXD0,P0.7 For TXD0 UART0CR=34 +// <13=>Uart0 : P2.4 For RXD0,P2.5 For TXD0 UART0CR=54 +// <14=>Uart0 : P2.4 For RXD0,P0.0 For TXD0 UART0CR=04 +// <15=>Uart0 : P2.4 For RXD0,P0.1 For TXD0 UART0CR=14 +// <16=>Uart0 : P2.5 For RXD0,P0.6 For TXD0 UART0CR=25 +// <17=>Uart0 : P2.5 For RXD0,P0.7 For TXD0 UART0CR=35 +// <18=>Uart0 : P2.5 For RXD0,P2.4 For TXD0 UART0CR=45 +// <19=>Uart0 : P2.5 For RXD0,P0.0 For TXD0 UART0CR=05 +// <20=>Uart0 : P2.5 For RXD0,P0.1 For TXD0 UART0CR=15 +// <21=>Uart0 : P0.0 For RXD0,P0.7 For TXD0 UART0CR=30 +// <22=>Uart0 : P0.0 For RXD0,P2.4 For TXD0 UART0CR=40 +// <23=>Uart0 : P0.0 For RXD0,P2.5 For TXD0 UART0CR=50 +// <24=>Uart0 : P0.0 For RXD0,P0.6 For TXD0 UART0CR=20 +// <25=>Uart0 : P0.0 For RXD0,P0.1 For TXD0 UART0CR=10 +// <26=>Uart0 : P0.1 For RXD0,P0.7 For TXD0 UART0CR=31 +// <27=>Uart0 : P0.1 For RXD0,P2.4 For TXD0 UART0CR=41 +// <28=>Uart0 : P0.1 For RXD0,P2.5 For TXD0 UART0CR=51 +// <29=>Uart0 : P0.1 For RXD0,P0.0 For TXD0 UART0CR=01 +// <30=>Uart0 : P0.1 For RXD0,P0.6 For TXD0 UART0CR=21 + +#define UART0_DEFINE 1 + +// 串口选择-uart1 +// <0=>Uart1 : 不使能uart1 +// <1=>Uart1 : P1.0 For RXD1,P1.1 For TXD1 UART1CR=10(UART1默认) +// <2=>Uart1 : P1.0 For RXD1,P3.3 For TXD1 UART1CR=40 +// <3=>Uart1 : P1.0 For RXD1,P3.4 For TXD1 UART1CR=50 +// <4=>Uart1 : P1.0 For RXD1,P2.6 For TXD1 UART1CR=20 +// <5=>Uart1 : P1.0 For RXD1,P2.7 For TXD1 UART1CR=30 +// <6=>Uart1 : P1.1 For RXD1,P1.0 For TXD1 UART1CR=01 +// <7=>Uart1 : P1.1 For RXD1,P3.3 For TXD1 UART1CR=41 +// <8=>Uart1 : P1.1 For RXD1,P3.4 For TXD1 UART1CR=51 +// <9=>Uart1 : P1.1 For RXD1,P2.6 For TXD1 UART1CR=21 +// <10=>Uart1 : P1.1 For RXD1,P2.7 For TXD1 UART1CR=31 +// <11=>Uart1 : P3.3 For RXD1,P1.0 For TXD1 UART1CR=04 +// <12=>Uart1 : P3.3 For RXD1,P1.1 For TXD1 UART1CR=14 +// <13=>Uart1 : P3.3 For RXD1,P3.4 For TXD1 UART1CR=54 +// <14=>Uart1 : P3.3 For RXD1,P2.6 For TXD1 UART1CR=24 +// <15=>Uart1 : P3.3 For RXD1,P2.7 For TXD1 UART1CR=34 +// <16=>Uart1 : P3.4 For RXD1,P1.0 For TXD1 UART1CR=05 +// <17=>Uart1 : P3.4 For RXD1,P1.1 For TXD1 UART1CR=15 +// <18=>Uart1 : P3.4 For RXD1,P3.3 For TXD1 UART1CR=45 +// <19=>Uart1 : P3.4 For RXD1,P2.6 For TXD1 UART1CR=25 +// <20=>Uart1 : P3.4 For RXD1,P2.7 For TXD1 UART1CR=35 +// <21=>Uart1 : P2.6 For RXD1,P1.0 For TXD1 UART1CR=02 +// <22=>Uart1 : P2.6 For RXD1,P1.1 For TXD1 UART1CR=12 +// <23=>Uart1 : P2.6 For RXD1,P3.3 For TXD1 UART1CR=42 +// <24=>Uart1 : P2.6 For RXD1,P3.4 For TXD1 UART1CR=52 +// <25=>Uart1 : P2.6 For RXD1,P2.7 For TXD1 UART1CR=32 +// <26=>Uart1 : P2.7 For RXD1,P1.0 For TXD1 UART1CR=03 +// <27=>Uart1 : P2.7 For RXD1,P1.1 For TXD1 UART1CR=13 +// <28=>Uart1 : P2.7 For RXD1,P3.3 For TXD1 UART1CR=43 +// <29=>Uart1 : P2.7 For RXD1,P3.4 For TXD1 UART1CR=53 +// <30=>Uart1 : P2.7 For RXD1,P2.6 For TXD1 UART1CR=23 +#define UART1_DEFINE 0 + +// 串口选择-uart2 +// <0=>Uart2 : 不使能uart2 +// <1=>Uart2 : P2.2 For RXD2,P2.1 For TXD2 + +#define UART2_DEFINE 0 +// 波特率选择 +// <0=>9600 +// <1=>115200 +#define UART_BRT 0 + + +// 使能软启动 +//#define SOFT_START 1 + +// 使能均衡 +//#define BALEN 0 + +// 使能ISP/IAP +// 说明:SH39F325仅支持ISP,SH39F325A支持IAP、ISP +//#define ISPEN 0 + +// 调速挡数设置 +// 两挡调速 +// 三档调速 +//#define SPEED_LEVEL 3 + +// 按键个数设置 +//#define KEY_NUM 2 + +//*<<< end of configuration section >>> + +#include "MCURegister.h" +#include "c51_type.h" +#include "ABSACC.H" +#include "STDLIB.H" +#include "INTRINS.H" +#include "Initial.h" +#include "InterruptApp.h" +#include "KeyApp.h" +#include "Led.h" +#include "LowPower.h" +#include "Memory.h" +#include "UartApp.h" +#include "Afe.h" +#include "Balance.h" +#include "Calculate.h" +#include "Calibrate.h" +#include "ChargerLoad.h" +#include "ExtE2PRom.h" +#include "GasGaugeV4_13.h" +#include "Interrupt.h" +#include "KeyScan.h" +#include "McuFlash.h" +#include "McuLib.h" +#include "MosCtrl.h" +#include "PorSelfTest.h" +#include "Protect.h" +#include "RTC.h" +#include "Twi.h" +#include "Uart.h" +#include "TWIIO.h" +//#include "sh_iec60730b_8051f_testproc.h" + + +#define IO_DSG_PWM P2_5 +#define IO_BLE_PW P0_3 + +// SL +#define IO_485_DE P2_0 +#define IO_LED P2_4 + +#define BlueToothPowerEn() IO_BLE_PW = 0; +#define BlueToothPowerDis() IO_BLE_PW = 1; + +extern void ISPProcess(void); + +#endif diff --git a/header_app/Memory.h b/header_app/Memory.h new file mode 100644 index 0000000..51356c4 --- /dev/null +++ b/header_app/Memory.h @@ -0,0 +1,187 @@ +#ifndef __MEMORY_H +#define __MEMORY_H + +#define STACK_ADDR 0xA0 + +//*****************************DATA MEMORY START***************************// +extern U8 idata STACK[]; //堆栈 + +//*****************************BIT MEMORY START***************************// +extern U16 bdata uiPackConfig; +extern BOOL bCellNum1; +extern BOOL bCellNum2; +extern BOOL bCellNum3; +extern BOOL bLEDNum0; +extern BOOL bLEDNum1; +extern BOOL bTempNum; +extern BOOL bLoadLock; +extern BOOL bChgerLock; +extern BOOL bOV_EN; +extern BOOL bSC_EN; +extern BOOL bOCRC_EN; +extern BOOL bBAL_EN; +extern BOOL bCTO_EN; +extern BOOL bEnEEPRomBK; + +extern U16 bdata uiPackStatus; +extern BOOL bCHGMOS; //chgmos flag +extern BOOL bDSGMOS; //dsgmos flag +extern BOOL bCHGING; //charge status flag means connect to charger +extern BOOL bDSGING; //discharge status flag means disconnect to charger +extern BOOL bSlowDischarge; //charge PWM ratio is max +extern BOOL bMidDischarge; //charge PWM ratio is max +extern BOOL bFastDischarge; //charge PWM ratio is min + +extern U16 bdata uiBatStatus; +extern BOOL bOV; +extern BOOL bUV; +extern BOOL bFC; +extern BOOL bFD; +extern BOOL bVDQ; + +extern BOOL bOCC; +extern BOOL bOCD1; +extern BOOL bOCD2; +extern BOOL bOTC; +extern BOOL bOTD; +extern BOOL bUTC; +extern BOOL bUTD; + +//ALARM +extern BOOL bAFE_SC; +extern BOOL bAFE_OV; +extern BOOL bAFE_WDT; +extern BOOL bAFE_TWI; +extern BOOL bAFE_POR; +extern BOOL bAFE_ODD_ERR; +extern BOOL bAFE_RST; +extern BOOL bAFE_VADC; +extern BOOL bCTO; + +extern U8 bdata ucAFEStatus; +extern BOOL bAfeChger; +extern BOOL bAfeLoad; +extern BOOL bAfeChging; +extern BOOL bAfeDsging; +extern BOOL bAfeCHG; +extern BOOL bAfeDSG; + +/**************************************************************************************/ +//DataFlash中区块地址定义 +/**************************************************************************************/ +//系统信息区开始 SubClassID=0x00 langth=48 +extern U16 xdata E2uiPackConfigMap; +extern U16 xdata E2uiVOC[10]; +extern U32 xdata E2ulDesignCapacity; +extern U16 xdata E2Reserve; +extern S16 xdata E2siDfilterCur; +extern U8 xdata E2ucLowPowerDeley; +extern U8 xdata E2ucChgBKDelay; +extern S16 xdata E2siChgBKCur; +extern U8 xdata E2ucRTCBKDelay; +extern U8 xdata E2ucRamCheckFlg0; + +//用户自定义参数区开始 SubClassID=0x01 langth=50 +extern U16 xdata E2uiSWVersion; +extern U16 xdata E2uiHWVersion; +extern U8 xdata E2ucID; +extern U8 xdata E2ucMNFName[12]; +extern U32 xdata E2ulMNFDate; +extern U16 xdata E2uiSerialNum; +extern U8 xdata E2ucDeviceName[12]; +extern U8 xdata E2ucDeviceChem[12]; +extern U16 xdata E2uiChemID; +extern U8 xdata E2ucRamCheckFlg1; + +//充电参数区开始 SubClassID=0x02 langth=18 +extern U16 xdata E2uiOVvol; +extern U16 xdata E2uiOVRvol; +extern U8 xdata E2ucOVDelay; +extern U8 xdata E2ucOVRDelay; +extern U16 xdata E2uiChgEndVol0; +extern S16 xdata E2siChgEndCurr0; +extern U8 xdata E2ucChgEndDelay0; +extern S32 xdata E2slOCCCurrent; +extern U8 xdata E2ucOCCDelay; +extern U8 xdata E2ucOCCRDelay; +extern U8 xdata E2ucRamCheckFlg2; + +//放电参数区开始 SubClassID=0x03 langth=21 +extern U16 xdata E2uiUVvol; +extern U16 xdata E2uiUVRvol; +extern U8 xdata E2ucUVDelay; +extern U8 xdata E2ucUVRDelay; +extern U8 xdata E2ucDsgEndDelay0; +extern U16 xdata E2uiDsgEndVol0; +extern S32 xdata E2slOCD1Current; +extern U8 xdata E2ucOCD1Delay; +extern S32 xdata E2slOCD2Current; +extern U8 xdata E2ucOCD2Delay; +extern U8 xdata E2ucLoadRDelay; +extern U8 xdata E2ucRamCheckFlg3; + +//预留参数区开始 SubClassID=0x04 +//Reserved + +//放电PWM参数区开始 SubClassID=0x05 langth=5 +extern U16 xdata E2uiDSG1PWMFreq; +extern U8 xdata E2ucDSG1PWMRatioL; +extern U8 xdata E2ucDSG1PWMRatioH; +extern U8 xdata E2ucRamCheckFlg5; + +//充电温度保护参数开始 SubClassID=0x06 langth=11 +extern U16 xdata E2uiTempOTC; +extern U16 xdata E2uiTempOTCR; +extern U16 xdata E2uiTempOTD; +extern U16 xdata E2uiTempOTDR; +extern U8 xdata E2ucTempDelay; +extern U8 xdata E2ucTempRDelay; +extern U8 xdata E2ucRamCheckFlg6; + +//放电温度保护参数开始 SubClassID=0x07 langth=9 +extern U16 xdata E2uiTempUTC; +extern U16 xdata E2uiTempUTCR; +extern U16 xdata E2uiTempUTD; +extern U16 xdata E2uiTempUTDR; +extern U8 xdata E2ucRamCheckFlg7; + +//平衡参数区开始 SubClassID=0x08 langth=8 +extern U16 xdata E2uiBalanceVol; +extern U16 xdata E2uiBalanceVolDiff; +extern S16 xdata E2siBalCurrent; +extern U8 xdata E2ucBalanceDelay; +extern U8 xdata E2ucRamCheckFlg8; + +//容量统计参数开始 SubClassID=0x09 length=17 +extern U16 xdata E2uiLearnLowTempe; +extern U8 xdata E2ucSOC; +extern U32 xdata E2ulFCC; +extern U32 xdata E2ulDfRC; +extern U32 xdata E2ulCycleThreshold; +extern U32 xdata E2ulCycleThresholdCount; +extern U16 xdata E2uiCycleCount; +extern S32 xdata E2slDsgEndCurr; +extern U16 xdata E2uiLastCCount; +extern U8 xdata E2ucDsgEndFlg; +extern U8 xdata E2ucRamCheckFlg9; + +//AFE参数区开始 SubClassID=0x0A langth=4 +extern U8 xdata E2ucAFEProtectConfig; +extern U16 xdata E2uiAFEOVvol; +extern U8 xdata E2ucRamCheckFlgA; + +//校准参数区开始 SubClassID=0x0B langth=12 +extern U16 xdata E2uiVPackGain; +extern S16 xdata E2siCadcGain; +extern S16 xdata E2siCadcOffset; +extern S16 xdata E2siTS0Offset; +extern S16 xdata E2siTS1Offset; +extern U8 xdata E2ucCalibrated; +extern U8 xdata E2ucRamCheckFlgB; + +//DataflashCheck +extern U16 xdata E2uiCheckFlag; + + + +#endif \ No newline at end of file diff --git a/header_app/UartApp.h b/header_app/UartApp.h new file mode 100644 index 0000000..5936808 --- /dev/null +++ b/header_app/UartApp.h @@ -0,0 +1,140 @@ +#ifndef __UART_APP_H +#define __UART_APP_H + +#define UART_SLAVE_ADDR 0x00 +#define UART_CMD_NO 0x01 +#define UART_LENGTH 0x02 +#define UART_DATA 0x03 + +#define CMD_RD_EEPROM 0x78 + +//主信息扫描命令字 +#define CELL1 0X01 +#define CELL2 0X02 +#define CELL3 0X03 +#define CELL4 0X04 +#define CELL5 0X05 +#define CELL6 0X06 +#define CELL7 0X07 +#define CELL8 0X08 +#define CELL9 0X09 +#define CELL10 0X0A +#define TOTAL_VOLTAGE 0X0B +#define EXT_TEMP1 0X0C +#define EXT_TEMP2 0X0D +#define DIE_TEMP1 0X0E +#define DIE_TEMP2 0X0F +#define CADC_CURRENT 0X10 +#define FULL_CHG_CAP 0X11 +#define REMAIN_CAP 0X12 +#define R_SOC 0X13 +#define CYCLE_COUNT 0X14 +#define PACK_STATUS 0X15 +#define BATTERY_STATUS 0X16 +#define PACK_CONFIG 0X17 +#define MANUFACTURE_COMMAND 0X18 + +//MCU参数区子命令号 +#define DATA_FLASH_COMMAND 0x77 +#define SUB_PAGE1 0x78 +#define SUB_PAGE2 0x79 +#define SUB_PAGE3 0x7A +#define SUB_PAGE4 0x7B +#define SUB_PAGE5 0x7C +#define SUB_PAGE6 0x7D +#define SUB_PAGE7 0x7E +#define SUB_PAGE8 0x7F +#define RTC_SUBID 0x0C + +//校准命令字 +#define CALI_VOL_COMMAND 0xA0 +#define CALI_TS1_COMMAND 0xA1 +#define CALI_TS2_COMMAND 0xA2 +#define CALI_CUR_COMMAND 0xA3 +#define CALI_ZERO_CUR_COMMAND 0xA4 +#define CALI_RTC_COMMAND 0xAF + +#define CMD_E2PROM_ERASE 0xB0 +#define CMD_E2PROM_ERASE_4K 0xB1 + +#define CMD_VALID_ACK 0x5A +#define CMD_INVALID_ACK 0xFF + +#define Uart0SendAck() Uart0TxEn(CMD_VALID_ACK) +#define Uart0SendNack() Uart0TxEn(CMD_INVALID_ACK) +#define Uart0SendData() Uart0TxEn(ucUart0Buf[ucUart0BufPT]) + +#define Uart1SendAck() Uart1TxEn(CMD_VALID_ACK) +#define Uart1SendNack() Uart1TxEn(CMD_INVALID_ACK) +#define Uart1SendData() Uart1TxEn(ucUart1Buf[ucUart1BufPT]) + +#define Uart2SendAck() Uart2TxEn(CMD_VALID_ACK) +#define Uart2SendNack() Uart2TxEn(CMD_INVALID_ACK) +#define Uart2SendData() Uart2TxEn(ucUart2Buf[ucUart2BufPT]) + + +//IAP相关定义 +#define HEARD1 0x00 +#define HEARD2 0x01 +#define LENGTH 0x02 +#define SOURCE 0x03 +#define TARGET 0x04 +#define COMMAND 0x05 +#define INDEXES 0x06 +#define DATA 0x07 +#define IAP_BMSID 0x07 //电池管理系统1 +#define IAP_PCID 0x3D //上位机系统 +//IAP&ISP Command +#define IAP_CMD_HANDSHAKE 0x06 +#define IAP_CMD_BEGIN 0x07 +#define IAP_CMD_TRANS 0x08 +#define IAP_CMD_VERIFY 0x09 +#define IAP_CMD_RESET 0x0A + +#define IAPERROR_CHECKSUM 0x80 +#define IAPERROR_ADDR 0x40 +#define IAPERROR_CMD 0x20 + +extern BOOL bISPFlg; //ISP升级标志,进入ISP程序 +extern BOOL bUart0ReadFlg; +extern BOOL bUart0WriteFlg; +extern BOOL bUart0SndAckFlg; //UART已经发送ACK给主机 + +extern BOOL bUart1ReadFlg; +extern BOOL bUart1WriteFlg; +extern BOOL bUart1SndAckFlg; //UART已经发送ACK给主机 + +extern BOOL bUart2ReadFlg; +extern BOOL bUart2WriteFlg; +extern BOOL bUart2SndAckFlg; //UART已经发送ACK给主机 + +extern U8 xdata ucSubClassID; +extern U8 xdata ucUart0Buf[]; +extern U8 xdata ucUart0BufPT; +extern U8 xdata ucUart0SndLength; +extern U8 xdata ucUart0TimeoutCnt; + +extern U8 xdata ucUart1Buf[]; +extern U8 xdata ucUart1BufPT; +extern U8 xdata ucUart1SndLength; +extern U8 xdata ucUart1TimeoutCnt; + +extern U8 xdata ucUart2Buf[]; +extern U8 xdata ucUart2BufPT; +extern U8 xdata ucUart2SndLength; +extern U8 xdata ucUart2TimeoutCnt; + +extern void InterruptUart0AppRx(U8 RxData); +extern void InterruptUart0AppTx(void); +extern void Uart0Check(void); + +extern void InterruptUart1AppRx(U8 RxData); +extern void InterruptUart1AppTx(void); +extern void Uart1Check(void); + +extern void InterruptUart2AppRx(U8 RxData); +extern void InterruptUart2AppTx(void); +extern void Uart2Check(void); + + +#endif \ No newline at end of file diff --git a/header_bootloader/C51_type.h b/header_bootloader/C51_type.h new file mode 100644 index 0000000..ded1fec --- /dev/null +++ b/header_bootloader/C51_type.h @@ -0,0 +1,15 @@ +#ifndef __C51_TYPE_H +#define __C51_TYPE_H + + + +typedef unsigned char U8; +typedef unsigned int U16; +typedef unsigned long U32; +typedef signed char S8; +typedef signed int S16; +typedef signed long S32; +typedef bit BOOL; + + +#endif \ No newline at end of file diff --git a/header_bootloader/Flash.h b/header_bootloader/Flash.h new file mode 100644 index 0000000..58f9a95 --- /dev/null +++ b/header_bootloader/Flash.h @@ -0,0 +1,96 @@ +/******************************************************************************* + 版权所有 (C), 2018,中颖电子股份有限公司 +********************************************************************************/ +#ifndef __FLASH_H__ +#define __FLASH_H__ +#include "C51_TYPE.H" + +#define MCU_TYPE_CODE 0x00 +#define MCU_TYPE_E2P 0x01 + +#define BOOT_PGR_OK 0x00 +#define BOOT_PGR_ERASE_ERR 0x01 +#define BOOT_PGR_WR_ERR 0x02 + +#define BootMcuWdtClear() RSTSTAT &= 0xF8; //清看门狗 +/****************************************************************************** +MCU 程序区共计64K +Boot区占用4K (0x0000~0x0FFF) +App运行区占用29K (0x1000~0x83FF) +App备份区占用30K (0x8400~0xFBFF) CODE和参数都缓存在CODE区 +App备份参数区占用1K (0xFC00~0xFFFF) +*******************************************************************************/ +#define MCU_CODE_SECTOR_SIZE ((U32)0x200) + +#define BOOT_CODE_START_ADDR ((U32)0x0000) //BOOT程序区起始地址 +#define BOOT_CODE_SIZE ((U32)4*1024) //BOOT程序区起始地址 + +#define IAP_CODE_START_ADDR ((U32)BOOT_CODE_START_ADDR+BOOT_CODE_SIZE)//APP程序区起始地址 +#define IAP_CODE_SIZE ((U32)29*1024) //APP程序区长度29K +#define IAP_CODE_END_ADDR ((U32)IAP_CODE_START_ADDR+IAP_CODE_SIZE-1) + +#define IAP_BK_CODE_START_ADDR ((U32)IAP_CODE_START_ADDR+IAP_CODE_SIZE) //APP程序备份区起始地址 +#define IAP_BK_CODE_SIZE ((U32)30*1024) //APP程序备份区结束地址 +#define IAP_BK_CODE_END_ADDR ((U32)IAP_BK_CODE_START_ADDR+IAP_BK_CODE_SIZE-1) + +#define APP_PARA_START_ADDR ((U32)0x0000) //参数区起始地址--EEPROM地址从0开始 +#define APP_PARA_SIZE ((U32)1*1024) //参数区长度1K + +#define BOOT_FLG_START_ADDR ((U32)BOOT_CODE_START_ADDR+BOOT_CODE_SIZE-MCU_CODE_SECTOR_SIZE)//存放在BOOT区最后1个Sector +#define BOOT_FLG_IAP_ADDR ((U32)BOOT_FLG_START_ADDR+MCU_CODE_SECTOR_SIZE-1) //IAP标志存放在标志Sector的最后一个字节 +#define BOOT_FLG_ISP_ADDR ((U32)BOOT_FLG_START_ADDR+MCU_CODE_SECTOR_SIZE-1) //IAP标志存放在标志Sector的最后一个字节 + +#define ISP_CODE_START_ADDR ((U32)IAP_CODE_START_ADDR) //APP程序区起始地址 +#define ISP_CODE_SIZE ((U32)59*1024) //APP程序区长度59K(含1K的参数) + +extern U8 ucMcuFlashWrValid; + +extern U8 McuFlashRdOneByte(U32 xdata McuFlashAddr, U8 xdata McuType); +extern void McuFlashEraseSector(U32 xdata McuFlashAddr, U8 xdata McuType); +extern BOOL McuFlashBlankCheck(U32 xdata McuFlashAddr, U8 xdata McuType); +extern void McuFlashWrOneByte(U32 xdata McuFlashAddr, U8 xdata WrData, U8 xdata McuType); +extern BOOL BootUpgradeCode(void); + + + + +#endif + + + + + + + + +//#define MCU_CODE_SECTOR_SIZE ((U32)0x200) + +//#define BOOT_CODE_START_ADDR ((U32)0x0000) //BOOT程序区起始地址 +//#define BOOT_CODE_SIZE ((U32)4*1024) //BOOT程序区起始地址 + +//#define IAP_CODE_START_ADDR (0x0000+4096)//APP程序区起始地址 +//#define IAP_CODE_SIZE ((U32)29*1024) //APP程序区长度29K +//#define IAP_CODE_END_ADDR (4096+29K-1) + +//#define IAP_BK_CODE_START_ADDR (4096+29K) //APP程序备份区起始地址 +//#define IAP_BK_CODE_SIZE ((U32)30*1024) //APP程序备份区结束地址 +//#define IAP_BK_CODE_END_ADDR (33K+30K-1) + +//#define APP_PARA_START_ADDR ((U32)0x0000) //参数区起始地址--EEPROM地址从0开始 +//#define APP_PARA_SIZE ((U32)1*1024) //参数区长度1K + +//#define BOOT_FLG_START_ADDR (0x0000+4096-0x200)//存放在BOOT区最后1个Sector +//#define BOOT_FLG_IAP_ADDR (3.5K+0x200-1) //IAP标志存放在标志Sector的最后一个字节 +//#define BOOT_FLG_ISP_ADDR (3.5K+0x200-1) //IAP标志存放在标志Sector的最后一个字节 + +//#define ISP_CODE_START_ADDR (4096) //APP程序区起始地址 +//#define ISP_CODE_SIZE ((U32)59*1024) //APP程序区长度60K(含1K的参数区) + + + + + + + + + diff --git a/header_bootloader/IapIsp.h b/header_bootloader/IapIsp.h new file mode 100644 index 0000000..cfc6aae --- /dev/null +++ b/header_bootloader/IapIsp.h @@ -0,0 +1,150 @@ +#ifndef __IAP_COMMUNICATE_H +#define __IAP_COMMUNICATE_H + +//***------- <<< Use Configuration Wizard in Context Menu >>> ------------------ + +// 串口选择 +// 串口选择:切换串口号后,需要手动修改InitGPIO()端口初始化确保升级或运行过程中不会误点灯或开MOS,另外带IAP/ISP的工程也需要同步切换 +// <1=>Uart0 : P0.6 For RXD0,P0.7 For TXD0 UART0CR=32(uart0默认) +// <2=>Uart0 : P0.6 For RXD0,P2.4 For TXD0 UART0CR=42 +// <3=>Uart0 : P0.6 For RXD0,P2.5 For TXD0 UART0CR=52 +// <4=>Uart0 : P0.6 For RXD0,P0.0 For TXD0 UART0CR=02 +// <5=>Uart0 : P0.6 For RXD0,P0.1 For TXD0 UART0CR=12 +// <6=>Uart0 : P0.7 For RXD0,P0.6 For TXD0 UART0CR=23 +// <7=>Uart0 : P0.7 For RXD0,P2.4 For TXD0 UART0CR=43 +// <8=>Uart0 : P0.7 For RXD0,P2.5 For TXD0 UART0CR=53 +// <9=>Uart0 : P0.7 For RXD0,P0.0 For TXD0 UART0CR=03 +// <10=>Uart0 : P0.7 For RXD0,P0.1 For TXD0 UART0CR=13 +// <11=>Uart0 : P2.4 For RXD0,P0.6 For TXD0 UART0CR=24 +// <12=>Uart0 : P2.4 For RXD0,P0.7 For TXD0 UART0CR=34 +// <13=>Uart0 : P2.4 For RXD0,P2.5 For TXD0 UART0CR=54 +// <14=>Uart0 : P2.4 For RXD0,P0.0 For TXD0 UART0CR=04 +// <15=>Uart0 : P2.4 For RXD0,P0.1 For TXD0 UART0CR=14 +// <16=>Uart0 : P2.5 For RXD0,P0.6 For TXD0 UART0CR=25 +// <17=>Uart0 : P2.5 For RXD0,P0.7 For TXD0 UART0CR=35 +// <18=>Uart0 : P2.5 For RXD0,P2.4 For TXD0 UART0CR=45 +// <19=>Uart0 : P2.5 For RXD0,P0.0 For TXD0 UART0CR=05 +// <20=>Uart0 : P2.5 For RXD0,P0.1 For TXD0 UART0CR=15 +// <21=>Uart0 : P0.0 For RXD0,P0.7 For TXD0 UART0CR=30 +// <22=>Uart0 : P0.0 For RXD0,P2.4 For TXD0 UART0CR=40 +// <23=>Uart0 : P0.0 For RXD0,P2.5 For TXD0 UART0CR=50 +// <24=>Uart0 : P0.0 For RXD0,P0.6 For TXD0 UART0CR=20 +// <25=>Uart0 : P0.0 For RXD0,P0.1 For TXD0 UART0CR=10 +// <26=>Uart0 : P0.1 For RXD0,P0.7 For TXD0 UART0CR=31 +// <27=>Uart0 : P0.1 For RXD0,P2.4 For TXD0 UART0CR=41 +// <28=>Uart0 : P0.1 For RXD0,P2.5 For TXD0 UART0CR=51 +// <30=>Uart0 : P0.1 For RXD0,P0.6 For TXD0 UART0CR=21 +// <29=>Uart0 : P0.1 For RXD0,P0.0 For TXD0 UART0CR=01 + +// <31=>Uart1 : P1.0 For RXD1,P1.1 For TXD1 UART1CR=10(uart1默认) +// <32=>Uart1 : P1.0 For RXD1,P3.3 For TXD1 UART1CR=40 +// <33=>Uart1 : P1.0 For RXD1,P3.4 For TXD1 UART1CR=50 +// <34=>Uart1 : P1.0 For RXD1,P2.6 For TXD1 UART1CR=20 +// <35=>Uart1 : P1.0 For RXD1,P2.7 For TXD1 UART1CR=30 +// <36=>Uart1 : P1.1 For RXD1,P1.0 For TXD1 UART1CR=01 +// <37=>Uart1 : P1.1 For RXD1,P3.3 For TXD1 UART1CR=41 +// <38=>Uart1 : P1.1 For RXD1,P3.4 For TXD1 UART1CR=51 +// <39=>Uart1 : P1.1 For RXD1,P2.6 For TXD1 UART1CR=21 +// <40=>Uart1 : P1.1 For RXD1,P2.7 For TXD1 UART1CR=31 +// <41=>Uart1 : P3.3 For RXD1,P1.0 For TXD1 UART1CR=04 +// <42=>Uart1 : P3.3 For RXD1,P1.1 For TXD1 UART1CR=14 +// <43=>Uart1 : P3.3 For RXD1,P3.4 For TXD1 UART1CR=54 +// <44=>Uart1 : P3.3 For RXD1,P2.6 For TXD1 UART1CR=24 +// <45=>Uart1 : P3.3 For RXD1,P2.7 For TXD1 UART1CR=34 +// <46=>Uart1 : P3.4 For RXD1,P1.0 For TXD1 UART1CR=05 +// <47=>Uart1 : P3.4 For RXD1,P1.1 For TXD1 UART1CR=15 +// <48=>Uart1 : P3.4 For RXD1,P3.3 For TXD1 UART1CR=45 +// <49=>Uart1 : P3.4 For RXD1,P2.6 For TXD1 UART1CR=25 +// <50=>Uart1 : P3.4 For RXD1,P2.7 For TXD1 UART1CR=35 +// <51=>Uart1 : P2.6 For RXD1,P1.0 For TXD1 UART1CR=02 +// <52=>Uart1 : P2.6 For RXD1,P1.1 For TXD1 UART1CR=12 +// <53=>Uart1 : P2.6 For RXD1,P3.3 For TXD1 UART1CR=42 +// <54=>Uart1 : P2.6 For RXD1,P3.4 For TXD1 UART1CR=52 +// <55=>Uart1 : P2.6 For RXD1,P2.7 For TXD1 UART1CR=32 +// <56=>Uart1 : P2.7 For RXD1,P1.0 For TXD1 UART1CR=03 +// <57=>Uart1 : P2.7 For RXD1,P1.1 For TXD1 UART1CR=13 +// <58=>Uart1 : P2.7 For RXD1,P3.3 For TXD1 UART1CR=43 +// <59=>Uart1 : P2.7 For RXD1,P3.4 For TXD1 UART1CR=53 +// <60=>Uart1 : P2.7 For RXD1,P2.6 For TXD1 UART1CR=23 + +// <61=>uart2 : P2.2 For RXD2,P2.1 For TXD2 +#define UART_DEFINE 1 + +// 波特率选择 +// <0=>9600 +// <1=>115200 +#define UART_BRT 0 + +#if UART_BRT == 0 + #define UART_BPS_H 0x7F + #define UART_BPS_L 0x64 + #define UART_BPS_F 0x04 + #elif UART_BRT == 1 + #define UART_BPS_H 0x7F + #define UART_BPS_L 0xF3 + #define UART_BPS_F 0x00 +#endif + +//*<<< end of configuration section >>> + +#if ((UART_DEFINE >= 0)&&(UART_DEFINE<= 30)) + #define UartRxEn() INSCON = 0x00; REN = 1; //UART可以接收数据 + #define UartTxEn(TxData) INSCON = 0x00; REN = 0; SBUF = TxData; //UART发送数据 +#elif ((UART_DEFINE >= 31)&&(UART_DEFINE<= 60)) + #define UartRxEn() INSCON = 0x40; REN1 = 1; INSCON = 0x00; //UART可以接收数据 + #define UartTxEn(TxData) INSCON = 0x40; REN1 = 0; SBUF1 = TxData; INSCON = 0x00; //UART发送数据 +#elif UART_DEFINE == 61 + #define UartRxEn() INSCON = 0x40; REN2 = 1; INSCON = 0x00; //UART可以接收数据 + #define UartTxEn(TxData) INSCON = 0x40; REN2 = 0; SBUF2 = TxData; INSCON = 0x00; //UART发送数据 +#endif + +#define IAP_FLG 0x5A +#define ISP_FLG 0xA5 + +#define IAP_MODE 0 +#define ISP_MODE 1 + +//for 485 communication +#define HEARD1 0x00 +#define HEARD2 0x01 +#define LENGTH 0x02 +#define SOURCE 0x03 +#define TARGET 0x04 +#define COMMAND 0x05 +#define INDEXES 0x06 +#define DATA 0x07 + +#define IAP_BMSID 0x07 //电池管理系统1 +#define IAP_PCID 0x3D //上位机系统 + +//IAP&ISP Command +#define IAP_CMD_HANDSHAKE 0x06 +#define IAP_CMD_BEGIN 0x07 +#define IAP_CMD_TRANS 0x08 +#define IAP_CMD_VERIFY 0x09 +#define IAP_CMD_RESET 0x0A + +//CMD_IAP_ACK error +#define IAPERROR_SIZE 0x01 //固件大小超范围 +#define IAPERROR_ERASE 0x02 //擦除flash失败 +#define IAPERROR_WR 0x03 //写入flash失败 +#define IAPERROR_UNLOCK 0x04 //车辆未处于锁车状态,未处于可更新固件状态 +#define IAPERROR_INDEX 0x05 //数据索引错误 +#define IAPERROR_BUSY 0x06 //IAP正忙 +#define IAPERROR_FORM 0x07 //数据格式错误(非8的整数倍) +#define IAPERROR_CRC 0x08 //数据校验失败 +#define IAPERROR_RESET 0x09 //芯片复位失败 +#define IAPERROR_HANDSHAKE 0x0A //握手失败 + + +#define IAPERROR_CHECKSUM 0x80 +#define IAPERROR_ADDR 0x40 +#define IAPERROR_CMD 0x30 + + +extern BOOL bIapIspFlg; +extern BOOL bHandsheakOkFlg; + +extern void BootIapIsp(void); + +#endif \ No newline at end of file diff --git a/header_bootloader/MCURegister.h b/header_bootloader/MCURegister.h new file mode 100644 index 0000000..7c31220 --- /dev/null +++ b/header_bootloader/MCURegister.h @@ -0,0 +1,428 @@ +/*-------------------------------------------------------------------------- +REG_MCU_H + +Header file for generic SH79xx series microcontroller. +Copyright (c) 1996-2014 Sionwealth Electronic and Sinowealth Software, Inc. +All rights reserved. +--------------------------------------------------------------------------*/ +#ifndef REG_MCU_H +#define REG_MCU_H + +/*-------------------------- BYTE Register --------------------------*/ +/* CPU */ +sfr ACC = 0xE0; +sfr B = 0xF0; +sfr AUXC = 0xF1; +sfr PSW = 0xD0; +sfr SP = 0x81; +sfr DPL = 0x82; +sfr DPH = 0x83; +sfr16 DPTR = 0x82; +sfr DPL1 = 0x84; +sfr DPH1 = 0x85; +sfr16 DPTR1 = 0x84; +sfr INSCON = 0x86; + +/* power */ +sfr PCON = 0x87; +sfr SUSLO = 0x8E; + +/* FLASH */ +sfr IB_OFFSET = 0xFB; +sfr IB_DATA = 0xFC; +sfr IB_CON1 = 0xF2; +sfr IB_CON2 = 0xF3; +sfr IB_CON3 = 0xF4; +sfr IB_CON4 = 0xF5; +sfr IB_CON5 = 0xF6; +sfr XPAGE = 0xF7; +sfr FLASHCON = 0xA7; + +/* WDT */ +sfr RSTSTAT = 0xB1; + +/* CLKCTRL */ +sfr CLKCON = 0xB2; + +/* INTERRUPT */ +sfr IEN0 = 0xA8; +sfr IEN1 = 0xA9; +sfr IEN2 = 0xAA; +sfr IENC = 0xBA; +sfr IPL0 = 0xB8; +sfr IPH0 = 0xB4; +sfr IPL1 = 0xB9; +sfr IPH1 = 0xB5; +sfr EXF1 = 0xD8; +sfr EXCON = 0x8B; +sfr EXF0 = 0xE8; +sfr TCON = 0x88; + +/* TWI */ +sfr TWICON = 0xC8; +sfr TWISTA = 0xD1; +sfr TWIBR = 0x8A; +sfr TWITOUT = 0xE6; +sfr TWIDAT = 0x8D; +sfr TWIADR = 0x8C; +sfr TWIAMR = 0x8F; +sfr TWTFREE = 0x89; + +/* PORT */ +sfr P0 = 0x80; +sfr P1 = 0x90; +sfr P2 = 0xA0; +sfr P3 = 0xB0; +sfr P4 = 0xC0; +sfr P5 = 0x80; //BANK1 +sfr P0CR = 0xE1; +sfr P1CR = 0xE2; +sfr P2CR = 0xE3; +sfr P3CR = 0xE4; +sfr P4CR = 0xE5; +sfr P5CR = 0x8A; //BANK1 +sfr P0PCR = 0xE9; +sfr P1PCR = 0xEA; +sfr P2PCR = 0xEB; +sfr P3PCR = 0xEC; +sfr P4PCR = 0xED; +sfr P5PCR = 0x8B; //BANK1 +sfr PIMS0 = 0xD2; +sfr PIMS1 = 0xD9; +sfr PIMS2 = 0xDB; + +/* TIMER */ +sfr T3CON = 0x88; //BANK1 +sfr TL3 = 0x8C; //BANK1 +sfr TH3 = 0x8D; //BANK1 +sfr16 T3_16 = 0x8C; //BANK1 + +/* EUART */ +sfr SCON = 0x98; +sfr SBUF = 0x99; +sfr SADEN = 0x9B; +sfr SADDR = 0x9A; +sfr SBRTL = 0x9C; +sfr SBRTH = 0x9D; +sfr16 SBRT_16 = 0x9C; +sfr SFINE = 0x9E; +sfr SCON1 = 0xA0; //BANK1 +sfr SBUF1 = 0xA1; //BANK1 +sfr SADEN1 = 0xA3; //BANK1 +sfr SADDR1 = 0xA2; //BANK1 +sfr SBRTL1 = 0xA4; //BANK1 +sfr SBRTH1 = 0xA5; //BANK1 +sfr16 SBRT1_16 = 0xA4; //BANK1 +sfr SFINE1 = 0xA6; //BANK1 +sfr PCON1 = 0xA7; //BANK1 +sfr SCON2 = 0x90; //BANK1 +sfr SBUF2 = 0x91; //BANK1 +sfr SADEN2 = 0x93; //BANK1 +sfr SADDR2 = 0x92; //BANK1 +sfr SBRTL2 = 0x94; //BANK1 +sfr SBRTH2 = 0x95; //BANK1 +sfr16 SBRT2_16 = 0x94; //BANK1 +sfr SFINE2 = 0x96; //BANK1 +sfr PCON2 = 0x97; //BANK1 + +/* SPI */ +sfr SPCON = 0xA2; +sfr SPSTA = 0xF8; +sfr SPDAT = 0xA3; + +/* ADC */ +sfr ADCON1 = 0x93; +sfr ADCON2 = 0x92; +sfr SEQCON = 0x91; +sfr SEQCHx = 0x9F; +sfr ADDxL = 0x96; +sfr ADDxH = 0x97; +sfr16 ADDx_16 = 0x96; +sfr ADCH1 = 0x95; +sfr ADCH2 = 0xA6; +sfr ADT = 0x94; + +/* PWM */ +sfr PWM0CON = 0xC7; +sfr PWM1CON = 0xB6; +sfr PWM2CON = 0xB7; +sfr PWM0PH = 0xCD; +sfr PWM0PL = 0xCC; +sfr16 PWM0P_16 = 0xCC; +sfr PWM1PH = 0xAF; +sfr PWM1PL = 0xAE; +sfr16 PWM1P_16 = 0xAE; +sfr PWM2PH = 0xBD; +sfr PWM2PL = 0xBC; +sfr16 PWM2P_16 = 0xBC; +sfr PWM0DH = 0xCF; +sfr PWM0DL = 0xCE; +sfr16 PWM0D_16 = 0xCE; +sfr PWM1DH = 0xA5; +sfr PWM1DL = 0xA4; +sfr16 PWM1D_16 = 0xA4; +sfr PWM2DH = 0xBF; +sfr PWM2DL = 0xBE; +sfr16 PWM2D_16 = 0xBE; + +/* PCA */ +sfr P0CF = 0x98; //BANK1 +sfr P0CMD = 0x99; //BANK1 +sfr P0CPM0 = 0x9A; //BANK1 +sfr P0CPM1 = 0x9B; //BANK1 +sfr P0TOPL = 0x9E; //BANK1 +sfr P0TOPH = 0x9F; //BANK1 +sfr16 P0TOP_16 = 0x9E; //BANK1 +sfr P0CPL0 = 0x9C; //BANK1 +sfr P0CPH0 = 0x9D; //BANK1 +sfr16 P0CP0_16 = 0x9C; //BANK1 +sfr P0CPL1 = 0xD4; //BANK1 +sfr P0CPH1 = 0xD5; //BANK1 +sfr16 P0CP1_16 = 0xD4; //BANK1 +sfr PCACON = 0xD8; //BANK1 +sfr P0FORCE = 0xDC; //BANK1 +sfr P1CF = 0xC0; //BANK1 +sfr P1CMD = 0xC1; //BANK1 +sfr P1CPM0 = 0xC2; //BANK1 +sfr P1CPM1 = 0xC3; //BANK1 +sfr P1TOPL = 0xC6; //BANK1 +sfr P1TOPH = 0xC7; //BANK1 +sfr16 P1TOP_16 = 0xC6; //BANK1 +sfr P1CPL0 = 0xC4; //BANK1 +sfr P1CPH0 = 0xC5; //BANK1 +sfr16 P1CP0_16 = 0xC4; //BANK1 +sfr P1CPL1 = 0xE4; //BANK1 +sfr P1CPH1 = 0xE5; //BANK1 +sfr16 P1CP1_16 = 0xE4; //BANK1 +sfr P1FORCE = 0xEC; //BANK1 +sfr P2CF = 0xC8; //BANK1 +sfr P2CMD = 0xC9; //BANK1 +sfr P2CPM0 = 0xCA; //BANK1 +sfr P2CPM1 = 0xCB; //BANK1 +sfr P2TOPL = 0xCE; //BANK1 +sfr P2TOPH = 0xCF; //BANK1 +sfr16 P2TOP_16 = 0xCE; //BANK1 +sfr P2CPL0 = 0xCC; //BANK1 +sfr P2CPH0 = 0xCD; //BANK1 +sfr16 P2CP0_16 = 0xCC; //BANK1 +sfr P2CPL1 = 0xF4; //BANK1 +sfr P2CPH1 = 0xF5; //BANK1 +sfr16 P2CP1_16 = 0xF4; //BANK1 +sfr P2FORCE = 0xFC; //BANK1 + +/* LPD*/ +sfr LPDCON = 0xB3; +sfr LPDSEL = 0xBB; + +/* CRC */ +sfr CRCCON = 0xC1; +sfr CRCDH = 0xC3; +sfr CRCDL = 0xC2; +sfr16 CRCD_16 = 0xC2; +sfr CRCSTAL = 0xD4; +sfr CRCSTAH = 0xD5; +sfr16 CRCSTA_16 = 0xD4; +sfr CRCSTOL = 0xDC; +sfr CRCSTOH = 0xDD; +sfr16 CRCSTO_16 = 0xDC; + +/* LCM */ +sfr UART0CR = 0xC4; +sfr UART1CR = 0xC5; +sfr TWICR = 0xC6; +sfr PWMCR = 0xCA; +sfr CEXCR = 0xCB; +sfr ECICR = 0xC9; + +/*-------------------------- BIT Register --------------------------*/ +/* SPSTA */ +sbit SPEN = 0xFF; +sbit SPIF = 0xFE; +sbit MODF = 0xFD; +sbit WCOL = 0xFC; +sbit RXOV = 0xFB; + +/* B */ + +/* EXF0 */ +sbit IT41 = 0xEF; +sbit IT40 = 0xEE; +sbit IT31 = 0xED; +sbit IT30 = 0xEC; +sbit IT21 = 0xEB; +sbit IT20 = 0xEA; +sbit IE3 = 0xE9; +sbit IE2 = 0xE8; +/* ACC */ + +/* EXF1 */ +sbit IF47 = 0xDF; +sbit IF46 = 0xDE; +sbit IF45 = 0xDD; +sbit IF44 = 0xDC; +sbit IF43 = 0xDB; +sbit IF42 = 0xDA; +sbit IF41 = 0xD9; +sbit IF40 = 0xD8; + +/* PSW */ +sbit CY = 0xD7; +sbit AC = 0xD6; +sbit F0 = 0xD5; +sbit RS1 = 0xD4; +sbit RS0 = 0xD3; +sbit OV = 0xD2; +sbit F1 = 0xD1; +sbit P = 0xD0; + +/*TWICON*/ +sbit TOUT = 0xCF; +sbit ENTWI = 0xCE; +sbit STA = 0xCD; +sbit STO = 0xCC; +sbit TWINT = 0xCB; +sbit AA = 0xCA; +sbit TFREE = 0xC9; +sbit EFREE = 0xC8; + +/* P5 */ +sbit P5_0 = P5^0; //BANK1 +sbit P5_1 = P5^1; //BANK1 + + +/* P4 */ +sbit P4_0 = P4^0; +sbit P4_1 = P4^1; +sbit P4_2 = P4^2; +sbit P4_3 = P4^3; +sbit P4_4 = P4^4; +sbit P4_5 = P4^5; +sbit P4_6 = P4^6; +sbit P4_7 = P4^7; + +/* IPL0 */ +sbit PINTL = 0xBF; +sbit PADCL = 0xBE; +sbit PT3L = 0xBD; +sbit PS0L = 0xBC; +sbit PCF1L = 0xBB; +sbit PX1L = 0xBA; +sbit PCF0L = 0xB9; +sbit PX0L = 0xB8; + +/* P3 */ +sbit P3_0 = P3^0; +sbit P3_1 = P3^1; +sbit P3_2 = P3^2; +sbit P3_3 = P3^3; +sbit P3_4 = P3^4; +sbit P3_5 = P3^5; +sbit P3_6 = P3^6; +sbit P3_7 = P3^7; + +/* IEN0 */ +sbit EA = 0xAF; +sbit EADC = 0xAE; +sbit ET3 = 0xAD; +sbit ES0 = 0xAC; +sbit EPCA1 = 0xAB; +sbit EX1 = 0xAA; +sbit EPCA0 = 0xA9; +sbit EX0 = 0xA8; + +/* P2 */ +sbit P2_0 = P2^0; +sbit P2_1 = P2^1; +sbit P2_2 = P2^2; +sbit P2_3 = P2^3; +sbit P2_4 = P2^4; +sbit P2_5 = P2^5; +sbit P2_6 = P2^6; +sbit P2_7 = P2^7; + +/* SCON */ +sbit SM0_FE = 0x9F; +sbit SM1_RXOV = 0x9E; +sbit SM2_TXCOL = 0x9D; +sbit REN = 0x9C; +sbit TB8 = 0x9B; +sbit RB8 = 0x9A; +sbit TI = 0x99; +sbit RI = 0x98; + +/* P1 */ +sbit P1_0 = P1^0; +sbit P1_1 = P1^1; +sbit P1_2 = P1^2; +sbit P1_3 = P1^3; +sbit P1_4 = P1^4; +sbit P1_5 = P1^5; +sbit P1_6 = P1^6; +sbit P1_7 = P1^7; + +/* TCON */ + +sbit IE1 = 0x8B; +sbit IT1 = 0x8A; +sbit IE0 = 0x89; +sbit IT0 = 0x88; + +/* P0 */ +sbit P0_0 = P0^0; +sbit P0_1 = P0^1; +sbit P0_2 = P0^2; +sbit P0_3 = P0^3; +sbit P0_4 = P0^4; +sbit P0_5 = P0^5; +sbit P0_6 = P0^6; +sbit P0_7 = P0^7; + +/* PCACON */ +sbit PR2 = 0xDA; //BANK1 +sbit PR1 = 0xD9; //BANK1 +sbit PR0 = 0xD8; //BANK1 + +/* P2CF */ +sbit CF2 = 0xCF; //BANK1 +sbit P2CCF1 = 0xC9; //BANK1 +sbit P2CCF0 = 0xC8; //BANK1 + +/* P1CF */ +sbit CF1 = 0xC7; //BANK1 +sbit P1CCF1 = 0xC1; //BANK1 +sbit P1CCF0 = 0xC0; //BANK1 + +/* SCON1 */ +sbit SM10_FE1 = 0xA7; //BANK1 +sbit SM11_RXOV1 = 0xA6; //BANK1 +sbit SM12_TXCOL1 = 0xA5; //BANK1 +sbit REN1 = 0xA4; //BANK1 +sbit TB81 = 0xA3; //BANK1 +sbit RB81 = 0xA2; //BANK1 +sbit TI1 = 0xA1; //BANK1 +sbit RI1 = 0xA0; //BANK1 + +/* P0CF */ +sbit CF0 = 0x9F; //BANK1 +sbit P0CCF1 = 0x99; //BANK1 +sbit P0CCF0 = 0x98; //BANK1 + +/* SCON2 */ +sbit SM20_FE2 = 0x97; //BANK1 +sbit SM21_RXOV2 = 0x96; //BANK1 +sbit SM22_TXCOL2 = 0x95; //BANK1 +sbit REN2 = 0x94; //BANK1 +sbit TB82 = 0x93; //BANK1 +sbit RB82 = 0x92; //BANK1 +sbit TI2 = 0x91; //BANK1 +sbit RI2 = 0x90; //BANK1 + +/* T3CON */ +sbit TF3 = 0x8F; //BANK1 +sbit T3PS1 = 0x8D; //BANK1 +sbit T3PS0 = 0x8C; //BANK1 +sbit TR3 = 0x8A; //BANK1 +sbit T3CLKS1 = 0x89; //BANK1 +sbit T3CLKS0 = 0x88; //BANK1 + +#endif diff --git a/header_drv/Afe.h b/header_drv/Afe.h new file mode 100644 index 0000000..6cee382 --- /dev/null +++ b/header_drv/Afe.h @@ -0,0 +1,156 @@ +#ifndef __AFE_H +#define __AFE_H + +#define AFE_ID (0x1B<<1) + + + +//Define AFE register addr +#define AFE_FLAG1 0x00 +#define AFE_FLAG2 0x01 +#define AFE_BSTATUS 0x02 +#define AFE_INT_EN 0x03 +#define AFE_SCONF1 0x04 +#define AFE_SCONF2 0x05 +#define AFE_SCONF3 0x06 +#define AFE_SCONF4 0x07 +#define AFE_SCONF5 0x08 +#define AFE_SCONF6 0x09 +#define AFE_SCONF7 0x0A +#define AFE_SCONF8 0x0B +#define AFE_SCONF9 0x0C +#define AFE_SCONF10 0x0D + +#define AFE_CELL1H 0x0E +#define AFE_CELL1L 0x0F +#define AFE_CELL2H 0x10 +#define AFE_CELL2L 0x11 +#define AFE_CELL3H 0x12 +#define AFE_CELL3L 0x13 +#define AFE_CELL4H 0x14 +#define AFE_CELL4L 0x15 +#define AFE_CELL5H 0x16 +#define AFE_CELL5L 0x17 +#define AFE_CELL6H 0x18 +#define AFE_CELL6L 0x19 +#define AFE_CELL7H 0x1A +#define AFE_CELL7L 0x1B +#define AFE_CELL8H 0x1C +#define AFE_CELL8L 0x1D +#define AFE_CELL9H 0x1E +#define AFE_CELL9L 0x1F +#define AFE_CELL10H 0x20 +#define AFE_CELL10L 0x21 +#define AFE_TS1H 0x22 +#define AFE_TS1L 0x23 +#define AFE_TS2H 0x24 +#define AFE_TS2L 0x25 +#define AFE_TEMP1H 0x26 +#define AFE_TEMP1L 0x27 +#define AFE_TEMP2H 0x28 +#define AFE_TEMP2L 0x29 +#define AFE_CURH 0x2A +#define AFE_CURL 0x2B + +#define AFE_ALARM_SC 0x40 +#define AFE_ALARM_OV 0x20 +#define AFE_ALARM_CD 0x10 +#define AFE_ALARM_CADC 0x08 +#define AFE_ALARM_VADC 0x04 +#define AFE_ALARM_WDT 0x02 +#define AFE_ALARM_TWI 0x01 + +typedef struct _SYSINFOR_ //data for up-computer monitor +{ + U16 uiPackStatus; //packstatus include + U16 uiBatStatus; + U16 uiVCell[10]; + U16 ulVoltage; + S32 slCurr; + U16 uiTS[2]; + U16 uiICTempe[2]; + U32 ulFCC; + U32 ulRC; + U16 uiRSOC; + U16 uiCycleCount; + U16 uiPackConfig; + U16 uiManuCommand; +}SYSINFOR; +extern SYSINFOR xdata Info; + +typedef struct _AFEDATA_ //data get form AFE +{ + U16 uiCell[10]; + U16 uiTS[2]; //TS1 is external tempe + U16 uiICTempe[2]; //DieTempe + S16 siCurr; +}AFEDATA; +extern AFEDATA xdata AFE; //AFE寄存器读取的值 + +typedef struct _AFEREG_ //data for AFE set in init +{ + U8 AFEFLAG1; + U8 AFEFLAG2; + U8 AFEBSTATUS; + U8 AFEINTEN; + U8 AFESCONF1; + U8 AFESCONF2; + U8 AFESCONF3; + U8 AFESCONF4; + U8 AFESCONF5; + U8 AFESCONF6; + U8 AFESCONF7; + U8 AFESCONF8; + U8 AFESCONF9; + U8 AFESCONF10; +}AFEREG; +extern AFEREG xdata REG; //AFE寄存器预设值 + + +//AFE相关的变量 +extern BOOL bAfeAlarmFlg; +extern BOOL bCADCFlg; +extern BOOL bVADCFlg; +extern BOOL bAfeI2CRWErrFlg; +extern BOOL bAfeErr; +extern U8 data ucCellNum; //当前硬件电芯串数 +extern U8 data ucCellNumOffset; //当前硬件电芯连接方式对应的偏移,用于程序读取AFE对应寄存器 +extern U16 data uiCellVmax; //电芯电压最大值 +extern U16 data uiCellVmin; //电芯电压最小值 +extern U16 xdata uiVadcVmax; //ADC采集最大值 +extern U16 xdata uiVadcVmin; //ADC采集最小值 +extern U8 xdata ucTempeMiddle; +extern U16 xdata uiTempeMin; +extern U16 xdata uiTempeMax; +extern S32 xdata slCadcCurrent; +extern S32 xdata slCadcCurAverage; +extern U8 xdata ucCadcCnt; +extern S32 xdata slCadcCurBuf[16]; +extern U8 xdata ucAfeI2CErrDelayCnt; + + + +extern BOOL AFEWriteReg(U8 Reg, U8 Length, U8 xdata *WrBuf); +extern BOOL AFEReadReg(U8 Reg, U8 Length, U8 xdata *RdBuf); +extern BOOL AFEInit(void); +extern void AFERdFlg(void); +extern void AFEClrFlg(void); +extern void AFERamCheck(void); +extern void AFEInitReg(void); +extern void AFEMosCtl(U8 MosStatus); +extern void AFEEnterPD(void); +extern void AFERdStatus(void); +extern void AFEChgerCheckEn(void); +extern void AFEChgerCheckDis(void); +extern void AFELoadCheckEn(void); +extern void AFELoadCheckDis(void); +extern void AfeBalCtl(U16 BalChTemp); +extern void AfeWDTEn(void); +extern void AfeWDTDis(void); +extern void AfeTempADCEn(void); +extern void AfeTempADCDis(void); +extern void AFETwiCheck(void); +extern void AfeAlarmEn(U8 AlarmFlg); +extern void AfeAlarmDis(U8 AlarmFlg); + +#endif \ No newline at end of file diff --git a/header_drv/Balance.h b/header_drv/Balance.h new file mode 100644 index 0000000..313a9ea --- /dev/null +++ b/header_drv/Balance.h @@ -0,0 +1,30 @@ +#ifndef __BALANCE_H +#define __BALANCE_H + + +#define BALANCE_ENABLE 1 +#define BALANCE_START 2 +#define BALANCING 3 +#define BALANCE_DISABLE 4 +#define BALANCE_NULL 5 +#define BAL_DELAY_CNT (E2ucBalanceDelay*10) + +#define VOL_CELL_CUT_1200MV 1200 +#define VOL_CELL_CUT_180MV 180 +#define VOL_CELL_CUT_1380MV (VOL_CELL_CUT_1200MV+VOL_CELL_CUT_180MV) + + +extern BOOL bBalanceFlg; +extern BOOL bBalancingFlg; +extern BOOL bBalanceOddFlg; +extern BOOL bCTOValidFlg; //当电芯压差超过1200mV时,才认为存在断线,主要解决电芯电压低于2V情况下 +extern BOOL bCellOpenDecFlag; +extern U16 xdata uiBalanceChannel; +extern U8 xdata ucBalanceTimeCnt; +extern U8 xdata ucBalanceStep; +extern U8 xdata ucCellOpenDecCnt; +extern U8 xdata ucCtoCnt; + +extern void BalanceProcess(void); + +#endif \ No newline at end of file diff --git a/header_drv/Calculate.h b/header_drv/Calculate.h new file mode 100644 index 0000000..d3a5814 --- /dev/null +++ b/header_drv/Calculate.h @@ -0,0 +1,37 @@ +#ifndef __CALCULATE_H +#define __CALCULATE_H + + +#if (AFE_ID == 0x34) +#define REF_RES_VAL (680 + 5*ucMTPBuffer[25]) //resistance = (680 + 5*TR[6~0])*10, The unit is 10 ohms +#else +#define REF_RES_VAL 1000 //芯片内部的参考电阻默认为10K=1000*10, 单位是10 ohms +#endif + +#define NTC_103AT_3435 1 +#define NTC_103AT_3950 0 + +#define RT_TABLE NTC_103AT_3435 + +#if RT_TABLE == NTC_103AT_3435 +#define NTC103AT_ARRAY_LEN 161 +#define TEMP_UPPER_LIMIT 110 // 110℃ +#define TEMP_LOWER_LIMIT -50 // -50℃ +#elif RT_TABLE == NTC_103AT_3950 +#define NTC103AT_ARRAY_LEN 161 +#define TEMP_UPPER_LIMIT 110 // 110℃ +#define TEMP_LOWER_LIMIT -50 // -50℃ +#else + #error "underfined RT_TABLE!" +#endif + +extern U16 code NTC103AT[NTC103AT_ARRAY_LEN]; +extern U8 xdata ucChgingCheckCnt; +extern U8 xdata ucDsgingCheckCnt; + +extern void AfeCalcuVol(void); +extern void AfeCalcuTempe(void); +extern void AFEInfoProcess(void); +extern U16 CalcuTemp(U16 getdata); + +#endif \ No newline at end of file diff --git a/header_drv/Calibrate.h b/header_drv/Calibrate.h new file mode 100644 index 0000000..aaa2782 --- /dev/null +++ b/header_drv/Calibrate.h @@ -0,0 +1,19 @@ +#ifndef __CALIBRATE_H +#define __CALIBRATE_H + +#define CALIPACKVOL 3800 +#define CALIVOL 3800 +#define CALICUR -1000 + +extern BOOL bCaliFlg; //上位机发送校准命令后置位该标志 +extern U16 xdata ulExtVPack; +extern S32 xdata slExtCur; +extern U16 xdata uiExtTemp1; +extern U16 xdata uiExtTemp2; +extern U8 xdata ucExtRTC[]; +extern U8 xdata ucExtcaliSwitch1; + +extern void CaliProcess(void); + + +#endif \ No newline at end of file diff --git a/header_drv/ChargerLoad.h b/header_drv/ChargerLoad.h new file mode 100644 index 0000000..4ecc91e --- /dev/null +++ b/header_drv/ChargerLoad.h @@ -0,0 +1,19 @@ +#ifndef __CHARGE_LOAD_H +#define __CHARGE_LOAD_H + +#define CHGER_DELAY_CNT (E2ucLoadRDelay*2) +#define LOAD_DELAY_CNT (E2ucLoadRDelay*2) + + +extern BOOL bChgerStartCheckFlg; +extern BOOL bChgerChkingFlg; +extern BOOL bLoadStartCheckFlg; +extern BOOL bLoadChkingFlg; + +extern U8 xdata ucChgerRCnt; +extern U8 xdata ucLoadRCnt; + +extern void LoadCheck(void); +extern void ChgerCheck(void); + +#endif \ No newline at end of file diff --git a/header_drv/ExtE2PRom.h b/header_drv/ExtE2PRom.h new file mode 100644 index 0000000..772f41f --- /dev/null +++ b/header_drv/ExtE2PRom.h @@ -0,0 +1,46 @@ +#ifndef __EXT_E2PROM_H +#define __EXT_E2PROM_H + +#define E2PROM_ID 0xA0 + +#define E2PROM_SIZE 0x10000 +#define E2PROM_BOOT_ADDR 0x10000-0x20 +#define E2PROM_RTC_ADDR 0x10000-0x10 + +#define E2PROM_BKTYPE_CHG_START 0x10 +#define E2PROM_BKTYPE_CHG_END 0x01 +#define E2PROM_BKTYPE_DSG_END 0x02 + +extern BOOL bE2PProcessFlg; //EEPROM处理标志 +extern BOOL bE2PBKDsgEnd; //放电结束标志,需要备份信息到外挂EEPROM +extern BOOL bE2PBKDsgEndValid; +extern BOOL bE2PBKChgStop; //充电结束标志,需要备份信息到外挂EEPROM +extern BOOL bE2PBKChgStart; //充电开始标志,需要备份信息到外挂EEPROM +extern BOOL bE2PBKRtc; //RTC定时备份标志,需要备份信息到外挂EEPROM +extern BOOL bE2PErase; //擦除外挂EEPROM标志 +extern U8 xdata bUart0E2PRdData; //读取外挂EEPROM标志 +extern U8 xdata bUart1E2PRdData; //读取外挂EEPROM标志 +extern U8 xdata bUart2E2PRdData; //读取外挂EEPROM标志 +extern BOOL bE2PRErr; //EEPROM访问错误,当读写错误持续5S后置位该标志 +extern BOOL bE2PTwiRWErrFlg; //EEPROM读写单次错误 +extern U8 xdata bUart0RTCRdTime; //读取RTC时间标志 +extern U8 xdata bUart1RTCRdTime; //读取RTC时间标志 +extern U8 xdata bUart2RTCRdTime; //读取RTC时间标志 +extern BOOL bDsgToChgFlg; //放电转换为充电,需要备份数据 +extern BOOL bChgToDsgFlg; //充电转换为放电,需要备份数据 +extern U16 xdata uiE2PDataAddr; +extern U8 xdata ucE2PTwiRWErrDelayCnt; +extern U8 xdata ucRTCBKTime1; +extern U16 xdata uiRTCBKTime2; +extern U8 idata ucUpDataLimitTime; +extern U16 xdata uiCHGValidTime; +extern U8 xdata ucRTCBuf[7]; + + +extern BOOL E2PRomRead(U16 RdAddr, U8 Length, U8 xdata *RdBuf); +extern BOOL E2PRomInit(void); +extern void E2PRomBKProcess(void); +extern void E2PRomBKCheck(void); +extern void E2PRomTwiCheck(void); + +#endif \ No newline at end of file diff --git a/header_drv/ISP.h b/header_drv/ISP.h new file mode 100644 index 0000000..9056641 --- /dev/null +++ b/header_drv/ISP.h @@ -0,0 +1,41 @@ +#ifndef __ISP_H +#define __ISP_H + + +#define STATE_OK 0x5a +#define STATE_ERROR 0xff + +#define UART_ERASE 0xfe +#define UART_PROGRAM 0xfd +#define UART_BLANK_CHECK 0xfc +#define UART_CHECKSUM_CHECK 0xfb +#define UART_READ 0xfa +#define UART_READ4B 0xf9 +#define UART_SOFT_RESET 0xf8 + +#define CODE_SECTOR 1 //512Bytes +#define CODE_SIZE 122 //64KBytes = 512byte*128,最后2Kbyte用于ISP程序,预留4K EEPROM + +#define E2P_SECTOR 1 //512Bytes(EEPROM One Sector Size,单位为512Bytes) +#define E2P_SIZE 8 //8KBytes(EEPROM all Sector Size,单位为512Bytes) + +#define PROGRAM_LENGTH 64 + + + + + +extern U8 xdata ucUartBuf[]; +extern U8 xdata ucUartBufPT; +extern U8 xdata ucUartSndLength; + + + + +//extern void ISPProcess(void); + + + + + +#endif \ No newline at end of file diff --git a/header_drv/Interrupt.h b/header_drv/Interrupt.h new file mode 100644 index 0000000..121e41a --- /dev/null +++ b/header_drv/Interrupt.h @@ -0,0 +1,7 @@ +#ifndef __INTERRUPT_H +#define __INTERRUPT_H + + + + +#endif \ No newline at end of file diff --git a/header_drv/KeyScan.h b/header_drv/KeyScan.h new file mode 100644 index 0000000..cba88b0 --- /dev/null +++ b/header_drv/KeyScan.h @@ -0,0 +1,69 @@ +#ifndef __KEY_SCAN_H +#define __KEY_SCAN_H + +//#define KEY_NUM1_DEF //支持一个按键 +#define KEY_NUM2_DEF //支持两个按键 +//#define KEY_NUM3_DEF //支持三个按键 + + +#define IO_KEY_ON P2_7 +#define IO_KEY_LED P3_0 + + +#ifdef KEY_NUM1_DEF //支持一个按键 +#define KEY_1_IO_RD IO_KEY_ON +#endif + +#ifdef KEY_NUM2_DEF //支持两个按键 +#define KEY_1_IO_RD IO_KEY_ON +#define KEY_2_IO_RD IO_KEY_LED +#endif + +#ifdef KEY_NUM3_DEF //支持三个按键 +#define KEY_1_IO_RD IO_KEY_ON +#define KEY_2_IO_RD IO_KEY_LED +#define KEY_3_IO_RD IO_KEY_LED //用户自定义 +#endif + + +#define KEY_ON_S 0x01 //第一个按键 +#define KEY_ON_L 0x11 +#define KEY_ON_LC 0x21 +#define KEY_ON_LE 0x41 + +#define KEY_LED_S 0x02 //第二个按键 +#define KEY_LED_L 0x12 +#define KEY_LED_LC 0x22 +#define KEY_LED_LE 0x42 + +#define KEY_3_S 0x03 //预留给第三个按键 +#define KEY_3_L 0x13 +#define KEY_3_LC 0x23 +#define KEY_3_LE 0x43 + +#define KEYVAL_1 0x01 +#define KEYVAL_2 0x02 +#define KEYVAL_3 0x03 +#define KEYVAL_NULL 0x0F + +#define KEY_STATE_S 0x00 +#define KEY_STATE_L 0x10 +#define KEY_STATE_LC 0x20 +#define KEY_STATE_LE 0x40 + +#define KEY_S_TIME 10 //(2+1)*5ms +#define KEY_L_TIME 400 //400*5ms +#define KEY_LC_TIME 1200 //1200*5ms + + + +extern BOOL bKeyFlg; +extern U16 data uiKeyValidCnt; +extern U16 data uiKeyInvalidCnt; +extern U8 data ucKeyValue; +extern U8 data ucKeyOldValue; +extern U8 data ucKeyValueBK; + +extern void KeyScan(void); + +#endif \ No newline at end of file diff --git a/header_drv/MCURegister.h b/header_drv/MCURegister.h new file mode 100644 index 0000000..7c31220 --- /dev/null +++ b/header_drv/MCURegister.h @@ -0,0 +1,428 @@ +/*-------------------------------------------------------------------------- +REG_MCU_H + +Header file for generic SH79xx series microcontroller. +Copyright (c) 1996-2014 Sionwealth Electronic and Sinowealth Software, Inc. +All rights reserved. +--------------------------------------------------------------------------*/ +#ifndef REG_MCU_H +#define REG_MCU_H + +/*-------------------------- BYTE Register --------------------------*/ +/* CPU */ +sfr ACC = 0xE0; +sfr B = 0xF0; +sfr AUXC = 0xF1; +sfr PSW = 0xD0; +sfr SP = 0x81; +sfr DPL = 0x82; +sfr DPH = 0x83; +sfr16 DPTR = 0x82; +sfr DPL1 = 0x84; +sfr DPH1 = 0x85; +sfr16 DPTR1 = 0x84; +sfr INSCON = 0x86; + +/* power */ +sfr PCON = 0x87; +sfr SUSLO = 0x8E; + +/* FLASH */ +sfr IB_OFFSET = 0xFB; +sfr IB_DATA = 0xFC; +sfr IB_CON1 = 0xF2; +sfr IB_CON2 = 0xF3; +sfr IB_CON3 = 0xF4; +sfr IB_CON4 = 0xF5; +sfr IB_CON5 = 0xF6; +sfr XPAGE = 0xF7; +sfr FLASHCON = 0xA7; + +/* WDT */ +sfr RSTSTAT = 0xB1; + +/* CLKCTRL */ +sfr CLKCON = 0xB2; + +/* INTERRUPT */ +sfr IEN0 = 0xA8; +sfr IEN1 = 0xA9; +sfr IEN2 = 0xAA; +sfr IENC = 0xBA; +sfr IPL0 = 0xB8; +sfr IPH0 = 0xB4; +sfr IPL1 = 0xB9; +sfr IPH1 = 0xB5; +sfr EXF1 = 0xD8; +sfr EXCON = 0x8B; +sfr EXF0 = 0xE8; +sfr TCON = 0x88; + +/* TWI */ +sfr TWICON = 0xC8; +sfr TWISTA = 0xD1; +sfr TWIBR = 0x8A; +sfr TWITOUT = 0xE6; +sfr TWIDAT = 0x8D; +sfr TWIADR = 0x8C; +sfr TWIAMR = 0x8F; +sfr TWTFREE = 0x89; + +/* PORT */ +sfr P0 = 0x80; +sfr P1 = 0x90; +sfr P2 = 0xA0; +sfr P3 = 0xB0; +sfr P4 = 0xC0; +sfr P5 = 0x80; //BANK1 +sfr P0CR = 0xE1; +sfr P1CR = 0xE2; +sfr P2CR = 0xE3; +sfr P3CR = 0xE4; +sfr P4CR = 0xE5; +sfr P5CR = 0x8A; //BANK1 +sfr P0PCR = 0xE9; +sfr P1PCR = 0xEA; +sfr P2PCR = 0xEB; +sfr P3PCR = 0xEC; +sfr P4PCR = 0xED; +sfr P5PCR = 0x8B; //BANK1 +sfr PIMS0 = 0xD2; +sfr PIMS1 = 0xD9; +sfr PIMS2 = 0xDB; + +/* TIMER */ +sfr T3CON = 0x88; //BANK1 +sfr TL3 = 0x8C; //BANK1 +sfr TH3 = 0x8D; //BANK1 +sfr16 T3_16 = 0x8C; //BANK1 + +/* EUART */ +sfr SCON = 0x98; +sfr SBUF = 0x99; +sfr SADEN = 0x9B; +sfr SADDR = 0x9A; +sfr SBRTL = 0x9C; +sfr SBRTH = 0x9D; +sfr16 SBRT_16 = 0x9C; +sfr SFINE = 0x9E; +sfr SCON1 = 0xA0; //BANK1 +sfr SBUF1 = 0xA1; //BANK1 +sfr SADEN1 = 0xA3; //BANK1 +sfr SADDR1 = 0xA2; //BANK1 +sfr SBRTL1 = 0xA4; //BANK1 +sfr SBRTH1 = 0xA5; //BANK1 +sfr16 SBRT1_16 = 0xA4; //BANK1 +sfr SFINE1 = 0xA6; //BANK1 +sfr PCON1 = 0xA7; //BANK1 +sfr SCON2 = 0x90; //BANK1 +sfr SBUF2 = 0x91; //BANK1 +sfr SADEN2 = 0x93; //BANK1 +sfr SADDR2 = 0x92; //BANK1 +sfr SBRTL2 = 0x94; //BANK1 +sfr SBRTH2 = 0x95; //BANK1 +sfr16 SBRT2_16 = 0x94; //BANK1 +sfr SFINE2 = 0x96; //BANK1 +sfr PCON2 = 0x97; //BANK1 + +/* SPI */ +sfr SPCON = 0xA2; +sfr SPSTA = 0xF8; +sfr SPDAT = 0xA3; + +/* ADC */ +sfr ADCON1 = 0x93; +sfr ADCON2 = 0x92; +sfr SEQCON = 0x91; +sfr SEQCHx = 0x9F; +sfr ADDxL = 0x96; +sfr ADDxH = 0x97; +sfr16 ADDx_16 = 0x96; +sfr ADCH1 = 0x95; +sfr ADCH2 = 0xA6; +sfr ADT = 0x94; + +/* PWM */ +sfr PWM0CON = 0xC7; +sfr PWM1CON = 0xB6; +sfr PWM2CON = 0xB7; +sfr PWM0PH = 0xCD; +sfr PWM0PL = 0xCC; +sfr16 PWM0P_16 = 0xCC; +sfr PWM1PH = 0xAF; +sfr PWM1PL = 0xAE; +sfr16 PWM1P_16 = 0xAE; +sfr PWM2PH = 0xBD; +sfr PWM2PL = 0xBC; +sfr16 PWM2P_16 = 0xBC; +sfr PWM0DH = 0xCF; +sfr PWM0DL = 0xCE; +sfr16 PWM0D_16 = 0xCE; +sfr PWM1DH = 0xA5; +sfr PWM1DL = 0xA4; +sfr16 PWM1D_16 = 0xA4; +sfr PWM2DH = 0xBF; +sfr PWM2DL = 0xBE; +sfr16 PWM2D_16 = 0xBE; + +/* PCA */ +sfr P0CF = 0x98; //BANK1 +sfr P0CMD = 0x99; //BANK1 +sfr P0CPM0 = 0x9A; //BANK1 +sfr P0CPM1 = 0x9B; //BANK1 +sfr P0TOPL = 0x9E; //BANK1 +sfr P0TOPH = 0x9F; //BANK1 +sfr16 P0TOP_16 = 0x9E; //BANK1 +sfr P0CPL0 = 0x9C; //BANK1 +sfr P0CPH0 = 0x9D; //BANK1 +sfr16 P0CP0_16 = 0x9C; //BANK1 +sfr P0CPL1 = 0xD4; //BANK1 +sfr P0CPH1 = 0xD5; //BANK1 +sfr16 P0CP1_16 = 0xD4; //BANK1 +sfr PCACON = 0xD8; //BANK1 +sfr P0FORCE = 0xDC; //BANK1 +sfr P1CF = 0xC0; //BANK1 +sfr P1CMD = 0xC1; //BANK1 +sfr P1CPM0 = 0xC2; //BANK1 +sfr P1CPM1 = 0xC3; //BANK1 +sfr P1TOPL = 0xC6; //BANK1 +sfr P1TOPH = 0xC7; //BANK1 +sfr16 P1TOP_16 = 0xC6; //BANK1 +sfr P1CPL0 = 0xC4; //BANK1 +sfr P1CPH0 = 0xC5; //BANK1 +sfr16 P1CP0_16 = 0xC4; //BANK1 +sfr P1CPL1 = 0xE4; //BANK1 +sfr P1CPH1 = 0xE5; //BANK1 +sfr16 P1CP1_16 = 0xE4; //BANK1 +sfr P1FORCE = 0xEC; //BANK1 +sfr P2CF = 0xC8; //BANK1 +sfr P2CMD = 0xC9; //BANK1 +sfr P2CPM0 = 0xCA; //BANK1 +sfr P2CPM1 = 0xCB; //BANK1 +sfr P2TOPL = 0xCE; //BANK1 +sfr P2TOPH = 0xCF; //BANK1 +sfr16 P2TOP_16 = 0xCE; //BANK1 +sfr P2CPL0 = 0xCC; //BANK1 +sfr P2CPH0 = 0xCD; //BANK1 +sfr16 P2CP0_16 = 0xCC; //BANK1 +sfr P2CPL1 = 0xF4; //BANK1 +sfr P2CPH1 = 0xF5; //BANK1 +sfr16 P2CP1_16 = 0xF4; //BANK1 +sfr P2FORCE = 0xFC; //BANK1 + +/* LPD*/ +sfr LPDCON = 0xB3; +sfr LPDSEL = 0xBB; + +/* CRC */ +sfr CRCCON = 0xC1; +sfr CRCDH = 0xC3; +sfr CRCDL = 0xC2; +sfr16 CRCD_16 = 0xC2; +sfr CRCSTAL = 0xD4; +sfr CRCSTAH = 0xD5; +sfr16 CRCSTA_16 = 0xD4; +sfr CRCSTOL = 0xDC; +sfr CRCSTOH = 0xDD; +sfr16 CRCSTO_16 = 0xDC; + +/* LCM */ +sfr UART0CR = 0xC4; +sfr UART1CR = 0xC5; +sfr TWICR = 0xC6; +sfr PWMCR = 0xCA; +sfr CEXCR = 0xCB; +sfr ECICR = 0xC9; + +/*-------------------------- BIT Register --------------------------*/ +/* SPSTA */ +sbit SPEN = 0xFF; +sbit SPIF = 0xFE; +sbit MODF = 0xFD; +sbit WCOL = 0xFC; +sbit RXOV = 0xFB; + +/* B */ + +/* EXF0 */ +sbit IT41 = 0xEF; +sbit IT40 = 0xEE; +sbit IT31 = 0xED; +sbit IT30 = 0xEC; +sbit IT21 = 0xEB; +sbit IT20 = 0xEA; +sbit IE3 = 0xE9; +sbit IE2 = 0xE8; +/* ACC */ + +/* EXF1 */ +sbit IF47 = 0xDF; +sbit IF46 = 0xDE; +sbit IF45 = 0xDD; +sbit IF44 = 0xDC; +sbit IF43 = 0xDB; +sbit IF42 = 0xDA; +sbit IF41 = 0xD9; +sbit IF40 = 0xD8; + +/* PSW */ +sbit CY = 0xD7; +sbit AC = 0xD6; +sbit F0 = 0xD5; +sbit RS1 = 0xD4; +sbit RS0 = 0xD3; +sbit OV = 0xD2; +sbit F1 = 0xD1; +sbit P = 0xD0; + +/*TWICON*/ +sbit TOUT = 0xCF; +sbit ENTWI = 0xCE; +sbit STA = 0xCD; +sbit STO = 0xCC; +sbit TWINT = 0xCB; +sbit AA = 0xCA; +sbit TFREE = 0xC9; +sbit EFREE = 0xC8; + +/* P5 */ +sbit P5_0 = P5^0; //BANK1 +sbit P5_1 = P5^1; //BANK1 + + +/* P4 */ +sbit P4_0 = P4^0; +sbit P4_1 = P4^1; +sbit P4_2 = P4^2; +sbit P4_3 = P4^3; +sbit P4_4 = P4^4; +sbit P4_5 = P4^5; +sbit P4_6 = P4^6; +sbit P4_7 = P4^7; + +/* IPL0 */ +sbit PINTL = 0xBF; +sbit PADCL = 0xBE; +sbit PT3L = 0xBD; +sbit PS0L = 0xBC; +sbit PCF1L = 0xBB; +sbit PX1L = 0xBA; +sbit PCF0L = 0xB9; +sbit PX0L = 0xB8; + +/* P3 */ +sbit P3_0 = P3^0; +sbit P3_1 = P3^1; +sbit P3_2 = P3^2; +sbit P3_3 = P3^3; +sbit P3_4 = P3^4; +sbit P3_5 = P3^5; +sbit P3_6 = P3^6; +sbit P3_7 = P3^7; + +/* IEN0 */ +sbit EA = 0xAF; +sbit EADC = 0xAE; +sbit ET3 = 0xAD; +sbit ES0 = 0xAC; +sbit EPCA1 = 0xAB; +sbit EX1 = 0xAA; +sbit EPCA0 = 0xA9; +sbit EX0 = 0xA8; + +/* P2 */ +sbit P2_0 = P2^0; +sbit P2_1 = P2^1; +sbit P2_2 = P2^2; +sbit P2_3 = P2^3; +sbit P2_4 = P2^4; +sbit P2_5 = P2^5; +sbit P2_6 = P2^6; +sbit P2_7 = P2^7; + +/* SCON */ +sbit SM0_FE = 0x9F; +sbit SM1_RXOV = 0x9E; +sbit SM2_TXCOL = 0x9D; +sbit REN = 0x9C; +sbit TB8 = 0x9B; +sbit RB8 = 0x9A; +sbit TI = 0x99; +sbit RI = 0x98; + +/* P1 */ +sbit P1_0 = P1^0; +sbit P1_1 = P1^1; +sbit P1_2 = P1^2; +sbit P1_3 = P1^3; +sbit P1_4 = P1^4; +sbit P1_5 = P1^5; +sbit P1_6 = P1^6; +sbit P1_7 = P1^7; + +/* TCON */ + +sbit IE1 = 0x8B; +sbit IT1 = 0x8A; +sbit IE0 = 0x89; +sbit IT0 = 0x88; + +/* P0 */ +sbit P0_0 = P0^0; +sbit P0_1 = P0^1; +sbit P0_2 = P0^2; +sbit P0_3 = P0^3; +sbit P0_4 = P0^4; +sbit P0_5 = P0^5; +sbit P0_6 = P0^6; +sbit P0_7 = P0^7; + +/* PCACON */ +sbit PR2 = 0xDA; //BANK1 +sbit PR1 = 0xD9; //BANK1 +sbit PR0 = 0xD8; //BANK1 + +/* P2CF */ +sbit CF2 = 0xCF; //BANK1 +sbit P2CCF1 = 0xC9; //BANK1 +sbit P2CCF0 = 0xC8; //BANK1 + +/* P1CF */ +sbit CF1 = 0xC7; //BANK1 +sbit P1CCF1 = 0xC1; //BANK1 +sbit P1CCF0 = 0xC0; //BANK1 + +/* SCON1 */ +sbit SM10_FE1 = 0xA7; //BANK1 +sbit SM11_RXOV1 = 0xA6; //BANK1 +sbit SM12_TXCOL1 = 0xA5; //BANK1 +sbit REN1 = 0xA4; //BANK1 +sbit TB81 = 0xA3; //BANK1 +sbit RB81 = 0xA2; //BANK1 +sbit TI1 = 0xA1; //BANK1 +sbit RI1 = 0xA0; //BANK1 + +/* P0CF */ +sbit CF0 = 0x9F; //BANK1 +sbit P0CCF1 = 0x99; //BANK1 +sbit P0CCF0 = 0x98; //BANK1 + +/* SCON2 */ +sbit SM20_FE2 = 0x97; //BANK1 +sbit SM21_RXOV2 = 0x96; //BANK1 +sbit SM22_TXCOL2 = 0x95; //BANK1 +sbit REN2 = 0x94; //BANK1 +sbit TB82 = 0x93; //BANK1 +sbit RB82 = 0x92; //BANK1 +sbit TI2 = 0x91; //BANK1 +sbit RI2 = 0x90; //BANK1 + +/* T3CON */ +sbit TF3 = 0x8F; //BANK1 +sbit T3PS1 = 0x8D; //BANK1 +sbit T3PS0 = 0x8C; //BANK1 +sbit TR3 = 0x8A; //BANK1 +sbit T3CLKS1 = 0x89; //BANK1 +sbit T3CLKS0 = 0x88; //BANK1 + +#endif diff --git a/header_drv/McuFlash.h b/header_drv/McuFlash.h new file mode 100644 index 0000000..5e8d26c --- /dev/null +++ b/header_drv/McuFlash.h @@ -0,0 +1,85 @@ +#ifndef __MCU_FLASH_H +#define __MCU_FLASH_H + + +#define XRAM_MAP_ADDR 0x0000 +#define MCUFLASH_BK1_ADDR 0x0000 +#define MCUFLASH_BK2_ADDR (MCUFLASH_BK1_ADDR + 512) +#define MCUFLASH_BK1_FLG_ADDR (MCUFLASH_BK1_ADDR + 510) +#define MCUFLASH_BK2_FLG_ADDR (MCUFLASH_BK2_ADDR + 510) +#define MCUFLASH_SECTOR_SIZE 512 //1Sector的长度为512字节 + +#define MCU_FLASH_WATI_DELAY 2 + +/**************************************************************************************/ +//MCU Flash中区块地址定义 +/**************************************************************************************/ +//系统信息区开始 SubClassID=0x00 +#define SYS_PARA_MAP_ADDR XRAM_MAP_ADDR +#define SYS_PARA_LEN 48 + +//用户自定义参数区开始 SubClassID=0x01 +#define SYSINFO_MAP_ADDR (SYS_PARA_MAP_ADDR+SYS_PARA_LEN) +#define SYSINFO_LEN 50 + +//充电参数区开始 SubClassID=0x02 +#define CHG_PARA_MAP_ADDR (SYSINFO_MAP_ADDR+SYSINFO_LEN) +#define CHG_PARA_LEN 18 + +//放电参数区开始 SubClassID=0x03 +#define DSG_PARA_MAP_ADDR (CHG_PARA_MAP_ADDR+CHG_PARA_LEN) +#define DSG_PARA_LEN 21 + +//预留参数区开始 SubClassID=0x04 +//Reserved + +//放电PWM参数区开始 SubClassID=0x05 +#define DSG_PWM_PARA_MAP_ADDR (DSG_PARA_MAP_ADDR+DSG_PARA_LEN) +#define DSG_PWM_PARA_LEN 5 + +//充电温度保护参数开始 SubClassID=0x06 +#define CHG_TEMP_PARA_MAP_ADDR (DSG_PWM_PARA_MAP_ADDR+DSG_PWM_PARA_LEN) +#define CHG_TEMP_PARA_LEN 11 + +//放电温度保护参数开始 SubClassID=0x07 +#define DSG_TEMP_PARA_MAP_ADDR (CHG_TEMP_PARA_MAP_ADDR+CHG_TEMP_PARA_LEN) +#define DSG_TEMP_PARA_LEN 9 + +//平衡参数区开始 SubClassID=0x08 +#define BAL_PARA_MAP_ADDR (DSG_TEMP_PARA_MAP_ADDR+DSG_TEMP_PARA_LEN) +#define BAL_PARA_LEN 8 + +//容量统计参数开始 SubClassID=0x09 +#define SOC_PARA_MAP_ADDR (BAL_PARA_MAP_ADDR+BAL_PARA_LEN) +#define SOC_PARA_LEN 17 + +//AFE参数区开始 SubClassID=0x0A +#define AFE_PARA_MAP_ADDR (SOC_PARA_MAP_ADDR+SOC_PARA_LEN) +#define AFE_PARA_LEN 4 + +//校准参数区开始 SubClassID=0x0B +#define CALI_PARA_MAP_ADDR (AFE_PARA_MAP_ADDR+AFE_PARA_LEN) +#define CALI_PARA_LEN 12 + +#define RESERVED_DATA_MAP_ADDR (CALI_PARA_MAP_ADDR+CALI_PARA_LEN) +#define RESERVED_DATA_LEN (510-(RESERVED_DATA_MAP_ADDR)) + +#define DataflashCheck_Map_ADDR 0xfe +#define DataflashCheck_LEN 0x0002 + + +extern BOOL bMcuFlashWrWaitFlg; +extern BOOL bMcuFlashWrFlg; +extern BOOL bMcuFlashErr; +extern U8 xdata ucMcuFlashWrValid; +extern U8 xdata bMcuFlashWrWaitCnt; + +extern BOOL McuFlashRead(U16 SourceAddr, U8 xdata *TargetAddr, U16 Length); +extern BOOL McuFlashWrite(U16 McuFlashAddr, U16 XramAddr); +extern void McuFlashWrOneByte(U16 McuFlashAddr,U8 WrData); +extern void McuFlashProcess(void); +extern void McuFlashWrWaitCheck(void); +extern BOOL McuFlashCheckFlg(U16 Saddr); + + +#endif \ No newline at end of file diff --git a/header_drv/McuLib.h b/header_drv/McuLib.h new file mode 100644 index 0000000..4d2e6a4 --- /dev/null +++ b/header_drv/McuLib.h @@ -0,0 +1,102 @@ +#ifndef __MCU_LIB_H +#define __MCU_LIB_H + +#define RAM_CHECK_DATA 0x5A + +#define TIM_CLK_24MHz 0x00 +#define TIM_CLK_12MHz 0x11 +#define TIM_CLK_6MHz 0x22 +#define TIM_CLK_2MHz 0x33 +#define TIM_CLK_128KHz 0x44 +#define TIM_CLK_32KHz 0x55 + +#define MCU_CLK_24MHz 0x00 +#define MCU_CLK_12MHz 0x20 +#define MCU_CLK_6MHz 0x40 +#define MCU_CLK_2MHz 0x60 +#define MCU_CLK_128KHz 0x80 +#define MCU_CLK_32KHz 0xA0 + +#define McuBank0Sel() INSCON = 0x00; //定义寄存器的Bank0 +#define McuBank1Sel() INSCON = 0x40; //定义寄存器的Bank1 + +#define McuWDTClear() RSTSTAT &= 0xF8; //清看门狗 + +#define McuFlashEn() FLASHCON |= 0x01; //允许访问MCU的Flash +#define McuFlashDis() FLASHCON &= ~0x01; //不允许访问MCU的Flash + +#define McuTwiEn() ENTWI = 1; //开启MCU的Twi模块 +#define McuTwiDis() ENTWI = 0; //关闭MCU的Twi模块 + +#define McuPWM0En() PWM0CON |= 0x01; //PWM输出 +#define McuPWM1En() PWM1CON |= 0x01; //PWM输出 +#define McuPWM2En() PWM2CON |= 0x01; //PWM输出 + +#define McuPWM0Dis() PWM0CON &= ~0x81; //关闭PWM并配置为IO +#define McuPWM1Dis() PWM1CON &= ~0x81; //关闭PWM并配置为IO +#define McuPWM2Dis() PWM2CON &= ~0x81; //关闭PWM并配置为IO + +#define IrqEn() EA = 1; //开启中断总使能位 +#define IrqDis() EA = 0; //关闭中断总使能位 + +#define IrqINT0En() EX0 = 1; //外部中断0相关控制 +#define IrqINT0Dis() EX0 = 0; +#define IrqINT0FlgClr() IE0 = 0; +#define IrqINT0TrigLow() IT0 = 0; +#define IrqINT0TrigFalling() IT0 = 1; + +#define IrqINT1En() EX1 = 1; //外部中断1相关控制 +#define IrqINT1Dis() EX1 = 0; +#define IrqINT1FlgClr() IE1 = 0; +#define IrqINT1TrigLow() IT1 = 0; +#define IrqINT1TrigFalling() IT1 = 1; + +#define INT4_EXS40 0x01 +#define INT4_EXS41 0x02 +#define INT4_EXS42 0x04 +#define INT4_EXS43 0x08 +#define INT4_EXS44 0x10 +#define INT4_EXS45 0x20 +#define INT4_EXS46 0x40 +#define INT4_EXS47 0x80 +#define IrqINT4En() IEN1 |= 0x08; +#define IrqINT4Dis() IEN1 &= ~0x08; +#define IrqINT4xChEn(INT4x) IENC |= INT4x; +#define IrqINT4xChDis(INT4x) IENC &= ~INT4x; +#define IrqINT4FlgClr() EXF1 = 0; + +#define INT4_TRIG_LOW 0x00 +#define INT4_TRIG_FALLING 0x40 +#define INT4_TRIG_RISING 0x80 +#define INT4_TRIG_FALL_RISE 0xC0 +#define IrqINT4Trig(INT4Trig) EXF0 |= INT4Trig; + +#define IrqTimer3En() ET3 = 1; +#define IrqTimer3Dis() ET3 = 0; +#define IrqTimer3FlgClr() _push_(INSCON);McuBank1Sel();TF3 = 0;_pop_(INSCON); + +#define IrqUart0En() ES0 = 1; +#define IrqUart0Dis() ES0 = 0; + +#define IrqUart1En() IEN2 |= 0x01; +#define IrqUart1Dis() IEN2 &= 0xFE; + +#define IrqUart2En() IEN2 |= 0x02; +#define IrqUart2Dis() IEN2 &= 0xFD; + +extern void ClrRam(void); +extern void MemorySet(U8 xdata *pt, U8 setval, U8 length); +extern void MemoryCopy(U8 xdata *source, U8 xdata *target, U8 length); + +extern void McuTimer3Set(U8 ClkSource, U16 XmS); +extern void McuClockSet(U8 SysClock); +extern void McuPWM0Set(U16 PwmFreq, U8 DutyRatio); +extern void McuPWM1Set(U16 PwmFreq, U8 DutyRatio); +extern void McuPWM2Set(U16 PwmFreq, U8 DutyRatio); +extern void Delay1ms(U8 delaycnt); +extern void McuIntoIdle(void); +extern void McuIntoPD(void); +extern void SystemResetProcess(void); +extern BOOL RamCheckProcess(void); + +#endif diff --git a/header_drv/MosCtrl.h b/header_drv/MosCtrl.h new file mode 100644 index 0000000..e56c515 --- /dev/null +++ b/header_drv/MosCtrl.h @@ -0,0 +1,8 @@ +#ifndef __MOS_CTL_H +#define __MOS_CTL_H + + +extern void MosCtrl(void); + + +#endif \ No newline at end of file diff --git a/header_drv/PorSelfTest.h b/header_drv/PorSelfTest.h new file mode 100644 index 0000000..72a06e6 --- /dev/null +++ b/header_drv/PorSelfTest.h @@ -0,0 +1,9 @@ +#ifndef __PORSELFTEST_H +#define __PORSELFTEST_H + + +extern BOOL bPorSelfTestFlg; + +extern void PorSelfTest(void); + +#endif \ No newline at end of file diff --git a/header_drv/Protect.h b/header_drv/Protect.h new file mode 100644 index 0000000..c40a830 --- /dev/null +++ b/header_drv/Protect.h @@ -0,0 +1,47 @@ +#ifndef __PROTECT_H +#define __PROTECT_H + + +#define OV_DELAY_CNT (E2ucOVDelay*10) +#define OVR_DELAY_CNT (E2ucOVRDelay*10) +#define UV_DELAY_CNT (E2ucUVDelay*10) +#define UVR_DELAY_CNT (E2ucUVRDelay*10) +#define BAL_DELAY_CNT (E2ucBalanceDelay*10) + +#define OCC_DELAY_CNT (E2ucOCCDelay*10) +#define OCD1_DELAY_CNT (E2ucOCD1Delay*10) +#define OCD2_DELAY_CNT (E2ucOCD2Delay*2) + +#define TEMPE_DELAY_CNT (E2ucTempDelay*20) +#define TEMPER_DELAY_CNT (E2ucTempDelay*20) + +#define OCCR_DELAY_CNT (E2ucOCCRDelay*20) +#define OCDR_DELAY_CNT (E2ucOCCRDelay*20) + + +//保护相关的参数 +extern BOOL bUVLock; +extern BOOL bOVLock; +extern U16 xdata uiOVDelayCnt; +extern U16 xdata uiOVRDelayCnt; +extern U16 xdata uiUVDelayCnt; +extern U16 xdata uiUVRDelayCnt; +extern U16 xdata uiOTCDelayCnt; +extern U16 xdata uiOTCRDelayCnt; +extern U16 xdata uiUTCDelayCnt; +extern U16 xdata uiUTCRDelayCnt; +extern U16 xdata uiOTDDelayCnt; +extern U16 xdata uiOTDRDelayCnt; +extern U16 xdata uiUTDDelayCnt; +extern U16 xdata uiUTDRDelayCnt; +extern U16 xdata uiOCCDelayCnt; +extern U16 xdata uiOCD1DelayCnt; +extern U16 xdata uiOCD2DelayCnt; +extern U16 xdata uiOCCRcnt; +extern U16 xdata uiOCDRcnt; + + +extern void ProtectProcess(void); +extern void ProtectOCRecover(void); + +#endif \ No newline at end of file diff --git a/header_drv/RTC.h b/header_drv/RTC.h new file mode 100644 index 0000000..81cfc5e --- /dev/null +++ b/header_drv/RTC.h @@ -0,0 +1,36 @@ +#ifndef __EXT_RTC_H +#define __EXT_RTC_H + +#define RTC_ID 0xDE + +#define RTC_REG_SECOND 0x00 +#define RTC_REG_MINUTE 0x01 +#define RTC_REG_HOUR 0x02 +#define RTC_REG_DATE 0x03 +#define RTC_REG_MONTH 0x04 +#define RTC_REG_YEAR 0x05 +#define RTC_REG_WEEK 0x06 +#define RTC_REG_STATUS 0x07 + +typedef struct _RTC_VAR_ //BCD Type +{ + U8 Second; + U8 Minute; + U8 Hour; + U8 Date; + U8 Month; + U8 Year; + U8 Week; +}RTC_VAR; +extern RTC_VAR xdata RTC; +extern BOOL bRTCErr; +extern BOOL bRTCTwiRWErr; +extern U8 xdata ucRTCTwiRWErrDelayCnt; + + +extern BOOL RTCInitTime(RTC_VAR xdata *RtcInitVal); +extern BOOL RTCReadTime(RTC_VAR xdata *RtcRdVal); +extern BOOL RTCModifyTime(RTC_VAR xdata *RtcMdyVal); +extern void RTCTwiCheck(void); + +#endif \ No newline at end of file diff --git a/header_drv/Twi.h b/header_drv/Twi.h new file mode 100644 index 0000000..62853c6 --- /dev/null +++ b/header_drv/Twi.h @@ -0,0 +1,27 @@ +#ifndef __TWI_MODULE_H +#define __TWI_MODULE_H + +#define TWI_Hardware_Module +#ifdef TWI_Hardware_Module +#define TWI_FREQ_KHz 100 //(KHz) //请输入10-400KHz通讯频率 + +#define TWIBR1 (24000/TWI_FREQ_KHz -16)/2 +#define TWIBR2 (24000/TWI_FREQ_KHz -16)/8 +#define TWIBR3 (24000/TWI_FREQ_KHz -16)/32 +#define TWIBR4 (24000/TWI_FREQ_KHz -16)/128 + +#define TWI_ADDR_1B 0 +#define TWI_ADDR_2B 1 + +#define TWI_CRC_NO 0 +#define TWI_CRC_YES 1 + +//#define AFE_CHIP_ID (0x1B<<1) //AFE_ID +#define HTimeoutChk() TWITOUT |= 0xc0; TWISTA |=0x01; TWICON |=0X01; +extern U8 CRC8cal(U8 *p, U8 counter); +extern BOOL TwiWrite(U8 SlaveID, U16 WrAddr, U8 AddrType, U8 Length, U8 CrcFlg, U8 xdata *WrBuf); +extern BOOL TwiRead(U8 SlaveID, U16 RdAddr, U8 AddrType, U8 Length, U8 CrcFlg, U8 xdata *RdBuf); +extern void TwiInit(void); + +#endif +#endif diff --git a/header_drv/TwiIO.h b/header_drv/TwiIO.h new file mode 100644 index 0000000..1ab91fb --- /dev/null +++ b/header_drv/TwiIO.h @@ -0,0 +1,40 @@ +#ifndef _TWI_IO_H +#define _TWI_IO_H + +//#define TWI_IO_OPERATE +#ifdef TWI_IO_OPERATE +//Define For I2C Driver + +#define AFE_CHIP_ID (0x1B<<1) //AFE_ID + +#define TRY_TIMES 5 + +#define RTC_REG_STATUS 0x07 + +#define SDA_BIT 0x10 +#define SCL_BIT 0x20 +#define SDA P0_4 +#define SCL P0_5 + +#define TWI_CLK_OUT P0CR |= SCL_BIT; +#define TWI_CLK_IN P0CR &= ~SCL_BIT; +#define TWI_CLK_HIGH TWI_CLK_IN; SCL = 1; +#define TWI_CLK_LOW TWI_CLK_OUT; SCL = 0; + +#define TWI_DAT_OUT P0CR |= SDA_BIT; +#define TWI_DAT_IN P0CR &= ~SDA_BIT; +#define TWI_DAT_HIGH TWI_DAT_IN; SDA = 1; +#define TWI_DAT_LOW TWI_DAT_OUT; SDA = 0; + +#define TWI_RD_DAT SDA +#define TWI_RD_CLK SCL + +extern void TwiInit(void); +extern BOOL TwiRead(U8 SlaveID, U16 RdAddr, U8 Length, U8 xdata *RdBuf); +extern BOOL TwiWrite(U8 SlaveID, U16 WrAddr, U8 Length, U8 xdata *WrBuf); +extern U8 CRC8cal(U8 *p, U8 counter); + + +#endif + +#endif \ No newline at end of file diff --git a/header_drv/Uart.h b/header_drv/Uart.h new file mode 100644 index 0000000..a4421cf --- /dev/null +++ b/header_drv/Uart.h @@ -0,0 +1,69 @@ +#ifndef __UART_H +#define __UART_H + + +#if UART_BRT == 0 + #define UART_BPS_H 0x7F + #define UART_BPS_L 0x64 + #define UART_BPS_F 0x04 +#elif UART_BRT == 1 + #define UART_BPS_H 0x7F + #define UART_BPS_L 0xF3 + #define UART_BPS_F 0x00 +#endif + +//#if ((0<=UART0_DEFINE <= 11)) +/**********************************采用UART0模块**********************************/ +#define UART_SLAVE_SADDR 0x0A //UART地址,默认为0x0A +#define Uart0RxEn() REN = 1; //UART可以接收数据 +#define Uart0TxEn(TxData) REN = 0; SBUF = TxData; //UART发送数据 + +//#define IrqUartEn() IrqUart0En() +//#define IrqUartDis() IrqUart0Dis() + +//#define InterruptUart0AppRx(RxData) InterruptUartAppRx(RxData) +//#define InterruptUart0AppTx() InterruptUartAppTx() +//#define UARTInit() UART0Init() + +extern void UART0Init(void); + +//#elif ((0<=UART1_DEFINE <=11)) +/**********************************采用UART1模块**********************************/ +//#define UART1_SLAVE_SADDR 0x0A //UART地址,默认为0x0A +#define Uart1RxEn() McuBank1Sel(); REN1 = 1; McuBank0Sel(); //UART可以接收数据 +#define Uart1TxEn(TxData) McuBank1Sel(); REN1 = 0; SBUF1 = TxData; McuBank0Sel(); //UART发送数据 + +//#define IrqUartEn() IrqUart1En() +//#define IrqUartDis() IrqUart1Dis() + +//#define InterruptUart1AppRx(RxData) InterruptUartAppRx(RxData) +//#define InterruptUart1AppTx() InterruptUartAppTx() +//#define UARTInit() UART1Init() + +extern void UART1Init(void); + +//#elif UART2_DEFINE = 0 +/**********************************采用UART2模块**********************************/ +//#define UART2_SLAVE_SADDR 0x0A //UART地址,默认为0x0A +#define Uart2RxEn() McuBank1Sel(); REN2 = 1; McuBank0Sel(); //UART可以接收数据 +#define Uart2TxEn(TxData) McuBank1Sel(); REN2 = 0; SBUF2 = TxData; McuBank0Sel(); //UART发送数据 + +//#define IrqUartEn() IrqUart2En() +//#define IrqUartDis() IrqUart2Dis() + +//#define InterruptUart2AppRx(RxData) InterruptUartAppRx(RxData) +//#define InterruptUart2AppTx() InterruptUartAppTx() +//#define UARTInit() UART2Init() + +extern void UART2Init(void); +//#endif //UART_DEFINE + + +//extern void InitUART0(void); + + + + + + +#endif \ No newline at end of file diff --git a/header_drv/c51_type.h b/header_drv/c51_type.h new file mode 100644 index 0000000..ed752f3 --- /dev/null +++ b/header_drv/c51_type.h @@ -0,0 +1,15 @@ +#ifndef __C51_TYPE_H +#define __C51_TYPE_H + + +typedef unsigned char U8; +typedef unsigned int U16; +typedef unsigned long U32; +typedef signed char S8; +typedef signed int S16; +typedef signed long S32; +typedef bit BOOL; + + + +#endif \ No newline at end of file diff --git a/output/AFE.lst b/output/AFE.lst new file mode 100644 index 0000000..2bfbb71 --- /dev/null +++ b/output/AFE.lst @@ -0,0 +1,563 @@ +C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE AFE +OBJECT MODULE PLACED IN .\output\AFE.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\AFE.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load.OR + -C) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_c + -lassb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\AFE.lst) OBJECT(.\output\AFE.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 //AFE相关的变量 + 12 BOOL bAfeAlarmFlg; + 13 BOOL bCADCFlg; + 14 BOOL bVADCFlg; + 15 BOOL bAfeI2CRWErrFlg; + 16 BOOL bAfeErr; + 17 U8 data ucCellNum; //当前硬件电芯串数 + 18 U8 data ucCellNumOffset; //当前硬件电芯连接方式对应的偏移,用于程序读取AFE对应寄 + -存器 + 19 U16 data uiCellVmax; //电芯电压最大值 + 20 U16 data uiCellVmin; //电芯电压最小值 + 21 U16 xdata uiVadcVmax; //ADC采集最大值 + 22 U16 xdata uiVadcVmin; //ADC采集最小值 + 23 U8 xdata ucTempeMiddle; + 24 U16 xdata uiTempeMin; + 25 U16 xdata uiTempeMax; + 26 S32 xdata slCadcCurrent; + 27 S32 xdata slCadcCurAverage; + 28 U8 xdata ucCadcCnt; + 29 S32 xdata slCadcCurBuf[16]; + 30 U8 xdata ucAfeI2CErrDelayCnt; + 31 SYSINFOR xdata Info; //经过计算的值 + 32 AFEDATA xdata AFE; //AFE寄存器读取的值 + 33 AFEREG xdata REG; //AFE寄存器预设值 + 34 + 35 + 36 + 37 /************************************************************************************************* + 38 * 函数名: AFETwiCheck + 39 * 参 数: 无 + 40 * 返回值: 无 + 41 * 描 述: 连续5S检测到AFE的I2C通讯错误,则置位bAfeErr=1 + 42 *************************************************************************************************/ + 43 void AFETwiCheck(void) + 44 { + 45 1 if(bAfeI2CRWErrFlg) + 46 1 { + 47 2 if(++ucAfeI2CErrDelayCnt >= TIME_1S_5S) + 48 2 { + 49 3 bAfeErr = 1; + 50 3 ucAfeI2CErrDelayCnt = TIME_1S_5S; + 51 3 } + 52 2 } + C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 2 + + 53 1 else + 54 1 { + 55 2 ucAfeI2CErrDelayCnt = 0; + 56 2 } + 57 1 } + 58 + 59 + 60 /************************************************************************************************* + 61 * 函数名: AFEWriteReg + 62 * 参 数: Reg:寄存器地址 + 63 WrBuf:写的数据:1Byte数据+1Byte CRC + 64 * 返回值: 1:成功;0:失败 + 65 * 描 述: 写AFE寄存器,每次写一个寄存器 + 66 *************************************************************************************************/ + 67 BOOL AFEWriteReg(U8 Reg, U8 Length, U8 xdata *WrBuf) + 68 { + 69 1 BOOL Result = 0; + 70 1 U8 Times = 0; + 71 1 U8 i; + 72 1 + 73 1 if(!bAfeErr) + 74 1 { + 75 2 for(i=0; i= 5) + 101 3 { + 102 4 break; + 103 4 } + 104 3 else + 105 3 { + 106 4 Times = 0; + 107 4 Reg++; + 108 4 WrBuf++; + 109 4 } + 110 3 Delay1ms(1); + 111 3 } + 112 2 } + 113 1 bAfeI2CRWErrFlg = !Result; //标记通讯是否正常 + 114 1 + C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 3 + + 115 1 return Result; + 116 1 } + 117 + 118 + 119 /************************************************************************************************* + 120 * 函数名: AFEReadReg + 121 * 参 数: Reg:寄存器地址 + 122 RdBuf:读的数据:2Byte数据+1Byte CRC + 123 * 返回值: 1:成功;0:失败 + 124 * 描 述: 读AFE寄存器,每次连续读两个寄存器 + 125 *************************************************************************************************/ + 126 BOOL AFEReadReg(U8 Reg, U8 Length , U8 xdata *RdBuf) + 127 { + 128 1 BOOL Result = 0; + 129 1 U8 Times = 0; + 130 1 + 131 1 if(!bAfeErr) + 132 1 { + 133 2 while(Times++ < 5) //如果读数出错,则Try 5次 + 134 2 { + 135 3 #ifdef TWI_Hardware_Module + 136 3 Result = TwiRead(AFE_ID, Reg, TWI_ADDR_1B, Length, TWI_CRC_YES, RdBuf); + 137 3 #else + Result = TwiRead(AFE_ID, Reg, Length, RdBuf); + #endif + 140 3 if(Result) //如果读数成功且CRC校验正确,则退出循环返回成功标标志 + 141 3 { + 142 4 break; + 143 4 } + 144 3 else //如果TWI读数或CRC校验失败,则延时1mS之后再读取 + 145 3 { + 146 4 TWICON = 0; //Close TWI module + 147 4 Delay1ms(1); + 148 4 TwiInit(); //Reinitial + 149 4 Delay1ms(1); + 150 4 } + 151 3 } + 152 2 } + 153 1 bAfeI2CRWErrFlg = !Result; //标记通讯是否正常 + 154 1 + 155 1 return Result; + 156 1 } + 157 + 158 + 159 /************************************************************************************************* + 160 * 函数名: AFEClrFlg + 161 * 参 数: + 162 * 返回值: 无 + 163 * 描 述: 清零AFE标志寄存器 + 164 *************************************************************************************************/ + 165 void AFEClrFlg(void) + 166 { + 167 1 if(AFEReadReg(AFE_FLAG1, 2, ®.AFEFLAG1)) + 168 1 { + 169 2 if((REG.AFEFLAG1!=0) || (REG.AFEFLAG2!=0)) + 170 2 { + 171 3 REG.AFESCONF1 |= 0x80; + 172 3 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + 173 3 REG.AFESCONF1 &= ~0x80; + 174 3 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + 175 3 } + 176 2 } + C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 4 + + 177 1 } + 178 + 179 + 180 /************************************************************************************************* + 181 * 函数名: AFEInitReg + 182 * 参 数: 无 + 183 * 返回值: 无 + 184 * 描 述: 初始化AFE寄存器 + 185 *************************************************************************************************/ + 186 void AFEInitReg(void) + 187 { + 188 1 U16 TempVar; + 189 1 + 190 1 REG.AFEINTEN = 0x00; //采取查询式,故不需要ALARM中断 + 191 1 REG.AFESCONF1 = 0x50; //使能CTLD和WDT功能 + 192 1 REG.AFESCONF2 = 0x00; //AFE引脚配置为复位信号,ALARM输出低电平脉冲,放电MOS与充电MOS都关闭 + 193 1 REG.AFESCONF3 = 0xF8; //默认VADC和CADC都开启,CADC连续采样,10位ADC,VADC只采集 + -电压转换周期50ms + 194 1 REG.AFESCONF4 = 0x00; //默认关闭平衡BAT6-10 + 195 1 REG.AFESCONF5 = 0x00; //默认关闭平衡BAT1-5 + 196 1 REG.AFESCONF6 = 0x70; //CADC采集200mV范围,复位信号宽度1S,硬件短路保护电压100mV,硬件短路保护延时5 + -0uS + 197 1 REG.AFESCONF7 = 0x01; //硬件过冲保护延时1个转换周期,充放电状态阈值选择位1.4mV + -渲每疵殴芬绯10S + 198 1 REG.AFESCONF8 = 0x03; //SCONF8 + SCONF9 = 11 1111 1111 = 1023 + 199 1 REG.AFESCONF9 = 0xff; //硬件过冲保护阈值1023*5.86mV = 5994.78 + 200 1 REG.AFESCONF10= 0x00; //低功耗控制位,写入0x33再写PD_EN=1进入低功耗 + 201 1 + 202 1 if(bSC_EN) //配置使能AFE短路功能 + 203 1 { + 204 2 REG.AFESCONF1 |= 0x08; + 205 2 REG.AFESCONF6 |= (E2ucAFEProtectConfig&0x0f);//将FLASH内参数写入AFE寄存器 + 206 2 } + 207 1 if(bOV_EN) //配置使能AFE过压功能 + 208 1 { + 209 2 REG.AFESCONF1 |= 0x04; + 210 2 REG.AFESCONF7 |= (E2ucAFEProtectConfig&0xf0);//将FLASH内参数写入AFE寄存器 + 211 2 TempVar = (U32)E2uiAFEOVvol*50/293; //取出过压保护电压 + 212 2 REG.AFESCONF8 = TempVar>>8; //写高两位 + 213 2 REG.AFESCONF9 = TempVar; //写低八位 + 214 2 } + 215 1 } + 216 + 217 + 218 + 219 /************************************************************************************************* + 220 * 函数名: AFEInit + 221 * 参 数: + 222 * 返回值: 1:成功;0:失败 + 223 * 描 述: 初始化AFE + 224 *************************************************************************************************/ + 225 BOOL AFEInit(void) + 226 { + 227 1 U8 xdata RdBuf[2]; + 228 1 U8 i; + 229 1 BOOL Result = 1; + 230 1 U8 j = 3; + 231 1 + 232 1 while(j--) + 233 1 { + 234 2 if( AFEWriteReg(AFE_INT_EN, 11, ®.AFEINTEN)) + 235 2 { + C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 5 + + 236 3 for(i=3; i<=11; i=i+2) + 237 3 { + 238 4 AFEReadReg(i, 2, RdBuf); + 239 4 + 240 4 if((RdBuf[0]!=*(®.AFEFLAG1+i)) || (RdBuf[1]!=*(®.AFEFLAG1+i+1))) + 241 4 { + 242 5 if(i != 7) //平衡寄存器除外,因为平衡寄存器不置位,持续30s会自动清零 + 243 5 { + 244 6 Result = 0; + 245 6 break; + 246 6 } + 247 5 } + 248 4 } + 249 3 } + 250 2 else + 251 2 { + 252 3 Result = 0; + 253 3 } + 254 2 if(Result) + 255 2 { + 256 3 break; + 257 3 } + 258 2 } + 259 1 return Result; + 260 1 + 261 1 } + 262 + 263 + 264 /************************************************************************************************* + 265 * 函数名: AFERdFlg + 266 * 参 数: + 267 * 返回值: 无 + 268 * 描 述: 读取AFE标志寄存器 + 269 AFE_SC表示发生短路保护 + 270 FLAG2的bit2为1表示发生LVR复位,需要重新初始化AFE + 271 *************************************************************************************************/ + 272 void AFERdFlg(void) + 273 { + 274 1 if(AFEReadReg(AFE_FLAG1, 2, ®.AFEFLAG1)) + 275 1 { + 276 2 if((REG.AFEFLAG2&0x02) != 0) //CADC 电流转换完成 + 277 2 { + 278 3 bCADCFlg = 1; + 279 3 } + 280 2 + 281 2 if((REG.AFEFLAG2&0x01) != 0) //VADC 电压转换完成 + 282 2 { + 283 3 bVADCFlg = 1; + 284 3 } + 285 2 + 286 2 if((REG.AFEFLAG1&0x08) != 0 && (bLoadChkingFlg != 1)) //AFE短路保护 + 287 2 { + 288 3 bAFE_SC = 1; + 289 3 bLoadStartCheckFlg = 1; //开启负载检测 + 290 3 } + 291 2 if((REG.AFEFLAG1&0x04) != 0) //AFE 硬件过压保护 + 292 2 { + 293 3 bAFE_OV= 1; + 294 3 } + 295 2 + 296 2 if((REG.AFEFLAG2&0x04) != 0) //判断FLAG2的bit2是否为1,如为1则表示AFE发生过LVR,需 + -匦鲁跏蓟疉FE寄存器 + C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 6 + + 297 2 { + 298 3 AFEInit(); + 299 3 } + 300 2 } + 301 1 } + 302 + 303 + 304 /************************************************************************************************* + 305 * 函数名: AFERdStatus + 306 * 参 数: + 307 * 返回值: 无 + 308 * 描 述: 读取AFE状态寄存器 + 309 *************************************************************************************************/ + 310 void AFERdStatus(void) + 311 { + 312 1 U8 RegTemp[2]; + 313 1 if(AFEReadReg(AFE_BSTATUS, 2, RegTemp))//®.AFEBSTATUS))//AFE固定读2Bytes,只取1Byte + 314 1 { + 315 2 ucAFEStatus = REG.AFEBSTATUS = RegTemp[0]; //更新充电器、负载的检测结果 + 316 2 } + 317 1 } + 318 + 319 + 320 /************************************************************************************************* + 321 * 函数名: AFERamCheck + 322 * 参 数: + 323 * 返回值: 无 + 324 * 描 述: 定时检测AFE的寄存器是否被改写,如果是则重新初始化 + 325 *************************************************************************************************/ + 326 void AFERamCheck(void) + 327 { + 328 1 U8 xdata RdBuf[2]; + 329 1 U8 i; + 330 1 + 331 1 for(i=3; i<=11; i=i+2) + 332 1 { + 333 2 AFEReadReg(i, 2, RdBuf); + 334 2 + 335 2 if((RdBuf[0]!=*(®.AFEFLAG1+i)) || (RdBuf[1]!=*(®.AFEFLAG1+i+1))) + 336 2 { + 337 3 if(i != 7) //平衡寄存器除外,因为平衡寄存器不置位,持续30s会自动清零 + 338 3 { + 339 4 if(!AFEInit()) + 340 4 { + 341 5 bPDFlg = 1; + 342 5 } + 343 4 break; + 344 4 } + 345 3 } + 346 2 } + 347 1 } + 348 + 349 + 350 /************************************************************************************************* + 351 * 函数名: AFEEnterPD + 352 * 参 数: + 353 * 返回值: 无 + 354 * 描 述: 控制AFE进入PD状态,关闭3.3V输出 + 355 *************************************************************************************************/ + 356 void AFEEnterPD(void) + 357 { + 358 1 REG.AFESCONF10 = 0x33; + C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 7 + + 359 1 if(AFEWriteReg(AFE_SCONF10, 1, ®.AFESCONF10)) + 360 1 { + 361 2 REG.AFESCONF1 |= 0x20; + 362 2 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + 363 2 } + 364 1 } + 365 + 366 + 367 /************************************************************************************************* + 368 * 函数名: AFEMosCtl + 369 * 参 数: MosStatus:MOS状态。1:开启;0:关闭 + 370 * 返回值: 无 + 371 * 描 述: 控制充放电MOS的开启和关闭 + 372 *************************************************************************************************/ + 373 void AFEMosCtl(U8 MosStatus) + 374 { + 375 1 REG.AFESCONF2 &= ~0x03; + 376 1 REG.AFESCONF2 |= MosStatus; + 377 1 AFEWriteReg(AFE_SCONF2, 1, ®.AFESCONF2); + 378 1 } + 379 + 380 + 381 + 382 /************************************************************************************************* + 383 * 函数名: AFEChgerCheckEn、AFEChgerCheckDis、AFELoadCheckEn、AFELoadCheckDis + 384 * 参 数: + 385 * 返回值: 无 + 386 * 描 述: 使能/关闭充电器检测、负载检测 + 387 *************************************************************************************************/ + 388 void AFEChgerCheckEn(void) + 389 { + 390 1 REG.AFESCONF1 |= 0x01; + 391 1 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + 392 1 } + 393 + 394 + 395 void AFEChgerCheckDis(void) + 396 { + 397 1 REG.AFESCONF1 &= ~0x01; + 398 1 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + 399 1 } + 400 + 401 + 402 void AFELoadCheckEn(void) + 403 { + 404 1 REG.AFESCONF1 |= 0x02; + 405 1 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + 406 1 } + 407 + 408 + 409 void AFELoadCheckDis(void) + 410 { + 411 1 REG.AFESCONF1 &= ~0x02; + 412 1 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + 413 1 } + 414 + 415 + 416 /************************************************************************************************* + 417 * 函数名: AfeBalEn + 418 * 参 数: BalChTemp:平衡对应的CELL,如果全部为0,则关闭平衡 + 419 * 返回值: 无 + 420 * 描 述: 开启和关闭平衡 + C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 8 + + 421 *************************************************************************************************/ + 422 void AfeBalCtl(U16 BalChTemp) + 423 { + 424 1 REG.AFESCONF4 = BalChTemp>>5; + 425 1 if(AFEWriteReg(AFE_SCONF4, 1, ®.AFESCONF4)) + 426 1 { + 427 2 REG.AFESCONF5 = BalChTemp; + 428 2 AFEWriteReg(AFE_SCONF5, 1, ®.AFESCONF5); + 429 2 } + 430 1 } + 431 + 432 + 433 /************************************************************************************************* + 434 * 函数名: AfeWDTEn, AfeWDTDis + 435 * 参 数: + 436 * 返回值: 无 + 437 * 描 述: 开启和关闭看门狗模块 + 438 *************************************************************************************************/ + 439 void AfeWDTEn(void) + 440 { + 441 1 REG.AFESCONF1 |= 0x10; + 442 1 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + 443 1 } + 444 + 445 + 446 void AfeWDTDis(void) + 447 { + 448 1 REG.AFESCONF1 &= ~0x10; + 449 1 AFEWriteReg(AFE_SCONF1, 1, ®.AFESCONF1); + 450 1 } + 451 + 452 + 453 /************************************************************************************************* + 454 * 函数名: AfeWDTEn, AfeWDTDis + 455 * 参 数: 无 + 456 * 返回值: 无 + 457 * 描 述: 开启和关闭看门狗模块 + 458 *************************************************************************************************/ + 459 void AfeADCEn(void) + 460 { + 461 1 REG.AFESCONF3 |= 0xf8; + 462 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); + 463 1 } + 464 + 465 + 466 void AfeADCDis(void) + 467 { + 468 1 REG.AFESCONF3 &= ~0xf8; + 469 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); + 470 1 } + 471 + 472 void AfeCADCEn(void) + 473 { + 474 1 REG.AFESCONF3 |= 0xe0; + 475 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); + 476 1 } + 477 + 478 + 479 void AfeCADCDis(void) + 480 { + 481 1 REG.AFESCONF3 &= ~0xe0; + 482 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); + C51 COMPILER V9.01 AFE 02/06/2025 15:28:45 PAGE 9 + + 483 1 } + 484 + 485 void AfeTempADCEn(void) + 486 { + 487 1 REG.AFESCONF3 |= 0x08; + 488 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); + 489 1 } + 490 + 491 + 492 void AfeTempADCDis(void) + 493 { + 494 1 REG.AFESCONF3 &= ~0x08; + 495 1 AFEWriteReg(AFE_SCONF3, 1, ®.AFESCONF3); + 496 1 } + 497 + 498 + 499 /************************************************************************************************* + 500 * 函数名: AfeAlarmEn,AfeAlarmDis + 501 * 参 数: AlarmFlg:置位对应的ALARM位 + 502 * 返回值: 无 + 503 * 描 述: 开启和关闭对应的ALARM中断触发 + 504 *************************************************************************************************/ + 505 void AfeAlarmEn(U8 AlarmFlg) + 506 { + 507 1 REG.AFEINTEN |= AlarmFlg; + 508 1 AFEWriteReg(AFE_INT_EN, 1, ®.AFEINTEN); + 509 1 } + 510 + 511 void AfeAlarmDis(U8 AlarmFlg) + 512 { + 513 1 REG.AFEINTEN &= ~AlarmFlg; + 514 1 AFEWriteReg(AFE_INT_EN, 1, ®.AFEINTEN); + 515 1 } + 516 + 517 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 1206 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 181 22 + PDATA SIZE = ---- ---- + DATA SIZE = 6 ---- + IDATA SIZE = ---- ---- + BIT SIZE = 5 3 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/AFE.obj b/output/AFE.obj new file mode 100644 index 0000000..da3b00c Binary files /dev/null and b/output/AFE.obj differ diff --git a/output/Balance.lst b/output/Balance.lst new file mode 100644 index 0000000..79b6d32 --- /dev/null +++ b/output/Balance.lst @@ -0,0 +1,293 @@ +C51 COMPILER V9.01 BALANCE 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE BALANCE +OBJECT MODULE PLACED IN .\output\Balance.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\Balance.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Loa + -d.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\co + -de_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Balance.lst) OBJECT(.\output\Bal + -ance.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 BOOL bBalanceFlg; + 13 BOOL bBalancingFlg; + 14 BOOL bBalanceOddFlg; + 15 BOOL bCTOValidFlg; //当电芯压差超过1200mV时,才认为存在断线,主要 + -解决电芯电压低于2V情况下 + 16 BOOL bCellOpenDecFlag; + 17 U16 xdata uiBalanceChannel; + 18 U8 xdata ucBalanceTimeCnt; + 19 U8 xdata ucBalanceStep; + 20 U8 xdata ucCellOpenDecCnt; + 21 U8 xdata ucCtoCnt; + 22 + 23 /************************************************************************************************* + 24 * 函数名: BalTurnOnCheck + 25 * 参 数: 无 + 26 * 返回值: 无 + 27 * 描 述: + 28 1. 平衡开启条件是电压、压差及电流 同时满足 + 29 2. 平衡过程中,不再进行平衡检测 + 30 3. 断线检测借用平衡 + 31 *************************************************************************************************/ + 32 void BalTurnOnCheck(void) + 33 { + 34 1 U8 i; + 35 1 + 36 1 if(!bBalancingFlg && !bCellOpenDecFlag) //在一个平衡周期中或开启断线检测时不判定是否进行 + -胶 + 37 1 { + 38 2 if(bBAL_EN) + 39 2 { + 40 3 uiBalanceChannel = 0; + 41 3 if(((uiCellVmax>E2uiOVvol)&&(!bOV)) //发生温度保护时不进行平衡,判定进入过压、过压恢复、 + -氤涞缃刂故痹萃F胶 + 42 3 ||((uiCellVmax < E2uiOVRvol)&&(bOV)) + 43 3 || bOTC || bUTC || bOTD || bUTD) + 44 3 { + 45 4 bBalanceFlg = 0; + 46 4 ucBalanceTimeCnt = 0; + 47 4 } + 48 3 else + 49 3 { + C51 COMPILER V9.01 BALANCE 02/06/2025 15:28:45 PAGE 2 + + 50 4 if(((uiCellVmax>E2uiBalanceVol) && (uiCellVmax-uiCellVmin)>=E2uiBalanceVolDiff) && (Info.slCurr>=E2 + -siBalCurrent)) + 51 4 { + 52 5 if(!bBalanceFlg) + 53 5 { + 54 6 ucBalanceTimeCnt++; + 55 6 } + 56 5 if(ucBalanceTimeCnt >= BAL_DELAY_CNT) + 57 5 { + 58 6 for(i=ucCellNumOffset; i=E2uiBalanceVolDiff)&&(Info.uiVCell[i]>=E2uiBalanceVol)) //电芯 + -电压大于平衡电压,且压差大于阈值,开启该电芯平衡 + 61 7 { + 62 8 uiBalanceChannel |= (1<= TIME_50MS_500MS) //断线 500mS + 101 5 { + 102 6 bCTO = 1; + 103 6 } + 104 5 } + 105 4 else + 106 4 { + 107 5 bCTOValidFlg = 0; + 108 5 ucCtoCnt = 0; + 109 5 } + C51 COMPILER V9.01 BALANCE 02/06/2025 15:28:45 PAGE 3 + + 110 4 } + 111 3 } + 112 2 #ifdef SP_CTO_RECOVER + else //断线恢复功能,每250mS一个周期判断最小电压 + { + if(uiVadcVmin >= VOL_CELL_CUT_180MV) //180mV + { + if(++ucCtoRCnt >= TIME_250MS_1S) + { + bCTO = 0; + } + } + else + { + ucCtoRCnt = 0; + } + } + #endif + 128 2 } + 129 1 + 130 1 return bResult; + 131 1 } + 132 + 133 + 134 /************************************************************************************************* + 135 * 函数名: BalProcess + 136 * 参 数: 无 + 137 * 返回值: 无 + 138 * 描 述: + 139 1. 平衡周期分为5个STEP,合计250mS + 140 2. 平衡效率<100/(250mS*2)(采用奇偶平衡) + 141 3. 如果检测到断线,则持续开启平衡进行断线检测 + 142 4. 平衡开启后,正常的电压保护判断延时可能会多延时250mS(一个平衡周期) + 143 *************************************************************************************************/ + 144 void BalProcess(void) + 145 { + 146 1 U16 BalChTemp; + 147 1 + 148 1 //判断电芯电压压差是否超过1.2V,如果超过则允许判断断线,主要解决电芯电压<2V情况下平衡会触发断线判断条件 + 149 1 //判断电芯最大电压是否小于1.38V,如果小于则允许判断断线,主要解决未有效检测电芯电压的情况下压差不满足断线 + -卸咸跫 + 150 1 if((uiCellVmax-uiCellVmin>=VOL_CELL_CUT_1200MV) || (uiCellVmax<=VOL_CELL_CUT_1380MV)) + 151 1 { + 152 2 bCTOValidFlg = 1; + 153 2 } + 154 1 + 155 1 switch(ucBalanceStep) + 156 1 { + 157 2 case BALANCE_ENABLE: //VADC采集的数据用于正常电压判断 + 158 2 if(bCellOpenDecFlag || bBalanceFlg) + 159 2 { + 160 3 if(bBalanceOddFlg) //odd balance + 161 3 { + 162 4 BalChTemp = uiBalanceChannel&0x5555; + 163 4 } + 164 3 else //even balance + 165 3 { + 166 4 BalChTemp = uiBalanceChannel&0xAAAA; + 167 4 } + 168 3 AfeBalCtl(BalChTemp); //开启平衡 + 169 3 ucBalanceStep = BALANCE_START; + 170 3 bBalancingFlg = 1; + C51 COMPILER V9.01 BALANCE 02/06/2025 15:28:45 PAGE 4 + + 171 3 } + 172 2 break; + 173 2 + 174 2 case BALANCE_START: //VADC采集的电压数据丢掉 + 175 2 ucBalanceStep = BALANCING; + 176 2 break; + 177 2 + 178 2 case BALANCING: //VADC采集的电压数据判断断线 + 179 2 if(!CTOCheckVol()) //如果发现有断线则连续检测断线 + 180 2 { + 181 3 AfeBalCtl(0); //关闭平衡 + 182 3 ucBalanceStep = BALANCE_DISABLE; + 183 3 bBalanceOddFlg = ~bBalanceOddFlg; + 184 3 } + 185 2 break; + 186 2 + 187 2 case BALANCE_DISABLE: //VADC采集的电压数据丢掉 + 188 2 if(!CTOCheckVol()) //如果发现有断线则连续检测断线 + 189 2 { + 190 3 ucBalanceStep = BALANCE_NULL; + 191 3 } + 192 2 else + 193 2 { + 194 3 ucBalanceStep = BALANCE_ENABLE; + 195 3 bBalanceOddFlg = ~bBalanceOddFlg; + 196 3 } + 197 2 break; + 198 2 + 199 2 case BALANCE_NULL: //VADC采集的数据用于正常电压判断 + 200 2 ucBalanceStep = BALANCE_ENABLE; + 201 2 bCellOpenDecFlag = 0; + 202 2 bBalanceFlg = 0; + 203 2 bBalancingFlg = 0; + 204 2 break; + 205 2 } + 206 1 } + 207 + 208 + 209 /************************************************************************************************* + 210 * 函数名: CellOpenProcess + 211 * 参 数: 无 + 212 * 返回值: 无 + 213 * 描 述: 每2S开启一次断线检测 + 214 *************************************************************************************************/ + 215 void CTOTurnOnCheck(void) + 216 { + 217 1 #ifdef SP_CTO_RECOVER + if(bCTO_EN) //支持断线恢复 + #else + 220 1 if(bCTO_EN && !bCTO) //如果已发生断线则不检测 + 221 1 #endif + 222 1 { + 223 2 if(++ucCellOpenDecCnt >= TIME_50MS_2250MS) //2S + 224 2 { + 225 3 ucCellOpenDecCnt = TIME_50MS_2250MS; //避免该检测周期是平衡的偶数倍关系 + 226 3 if(!bBalancingFlg) //如果正在平衡,则等一个平衡周期结束后再开启断线检测 + 227 3 { + 228 4 ucCellOpenDecCnt = 0; + 229 4 bCellOpenDecFlag = 1; + 230 4 uiBalanceChannel = 0x03ff; + 231 4 } + 232 3 } + C51 COMPILER V9.01 BALANCE 02/06/2025 15:28:45 PAGE 5 + + 233 2 } + 234 1 } + 235 + 236 /************************************************************************************************* + 237 * 函数名: BalanceProcess + 238 * 参 数: 无 + 239 * 返回值: 无 + 240 * 描 述: 平衡与断线检测处理 + 241 *************************************************************************************************/ + 242 void BalanceProcess(void) + 243 { + 244 1 BalTurnOnCheck(); //检测是否满足平衡开启条件 + 245 1 + 246 1 CTOTurnOnCheck(); //定时开启断线检测 + 247 1 + 248 1 BalProcess(); //处理平衡和断线时序 + 249 1 } + 250 + 251 + 252 + 253 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 611 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 6 2 + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 5 1 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Balance.obj b/output/Balance.obj new file mode 100644 index 0000000..d9ffe87 Binary files /dev/null and b/output/Balance.obj differ diff --git a/output/BootApp.__i b/output/BootApp.__i new file mode 100644 index 0000000..6305c22 --- /dev/null +++ b/output/BootApp.__i @@ -0,0 +1 @@ +"code_drv\BootApp.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\MCUCore_Load.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\BootApp.lst) OBJECT(.\output\BootApp.obj) \ No newline at end of file diff --git a/output/BootApp.lst b/output/BootApp.lst new file mode 100644 index 0000000..519ac65 --- /dev/null +++ b/output/BootApp.lst @@ -0,0 +1,55 @@ +C51 COMPILER V9.01 BOOTAPP 02/06/2025 15:28:46 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE BOOTAPP +OBJECT MODULE PLACED IN .\output\BootApp.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\BootApp.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Loa + -d.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\co + -de_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\BootApp.lst) OBJECT(.\output\Boo + -tApp.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: sino + 4 Version: V1.0 + 5 Date: 2020/12/29 + 6 History: + 7 V0.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 /************************************************************************************************* + 12 * 函数名: ISPProcess + 13 * 参 数: 无 + 14 * 返回值: 无 + 15 * 描 述: ISP和IAP的接口函数 + 16 *************************************************************************************************/ + 17 void ISPProcess(void) + 18 { + 19 1 if(bISPFlg &&( bUart0SndAckFlg ||bUart1SndAckFlg||bUart2SndAckFlg)) + 20 1 { + 21 2 bISPFlg = 0; + 22 2 bUart0SndAckFlg = 0; + 23 2 bUart1SndAckFlg = 0; + 24 2 bUart2SndAckFlg = 0; + 25 2 IrqDis(); //关闭总中断源 + 26 2 AfeWDTDis(); //关闭AFE的看门狗功能,否则在更新程序时MCU会复位 + 27 2 ((void(code*)(void))0x00A6)(); //Boot区,IAP和ISP程序升级入口 + 28 2 } + 29 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 29 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/BootApp.obj b/output/BootApp.obj new file mode 100644 index 0000000..6a585a7 Binary files /dev/null and b/output/BootApp.obj differ diff --git a/output/BootIAP.__i b/output/BootIAP.__i new file mode 100644 index 0000000..10211e9 --- /dev/null +++ b/output/BootIAP.__i @@ -0,0 +1 @@ +"code_drv\BootIAP.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\MCUCore_Load.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\BootIAP.lst) OBJECT(.\output\BootIAP.obj) \ No newline at end of file diff --git a/output/BootIAP.lst b/output/BootIAP.lst new file mode 100644 index 0000000..4b17a68 --- /dev/null +++ b/output/BootIAP.lst @@ -0,0 +1,300 @@ +C51 COMPILER V9.01 BOOTIAP 02/06/2025 15:28:46 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE BOOTIAP +OBJECT MODULE PLACED IN .\output\BootIAP.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\BootIAP.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Loa + -d.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\co + -de_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\BootIAP.lst) OBJECT(.\output\Boo + -tIAP.obj) + +line level source + + 1 #include "Main.H" + 2 + 3 + 4 unsigned char code g_loadercode[4096]={ + 5 0x02,0x0D,0x7A,0x02,0x10,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x0B,0x00,0x00, //0000 + 6 0x00,0x00,0x00,0x02,0x10,0x13,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x1B,0x00,0x00, //0010 + 7 0x00,0x00,0x00,0x02,0x10,0x23,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x2B,0x00,0x00, //0020 + 8 0x00,0x00,0x00,0x02,0x10,0x33,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x3B,0x00,0x00, //0030 + 9 0x00,0x00,0x00,0x02,0x10,0x43,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x4B,0x00,0x00, //0040 + 10 0x00,0x00,0x00,0x02,0x10,0x53,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x5B,0x00,0x00, //0050 + 11 0x00,0x00,0x00,0x02,0x10,0x63,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x6B,0x00,0x00, //0060 + 12 0x00,0x00,0x00,0x02,0x10,0x73,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x7B,0x00,0x00, //0070 + 13 0x00,0x00,0x00,0x02,0x10,0x83,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x8B,0x00,0x00, //0080 + 14 0x00,0x00,0x00,0x02,0x10,0x93,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x9B,0x00,0x00, //0090 + 15 0x00,0x00,0x00,0x02,0x10,0xA3,0xE4,0xF5,0x26,0xF5,0x25,0xF5,0x24,0xF5,0x23,0xF5, //00A0 + 16 0x30,0xF5,0x2F,0xF5,0x2E,0xF5,0x2D,0xF5,0x2C,0x12,0x0D,0x5E,0x20,0x98,0x03,0x02, //00B0 + 17 0x01,0x8E,0x74,0x00,0x25,0x2B,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE5,0x99,0xF0, //00C0 + 18 0x05,0x2B,0xE5,0x2B,0xC3,0x94,0x8C,0x40,0x03,0xE4,0xF5,0x2B,0xE5,0x2B,0xB4,0x01, //00D0 + 19 0x0D,0x90,0x02,0x00,0xE0,0x64,0x5A,0x70,0x03,0x02,0x01,0x8C,0x80,0x6B,0xE5,0x2B, //00E0 + 20 0xB4,0x02,0x14,0x90,0x02,0x01,0xE0,0x64,0xA5,0x60,0x02,0x80,0x5C,0xE4,0xF5,0x31, //00F0 + 21 0xF5,0x32,0xF5,0x22,0x02,0x01,0x8C,0x90,0x02,0x02,0xE0,0xFF,0x7E,0x00,0x24,0x09, //0100 + 22 0xFD,0xEE,0x33,0xFC,0xAB,0x2B,0x7A,0x00,0xC3,0xEB,0x9D,0xEC,0x64,0x80,0xF8,0x74, //0110 + 23 0x80,0x98,0x50,0x62,0xEF,0x24,0x07,0xFF,0xEE,0x33,0xFE,0xD3,0xEB,0x9F,0xEE,0x64, //0120 + 24 0x80,0xF8,0x74,0x80,0x98,0x50,0x15,0x74,0xFF,0x25,0x2B,0xF5,0x82,0xE4,0x34,0x01, //0130 + 25 0xF5,0x83,0xE0,0x25,0x32,0xF5,0x32,0xE4,0x35,0x31,0xF5,0x31,0xE5,0x2B,0xB4,0x05, //0140 + 26 0x0D,0x90,0x02,0x04,0xE0,0x64,0x07,0x60,0x33,0xE4,0xF5,0x2B,0x80,0x2E,0xE5,0x2B, //0150 + 27 0x64,0x06,0x70,0x28,0x90,0x02,0x05,0xE0,0xFF,0x64,0x06,0x60,0x1F,0xEF,0x64,0x07, //0160 + 28 0x60,0x1A,0xEF,0x64,0x08,0x60,0x15,0xEF,0x64,0x09,0x60,0x10,0xEF,0x64,0x0A,0x60, //0170 + 29 0x0B,0x43,0x22,0x30,0x80,0x06,0x53,0xB1,0xF8,0x12,0x0A,0x9D,0xC2,0x98,0x30,0x99, //0180 + 30 0x44,0x53,0xB1,0xF8,0x90,0x02,0x02,0xE0,0x24,0x08,0xFF,0xE4,0x33,0xFE,0xC3,0xE5, //0190 + 31 0x2B,0x9F,0xEE,0x64,0x80,0xF8,0x74,0x80,0x98,0x40,0x13,0xE4,0xF5,0x86,0xD2,0x9C, //01A0 + 32 0xF5,0x2B,0x90,0x02,0x00,0xF0,0xA3,0xF0,0xA3,0xF0,0xD2,0x02,0x80,0x15,0x05,0x2B, //01B0 + 33 0xE4,0xF5,0x86,0xC2,0x9C,0x74,0x00,0x25,0x2B,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83, //01C0 + 34 0xE0,0xF5,0x99,0xC2,0x99,0xE5,0x2C,0x64,0x0A,0x60,0x03,0x02,0x00,0xBC,0x53,0xB1, //01D0 + 35 0xF8,0x20,0x02,0x03,0x02,0x00,0xBC,0xC2,0x02,0xF5,0x2C,0x12,0x00,0x00,0x02,0x00, //01E0 + 36 0xBC,0xC2,0x00,0x90,0x02,0x06,0xE0,0xFF,0xC3,0x95,0x21,0x40,0x14,0xE5,0x21,0x24, //01F0 + 37 0x04,0xFD,0xE4,0x33,0xFC,0xD3,0xEF,0x9D,0xEC,0x64,0x80,0xF8,0x74,0x80,0x98,0x40, //0200 + 38 0x0A,0x90,0x02,0x06,0xE0,0x60,0x04,0x74,0x05,0xF0,0x22,0x90,0x02,0x06,0xE0,0xF5, //0210 + 39 0x21,0xE4,0xF0,0x90,0x02,0x02,0xE0,0x70,0x15,0x25,0x26,0xF5,0x26,0xE5,0x25,0x34, //0220 + 40 0x02,0xF5,0x25,0xE4,0x35,0x24,0xF5,0x24,0xE4,0x35,0x23,0xF5,0x23,0x22,0xE5,0x21, //0230 + 41 0x54,0x03,0xF5,0x0A,0xE4,0xF5,0x08,0xF5,0x09,0x90,0x02,0x02,0xE0,0xFD,0x7C,0x00, //0240 + 42 0xC3,0xE5,0x09,0x9D,0xE5,0x08,0x9C,0x50,0x32,0x74,0x07,0x25,0x09,0xF5,0x82,0xE4, //0250 + 43 0x34,0x02,0xF5,0x83,0xE0,0xFB,0xAF,0x0A,0x7E,0x00,0x12,0x06,0x38,0xE5,0x09,0x2F, //0260 + 44 0xFF,0xE5,0x08,0x3E,0xFE,0x74,0x00,0x2F,0xF5,0x82,0x74,0x00,0x3E,0xF5,0x83,0xEB, //0270 + 45 0xF0,0x05,0x09,0xE5,0x09,0x70,0xC2,0x05,0x08,0x80,0xBE,0xE5,0x0A,0x64,0x03,0x60, //0280 + 46 0x03,0x02,0x04,0x4F,0x75,0x1D,0x55,0x12,0x08,0x95,0x50,0x03,0x02,0x03,0x86,0xE4, //0290 + 47 0xFF,0x7E,0x02,0xFD,0xFC,0xAB,0x26,0xAA,0x25,0xA9,0x24,0xA8,0x23,0x12,0x07,0x18, //02A0 + 48 0x40,0x1A,0xE5,0x26,0x94,0x00,0xF5,0x26,0xE5,0x25,0x94,0x02,0xF5,0x25,0xE5,0x24, //02B0 + 49 0x94,0x00,0xF5,0x24,0xE5,0x23,0x94,0x00,0xF5,0x23,0x80,0x09,0xE4,0xF5,0x26,0xF5, //02C0 + 50 0x25,0xF5,0x24,0xF5,0x23,0xE4,0xF5,0x0F,0x30,0x01,0x5E,0x25,0x26,0xF5,0x0E,0xE5, //02D0 + 51 0x25,0x34,0x10,0xF5,0x0D,0xE4,0x35,0x24,0xF5,0x0C,0xE4,0x35,0x23,0xF5,0x0B,0xE4, //02E0 + 52 0x25,0x2A,0xFF,0xE5,0x29,0x34,0x0C,0xFE,0xE4,0x35,0x28,0xFD,0xE4,0x35,0x27,0xFC, //02F0 + C51 COMPILER V9.01 BOOTIAP 02/06/2025 15:28:46 PAGE 2 + + 53 0xAB,0x0E,0xAA,0x0D,0xA9,0x0C,0xA8,0x0B,0xC3,0x12,0x07,0x18,0x40,0x40,0xE4,0x25, //0300 + 54 0x2A,0xFB,0xE5,0x29,0x34,0x0C,0xFA,0xE4,0x35,0x28,0xF9,0xE4,0x35,0x27,0xF8,0xC3, //0310 + 55 0xE5,0x0E,0x9B,0xF5,0x0E,0xE5,0x0D,0x9A,0xF5,0x0D,0xE5,0x0C,0x99,0xF5,0x0C,0xE5, //0320 + 56 0x0B,0x98,0xF5,0x0B,0x75,0x0F,0x01,0x80,0x15,0xE4,0x25,0x26,0xF5,0x0E,0xE5,0x25, //0330 + 57 0x34,0x84,0xF5,0x0D,0xE4,0x35,0x24,0xF5,0x0C,0xE4,0x35,0x23,0xF5,0x0B,0x75,0x1D, //0340 + 58 0x55,0xAF,0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0F,0x15,0x12,0x0B,0x7E,0xAF, //0350 + 59 0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0F,0x15,0x12,0x0C,0x8C,0x50,0x0E,0x12, //0360 + 60 0x08,0x95,0x40,0x12,0x90,0x02,0x06,0x74,0x03,0xF0,0x02,0x04,0x4C,0x90,0x02,0x06, //0370 + 61 0x74,0x02,0xF0,0x02,0x04,0x4C,0xE4,0xF5,0x0A,0x75,0xF0,0x04,0xE5,0x0A,0xA4,0x24, //0380 + 62 0x02,0xF5,0x82,0xE5,0xF0,0x34,0x00,0xF5,0x83,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78, //0390 + 63 0x10,0x12,0x07,0x3C,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0x75,0xF0,0x04,0xE5, //03A0 + 64 0x0A,0xA4,0x24,0x03,0xF5,0x82,0xE5,0xF0,0x34,0x00,0xF5,0x83,0xE0,0xFF,0xE4,0xFC, //03B0 + 65 0xFD,0xFE,0x78,0x18,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF, //03C0 + 66 0x4B,0xFF,0xEE,0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0xC0,0x04,0xC0,0x05,0xC0, //03D0 + 67 0x06,0xC0,0x07,0x75,0xF0,0x04,0xE5,0x0A,0xA4,0x24,0x01,0xF5,0x82,0xE5,0xF0,0x34, //03E0 + 68 0x00,0xF5,0x83,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78,0x08,0x12,0x07,0x3C,0xD0,0x03, //03F0 + 69 0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFB,0xEE,0x4A,0xFA,0xED,0x49,0xF9,0xEC, //0400 + 70 0x48,0xF8,0x75,0xF0,0x04,0xE5,0x0A,0xA4,0x24,0x00,0xF5,0x82,0xE5,0xF0,0x34,0x00, //0410 + 71 0xF5,0x83,0xE0,0xFF,0xEB,0x4F,0xFF,0xEA,0xFE,0xE9,0xFD,0xE8,0xFC,0xE5,0x30,0x2F, //0420 + 72 0xF5,0x30,0xE5,0x2F,0x3E,0xF5,0x2F,0xE5,0x2E,0x3D,0xF5,0x2E,0xE5,0x2D,0x3C,0xF5, //0430 + 73 0x2D,0x05,0x0A,0xE5,0x0A,0x64,0x80,0x60,0x03,0x02,0x03,0x89,0xE4,0xF5,0x1D,0x22, //0440 + 74 0xE4,0xF5,0x26,0xF5,0x25,0xF5,0x24,0xF5,0x23,0xF5,0x30,0xF5,0x2F,0xF5,0x2E,0xF5, //0450 + 75 0x2D,0xF5,0x2A,0xF5,0x29,0xF5,0x28,0xF5,0x27,0x90,0x02,0x09,0xE0,0xFF,0xE4,0xFC, //0460 + 76 0xFD,0xFE,0x78,0x10,0x12,0x07,0x3C,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xA3, //0470 + 77 0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78,0x18,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0, //0480 + 78 0x01,0xD0,0x00,0xEF,0x4B,0xFF,0xEE,0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0xC0, //0490 + 79 0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0x90,0x02,0x08,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE, //04A0 + 80 0x78,0x08,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFB, //04B0 + 81 0xEE,0x4A,0xFA,0xED,0x49,0xF9,0xEC,0x48,0xF8,0x90,0x02,0x07,0xE0,0xFF,0xEB,0x4F, //04C0 + 82 0xF5,0x2A,0xEA,0xF5,0x29,0xE9,0xF5,0x28,0xE8,0xF5,0x27,0x20,0x00,0x06,0x90,0x02, //04D0 + 83 0x06,0x74,0x0A,0xF0,0xE4,0xFF,0x7E,0x78,0xFD,0xFC,0xAB,0x2A,0xAA,0x29,0xA9,0x28, //04E0 + 84 0xA8,0x27,0xD3,0x12,0x07,0x18,0x40,0x05,0x20,0x01,0x02,0x80,0x17,0xE4,0xFF,0x7E, //04F0 + 85 0xEC,0xFD,0xFC,0xAB,0x2A,0xAA,0x29,0xA9,0x28,0xA8,0x27,0xD3,0x12,0x07,0x18,0x40, //0500 + 86 0x0A,0x30,0x01,0x07,0x90,0x02,0x06,0x74,0x01,0xF0,0x22,0xE4,0x90,0x02,0x06,0xF0, //0510 + 87 0xF5,0x21,0x75,0x1D,0x55,0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0B,0x7E,0xE4, //0520 + 88 0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0C,0x8C,0x50,0x2B,0x30,0x01,0x2E,0x75, //0530 + 89 0x1B,0xA5,0xE4,0xF5,0x1C,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0B,0x15,0xE4,0xF5, //0540 + 90 0x1B,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94,0xEF,0x64,0xA5,0x60,0x0E,0x90, //0550 + 91 0x02,0x06,0x74,0x03,0xF0,0x80,0x06,0x90,0x02,0x06,0x74,0x02,0xF0,0xE4,0xF5,0x1D, //0560 + 92 0x90,0x02,0x06,0xE0,0x60,0x03,0x02,0x06,0x31,0xFB,0x7A,0x02,0xF9,0xF8,0xAF,0x2A, //0570 + 93 0xAE,0x29,0xAD,0x28,0xAC,0x27,0x12,0x06,0x86,0x8F,0x09,0xE4,0xF5,0x08,0xE5,0x08, //0580 + 94 0xC3,0x95,0x09,0x40,0x03,0x02,0x06,0x37,0xE4,0xF5,0x0A,0x30,0x01,0x07,0xF5,0x0E, //0590 + 95 0x75,0x0D,0x10,0x80,0x06,0xE4,0xF5,0x0E,0x75,0x0D,0x84,0xF5,0x0C,0xF5,0x0B,0xE5, //05A0 + 96 0x08,0x25,0xE0,0xFE,0xE4,0xFC,0xFD,0x25,0x0E,0xF5,0x0E,0xE5,0x0D,0x3E,0xF5,0x0D, //05B0 + 97 0xED,0x35,0x0C,0xF5,0x0C,0xEC,0x35,0x0B,0xF5,0x0B,0x30,0x01,0x35,0xE5,0x09,0x24, //05C0 + 98 0xFE,0xFB,0xE4,0x34,0xFF,0xFA,0xED,0x34,0xFF,0xF9,0xEC,0x34,0xFF,0xF8,0xAF,0x08, //05D0 + 99 0xE4,0xFE,0xD3,0x12,0x07,0x18,0x50,0x1A,0x75,0x0A,0x01,0xE5,0x08,0x24,0x02,0xFF, //05E0 + 100 0xC3,0xEF,0x95,0x09,0xFF,0xEF,0x25,0xE0,0xFE,0xE4,0xF5,0x0E,0x8E,0x0D,0xF5,0x0C, //05F0 + 101 0xF5,0x0B,0x75,0x1D,0x55,0xAF,0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0A,0x15, //0600 + 102 0x12,0x0B,0x7E,0xAF,0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0A,0x15,0x12,0x0C, //0610 + 103 0x8C,0x40,0x06,0x90,0x02,0x06,0x74,0x02,0xF0,0xE4,0xF5,0x1D,0x05,0x08,0x02,0x05, //0620 + 104 0x8E,0x90,0x02,0x06,0x74,0x05,0xF0,0x22,0xEF,0x8D,0xF0,0xA4,0xA8,0xF0,0xCF,0x8C, //0630 + 105 0xF0,0xA4,0x28,0xCE,0x8D,0xF0,0xA4,0x2E,0xFE,0x22,0x75,0xF0,0x08,0x75,0x82,0x00, //0640 + 106 0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,0x33,0xC5, //0650 + 107 0x82,0x9B,0xED,0x9A,0xEC,0x99,0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,0x9B,0xFE, //0660 + 108 0xED,0x9A,0xFD,0xEC,0x99,0xFC,0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,0xCD,0xFA, //0670 + 109 0xE4,0xCC,0xF9,0xA8,0x82,0x22,0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,0x2D,0xEC, //0680 + 110 0x8B,0xF0,0x84,0xCF,0xCE,0xCD,0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,0x2F,0xFF, //0690 + 111 0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,0x03,0x99, //06A0 + 112 0x40,0x04,0xEB,0x99,0xFB,0x0F,0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,0xEF,0x2F, //06B0 + 113 0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,0xD7,0x05, //06C0 + 114 0x9B,0xE9,0x9A,0x40,0x07,0xEC,0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,0xE4,0xC9, //06D0 + C51 COMPILER V9.01 BOOTIAP 02/06/2025 15:28:46 PAGE 3 + + 115 0xFA,0xE4,0xCC,0xFB,0x22,0x75,0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33, //06E0 + 116 0xFD,0xCC,0x33,0xCC,0xC8,0x33,0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,0x99,0x40, //06F0 + 117 0x0A,0xED,0x9B,0xFD,0xEC,0x9A,0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,0xE4,0xCD, //0700 + 118 0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,0x42,0xF0, //0710 + 119 0xE9,0x9D,0x42,0xF0,0xE8,0x9C,0x45,0xF0,0x22,0xE8,0x60,0x0F,0xEC,0xC3,0x13,0xFC, //0720 + 120 0xED,0x13,0xFD,0xEE,0x13,0xFE,0xEF,0x13,0xFF,0xD8,0xF1,0x22,0xE8,0x60,0x0F,0xEF, //0730 + 121 0xC3,0x33,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xD8,0xF1,0x22,0xEC, //0740 + 122 0x8E,0xF0,0xA4,0xCC,0xC5,0xF0,0xCC,0xCD,0xF8,0xEF,0xA4,0xCE,0xC5,0xF0,0x2D,0xFD, //0750 + 123 0xE4,0x3C,0xFC,0xE8,0xA4,0x2E,0xC8,0xC5,0xF0,0x3D,0xFD,0xE4,0x3C,0xFC,0xEF,0xA4, //0760 + 124 0xFF,0xE5,0xF0,0x28,0xFE,0xE4,0x3D,0xFD,0xE4,0x3C,0xFC,0x22,0xE4,0xF5,0x08,0x53, //0770 + 125 0xB1,0xF8,0xE5,0x08,0xC3,0x94,0x3A,0x50,0x1F,0xE4,0xF5,0x0A,0xAF,0x08,0xFE,0x7C, //0780 + 126 0x02,0xFD,0x12,0x07,0x4F,0xE4,0x2F,0xF5,0x10,0xEE,0x34,0x10,0xF5,0x0F,0xE4,0x3D, //0790 + 127 0xF5,0x0E,0xE4,0x3C,0xF5,0x0D,0x80,0x21,0x75,0x0A,0x01,0xAF,0x08,0x7E,0x00,0x7C, //07A0 + 128 0x02,0x7D,0x00,0x12,0x07,0x4F,0xE4,0x2F,0xF5,0x10,0xEE,0x34,0x8C,0xF5,0x0F,0xED, //07B0 + 129 0x34,0xFF,0xF5,0x0E,0xEC,0x34,0xFF,0xF5,0x0D,0x75,0x1D,0x55,0xAF,0x10,0xAE,0x0F, //07C0 + 130 0xAD,0x0E,0xAC,0x0D,0x85,0x0A,0x15,0x12,0x0B,0x7E,0xAF,0x10,0xAE,0x0F,0xAD,0x0E, //07D0 + 131 0xAC,0x0D,0x85,0x0A,0x15,0x12,0x0C,0x8C,0x40,0x03,0x02,0x08,0x83,0xE4,0xF5,0x0B, //07E0 + 132 0xF5,0x0C,0xAE,0x0B,0xAF,0x0C,0xE4,0xFC,0xFD,0xFB,0x7A,0x02,0xF9,0xF8,0xD3,0x12, //07F0 + 133 0x07,0x18,0x50,0x03,0x02,0x08,0x86,0xAF,0x08,0x7E,0x00,0x7C,0x02,0x7D,0x00,0x12, //0800 + 134 0x07,0x4F,0xA8,0x04,0xA9,0x05,0xAA,0x06,0xAB,0x07,0xE4,0x25,0x0C,0xFF,0xE5,0x0B, //0810 + 135 0x34,0x84,0xFE,0xE4,0x33,0xFD,0xE4,0x33,0xFC,0xEB,0x2F,0xFF,0xEA,0x3E,0xFE,0xE9, //0820 + 136 0x3D,0xFD,0xE8,0x3C,0xFC,0xE4,0xF5,0x1B,0x12,0x0D,0x94,0x8F,0x09,0xE5,0x0C,0x25, //0830 + 137 0x10,0xFF,0xE5,0x0B,0x35,0x0F,0xFE,0xE4,0x35,0x0E,0xFD,0xE4,0x35,0x0D,0xFC,0x85, //0840 + 138 0x09,0x1B,0x85,0x0A,0x1C,0x12,0x0B,0x15,0xE5,0x0C,0x25,0x10,0xFF,0xE5,0x0B,0x35, //0850 + 139 0x0F,0xFE,0xE4,0x35,0x0E,0xFD,0xE4,0x35,0x0D,0xFC,0x85,0x0A,0x1B,0x12,0x0D,0x94, //0860 + 140 0xEF,0x65,0x09,0x60,0x03,0x7F,0x02,0x22,0x05,0x0C,0xE5,0x0C,0x70,0x02,0x05,0x0B, //0870 + 141 0x02,0x07,0xF2,0x7F,0x01,0x22,0x05,0x08,0xE5,0x08,0xC3,0x94,0x3C,0x50,0x03,0x02, //0880 + 142 0x07,0x7F,0x7F,0x00,0x22,0xD2,0x03,0xE4,0xF5,0x10,0xF5,0x11,0xAE,0x10,0xAF,0x11, //0890 + 143 0xE4,0xFC,0xFD,0xFB,0x7A,0x02,0xF9,0xF8,0xD3,0x12,0x07,0x18,0x50,0x03,0x02,0x09, //08A0 + 144 0x8C,0xE4,0xF5,0x16,0x30,0x01,0x5E,0x25,0x26,0xF5,0x15,0xE5,0x25,0x34,0x10,0xF5, //08B0 + 145 0x14,0xE4,0x35,0x24,0xF5,0x13,0xE4,0x35,0x23,0xF5,0x12,0xE4,0x25,0x2A,0xFF,0xE5, //08C0 + 146 0x29,0x34,0x0C,0xFE,0xE4,0x35,0x28,0xFD,0xE4,0x35,0x27,0xFC,0xAB,0x15,0xAA,0x14, //08D0 + 147 0xA9,0x13,0xA8,0x12,0xC3,0x12,0x07,0x18,0x40,0x40,0xE4,0x25,0x2A,0xFB,0xE5,0x29, //08E0 + 148 0x34,0x0C,0xFA,0xE4,0x35,0x28,0xF9,0xE4,0x35,0x27,0xF8,0xC3,0xE5,0x15,0x9B,0xF5, //08F0 + 149 0x15,0xE5,0x14,0x9A,0xF5,0x14,0xE5,0x13,0x99,0xF5,0x13,0xE5,0x12,0x98,0xF5,0x12, //0900 + 150 0x75,0x16,0x01,0x80,0x15,0xE4,0x25,0x26,0xF5,0x15,0xE5,0x25,0x34,0x84,0xF5,0x14, //0910 + 151 0xE4,0x35,0x24,0xF5,0x13,0xE4,0x35,0x23,0xF5,0x12,0xAF,0x15,0xAE,0x14,0xAD,0x13, //0920 + 152 0xAC,0x12,0x74,0x00,0x25,0x11,0xF5,0x82,0x74,0x00,0x35,0x10,0xF5,0x83,0xE0,0xF5, //0930 + 153 0x1B,0x85,0x16,0x1C,0x12,0x0B,0x15,0xAF,0x15,0xAE,0x14,0xAD,0x13,0xAC,0x12,0x85, //0940 + 154 0x16,0x1B,0x12,0x0D,0x94,0x74,0x00,0x25,0x11,0xF5,0x82,0x74,0x00,0x35,0x10,0xF5, //0950 + 155 0x83,0xE0,0x6F,0x60,0x04,0xC2,0x03,0x80,0x23,0xE5,0x26,0x24,0x01,0xF5,0x26,0xE4, //0960 + 156 0x35,0x25,0xF5,0x25,0xE4,0x35,0x24,0xF5,0x24,0xE4,0x35,0x23,0xF5,0x23,0x05,0x11, //0970 + 157 0xE5,0x11,0x60,0x03,0x02,0x08,0x9C,0x05,0x10,0x02,0x08,0x9C,0xA2,0x03,0x22,0x7E, //0980 + 158 0x00,0x7D,0x00,0x7C,0x00,0x90,0x02,0x09,0xE0,0xFF,0xE4,0x78,0x10,0x12,0x07,0x3C, //0990 + 159 0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xA3,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78, //09A0 + 160 0x18,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFF,0xEE, //09B0 + 161 0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07, //09C0 + 162 0x90,0x02,0x08,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78,0x08,0x12,0x07,0x3C,0xD0,0x03, //09D0 + 163 0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFB,0xEE,0x4A,0xFA,0xED,0x49,0xF9,0xEC, //09E0 + 164 0x48,0xF8,0x90,0x02,0x07,0xE0,0xFF,0xEB,0x4F,0xFF,0xEA,0xFE,0xE9,0xFD,0xE8,0xFC, //09F0 + 165 0xAB,0x30,0xAA,0x2F,0xA9,0x2E,0xA8,0x2D,0xC3,0x12,0x07,0x18,0x60,0x07,0x90,0x02, //0A00 + 166 0x06,0x74,0x08,0xF0,0x22,0xE4,0x90,0x02,0x06,0xF0,0x22,0xE4,0xF5,0x08,0xF5,0x09, //0A10 + 167 0x90,0x02,0x02,0xF0,0x90,0x02,0x05,0x74,0x0B,0xF0,0x90,0x02,0x03,0xE0,0xFF,0xA3, //0A20 + 168 0xE0,0x90,0x02,0x03,0xF0,0xA3,0xEF,0xF0,0x7F,0x02,0x90,0x02,0x02,0xE0,0xFE,0x24, //0A30 + 169 0x07,0xFD,0xE4,0x33,0xFC,0xEF,0xC3,0x9D,0xEC,0x64,0x80,0xF8,0x74,0x80,0x98,0x50, //0A40 + 170 0x17,0x74,0x00,0x2F,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0x25,0x09,0xF5,0x09, //0A50 + 171 0xE4,0x35,0x08,0xF5,0x08,0x0F,0x80,0xD2,0x74,0x07,0x2E,0xF5,0x82,0xE4,0x34,0x02, //0A60 + 172 0xF5,0x83,0xE5,0x09,0xF0,0xE5,0x08,0xFF,0x90,0x02,0x02,0xE0,0x24,0x08,0xF5,0x82, //0A70 + 173 0xE4,0x34,0x02,0xF5,0x83,0xEF,0xF0,0xC2,0x02,0xE4,0xF5,0x86,0xC2,0x9C,0x74,0x00, //0A80 + 174 0x25,0x2B,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0xF5,0x99,0x22,0xE4,0xF5,0x2B, //0A90 + 175 0x90,0x02,0x02,0xE0,0xFD,0x24,0x08,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0xFE, //0AA0 + 176 0x74,0x07,0x2D,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0x7C,0x00,0x24,0x00,0xFF, //0AB0 + C51 COMPILER V9.01 BOOTIAP 02/06/2025 15:28:46 PAGE 4 + + 177 0xEC,0x3E,0xFE,0xEF,0x65,0x32,0x70,0x03,0xEE,0x65,0x31,0x60,0x03,0x43,0x22,0x80, //0AC0 + 178 0xE5,0x22,0x60,0x06,0x90,0x02,0x06,0xF0,0x80,0x38,0x90,0x02,0x05,0xE0,0xFE,0xB4, //0AD0 + 179 0x06,0x05,0x12,0x0C,0xD5,0x80,0x2B,0xEE,0xB4,0x07,0x05,0x12,0x04,0x50,0x80,0x22, //0AE0 + 180 0x90,0x02,0x05,0xE0,0xB4,0x08,0x05,0x12,0x01,0xF1,0x80,0x16,0x90,0x02,0x05,0xE0, //0AF0 + 181 0xB4,0x09,0x05,0x12,0x09,0x8F,0x80,0x0A,0x90,0x02,0x05,0xE0,0xB4,0x0A,0x03,0x12, //0B00 + 182 0x0B,0xDE,0x02,0x0A,0x1B,0x8F,0x1A,0x8E,0x19,0x8D,0x18,0x8C,0x17,0x85,0x1C,0xA7, //0B10 + 183 0xAF,0x1A,0xAE,0x19,0xAD,0x18,0xAC,0x17,0x78,0x08,0x12,0x07,0x29,0x8F,0xF7,0xE5, //0B20 + 184 0x1A,0xFF,0x8F,0xFB,0x85,0x1B,0xFC,0x75,0xF2,0x6E,0x20,0xAF,0x3D,0x75,0xF3,0x05, //0B30 + 185 0xE5,0xA7,0x65,0x1C,0x70,0x34,0x75,0xF4,0x0A,0xE5,0x1D,0xB4,0x55,0x2C,0x75,0xF5, //0B40 + 186 0x09,0xAF,0x1A,0xAE,0x19,0xAD,0x18,0xAC,0x17,0x78,0x08,0x12,0x07,0x29,0xA8,0x04, //0B50 + 187 0xA9,0x05,0xAA,0x06,0xAB,0x07,0xAF,0xF7,0xE4,0xFC,0xFD,0xFE,0xC3,0x12,0x07,0x18, //0B60 + 188 0x70,0x08,0x75,0xF6,0x06,0x00,0x00,0x00,0x00,0x00,0xE4,0xF5,0xA7,0x22,0x8F,0x14, //0B70 + 189 0x8E,0x13,0x8D,0x12,0x8C,0x11,0x85,0x15,0xA7,0xAF,0x14,0xAE,0x13,0xAD,0x12,0xAC, //0B80 + 190 0x11,0x78,0x08,0x12,0x07,0x29,0x8F,0xF7,0x75,0xF2,0xE6,0x20,0xAF,0x3C,0x75,0xF3, //0B90 + 191 0x05,0xE5,0xA7,0x65,0x15,0x70,0x33,0x75,0xF4,0x0A,0xE5,0x1D,0xB4,0x55,0x2B,0x75, //0BA0 + 192 0xF5,0x09,0xAF,0x14,0xAE,0x13,0xAD,0x12,0xAC,0x11,0x78,0x08,0x12,0x07,0x29,0xA8, //0BB0 + 193 0x04,0xA9,0x05,0xAA,0x06,0xAB,0x07,0xAF,0xF7,0xE4,0xFC,0xFD,0xFE,0xC3,0x12,0x07, //0BC0 + 194 0x18,0x70,0x07,0x75,0xF6,0x06,0x00,0x00,0x00,0x00,0xE4,0xF5,0xA7,0x22,0xE4,0x90, //0BD0 + 195 0x02,0x06,0xF0,0x75,0x2C,0x0A,0x75,0x1D,0x55,0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC, //0BE0 + 196 0x12,0x0B,0x7E,0xE4,0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0C,0x8C,0x50,0x2A, //0BF0 + 197 0x20,0x01,0x30,0x75,0x1B,0x5A,0xE4,0xF5,0x1C,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12, //0C00 + 198 0x0B,0x15,0xE4,0xF5,0x1B,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94,0xEF,0x64, //0C10 + 199 0x5A,0x60,0x10,0x90,0x02,0x06,0x74,0x03,0x80,0x05,0x90,0x02,0x06,0x74,0x02,0xF0, //0C20 + 200 0xE4,0xF5,0x2C,0xE4,0xF5,0x1D,0x22,0x53,0xB1,0xF8,0x12,0x0D,0xAC,0xE4,0xF5,0x1B, //0C30 + 201 0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94,0xEF,0x64,0x5A,0x70,0x26,0xC2,0x01, //0C40 + 202 0x75,0x1D,0x55,0x12,0x0D,0x38,0x50,0x02,0x80,0x05,0x12,0x0D,0x38,0x50,0x05,0xE4, //0C50 + 203 0xF5,0x1D,0x80,0x24,0xE4,0xF5,0x1D,0x75,0x8E,0x55,0x43,0x87,0x02,0x00,0x00,0x00, //0C60 + 204 0x00,0x00,0x80,0xF0,0xE4,0xF5,0x1B,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94, //0C70 + 205 0xBF,0xA5,0x05,0xD2,0x01,0x02,0x00,0xA6,0x12,0x10,0x00,0x22,0x8F,0x14,0x8E,0x13, //0C80 + 206 0x8D,0x12,0x8C,0x11,0xD2,0x04,0x85,0x15,0xA7,0xE4,0xF5,0x16,0xF5,0x17,0xAE,0x16, //0C90 + 207 0xAF,0x17,0xE4,0xFC,0xFD,0xFB,0x7A,0x02,0xF9,0xF8,0xD3,0x12,0x07,0x18,0x40,0x1F, //0CA0 + 208 0xE5,0x17,0x25,0x14,0xFF,0xE5,0x16,0x35,0x13,0x8F,0x82,0xF5,0x83,0xE4,0x93,0x60, //0CB0 + 209 0x04,0xC2,0x04,0x80,0x0A,0x05,0x17,0xE5,0x17,0x70,0xD3,0x05,0x16,0x80,0xCF,0xE4, //0CC0 + 210 0xF5,0xA7,0xA2,0x04,0x22,0xE4,0x90,0x02,0x06,0xF0,0xA3,0xE0,0xFF,0xB4,0x49,0x0F, //0CD0 + 211 0xA3,0xE0,0xB4,0x41,0x0A,0xA3,0xE0,0xB4,0x50,0x05,0xC2,0x01,0xD2,0x00,0x22,0xEF, //0CE0 + 212 0xB4,0x49,0x11,0x90,0x02,0x08,0xE0,0xB4,0x53,0x0A,0xA3,0xE0,0xB4,0x50,0x05,0xD2, //0CF0 + 213 0x01,0xD2,0x00,0x22,0x90,0x02,0x06,0x74,0x0A,0xF0,0xC2,0x00,0x22,0x75,0x80,0xF8, //0D00 + 214 0x75,0xE1,0x8F,0x75,0xE9,0xC8,0x75,0x90,0x80,0x75,0xE2,0x7F,0x75,0xEA,0x80,0x75, //0D10 + 215 0xA0,0xE0,0x75,0xE3,0x3F,0x75,0xEB,0xC0,0x75,0xB0,0x19,0x75,0xE4,0xE6,0x75,0xEC, //0D20 + 216 0x19,0x43,0x80,0xC0,0x43,0xE9,0x80,0x22,0xD2,0x03,0x12,0x07,0x7C,0xEF,0x70,0x19, //0D30 + 217 0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0B,0x7E,0xE4,0xF5,0x15,0xFF,0x7E,0x0E, //0D40 + 218 0xFD,0xFC,0x12,0x0C,0x8C,0x92,0x03,0x80,0x02,0xC2,0x03,0xA2,0x03,0x22,0x75,0xC4, //0D50 + 219 0x32,0xE4,0xF5,0x87,0x75,0x98,0x50,0x75,0x9D,0x7F,0x75,0x9C,0x64,0x75,0x9E,0x04, //0D60 + 220 0x43,0x9D,0x80,0x75,0x9A,0x0A,0x75,0x9B,0xFF,0x22,0x75,0x81,0x7F,0x75,0xB2,0x08, //0D70 + 221 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0xB2,0x04,0x78,0xFF,0xE4,0xF6,0xD8, //0D80 + 222 0xFD,0x02,0x0C,0x37,0x8F,0x1A,0x8E,0x19,0x8D,0x18,0x8C,0x17,0xE4,0x85,0x1B,0xA7, //0D90 + 223 0x85,0x1A,0x82,0x85,0x19,0x83,0x93,0xFF,0xE4,0xF5,0xA7,0x22,0x12,0x0D,0xB5,0x12, //0DA0 + 224 0x0D,0x0D,0xC2,0x00,0x22,0xE4,0xF5,0xA8,0xF5,0xA9,0xF5,0xAA,0x22,0x00,0x00,0x00, //0DB0 + 225 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DC0 + 226 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DD0 + 227 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DE0 + 228 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DF0 + 229 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E00 + 230 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E10 + 231 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E20 + 232 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E30 + 233 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E40 + 234 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E50 + 235 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E60 + 236 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E70 + 237 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E80 + 238 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E90 + C51 COMPILER V9.01 BOOTIAP 02/06/2025 15:28:46 PAGE 5 + + 239 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EA0 + 240 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EB0 + 241 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EC0 + 242 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0ED0 + 243 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EE0 + 244 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EF0 + 245 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F00 + 246 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F10 + 247 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F20 + 248 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F30 + 249 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F40 + 250 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F50 + 251 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F60 + 252 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F70 + 253 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F80 + 254 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F90 + 255 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FA0 + 256 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FB0 + 257 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FC0 + 258 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FD0 + 259 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FE0 + 260 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //0FF0 + 261 }; + 262 + 263 + 264 + 265 + 266 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = 4096 ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/BootIAP.obj b/output/BootIAP.obj new file mode 100644 index 0000000..d15d93c Binary files /dev/null and b/output/BootIAP.obj differ diff --git a/output/BootLoad b/output/BootLoad new file mode 100644 index 0000000..76510af Binary files /dev/null and b/output/BootLoad differ diff --git a/output/BootLoad.build_log.htm b/output/BootLoad.build_log.htm new file mode 100644 index 0000000..b77bff1 --- /dev/null +++ b/output/BootLoad.build_log.htm @@ -0,0 +1,40 @@ + + +
+

礦ision Build Log

+

Tool Versions:

+IDE-Version: μVision V5.22.0.0 +Copyright (C) 2016 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: yang Microsoft, Microsoft, LIC=58E4T-RQU60-GVC1T-RJBYK-PG19C-5N7J7 + +Tool Versions: +Toolchain: PK51 Prof. Developers Kit Version: 9.01 +Toolchain Path: C:\Keil_v5\C51\BIN +C Compiler: C51.exe V9.01 +Assembler: A51.exe V8.02 +Linker/Locator: BL51.exe V6.22 +Library Manager: LIB51.exe V4.24 +Hex Converter: OH51.exe V2.6 +CPU DLL: S8051.DLL V3.72 +Dialog DLL: DP51.DLL V2.59 +Target DLL: SH51A.dll V1.0.0.0 +Dialog DLL: TP51.DLL V2.58 + +

Project:

+C:\Users\wenhua.wang\Desktop\demo方案&user guide优化\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231213\MCUCore.uvproj +Project File Date: 12/22/2023 + +

Output:

+Rebuild target 'BootLoad' +compiling Main.c... +compiling IapIsp.c... +compiling Flash.c... +assembling STARTUP.A51... +linking... +Program Size: data=176.5 xdata=662 code=3929 +creating hex file from ".\output\BootLoad"... +".\output\BootLoad" - 0 Error(s), 0 Warning(s). +Build Time Elapsed: 00:00:00 +
+ + diff --git a/output/BootLoad.hex b/output/BootLoad.hex new file mode 100644 index 0000000..6d2aa88 --- /dev/null +++ b/output/BootLoad.hex @@ -0,0 +1,254 @@ +:100D0D007580F875E18F75E9C875908075E27F750E +:100D1D00EA8075A0E075E33F75EBC075B01975E419 +:0B0D2D00E675EC194380C043E980220A +:080DB500E4F5A8F5A9F5AA2256 +:100D5E0075C432E4F587759850759D7F759C6475E2 +:0C0D6E009E04439D80759A0A759BFF222D +:090DAC00120DB5120D0DC200225A +:100C370053B1F8120DACE4F51B7FFF7E0FFDFC12DC +:100C47000D94EF645A7026C201751D55120D385068 +:100C5700028005120D385005E4F51D8024E4F51DCA +:100C6700758E55438702000000000080F0E4F51BF5 +:100C77007FFF7E0FFDFC120D94BFA505D201020078 +:050C8700A6121000227E +:100A1B00E4F508F509900202F0900205740BF090D2 +:100A2B000203E0FFA3E0900203F0A3EFF07F02903C +:100A3B000202E0FE2407FDE433FCEFC39DEC64806F +:100A4B00F8748098501774002FF582E43402F58304 +:100A5B00E02509F509E43508F5080F80D274072E57 +:100A6B00F582E43402F583E509F0E508FF90020214 +:100A7B00E02408F582E43402F583EFF0C202E4F5DA +:100A8B0086C29C7400252BF582E43402F583E0F5D5 +:010A9B0099C1 +:010A9C002237 +:100CD500E4900206F0A3E0FFB4490FA3E0B4410A93 +:100CE500A3E0B45005C201D20022EFB4491190022D +:100CF50008E0B4530AA3E0B45005D201D200229013 +:080D05000206740AF0C200228C +:10045000E4F526F525F524F523F530F52FF52EF5F1 +:100460002DF52AF529F528F527900209E0FFE4FC8F +:10047000FDFE781012073CC004C005C006C007A3EB +:10048000E0FFE4FCFDFE781812073CD003D002D058 +:1004900001D000EF4BFFEE4AFEED49FDEC48FCC0F9 +:1004A00004C005C006C007900208E0FFE4FCFDFEA2 +:1004B000780812073CD003D002D001D000EF4BFBEC +:1004C000EE4AFAED49F9EC48F8900207E0FFEB4FED +:1004D000F52AEAF529E9F528E8F527200006900233 +:1004E00006740AF0E4FF7E78FDFCAB2AAA29A9284D +:1004F000A827D312071840052001028017E4FF7EC9 +:10050000ECFDFCAB2AAA29A928A827D3120718407A +:100510000A3001079002067401F022E4900206F00E +:10052000F521751D55F515FF7E0EFDFC120B7EE4C1 +:10053000F515FF7E0EFDFC120C8C502B30012E7534 +:100540001BA5E4F51C7FFF7E0FFDFC120B15E4F5E7 +:100550001B7FFF7E0FFDFC120D94EF64A5600E90D3 +:1005600002067403F080069002067402F0E4F51DA2 +:10057000900206E06003020631FB7A02F9F8AF2A26 +:10058000AE29AD28AC271206868F09E4F508E508E8 +:10059000C395094003020637E4F50A300107F50E5A +:1005A000750D108006E4F50E750D84F50CF50BE560 +:1005B0000825E0FEE4FCFD250EF50EE50D3EF50DEB +:1005C000ED350CF50CEC350BF50B300135E5092458 +:1005D000FEFBE434FFFAED34FFF9EC34FFF8AF082A +:1005E000E4FED3120718501A750A01E5082402FF29 +:1005F000C3EF9509FFEF25E0FEE4F50E8E0DF50C37 +:10060000F50B751D55AF0EAE0DAD0CAC0B850A1577 +:10061000120B7EAF0EAE0DAD0CAC0B850A15120C95 +:100620008C40069002067402F0E4F51D05080205F0 +:070630008E9002067405F034 +:0106370022A0 +:10089500D203E4F510F511AE10AF11E4FCFDFB7ABF +:1008A50002F9F8D3120718500302098CE4F5163043 +:1008B500015E2526F515E5253410F514E43524F5F6 +:1008C50013E43523F512E4252AFFE529340CFEE46B +:1008D5003528FDE43527FCAB15AA14A913A812C3C6 +:1008E5001207184040E4252AFBE529340CFAE435C3 +:1008F50028F9E43527F8C3E5159BF515E5149AF5B0 +:1009050014E51399F513E51298F51275160180157E +:10091500E42526F515E5253484F514E43524F51389 +:10092500E43523F512AF15AE14AD13AC12740025E2 +:1009350011F58274003510F583E0F51B85161C1240 +:100945000B15AF15AE14AD13AC1285161B120D9415 +:1009550074002511F58274003510F583E06F60048D +:10096500C2038023E5262401F526E43525F525E493 +:100975003524F524E43523F5230511E5116003023B +:09098500089C051002089CA20365 +:01098E002246 +:1001F100C200900206E0FFC395214014E5212404CA +:10020100FDE433FCD3EF9DEC6480F8748098400AE0 +:10021100900206E060047405F022900206E0F521E8 +:10022100E4F0900202E070152526F526E52534025A +:10023100F525E43524F524E43523F52322E521547D +:1002410003F50AE4F508F509900202E0FD7C00C31C +:10025100E5099DE5089C503274072509F582E434CF +:1002610002F583E0FBAF0A7E00120638E5092FFF95 +:10027100E5083EFE74002FF58274003EF583EBF035 +:100281000509E50970C2050880BEE50A640360033B +:1002910002044F751D551208955003020386E4FFB1 +:1002A1007E02FDFCAB26AA25A924A823120718402B +:1002B1001AE5269400F526E5259402F525E5249412 +:1002C10000F524E5239400F5238009E4F526F525BE +:1002D100F524F523E4F50F30015E2526F50EE5251D +:1002E1003410F50DE43524F50CE43523F50BE42544 +:1002F1002AFFE529340CFEE43528FDE43527FCAB63 +:100301000EAA0DA90CA80BC31207184040E4252A18 +:10031100FBE529340CFAE43528F9E43527F8C3E57F +:100321000E9BF50EE50D9AF50DE50C99F50CE50B17 +:1003310098F50B750F018015E42526F50EE525349A +:1003410084F50DE43524F50CE43523F50B751D55C5 +:10035100AF0EAE0DAD0CAC0B850F15120B7EAF0EB3 +:10036100AE0DAD0CAC0B850F15120C8C500E120896 +:100371009540129002067403F002044C9002067438 +:1003810002F002044CE4F50A75F004E50AA4240223 +:10039100F582E5F03400F583E0FFE4FCFDFE781022 +:1003A10012073CC004C005C006C00775F004E50A89 +:1003B100A42403F582E5F03400F583E0FFE4FCFDBD +:1003C100FE781812073CD003D002D001D000EF4BC9 +:1003D100FFEE4AFEED49FDEC48FCC004C005C00635 +:1003E100C00775F004E50AA42401F582E5F03400A4 +:1003F100F583E0FFE4FCFDFE780812073CD003D052 +:1004010002D001D000EF4BFBEE4AFAED49F9EC487E +:10041100F875F004E50AA42400F582E5F03400F54E +:1004210083E0FFEB4FFFEAFEE9FDE8FCE5302FF545 +:1004310030E52F3EF52FE52E3DF52EE52D3CF52D32 +:0E044100050AE50A64806003020389E4F51DE4 +:01044F00228A +:10098F007E007D007C00900209E0FFE478101207E2 +:10099F003CC004C005C006C007A3E0FFE4FCFDFE99 +:1009AF00781812073CD003D002D001D000EF4BFFD4 +:1009BF00EE4AFEED49FDEC48FCC004C005C006C080 +:1009CF0007900208E0FFE4FCFDFE780812073CD018 +:1009DF0003D002D001D000EF4BFBEE4AFAED49F9FC +:1009EF00EC48F8900207E0FFEB4FFFEAFEE9FDE865 +:1009FF00FCAB30AA2FA92EA82DC3120718600790A1 +:0B0A0F0002067408F022E4900206F0DA +:010A1A0022B9 +:100BDE00E4900206F0752C0A751D55F515FF7E0E74 +:100BEE00FDFC120B7EE4F515FF7E0EFDFC120C8C47 +:100BFE00502A200130751B5AE4F51C7FFF7E0FFD35 +:100C0E00FC120B15E4F51B7FFF7E0FFDFC120D94FD +:100C1E00EF645A6010900206740380059002067409 +:090C2E0002F0E4F52CE4F51D22AE +:100A9D00E4F52B900202E0FD2408F582E43402F522 +:100AAD0083E0FE74072DF582E43402F583E07C00CB +:100ABD002400FFEC3EFEEF65327003EE65316003FE +:100ACD00432280E5226006900206F08038900205F0 +:100ADD00E0FEB40605120CD5802BEEB4070512040A +:100AED00508022900205E0B408051201F1801690A5 +:100AFD000205E0B4090512098F800A900205E0B4E1 +:080B0D000A03120BDE020A1BB1 +:1000A600E4F526F525F524F523F530F52FF52EF59F +:1000B6002DF52C120D5E20980302018E7400252B5F +:1000C600F582E43402F583E599F0052BE52BC3941C +:1000D6008C4003E4F52BE52BB4010D900200E0649F +:1000E6005A700302018C806BE52BB4021490020156 +:1000F600E064A56002805CE4F531F532F522020188 +:100106008C900202E0FF7E002409FDEE33FCAB2B4F +:100116007A00C3EB9DEC6480F87480985062EF24FB +:1001260007FFEE33FED3EB9FEE6480F874809850A1 +:100136001574FF252BF582E43401F583E02532F5AD +:1001460032E43531F531E52BB4050D900204E06457 +:10015600076033E4F52B802EE52B640670289002A9 +:1001660005E0FF6406601FEF6407601AEF6408602D +:1001760015EF64096010EF640A600B4322308006B5 +:1001860053B1F8120A9DC29830994453B1F89002BF +:1001960002E02408FFE433FEC3E52B9FEE6480F8FB +:1001A6007480984013E4F586D29CF52B900200F0FB +:1001B600A3F0A3F0D2028015052BE4F586C29C7449 +:1001C60000252BF582E43402F583E0F599C299E522 +:1001D6002C640A60030200BC53B1F820020302003B +:0B01E600BCC202F52C1200000200BC9D +:100B7E008F148E138D128C118515A7AF14AE13AD75 +:100B8E0012AC1178081207298FF775F2E620AF3CE8 +:100B9E0075F305E5A76515703375F40AE51DB455B3 +:100BAE002B75F509AF14AE13AD12AC117808120700 +:100BBE0029A804A905AA06AB07AFF7E4FCFDFEC3FE +:100BCE00120718700775F60600000000E4F5A7225C +:080C8C008F148E138D128C11E0 +:100C9400D2048515A7E4F516F517AE16AF17E4FCD4 +:100CA400FDFB7A02F9F8D3120718401FE517251443 +:100CB400FFE51635138F82F583E4936004C2048044 +:100CC4000A0517E51770D3051680CFE4F5A7A2042B +:010CD40022FD +:100B15008F1A8E198D188C17851CA7AF1AAE19ADB3 +:100B250018AC1778081207298FF7E51AFF8FFB8590 +:100B35001BFC75F26E20AF3D75F305E5A7651C70CE +:100B45003475F40AE51DB4552C75F509AF1AAE19BF +:100B5500AD18AC177808120729A804A905AA06AB91 +:100B650007AFF7E4FCFDFEC3120718700875F6061B +:090B75000000000000E4F5A722D5 +:080D94008F1A8E198D188C17BF +:0F0D9C00E4851BA7851A8285198393FFE4F5A7C9 +:010DAB002225 +:10077C00E4F50853B1F8E508C3943A501FE4F50AC0 +:10078C00AF08FE7C02FD12074FE42FF510EE34107B +:10079C00F50FE43DF50EE43CF50D8021750A01AF33 +:1007AC00087E007C027D0012074FE42FF510EE341A +:1007BC008CF50FED34FFF50EEC34FFF50D751D5572 +:1007CC00AF10AE0FAD0EAC0D850A15120B7EAF102F +:1007DC00AE0FAD0EAC0D850A15120C8C4003020841 +:1007EC0083E4F50BF50CAE0BAF0CE4FCFDFB7A02CD +:1007FC00F9F8D31207185003020886AF087E007C64 +:10080C00027D0012074FA804A905AA06AB07E42530 +:10081C000CFFE50B3484FEE433FDE433FCEB2FFFDB +:10082C00EA3EFEE93DFDE83CFCE4F51B120D948F1D +:10083C0009E50C2510FFE50B350FFEE4350EFDE444 +:10084C00350DFC85091B850A1C120B15E50C2510B2 +:10085C00FFE50B350FFEE4350EFDE4350DFC850A86 +:10086C001B120D94EF650960037F0222050CE50C49 +:10087C007002050B0207F27F01220508E508C394FC +:08088C003C500302077F7F00CE +:010894002241 +:100D3800D20312077CEF7019F515FF7E0EFDFC1229 +:100D48000B7EE4F515FF7E0EFDFC120C8C920380E1 +:050D580002C203A2032A +:010D5D002273 +:03000000020D7A74 +:100D7A0075817F75B208000000000000000043B2D0 +:0A0D8A000478FFE4F6D8FD020C37F0 +:03000300021003E5 +:03000B0002100BD5 +:03001300021013C5 +:03001B0002101BB5 +:03002300021023A5 +:03002B0002102B95 +:0300330002103385 +:03003B0002103B75 +:0300430002104365 +:03004B0002104B55 +:0300530002105345 +:03005B0002105B35 +:0300630002106325 +:03006B0002106B15 +:0300730002107305 +:03007B0002107BF5 +:03008300021083E5 +:03008B0002108BD5 +:03009300021093C5 +:03009B0002109BB5 +:0300A3000210A3A5 +:10063800EF8DF0A4A8F0CF8CF0A428CE8DF0A42ED6 +:02064800FE2290 +:10064A0075F008758200EF2FFFEE33FECD33CDCC67 +:10065A0033CCC58233C5829BED9AEC99E5829840EA +:10066A000CF582EE9BFEED9AFDEC99FC0FD5F0D6C7 +:10067A00E4CEFBE4CDFAE4CCF9A88222B800C1B9F1 +:10068A000059BA002DEC8BF084CFCECDFCE5F0CB2F +:10069A00F97818EF2FFFEE33FEED33FDEC33FCEB68 +:1006AA0033FB10D703994004EB99FB0FD8E5E4F923 +:1006BA00FA227818EF2FFFEE33FEED33FDEC33FC10 +:1006CA00C933C910D7059BE99A4007EC9BFCE99A04 +:1006DA00F90FD8E0E4C9FAE4CCFB2275F010EF2F49 +:1006EA00FFEE33FEED33FDCC33CCC833C810D70749 +:1006FA009BEC9AE899400AED9BFDEC9AFCE899F884 +:0E070A000FD5F0DAE4CDFBE4CCFAE4C8F92216 +:10071800EB9FF5F0EA9E42F0E99D42F0E89C45F037 +:0107280022AE +:10072900E8600FECC313FCED13FDEE13FEEF13FFAE +:03073900D8F122D2 +:10073C00E8600FEFC333FFEE33FEED33FDEC33FC1B +:03074C00D8F122BF +:10074F00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D37 +:10075F00FDE43CFCE8A42EC8C5F03DFDE43CFCEFF5 +:0D076F00A4FFE5F028FEE43DFDE43CFC2283 +:00000001FF diff --git a/output/BootLoad.hex.c b/output/BootLoad.hex.c new file mode 100644 index 0000000..d0757c7 --- /dev/null +++ b/output/BootLoad.hex.c @@ -0,0 +1,258 @@ +unsigned char code g_loadercode[4096]={ + 0x02,0x0D,0x7A,0x02,0x10,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x0B,0x00,0x00, //0000 + 0x00,0x00,0x00,0x02,0x10,0x13,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x1B,0x00,0x00, //0010 + 0x00,0x00,0x00,0x02,0x10,0x23,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x2B,0x00,0x00, //0020 + 0x00,0x00,0x00,0x02,0x10,0x33,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x3B,0x00,0x00, //0030 + 0x00,0x00,0x00,0x02,0x10,0x43,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x4B,0x00,0x00, //0040 + 0x00,0x00,0x00,0x02,0x10,0x53,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x5B,0x00,0x00, //0050 + 0x00,0x00,0x00,0x02,0x10,0x63,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x6B,0x00,0x00, //0060 + 0x00,0x00,0x00,0x02,0x10,0x73,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x7B,0x00,0x00, //0070 + 0x00,0x00,0x00,0x02,0x10,0x83,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x8B,0x00,0x00, //0080 + 0x00,0x00,0x00,0x02,0x10,0x93,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x9B,0x00,0x00, //0090 + 0x00,0x00,0x00,0x02,0x10,0xA3,0xE4,0xF5,0x26,0xF5,0x25,0xF5,0x24,0xF5,0x23,0xF5, //00A0 + 0x30,0xF5,0x2F,0xF5,0x2E,0xF5,0x2D,0xF5,0x2C,0x12,0x0D,0x5E,0x20,0x98,0x03,0x02, //00B0 + 0x01,0x8E,0x74,0x00,0x25,0x2B,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE5,0x99,0xF0, //00C0 + 0x05,0x2B,0xE5,0x2B,0xC3,0x94,0x8C,0x40,0x03,0xE4,0xF5,0x2B,0xE5,0x2B,0xB4,0x01, //00D0 + 0x0D,0x90,0x02,0x00,0xE0,0x64,0x5A,0x70,0x03,0x02,0x01,0x8C,0x80,0x6B,0xE5,0x2B, //00E0 + 0xB4,0x02,0x14,0x90,0x02,0x01,0xE0,0x64,0xA5,0x60,0x02,0x80,0x5C,0xE4,0xF5,0x31, //00F0 + 0xF5,0x32,0xF5,0x22,0x02,0x01,0x8C,0x90,0x02,0x02,0xE0,0xFF,0x7E,0x00,0x24,0x09, //0100 + 0xFD,0xEE,0x33,0xFC,0xAB,0x2B,0x7A,0x00,0xC3,0xEB,0x9D,0xEC,0x64,0x80,0xF8,0x74, //0110 + 0x80,0x98,0x50,0x62,0xEF,0x24,0x07,0xFF,0xEE,0x33,0xFE,0xD3,0xEB,0x9F,0xEE,0x64, //0120 + 0x80,0xF8,0x74,0x80,0x98,0x50,0x15,0x74,0xFF,0x25,0x2B,0xF5,0x82,0xE4,0x34,0x01, //0130 + 0xF5,0x83,0xE0,0x25,0x32,0xF5,0x32,0xE4,0x35,0x31,0xF5,0x31,0xE5,0x2B,0xB4,0x05, //0140 + 0x0D,0x90,0x02,0x04,0xE0,0x64,0x07,0x60,0x33,0xE4,0xF5,0x2B,0x80,0x2E,0xE5,0x2B, //0150 + 0x64,0x06,0x70,0x28,0x90,0x02,0x05,0xE0,0xFF,0x64,0x06,0x60,0x1F,0xEF,0x64,0x07, //0160 + 0x60,0x1A,0xEF,0x64,0x08,0x60,0x15,0xEF,0x64,0x09,0x60,0x10,0xEF,0x64,0x0A,0x60, //0170 + 0x0B,0x43,0x22,0x30,0x80,0x06,0x53,0xB1,0xF8,0x12,0x0A,0x9D,0xC2,0x98,0x30,0x99, //0180 + 0x44,0x53,0xB1,0xF8,0x90,0x02,0x02,0xE0,0x24,0x08,0xFF,0xE4,0x33,0xFE,0xC3,0xE5, //0190 + 0x2B,0x9F,0xEE,0x64,0x80,0xF8,0x74,0x80,0x98,0x40,0x13,0xE4,0xF5,0x86,0xD2,0x9C, //01A0 + 0xF5,0x2B,0x90,0x02,0x00,0xF0,0xA3,0xF0,0xA3,0xF0,0xD2,0x02,0x80,0x15,0x05,0x2B, //01B0 + 0xE4,0xF5,0x86,0xC2,0x9C,0x74,0x00,0x25,0x2B,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83, //01C0 + 0xE0,0xF5,0x99,0xC2,0x99,0xE5,0x2C,0x64,0x0A,0x60,0x03,0x02,0x00,0xBC,0x53,0xB1, //01D0 + 0xF8,0x20,0x02,0x03,0x02,0x00,0xBC,0xC2,0x02,0xF5,0x2C,0x12,0x00,0x00,0x02,0x00, //01E0 + 0xBC,0xC2,0x00,0x90,0x02,0x06,0xE0,0xFF,0xC3,0x95,0x21,0x40,0x14,0xE5,0x21,0x24, //01F0 + 0x04,0xFD,0xE4,0x33,0xFC,0xD3,0xEF,0x9D,0xEC,0x64,0x80,0xF8,0x74,0x80,0x98,0x40, //0200 + 0x0A,0x90,0x02,0x06,0xE0,0x60,0x04,0x74,0x05,0xF0,0x22,0x90,0x02,0x06,0xE0,0xF5, //0210 + 0x21,0xE4,0xF0,0x90,0x02,0x02,0xE0,0x70,0x15,0x25,0x26,0xF5,0x26,0xE5,0x25,0x34, //0220 + 0x02,0xF5,0x25,0xE4,0x35,0x24,0xF5,0x24,0xE4,0x35,0x23,0xF5,0x23,0x22,0xE5,0x21, //0230 + 0x54,0x03,0xF5,0x0A,0xE4,0xF5,0x08,0xF5,0x09,0x90,0x02,0x02,0xE0,0xFD,0x7C,0x00, //0240 + 0xC3,0xE5,0x09,0x9D,0xE5,0x08,0x9C,0x50,0x32,0x74,0x07,0x25,0x09,0xF5,0x82,0xE4, //0250 + 0x34,0x02,0xF5,0x83,0xE0,0xFB,0xAF,0x0A,0x7E,0x00,0x12,0x06,0x38,0xE5,0x09,0x2F, //0260 + 0xFF,0xE5,0x08,0x3E,0xFE,0x74,0x00,0x2F,0xF5,0x82,0x74,0x00,0x3E,0xF5,0x83,0xEB, //0270 + 0xF0,0x05,0x09,0xE5,0x09,0x70,0xC2,0x05,0x08,0x80,0xBE,0xE5,0x0A,0x64,0x03,0x60, //0280 + 0x03,0x02,0x04,0x4F,0x75,0x1D,0x55,0x12,0x08,0x95,0x50,0x03,0x02,0x03,0x86,0xE4, //0290 + 0xFF,0x7E,0x02,0xFD,0xFC,0xAB,0x26,0xAA,0x25,0xA9,0x24,0xA8,0x23,0x12,0x07,0x18, //02A0 + 0x40,0x1A,0xE5,0x26,0x94,0x00,0xF5,0x26,0xE5,0x25,0x94,0x02,0xF5,0x25,0xE5,0x24, //02B0 + 0x94,0x00,0xF5,0x24,0xE5,0x23,0x94,0x00,0xF5,0x23,0x80,0x09,0xE4,0xF5,0x26,0xF5, //02C0 + 0x25,0xF5,0x24,0xF5,0x23,0xE4,0xF5,0x0F,0x30,0x01,0x5E,0x25,0x26,0xF5,0x0E,0xE5, //02D0 + 0x25,0x34,0x10,0xF5,0x0D,0xE4,0x35,0x24,0xF5,0x0C,0xE4,0x35,0x23,0xF5,0x0B,0xE4, //02E0 + 0x25,0x2A,0xFF,0xE5,0x29,0x34,0x0C,0xFE,0xE4,0x35,0x28,0xFD,0xE4,0x35,0x27,0xFC, //02F0 + 0xAB,0x0E,0xAA,0x0D,0xA9,0x0C,0xA8,0x0B,0xC3,0x12,0x07,0x18,0x40,0x40,0xE4,0x25, //0300 + 0x2A,0xFB,0xE5,0x29,0x34,0x0C,0xFA,0xE4,0x35,0x28,0xF9,0xE4,0x35,0x27,0xF8,0xC3, //0310 + 0xE5,0x0E,0x9B,0xF5,0x0E,0xE5,0x0D,0x9A,0xF5,0x0D,0xE5,0x0C,0x99,0xF5,0x0C,0xE5, //0320 + 0x0B,0x98,0xF5,0x0B,0x75,0x0F,0x01,0x80,0x15,0xE4,0x25,0x26,0xF5,0x0E,0xE5,0x25, //0330 + 0x34,0x84,0xF5,0x0D,0xE4,0x35,0x24,0xF5,0x0C,0xE4,0x35,0x23,0xF5,0x0B,0x75,0x1D, //0340 + 0x55,0xAF,0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0F,0x15,0x12,0x0B,0x7E,0xAF, //0350 + 0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0F,0x15,0x12,0x0C,0x8C,0x50,0x0E,0x12, //0360 + 0x08,0x95,0x40,0x12,0x90,0x02,0x06,0x74,0x03,0xF0,0x02,0x04,0x4C,0x90,0x02,0x06, //0370 + 0x74,0x02,0xF0,0x02,0x04,0x4C,0xE4,0xF5,0x0A,0x75,0xF0,0x04,0xE5,0x0A,0xA4,0x24, //0380 + 0x02,0xF5,0x82,0xE5,0xF0,0x34,0x00,0xF5,0x83,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78, //0390 + 0x10,0x12,0x07,0x3C,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0x75,0xF0,0x04,0xE5, //03A0 + 0x0A,0xA4,0x24,0x03,0xF5,0x82,0xE5,0xF0,0x34,0x00,0xF5,0x83,0xE0,0xFF,0xE4,0xFC, //03B0 + 0xFD,0xFE,0x78,0x18,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF, //03C0 + 0x4B,0xFF,0xEE,0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0xC0,0x04,0xC0,0x05,0xC0, //03D0 + 0x06,0xC0,0x07,0x75,0xF0,0x04,0xE5,0x0A,0xA4,0x24,0x01,0xF5,0x82,0xE5,0xF0,0x34, //03E0 + 0x00,0xF5,0x83,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78,0x08,0x12,0x07,0x3C,0xD0,0x03, //03F0 + 0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFB,0xEE,0x4A,0xFA,0xED,0x49,0xF9,0xEC, //0400 + 0x48,0xF8,0x75,0xF0,0x04,0xE5,0x0A,0xA4,0x24,0x00,0xF5,0x82,0xE5,0xF0,0x34,0x00, //0410 + 0xF5,0x83,0xE0,0xFF,0xEB,0x4F,0xFF,0xEA,0xFE,0xE9,0xFD,0xE8,0xFC,0xE5,0x30,0x2F, //0420 + 0xF5,0x30,0xE5,0x2F,0x3E,0xF5,0x2F,0xE5,0x2E,0x3D,0xF5,0x2E,0xE5,0x2D,0x3C,0xF5, //0430 + 0x2D,0x05,0x0A,0xE5,0x0A,0x64,0x80,0x60,0x03,0x02,0x03,0x89,0xE4,0xF5,0x1D,0x22, //0440 + 0xE4,0xF5,0x26,0xF5,0x25,0xF5,0x24,0xF5,0x23,0xF5,0x30,0xF5,0x2F,0xF5,0x2E,0xF5, //0450 + 0x2D,0xF5,0x2A,0xF5,0x29,0xF5,0x28,0xF5,0x27,0x90,0x02,0x09,0xE0,0xFF,0xE4,0xFC, //0460 + 0xFD,0xFE,0x78,0x10,0x12,0x07,0x3C,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xA3, //0470 + 0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78,0x18,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0, //0480 + 0x01,0xD0,0x00,0xEF,0x4B,0xFF,0xEE,0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0xC0, //0490 + 0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0x90,0x02,0x08,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE, //04A0 + 0x78,0x08,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFB, //04B0 + 0xEE,0x4A,0xFA,0xED,0x49,0xF9,0xEC,0x48,0xF8,0x90,0x02,0x07,0xE0,0xFF,0xEB,0x4F, //04C0 + 0xF5,0x2A,0xEA,0xF5,0x29,0xE9,0xF5,0x28,0xE8,0xF5,0x27,0x20,0x00,0x06,0x90,0x02, //04D0 + 0x06,0x74,0x0A,0xF0,0xE4,0xFF,0x7E,0x78,0xFD,0xFC,0xAB,0x2A,0xAA,0x29,0xA9,0x28, //04E0 + 0xA8,0x27,0xD3,0x12,0x07,0x18,0x40,0x05,0x20,0x01,0x02,0x80,0x17,0xE4,0xFF,0x7E, //04F0 + 0xEC,0xFD,0xFC,0xAB,0x2A,0xAA,0x29,0xA9,0x28,0xA8,0x27,0xD3,0x12,0x07,0x18,0x40, //0500 + 0x0A,0x30,0x01,0x07,0x90,0x02,0x06,0x74,0x01,0xF0,0x22,0xE4,0x90,0x02,0x06,0xF0, //0510 + 0xF5,0x21,0x75,0x1D,0x55,0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0B,0x7E,0xE4, //0520 + 0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0C,0x8C,0x50,0x2B,0x30,0x01,0x2E,0x75, //0530 + 0x1B,0xA5,0xE4,0xF5,0x1C,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0B,0x15,0xE4,0xF5, //0540 + 0x1B,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94,0xEF,0x64,0xA5,0x60,0x0E,0x90, //0550 + 0x02,0x06,0x74,0x03,0xF0,0x80,0x06,0x90,0x02,0x06,0x74,0x02,0xF0,0xE4,0xF5,0x1D, //0560 + 0x90,0x02,0x06,0xE0,0x60,0x03,0x02,0x06,0x31,0xFB,0x7A,0x02,0xF9,0xF8,0xAF,0x2A, //0570 + 0xAE,0x29,0xAD,0x28,0xAC,0x27,0x12,0x06,0x86,0x8F,0x09,0xE4,0xF5,0x08,0xE5,0x08, //0580 + 0xC3,0x95,0x09,0x40,0x03,0x02,0x06,0x37,0xE4,0xF5,0x0A,0x30,0x01,0x07,0xF5,0x0E, //0590 + 0x75,0x0D,0x10,0x80,0x06,0xE4,0xF5,0x0E,0x75,0x0D,0x84,0xF5,0x0C,0xF5,0x0B,0xE5, //05A0 + 0x08,0x25,0xE0,0xFE,0xE4,0xFC,0xFD,0x25,0x0E,0xF5,0x0E,0xE5,0x0D,0x3E,0xF5,0x0D, //05B0 + 0xED,0x35,0x0C,0xF5,0x0C,0xEC,0x35,0x0B,0xF5,0x0B,0x30,0x01,0x35,0xE5,0x09,0x24, //05C0 + 0xFE,0xFB,0xE4,0x34,0xFF,0xFA,0xED,0x34,0xFF,0xF9,0xEC,0x34,0xFF,0xF8,0xAF,0x08, //05D0 + 0xE4,0xFE,0xD3,0x12,0x07,0x18,0x50,0x1A,0x75,0x0A,0x01,0xE5,0x08,0x24,0x02,0xFF, //05E0 + 0xC3,0xEF,0x95,0x09,0xFF,0xEF,0x25,0xE0,0xFE,0xE4,0xF5,0x0E,0x8E,0x0D,0xF5,0x0C, //05F0 + 0xF5,0x0B,0x75,0x1D,0x55,0xAF,0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0A,0x15, //0600 + 0x12,0x0B,0x7E,0xAF,0x0E,0xAE,0x0D,0xAD,0x0C,0xAC,0x0B,0x85,0x0A,0x15,0x12,0x0C, //0610 + 0x8C,0x40,0x06,0x90,0x02,0x06,0x74,0x02,0xF0,0xE4,0xF5,0x1D,0x05,0x08,0x02,0x05, //0620 + 0x8E,0x90,0x02,0x06,0x74,0x05,0xF0,0x22,0xEF,0x8D,0xF0,0xA4,0xA8,0xF0,0xCF,0x8C, //0630 + 0xF0,0xA4,0x28,0xCE,0x8D,0xF0,0xA4,0x2E,0xFE,0x22,0x75,0xF0,0x08,0x75,0x82,0x00, //0640 + 0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,0x33,0xC5, //0650 + 0x82,0x9B,0xED,0x9A,0xEC,0x99,0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,0x9B,0xFE, //0660 + 0xED,0x9A,0xFD,0xEC,0x99,0xFC,0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,0xCD,0xFA, //0670 + 0xE4,0xCC,0xF9,0xA8,0x82,0x22,0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,0x2D,0xEC, //0680 + 0x8B,0xF0,0x84,0xCF,0xCE,0xCD,0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,0x2F,0xFF, //0690 + 0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,0x03,0x99, //06A0 + 0x40,0x04,0xEB,0x99,0xFB,0x0F,0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,0xEF,0x2F, //06B0 + 0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,0xD7,0x05, //06C0 + 0x9B,0xE9,0x9A,0x40,0x07,0xEC,0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,0xE4,0xC9, //06D0 + 0xFA,0xE4,0xCC,0xFB,0x22,0x75,0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33, //06E0 + 0xFD,0xCC,0x33,0xCC,0xC8,0x33,0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,0x99,0x40, //06F0 + 0x0A,0xED,0x9B,0xFD,0xEC,0x9A,0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,0xE4,0xCD, //0700 + 0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,0x42,0xF0, //0710 + 0xE9,0x9D,0x42,0xF0,0xE8,0x9C,0x45,0xF0,0x22,0xE8,0x60,0x0F,0xEC,0xC3,0x13,0xFC, //0720 + 0xED,0x13,0xFD,0xEE,0x13,0xFE,0xEF,0x13,0xFF,0xD8,0xF1,0x22,0xE8,0x60,0x0F,0xEF, //0730 + 0xC3,0x33,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xD8,0xF1,0x22,0xEC, //0740 + 0x8E,0xF0,0xA4,0xCC,0xC5,0xF0,0xCC,0xCD,0xF8,0xEF,0xA4,0xCE,0xC5,0xF0,0x2D,0xFD, //0750 + 0xE4,0x3C,0xFC,0xE8,0xA4,0x2E,0xC8,0xC5,0xF0,0x3D,0xFD,0xE4,0x3C,0xFC,0xEF,0xA4, //0760 + 0xFF,0xE5,0xF0,0x28,0xFE,0xE4,0x3D,0xFD,0xE4,0x3C,0xFC,0x22,0xE4,0xF5,0x08,0x53, //0770 + 0xB1,0xF8,0xE5,0x08,0xC3,0x94,0x3A,0x50,0x1F,0xE4,0xF5,0x0A,0xAF,0x08,0xFE,0x7C, //0780 + 0x02,0xFD,0x12,0x07,0x4F,0xE4,0x2F,0xF5,0x10,0xEE,0x34,0x10,0xF5,0x0F,0xE4,0x3D, //0790 + 0xF5,0x0E,0xE4,0x3C,0xF5,0x0D,0x80,0x21,0x75,0x0A,0x01,0xAF,0x08,0x7E,0x00,0x7C, //07A0 + 0x02,0x7D,0x00,0x12,0x07,0x4F,0xE4,0x2F,0xF5,0x10,0xEE,0x34,0x8C,0xF5,0x0F,0xED, //07B0 + 0x34,0xFF,0xF5,0x0E,0xEC,0x34,0xFF,0xF5,0x0D,0x75,0x1D,0x55,0xAF,0x10,0xAE,0x0F, //07C0 + 0xAD,0x0E,0xAC,0x0D,0x85,0x0A,0x15,0x12,0x0B,0x7E,0xAF,0x10,0xAE,0x0F,0xAD,0x0E, //07D0 + 0xAC,0x0D,0x85,0x0A,0x15,0x12,0x0C,0x8C,0x40,0x03,0x02,0x08,0x83,0xE4,0xF5,0x0B, //07E0 + 0xF5,0x0C,0xAE,0x0B,0xAF,0x0C,0xE4,0xFC,0xFD,0xFB,0x7A,0x02,0xF9,0xF8,0xD3,0x12, //07F0 + 0x07,0x18,0x50,0x03,0x02,0x08,0x86,0xAF,0x08,0x7E,0x00,0x7C,0x02,0x7D,0x00,0x12, //0800 + 0x07,0x4F,0xA8,0x04,0xA9,0x05,0xAA,0x06,0xAB,0x07,0xE4,0x25,0x0C,0xFF,0xE5,0x0B, //0810 + 0x34,0x84,0xFE,0xE4,0x33,0xFD,0xE4,0x33,0xFC,0xEB,0x2F,0xFF,0xEA,0x3E,0xFE,0xE9, //0820 + 0x3D,0xFD,0xE8,0x3C,0xFC,0xE4,0xF5,0x1B,0x12,0x0D,0x94,0x8F,0x09,0xE5,0x0C,0x25, //0830 + 0x10,0xFF,0xE5,0x0B,0x35,0x0F,0xFE,0xE4,0x35,0x0E,0xFD,0xE4,0x35,0x0D,0xFC,0x85, //0840 + 0x09,0x1B,0x85,0x0A,0x1C,0x12,0x0B,0x15,0xE5,0x0C,0x25,0x10,0xFF,0xE5,0x0B,0x35, //0850 + 0x0F,0xFE,0xE4,0x35,0x0E,0xFD,0xE4,0x35,0x0D,0xFC,0x85,0x0A,0x1B,0x12,0x0D,0x94, //0860 + 0xEF,0x65,0x09,0x60,0x03,0x7F,0x02,0x22,0x05,0x0C,0xE5,0x0C,0x70,0x02,0x05,0x0B, //0870 + 0x02,0x07,0xF2,0x7F,0x01,0x22,0x05,0x08,0xE5,0x08,0xC3,0x94,0x3C,0x50,0x03,0x02, //0880 + 0x07,0x7F,0x7F,0x00,0x22,0xD2,0x03,0xE4,0xF5,0x10,0xF5,0x11,0xAE,0x10,0xAF,0x11, //0890 + 0xE4,0xFC,0xFD,0xFB,0x7A,0x02,0xF9,0xF8,0xD3,0x12,0x07,0x18,0x50,0x03,0x02,0x09, //08A0 + 0x8C,0xE4,0xF5,0x16,0x30,0x01,0x5E,0x25,0x26,0xF5,0x15,0xE5,0x25,0x34,0x10,0xF5, //08B0 + 0x14,0xE4,0x35,0x24,0xF5,0x13,0xE4,0x35,0x23,0xF5,0x12,0xE4,0x25,0x2A,0xFF,0xE5, //08C0 + 0x29,0x34,0x0C,0xFE,0xE4,0x35,0x28,0xFD,0xE4,0x35,0x27,0xFC,0xAB,0x15,0xAA,0x14, //08D0 + 0xA9,0x13,0xA8,0x12,0xC3,0x12,0x07,0x18,0x40,0x40,0xE4,0x25,0x2A,0xFB,0xE5,0x29, //08E0 + 0x34,0x0C,0xFA,0xE4,0x35,0x28,0xF9,0xE4,0x35,0x27,0xF8,0xC3,0xE5,0x15,0x9B,0xF5, //08F0 + 0x15,0xE5,0x14,0x9A,0xF5,0x14,0xE5,0x13,0x99,0xF5,0x13,0xE5,0x12,0x98,0xF5,0x12, //0900 + 0x75,0x16,0x01,0x80,0x15,0xE4,0x25,0x26,0xF5,0x15,0xE5,0x25,0x34,0x84,0xF5,0x14, //0910 + 0xE4,0x35,0x24,0xF5,0x13,0xE4,0x35,0x23,0xF5,0x12,0xAF,0x15,0xAE,0x14,0xAD,0x13, //0920 + 0xAC,0x12,0x74,0x00,0x25,0x11,0xF5,0x82,0x74,0x00,0x35,0x10,0xF5,0x83,0xE0,0xF5, //0930 + 0x1B,0x85,0x16,0x1C,0x12,0x0B,0x15,0xAF,0x15,0xAE,0x14,0xAD,0x13,0xAC,0x12,0x85, //0940 + 0x16,0x1B,0x12,0x0D,0x94,0x74,0x00,0x25,0x11,0xF5,0x82,0x74,0x00,0x35,0x10,0xF5, //0950 + 0x83,0xE0,0x6F,0x60,0x04,0xC2,0x03,0x80,0x23,0xE5,0x26,0x24,0x01,0xF5,0x26,0xE4, //0960 + 0x35,0x25,0xF5,0x25,0xE4,0x35,0x24,0xF5,0x24,0xE4,0x35,0x23,0xF5,0x23,0x05,0x11, //0970 + 0xE5,0x11,0x60,0x03,0x02,0x08,0x9C,0x05,0x10,0x02,0x08,0x9C,0xA2,0x03,0x22,0x7E, //0980 + 0x00,0x7D,0x00,0x7C,0x00,0x90,0x02,0x09,0xE0,0xFF,0xE4,0x78,0x10,0x12,0x07,0x3C, //0990 + 0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07,0xA3,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78, //09A0 + 0x18,0x12,0x07,0x3C,0xD0,0x03,0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFF,0xEE, //09B0 + 0x4A,0xFE,0xED,0x49,0xFD,0xEC,0x48,0xFC,0xC0,0x04,0xC0,0x05,0xC0,0x06,0xC0,0x07, //09C0 + 0x90,0x02,0x08,0xE0,0xFF,0xE4,0xFC,0xFD,0xFE,0x78,0x08,0x12,0x07,0x3C,0xD0,0x03, //09D0 + 0xD0,0x02,0xD0,0x01,0xD0,0x00,0xEF,0x4B,0xFB,0xEE,0x4A,0xFA,0xED,0x49,0xF9,0xEC, //09E0 + 0x48,0xF8,0x90,0x02,0x07,0xE0,0xFF,0xEB,0x4F,0xFF,0xEA,0xFE,0xE9,0xFD,0xE8,0xFC, //09F0 + 0xAB,0x30,0xAA,0x2F,0xA9,0x2E,0xA8,0x2D,0xC3,0x12,0x07,0x18,0x60,0x07,0x90,0x02, //0A00 + 0x06,0x74,0x08,0xF0,0x22,0xE4,0x90,0x02,0x06,0xF0,0x22,0xE4,0xF5,0x08,0xF5,0x09, //0A10 + 0x90,0x02,0x02,0xF0,0x90,0x02,0x05,0x74,0x0B,0xF0,0x90,0x02,0x03,0xE0,0xFF,0xA3, //0A20 + 0xE0,0x90,0x02,0x03,0xF0,0xA3,0xEF,0xF0,0x7F,0x02,0x90,0x02,0x02,0xE0,0xFE,0x24, //0A30 + 0x07,0xFD,0xE4,0x33,0xFC,0xEF,0xC3,0x9D,0xEC,0x64,0x80,0xF8,0x74,0x80,0x98,0x50, //0A40 + 0x17,0x74,0x00,0x2F,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0x25,0x09,0xF5,0x09, //0A50 + 0xE4,0x35,0x08,0xF5,0x08,0x0F,0x80,0xD2,0x74,0x07,0x2E,0xF5,0x82,0xE4,0x34,0x02, //0A60 + 0xF5,0x83,0xE5,0x09,0xF0,0xE5,0x08,0xFF,0x90,0x02,0x02,0xE0,0x24,0x08,0xF5,0x82, //0A70 + 0xE4,0x34,0x02,0xF5,0x83,0xEF,0xF0,0xC2,0x02,0xE4,0xF5,0x86,0xC2,0x9C,0x74,0x00, //0A80 + 0x25,0x2B,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0xF5,0x99,0x22,0xE4,0xF5,0x2B, //0A90 + 0x90,0x02,0x02,0xE0,0xFD,0x24,0x08,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0xFE, //0AA0 + 0x74,0x07,0x2D,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0x7C,0x00,0x24,0x00,0xFF, //0AB0 + 0xEC,0x3E,0xFE,0xEF,0x65,0x32,0x70,0x03,0xEE,0x65,0x31,0x60,0x03,0x43,0x22,0x80, //0AC0 + 0xE5,0x22,0x60,0x06,0x90,0x02,0x06,0xF0,0x80,0x38,0x90,0x02,0x05,0xE0,0xFE,0xB4, //0AD0 + 0x06,0x05,0x12,0x0C,0xD5,0x80,0x2B,0xEE,0xB4,0x07,0x05,0x12,0x04,0x50,0x80,0x22, //0AE0 + 0x90,0x02,0x05,0xE0,0xB4,0x08,0x05,0x12,0x01,0xF1,0x80,0x16,0x90,0x02,0x05,0xE0, //0AF0 + 0xB4,0x09,0x05,0x12,0x09,0x8F,0x80,0x0A,0x90,0x02,0x05,0xE0,0xB4,0x0A,0x03,0x12, //0B00 + 0x0B,0xDE,0x02,0x0A,0x1B,0x8F,0x1A,0x8E,0x19,0x8D,0x18,0x8C,0x17,0x85,0x1C,0xA7, //0B10 + 0xAF,0x1A,0xAE,0x19,0xAD,0x18,0xAC,0x17,0x78,0x08,0x12,0x07,0x29,0x8F,0xF7,0xE5, //0B20 + 0x1A,0xFF,0x8F,0xFB,0x85,0x1B,0xFC,0x75,0xF2,0x6E,0x20,0xAF,0x3D,0x75,0xF3,0x05, //0B30 + 0xE5,0xA7,0x65,0x1C,0x70,0x34,0x75,0xF4,0x0A,0xE5,0x1D,0xB4,0x55,0x2C,0x75,0xF5, //0B40 + 0x09,0xAF,0x1A,0xAE,0x19,0xAD,0x18,0xAC,0x17,0x78,0x08,0x12,0x07,0x29,0xA8,0x04, //0B50 + 0xA9,0x05,0xAA,0x06,0xAB,0x07,0xAF,0xF7,0xE4,0xFC,0xFD,0xFE,0xC3,0x12,0x07,0x18, //0B60 + 0x70,0x08,0x75,0xF6,0x06,0x00,0x00,0x00,0x00,0x00,0xE4,0xF5,0xA7,0x22,0x8F,0x14, //0B70 + 0x8E,0x13,0x8D,0x12,0x8C,0x11,0x85,0x15,0xA7,0xAF,0x14,0xAE,0x13,0xAD,0x12,0xAC, //0B80 + 0x11,0x78,0x08,0x12,0x07,0x29,0x8F,0xF7,0x75,0xF2,0xE6,0x20,0xAF,0x3C,0x75,0xF3, //0B90 + 0x05,0xE5,0xA7,0x65,0x15,0x70,0x33,0x75,0xF4,0x0A,0xE5,0x1D,0xB4,0x55,0x2B,0x75, //0BA0 + 0xF5,0x09,0xAF,0x14,0xAE,0x13,0xAD,0x12,0xAC,0x11,0x78,0x08,0x12,0x07,0x29,0xA8, //0BB0 + 0x04,0xA9,0x05,0xAA,0x06,0xAB,0x07,0xAF,0xF7,0xE4,0xFC,0xFD,0xFE,0xC3,0x12,0x07, //0BC0 + 0x18,0x70,0x07,0x75,0xF6,0x06,0x00,0x00,0x00,0x00,0xE4,0xF5,0xA7,0x22,0xE4,0x90, //0BD0 + 0x02,0x06,0xF0,0x75,0x2C,0x0A,0x75,0x1D,0x55,0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC, //0BE0 + 0x12,0x0B,0x7E,0xE4,0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0C,0x8C,0x50,0x2A, //0BF0 + 0x20,0x01,0x30,0x75,0x1B,0x5A,0xE4,0xF5,0x1C,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12, //0C00 + 0x0B,0x15,0xE4,0xF5,0x1B,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94,0xEF,0x64, //0C10 + 0x5A,0x60,0x10,0x90,0x02,0x06,0x74,0x03,0x80,0x05,0x90,0x02,0x06,0x74,0x02,0xF0, //0C20 + 0xE4,0xF5,0x2C,0xE4,0xF5,0x1D,0x22,0x53,0xB1,0xF8,0x12,0x0D,0xAC,0xE4,0xF5,0x1B, //0C30 + 0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94,0xEF,0x64,0x5A,0x70,0x26,0xC2,0x01, //0C40 + 0x75,0x1D,0x55,0x12,0x0D,0x38,0x50,0x02,0x80,0x05,0x12,0x0D,0x38,0x50,0x05,0xE4, //0C50 + 0xF5,0x1D,0x80,0x24,0xE4,0xF5,0x1D,0x75,0x8E,0x55,0x43,0x87,0x02,0x00,0x00,0x00, //0C60 + 0x00,0x00,0x80,0xF0,0xE4,0xF5,0x1B,0x7F,0xFF,0x7E,0x0F,0xFD,0xFC,0x12,0x0D,0x94, //0C70 + 0xBF,0xA5,0x05,0xD2,0x01,0x02,0x00,0xA6,0x12,0x10,0x00,0x22,0x8F,0x14,0x8E,0x13, //0C80 + 0x8D,0x12,0x8C,0x11,0xD2,0x04,0x85,0x15,0xA7,0xE4,0xF5,0x16,0xF5,0x17,0xAE,0x16, //0C90 + 0xAF,0x17,0xE4,0xFC,0xFD,0xFB,0x7A,0x02,0xF9,0xF8,0xD3,0x12,0x07,0x18,0x40,0x1F, //0CA0 + 0xE5,0x17,0x25,0x14,0xFF,0xE5,0x16,0x35,0x13,0x8F,0x82,0xF5,0x83,0xE4,0x93,0x60, //0CB0 + 0x04,0xC2,0x04,0x80,0x0A,0x05,0x17,0xE5,0x17,0x70,0xD3,0x05,0x16,0x80,0xCF,0xE4, //0CC0 + 0xF5,0xA7,0xA2,0x04,0x22,0xE4,0x90,0x02,0x06,0xF0,0xA3,0xE0,0xFF,0xB4,0x49,0x0F, //0CD0 + 0xA3,0xE0,0xB4,0x41,0x0A,0xA3,0xE0,0xB4,0x50,0x05,0xC2,0x01,0xD2,0x00,0x22,0xEF, //0CE0 + 0xB4,0x49,0x11,0x90,0x02,0x08,0xE0,0xB4,0x53,0x0A,0xA3,0xE0,0xB4,0x50,0x05,0xD2, //0CF0 + 0x01,0xD2,0x00,0x22,0x90,0x02,0x06,0x74,0x0A,0xF0,0xC2,0x00,0x22,0x75,0x80,0xF8, //0D00 + 0x75,0xE1,0x8F,0x75,0xE9,0xC8,0x75,0x90,0x80,0x75,0xE2,0x7F,0x75,0xEA,0x80,0x75, //0D10 + 0xA0,0xE0,0x75,0xE3,0x3F,0x75,0xEB,0xC0,0x75,0xB0,0x19,0x75,0xE4,0xE6,0x75,0xEC, //0D20 + 0x19,0x43,0x80,0xC0,0x43,0xE9,0x80,0x22,0xD2,0x03,0x12,0x07,0x7C,0xEF,0x70,0x19, //0D30 + 0xF5,0x15,0xFF,0x7E,0x0E,0xFD,0xFC,0x12,0x0B,0x7E,0xE4,0xF5,0x15,0xFF,0x7E,0x0E, //0D40 + 0xFD,0xFC,0x12,0x0C,0x8C,0x92,0x03,0x80,0x02,0xC2,0x03,0xA2,0x03,0x22,0x75,0xC4, //0D50 + 0x32,0xE4,0xF5,0x87,0x75,0x98,0x50,0x75,0x9D,0x7F,0x75,0x9C,0x64,0x75,0x9E,0x04, //0D60 + 0x43,0x9D,0x80,0x75,0x9A,0x0A,0x75,0x9B,0xFF,0x22,0x75,0x81,0x7F,0x75,0xB2,0x08, //0D70 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0xB2,0x04,0x78,0xFF,0xE4,0xF6,0xD8, //0D80 + 0xFD,0x02,0x0C,0x37,0x8F,0x1A,0x8E,0x19,0x8D,0x18,0x8C,0x17,0xE4,0x85,0x1B,0xA7, //0D90 + 0x85,0x1A,0x82,0x85,0x19,0x83,0x93,0xFF,0xE4,0xF5,0xA7,0x22,0x12,0x0D,0xB5,0x12, //0DA0 + 0x0D,0x0D,0xC2,0x00,0x22,0xE4,0xF5,0xA8,0xF5,0xA9,0xF5,0xAA,0x22,0x00,0x00,0x00, //0DB0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DC0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DD0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DE0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0DF0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E00 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E10 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E20 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E30 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E40 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E50 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E60 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E70 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E80 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0E90 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EA0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EB0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EC0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0ED0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EE0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0EF0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F00 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F10 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F20 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F30 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F40 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F50 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F60 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F70 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F80 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0F90 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FA0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FB0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FC0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FD0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0FE0 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //0FF0 +}; diff --git a/output/BootLoad.lnp b/output/BootLoad.lnp new file mode 100644 index 0000000..8459e00 --- /dev/null +++ b/output/BootLoad.lnp @@ -0,0 +1,8 @@ +".\output\Main.obj", +".\output\IapIsp.obj", +".\output\Flash.obj", +".\output\STARTUP.obj" +TO ".\output\BootLoad" +PRINT(".\output\BootLoad.m51") RAMSIZE(256) +DISABLEWARNING (16) +CODE( 0X0000-0X0FFF , ?PR?BOOTIAPISP?IAPISP(0xA6) ) diff --git a/output/BootLoad.m51 b/output/BootLoad.m51 new file mode 100644 index 0000000..f301b90 --- /dev/null +++ b/output/BootLoad.m51 @@ -0,0 +1,1105 @@ +BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 1 + + +BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: +C:\KEIL_V5\C51\BIN\BL51.EXE .\output\Main.obj, .\output\IapIsp.obj, .\output\Flash.obj, .\output\STARTUP.obj TO .\output +>> \BootLoad PRINT (.\output\BootLoad.m51) RAMSIZE (256) DISABLEWARNING (16) CODE (0X0000-0X0FFF, ?PR?BOOTIAPISP?IAPISP +>> (0XA6)) + + +MEMORY MODEL: SMALL + + +INPUT MODULES INCLUDED: + .\output\Main.obj (MAIN) + .\output\IapIsp.obj (IAPISP) + .\output\Flash.obj (FLASH) + .\output\STARTUP.obj (?C_STARTUP) + C:\KEIL_V5\C51\LIB\C51S.LIB (?C?IMUL) + C:\KEIL_V5\C51\LIB\C51S.LIB (?C?ULDIV) + C:\KEIL_V5\C51\LIB\C51S.LIB (?C?ULCMP) + C:\KEIL_V5\C51\LIB\C51S.LIB (?C?ULSHR) + C:\KEIL_V5\C51\LIB\C51S.LIB (?C?LSHL) + C:\KEIL_V5\C51\LIB\C51S.LIB (?C?LIMUL) + + +LINK MAP OF MODULE: .\output\BootLoad (MAIN) + + + TYPE BASE LENGTH RELOCATION SEGMENT NAME + ----------------------------------------------------- + + * * * * * * * D A T A M E M O R Y * * * * * * * + REG 0000H 0008H ABSOLUTE "REG BANK 0" + DATA 0008H 0015H UNIT _DATA_GROUP_ + DATA 001DH 0001H UNIT ?DT?FLASH + 001EH 0002H *** GAP *** + BIT 0020H.0 0000H.3 UNIT ?BI?IAPISP + BIT 0020H.3 0000H.2 UNIT _BIT_GROUP_ + 0020H.5 0000H.3 *** GAP *** + DATA 0021H 0012H UNIT ?DT?IAPISP + 0033H 004DH *** GAP *** + IDATA 0080H 0080H ABSOLUTE + + * * * * * * * X D A T A M E M O R Y * * * * * * * + XDATA 0000H 0296H UNIT ?XD?IAPISP + + * * * * * * * C O D E M E M O R Y * * * * * * * + CODE 0000H 0003H ABSOLUTE + CODE 0003H 0003H ABSOLUTE + 0006H 0005H *** GAP *** + CODE 000BH 0003H ABSOLUTE + 000EH 0005H *** GAP *** + CODE 0013H 0003H ABSOLUTE + 0016H 0005H *** GAP *** + CODE 001BH 0003H ABSOLUTE + 001EH 0005H *** GAP *** + CODE 0023H 0003H ABSOLUTE + 0026H 0005H *** GAP *** + CODE 002BH 0003H ABSOLUTE + 002EH 0005H *** GAP *** + CODE 0033H 0003H ABSOLUTE + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 2 + + + 0036H 0005H *** GAP *** + CODE 003BH 0003H ABSOLUTE + 003EH 0005H *** GAP *** + CODE 0043H 0003H ABSOLUTE + 0046H 0005H *** GAP *** + CODE 004BH 0003H ABSOLUTE + 004EH 0005H *** GAP *** + CODE 0053H 0003H ABSOLUTE + 0056H 0005H *** GAP *** + CODE 005BH 0003H ABSOLUTE + 005EH 0005H *** GAP *** + CODE 0063H 0003H ABSOLUTE + 0066H 0005H *** GAP *** + CODE 006BH 0003H ABSOLUTE + 006EH 0005H *** GAP *** + CODE 0073H 0003H ABSOLUTE + 0076H 0005H *** GAP *** + CODE 007BH 0003H ABSOLUTE + 007EH 0005H *** GAP *** + CODE 0083H 0003H ABSOLUTE + 0086H 0005H *** GAP *** + CODE 008BH 0003H ABSOLUTE + 008EH 0005H *** GAP *** + CODE 0093H 0003H ABSOLUTE + 0096H 0005H *** GAP *** + CODE 009BH 0003H ABSOLUTE + 009EH 0005H *** GAP *** + CODE 00A3H 0003H ABSOLUTE + CODE 00A6H 014BH UNIT ?PR?BOOTIAPISP?IAPISP + CODE 01F1H 025FH UNIT ?PR?IAPRECEIVEDATA?IAPISP + CODE 0450H 01E8H UNIT ?PR?IAPBEGINACK?IAPISP + CODE 0638H 0144H UNIT ?C?LIB_CODE + CODE 077CH 0119H UNIT ?PR?BOOTPROGRAM?FLASH + CODE 0895H 00FAH UNIT ?PR?IAPWRSECTOR?IAPISP + CODE 098FH 008CH UNIT ?PR?IAPRDATAVERIFY?IAPISP + CODE 0A1BH 0082H UNIT ?PR?UARTSENDACK?IAPISP + CODE 0A9DH 0078H UNIT ?PR?UARTCMDPROCESS?IAPISP + CODE 0B15H 0069H UNIT ?PR?_MCUFLASHWRONEBYTE?FLASH + CODE 0B7EH 0060H UNIT ?PR?_MCUFLASHERASESECTOR?FLASH + CODE 0BDEH 0059H UNIT ?PR?IAPCMDRESET?IAPISP + CODE 0C37H 0055H UNIT ?PR?MAIN?MAIN + CODE 0C8CH 0049H UNIT ?PR?_MCUFLASHBLANKCHECK?FLASH + CODE 0CD5H 0038H UNIT ?PR?IAPHANDSHAKE?IAPISP + CODE 0D0DH 002BH UNIT ?PR?INITGPIO?MAIN + CODE 0D38H 0026H UNIT ?PR?BOOTUPGRADECODE?FLASH + CODE 0D5EH 001CH UNIT ?PR?UARTINIT?MAIN + CODE 0D7AH 001AH UNIT ?C_C51STARTUP + CODE 0D94H 0018H UNIT ?PR?_MCUFLASHRDONEBYTE?FLASH + CODE 0DACH 0009H UNIT ?PR?INITIAL?MAIN + CODE 0DB5H 0008H UNIT ?PR?INITIRQ?MAIN + 0DBDH 0043H *** GAP *** + CODE 0E00H 0200H ABSOLUTE + + + +OVERLAY MAP OF MODULE: .\output\BootLoad (MAIN) + + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 3 + + + +SEGMENT BIT_GROUP DATA_GROUP + +--> CALLED SEGMENT START LENGTH START LENGTH +-------------------------------------------------------------------------- +?C_C51STARTUP ----- ----- ----- ----- + +--> ?PR?MAIN?MAIN + +?PR?MAIN?MAIN ----- ----- ----- ----- + +--> ?PR?INITIAL?MAIN + +--> ?PR?_MCUFLASHRDONEBYTE?FLASH + +--> ?PR?BOOTUPGRADECODE?FLASH + +--> ?PR?BOOTIAPISP?IAPISP + +?PR?INITIAL?MAIN ----- ----- ----- ----- + +--> ?PR?INITIRQ?MAIN + +--> ?PR?INITGPIO?MAIN + +?PR?_MCUFLASHRDONEBYTE?FLASH ----- ----- 0017H 0005H + +?PR?BOOTUPGRADECODE?FLASH 0020H.3 0000H.1 ----- ----- + +--> ?PR?BOOTPROGRAM?FLASH + +--> ?PR?_MCUFLASHERASESECTOR?FLASH + +--> ?PR?_MCUFLASHBLANKCHECK?FLASH + +?PR?BOOTPROGRAM?FLASH ----- ----- 0008H 0009H + +--> ?PR?_MCUFLASHERASESECTOR?FLASH + +--> ?PR?_MCUFLASHBLANKCHECK?FLASH + +--> ?PR?_MCUFLASHRDONEBYTE?FLASH + +--> ?PR?_MCUFLASHWRONEBYTE?FLASH + +?PR?_MCUFLASHERASESECTOR?FLASH ----- ----- 0011H 0005H + +?PR?_MCUFLASHBLANKCHECK?FLASH 0020H.4 0000H.1 0011H 0007H + +?PR?_MCUFLASHWRONEBYTE?FLASH ----- ----- 0017H 0006H + +?PR?BOOTIAPISP?IAPISP ----- ----- ----- ----- + +--> ?PR?UARTINIT?MAIN + +--> ?PR?UARTCMDPROCESS?IAPISP + +?PR?UARTCMDPROCESS?IAPISP ----- ----- ----- ----- + +--> ?PR?IAPHANDSHAKE?IAPISP + +--> ?PR?IAPBEGINACK?IAPISP + +--> ?PR?IAPRECEIVEDATA?IAPISP + +--> ?PR?IAPRDATAVERIFY?IAPISP + +--> ?PR?IAPCMDRESET?IAPISP + +--> ?PR?UARTSENDACK?IAPISP + +?PR?IAPBEGINACK?IAPISP ----- ----- 0008H 0007H + +--> ?PR?_MCUFLASHERASESECTOR?FLASH + +--> ?PR?_MCUFLASHBLANKCHECK?FLASH + +--> ?PR?_MCUFLASHWRONEBYTE?FLASH + +--> ?PR?_MCUFLASHRDONEBYTE?FLASH + +?PR?IAPRECEIVEDATA?IAPISP ----- ----- 0008H 0008H + +--> ?PR?IAPWRSECTOR?IAPISP + +--> ?PR?_MCUFLASHERASESECTOR?FLASH + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 4 + + + +--> ?PR?_MCUFLASHBLANKCHECK?FLASH + +?PR?IAPWRSECTOR?IAPISP 0020H.3 0000H.1 0010H 0007H + +--> ?PR?_MCUFLASHWRONEBYTE?FLASH + +--> ?PR?_MCUFLASHRDONEBYTE?FLASH + +?PR?IAPCMDRESET?IAPISP ----- ----- ----- ----- + +--> ?PR?_MCUFLASHERASESECTOR?FLASH + +--> ?PR?_MCUFLASHBLANKCHECK?FLASH + +--> ?PR?_MCUFLASHWRONEBYTE?FLASH + +--> ?PR?_MCUFLASHRDONEBYTE?FLASH + +?PR?UARTSENDACK?IAPISP ----- ----- 0008H 0002H + + + +SYMBOL TABLE OF MODULE: .\output\BootLoad (MAIN) + + VALUE TYPE NAME + ---------------------------------- + + ------- MODULE MAIN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:0DB5H PUBLIC InitIRQ + D:00C4H PUBLIC UART0CR + D:00C0H PUBLIC P4 + D:009DH PUBLIC SBRTH + D:0080H PUBLIC P5 + D:009CH PUBLIC SBRTL + D:00A8H PUBLIC IEN0 + D:00A9H PUBLIC IEN1 + D:00AAH PUBLIC IEN2 + D:00E1H PUBLIC P0CR + D:00E2H PUBLIC P1CR + D:00E3H PUBLIC P2CR + D:008EH PUBLIC SUSLO + D:00E4H PUBLIC P3CR + C:0C37H PUBLIC main + D:0087H PUBLIC PCON + D:0098H PUBLIC SCON + D:00B1H PUBLIC RSTSTAT + C:0D0DH PUBLIC InitGPIO + C:0DACH PUBLIC Initial + C:0D5EH PUBLIC UARTInit + D:00E9H PUBLIC P0PCR + D:00EAH PUBLIC P1PCR + D:00EBH PUBLIC P2PCR + D:00ECH PUBLIC P3PCR + D:009BH PUBLIC SADEN + D:009AH PUBLIC SADDR + D:009EH PUBLIC SFINE + ------- PROC INITGPIO + C:0D0DH LINE# 23 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 5 + + + C:0D0DH LINE# 24 + C:0D0DH LINE# 25 + C:0D10H LINE# 26 + C:0D13H LINE# 27 + C:0D16H LINE# 29 + C:0D19H LINE# 30 + C:0D1CH LINE# 31 + C:0D1FH LINE# 33 + C:0D22H LINE# 34 + C:0D25H LINE# 35 + C:0D28H LINE# 37 + C:0D2BH LINE# 38 + C:0D2EH LINE# 39 + C:0D31H LINE# 42 + C:0D34H LINE# 43 + C:0D37H LINE# 387 + ------- ENDPROC INITGPIO + ------- PROC INITIRQ + C:0DB5H LINE# 395 + C:0DB5H LINE# 396 + C:0DB5H LINE# 397 + C:0DB8H LINE# 398 + C:0DBAH LINE# 399 + C:0DBCH LINE# 400 + ------- ENDPROC INITIRQ + ------- PROC UARTINIT + C:0D5EH LINE# 408 + C:0D5EH LINE# 409 + C:0D5EH LINE# 411 + C:0D61H LINE# 472 + C:0D64H LINE# 473 + C:0D67H LINE# 474 + C:0D6AH LINE# 475 + C:0D6DH LINE# 476 + C:0D70H LINE# 477 + C:0D73H LINE# 478 + C:0D76H LINE# 479 + C:0D79H LINE# 480 + ------- ENDPROC UARTINIT + ------- PROC INITIAL + C:0DACH LINE# 584 + C:0DACH LINE# 585 + C:0DACH LINE# 586 + C:0DAFH LINE# 587 + C:0DB2H LINE# 588 + C:0DB4H LINE# 589 + ------- ENDPROC INITIAL + ------- PROC MAIN + C:0C37H LINE# 598 + C:0C37H LINE# 599 + C:0C37H LINE# 600 + C:0C3AH LINE# 601 + C:0C3DH LINE# 604 + C:0C4EH LINE# 605 + C:0C4EH LINE# 606 + C:0C50H LINE# 607 + C:0C53H LINE# 608 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 6 + + + C:0C58H LINE# 609 + C:0C58H LINE# 610 + C:0C58H LINE# 611 + C:0C58H LINE# 612 + C:0C5AH LINE# 613 + C:0C5FH LINE# 614 + C:0C5FH LINE# 615 + C:0C62H LINE# 616 + C:0C62H LINE# 617 + C:0C64H LINE# 619 + C:0C64H LINE# 620 + C:0C64H LINE# 621 + C:0C64H LINE# 622 + C:0C67H LINE# 623 + C:0C6AH LINE# 624 + C:0C6DH LINE# 625 + C:0C6EH LINE# 626 + C:0C6FH LINE# 627 + C:0C70H LINE# 628 + C:0C71H LINE# 629 + C:0C72H LINE# 630 + C:0C74H LINE# 631 + C:0C74H LINE# 632 + C:0C74H LINE# 634 + C:0C83H LINE# 635 + C:0C83H LINE# 636 + C:0C85H LINE# 637 + C:0C88H LINE# 638 + C:0C88H LINE# 641 + C:0C88H LINE# 642 + C:0C8BH LINE# 643 + C:0C8BH LINE# 644 + ------- ENDPROC MAIN + ------- ENDMOD MAIN + + ------- MODULE IAPISP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:0CD5H PUBLIC IapHandShake + X:0000H PUBLIC ucIapBuf + C:0450H PUBLIC IapBeginAck + X:0200H PUBLIC ucUartBuf + C:0A9DH PUBLIC UartCmdProcess + B:0098H.0 PUBLIC RI + B:0098H.1 PUBLIC TI + D:0021H PUBLIC ucIapIndexBk + D:0022H PUBLIC ucUartErrCode + D:0099H PUBLIC SBUF + D:0023H PUBLIC ulIapDataPtr + C:0BDEH PUBLIC IapCmdReset + D:0027H PUBLIC ulIapRecDataLen + D:00B1H PUBLIC RSTSTAT + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 7 + + + C:0A1BH PUBLIC UartSendAck + D:002BH PUBLIC ucUartBufPT + B:0020H.0 PUBLIC bHandsheakOkFlg + B:0020H.1 PUBLIC bIapIspFlg + D:0086H PUBLIC INSCON + C:0895H PUBLIC IapWrSector + D:002CH PUBLIC ucIapRestCommand + C:01F1H PUBLIC IapReceiveData + C:00A6H PUBLIC BootIapIsp + B:0020H.2 PUBLIC bUartSndOverFlg + C:098FH PUBLIC IapRDataVerify + B:0098H.4 PUBLIC REN + D:002DH PUBLIC ulIapChksum + D:0031H PUBLIC uiUartRcvChkSum + ------- PROC UARTSENDACK + ------- DO + D:0007H SYMBOL i + D:0007H SYMBOL DataBak + D:0008H SYMBOL CheckSum + ------- ENDDO + C:0A1BH LINE# 35 + C:0A1BH LINE# 36 + C:0A1BH LINE# 38 + C:0A20H LINE# 40 + C:0A24H LINE# 41 + C:0A2AH LINE# 43 + C:0A2FH LINE# 44 + C:0A35H LINE# 45 + C:0A38H LINE# 47 + C:0A51H LINE# 48 + C:0A51H LINE# 49 + C:0A65H LINE# 50 + C:0A68H LINE# 52 + C:0A75H LINE# 53 + C:0A87H LINE# 55 + C:0A89H LINE# 56 + C:0A9CH LINE# 57 + ------- ENDPROC UARTSENDACK + ------- PROC IAPHANDSHAKE + C:0CD5H LINE# 67 + C:0CD5H LINE# 68 + C:0CD5H LINE# 69 + C:0CDAH LINE# 70 + C:0CEAH LINE# 71 + C:0CEAH LINE# 72 + C:0CECH LINE# 73 + C:0CEEH LINE# 74 + C:0CEFH LINE# 75 + C:0CFFH LINE# 76 + C:0CFFH LINE# 77 + C:0D01H LINE# 78 + C:0D03H LINE# 79 + C:0D04H LINE# 81 + C:0D04H LINE# 82 + C:0D0AH LINE# 83 + C:0D0CH LINE# 84 + C:0D0CH LINE# 85 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 8 + + + ------- ENDPROC IAPHANDSHAKE + ------- PROC IAPBEGINACK + ------- DO + D:0008H SYMBOL i + D:0009H SYMBOL SectorNum + D:000AH SYMBOL McuFlashType + D:000BH SYMBOL McuFlashAddr + ------- ENDDO + C:0450H LINE# 94 + C:0450H LINE# 95 + C:0450H LINE# 99 + C:0459H LINE# 100 + C:0461H LINE# 101 + C:0469H LINE# 105 + C:04DBH LINE# 107 + C:04DEH LINE# 108 + C:04DEH LINE# 109 + C:04E4H LINE# 110 + C:04E4H LINE# 112 + C:04FBH LINE# 113 + C:04FBH LINE# 114 + C:04FBH LINE# 115 + C:04FDH LINE# 116 + C:0514H LINE# 117 + C:0514H LINE# 118 + C:051AH LINE# 119 + C:051BH LINE# 121 + C:051BH LINE# 122 + C:0520H LINE# 123 + C:0522H LINE# 126 + C:0525H LINE# 127 + C:052FH LINE# 128 + C:053CH LINE# 129 + C:053CH LINE# 130 + C:053FH LINE# 131 + C:053FH LINE# 132 + C:054EH LINE# 133 + C:055FH LINE# 134 + C:055FH LINE# 135 + C:0565H LINE# 136 + C:0565H LINE# 137 + C:0565H LINE# 138 + C:0567H LINE# 140 + C:0567H LINE# 141 + C:056DH LINE# 142 + C:056DH LINE# 143 + C:0570H LINE# 146 + C:0579H LINE# 147 + C:0579H LINE# 148 + C:058BH LINE# 149 + C:0598H LINE# 150 + C:0598H LINE# 151 + C:059BH LINE# 152 + C:059EH LINE# 153 + C:059EH LINE# 154 + C:05A3H LINE# 155 + C:05A5H LINE# 157 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 9 + + + C:05A5H LINE# 158 + C:05AFH LINE# 159 + C:05AFH LINE# 160 + C:05CAH LINE# 162 + C:05CDH LINE# 163 + C:05CDH LINE# 164 + C:05E8H LINE# 165 + C:05E8H LINE# 166 + C:05EBH LINE# 167 + C:0602H LINE# 168 + C:0602H LINE# 169 + C:0602H LINE# 171 + C:0605H LINE# 172 + C:0613H LINE# 173 + C:0623H LINE# 174 + C:0623H LINE# 175 + C:0629H LINE# 176 + C:0629H LINE# 177 + C:062CH LINE# 178 + C:0631H LINE# 179 + C:0631H LINE# 181 + C:0631H LINE# 182 + C:0637H LINE# 183 + C:0637H LINE# 184 + C:0637H LINE# 185 + ------- ENDPROC IAPBEGINACK + ------- PROC IAPWRSECTOR + ------- DO + B:0020H.3 SYMBOL Result + D:0010H SYMBOL i + D:0012H SYMBOL McuFlashAddr + D:0016H SYMBOL McuFlashType + ------- ENDDO + C:0895H LINE# 194 + C:0895H LINE# 195 + C:0895H LINE# 196 + C:0897H LINE# 201 + C:08B1H LINE# 202 + C:08B1H LINE# 203 + C:08B4H LINE# 204 + C:08B7H LINE# 205 + C:08B7H LINE# 206 + C:08CBH LINE# 207 + C:08EAH LINE# 208 + C:08EAH LINE# 209 + C:0910H LINE# 210 + C:0913H LINE# 211 + C:0913H LINE# 212 + C:0915H LINE# 214 + C:0915H LINE# 215 + C:092AH LINE# 216 + C:092AH LINE# 217 + C:0947H LINE# 218 + C:0965H LINE# 219 + C:0965H LINE# 220 + C:0967H LINE# 221 + C:0969H LINE# 222 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 10 + + + C:0969H LINE# 223 + C:097EH LINE# 224 + C:098CH LINE# 226 + C:098EH LINE# 227 + ------- ENDPROC IAPWRSECTOR + ------- PROC IAPRECEIVEDATA + ------- DO + D:0008H SYMBOL i + D:000AH SYMBOL j + D:000BH SYMBOL McuFlashAddr + D:000FH SYMBOL McuFlashType + C:0386H SYMBOL UpdateChksum + ------- ENDDO + C:01F1H LINE# 236 + C:01F1H LINE# 237 + C:01F1H LINE# 243 + C:01F3H LINE# 245 + C:0217H LINE# 246 + C:0217H LINE# 247 + C:021AH LINE# 248 + C:021BH LINE# 250 + C:021BH LINE# 251 + C:0221H LINE# 252 + C:0223H LINE# 253 + C:0229H LINE# 254 + C:0229H LINE# 255 + C:023DH LINE# 256 + C:023EH LINE# 258 + C:023EH LINE# 259 + C:0244H LINE# 260 + C:0259H LINE# 261 + C:0259H LINE# 262 + C:0281H LINE# 263 + C:028BH LINE# 264 + C:0294H LINE# 265 + C:0294H LINE# 266 + C:0297H LINE# 267 + C:029FH LINE# 268 + C:029FH LINE# 269 + C:02B2H LINE# 270 + C:02B2H LINE# 271 + C:02CAH LINE# 272 + C:02CCH LINE# 274 + C:02CCH LINE# 275 + C:02D5H LINE# 276 + C:02D5H LINE# 278 + C:02D8H LINE# 279 + C:02DBH LINE# 280 + C:02DBH LINE# 281 + C:02EFH LINE# 282 + C:030EH LINE# 283 + C:030EH LINE# 284 + C:0334H LINE# 285 + C:0337H LINE# 286 + C:0337H LINE# 287 + C:0339H LINE# 289 + C:0339H LINE# 290 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 11 + + + C:034EH LINE# 291 + C:034EH LINE# 292 + C:0351H LINE# 293 + C:035FH LINE# 294 + C:036FH LINE# 295 + C:036FH LINE# 296 + C:0374H LINE# 297 + C:0374H LINE# 298 + C:037AH LINE# 299 + C:037DH LINE# 301 + C:037DH LINE# 302 + C:037DH LINE# 303 + C:037DH LINE# 304 + C:037DH LINE# 306 + C:037DH LINE# 307 + C:0383H LINE# 308 + C:0383H LINE# 309 + C:0386H LINE# 311 + C:0386H LINE# 312 + C:0386H LINE# 313 + C:0389H LINE# 314 + C:0389H LINE# 318 + C:0441H LINE# 319 + C:044CH LINE# 320 + C:044CH LINE# 322 + C:044FH LINE# 323 + C:044FH LINE# 324 + C:044FH LINE# 325 + C:044FH LINE# 326 + ------- ENDPROC IAPRECEIVEDATA + ------- PROC IAPRDATAVERIFY + ------- DO + D:0004H SYMBOL CheckSum + ------- ENDDO + C:098FH LINE# 335 + C:098FH LINE# 336 + C:098FH LINE# 337 + C:0995H LINE# 342 + C:0A00H LINE# 344 + C:0A0EH LINE# 345 + C:0A0EH LINE# 346 + C:0A14H LINE# 347 + C:0A15H LINE# 349 + C:0A15H LINE# 350 + C:0A1AH LINE# 351 + C:0A1AH LINE# 352 + ------- ENDPROC IAPRDATAVERIFY + ------- PROC IAPCMDRESET + C:0BDEH LINE# 363 + C:0BDEH LINE# 364 + C:0BDEH LINE# 365 + C:0BE3H LINE# 366 + C:0BE6H LINE# 368 + C:0BE9H LINE# 369 + C:0BF3H LINE# 370 + C:0C00H LINE# 371 + C:0C00H LINE# 372 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 12 + + + C:0C03H LINE# 373 + C:0C03H LINE# 374 + C:0C12H LINE# 375 + C:0C23H LINE# 376 + C:0C23H LINE# 377 + C:0C28H LINE# 378 + C:0C28H LINE# 379 + C:0C28H LINE# 380 + C:0C28H LINE# 381 + C:0C2AH LINE# 383 + C:0C2AH LINE# 384 + C:0C30H LINE# 385 + C:0C33H LINE# 386 + C:0C33H LINE# 387 + C:0C36H LINE# 388 + ------- ENDPROC IAPCMDRESET + ------- PROC UARTCMDPROCESS + C:0A9DH LINE# 397 + C:0A9DH LINE# 398 + C:0A9DH LINE# 399 + C:0AA0H LINE# 400 + C:0ACDH LINE# 401 + C:0ACDH LINE# 402 + C:0AD0H LINE# 403 + C:0AD0H LINE# 405 + C:0AD4H LINE# 406 + C:0AD4H LINE# 407 + C:0AD8H LINE# 408 + C:0ADAH LINE# 410 + C:0ADAH LINE# 411 + C:0AE2H LINE# 412 + C:0AE2H LINE# 413 + C:0AE5H LINE# 414 + C:0AE7H LINE# 415 + C:0AEBH LINE# 416 + C:0AEBH LINE# 417 + C:0AEEH LINE# 418 + C:0AF0H LINE# 419 + C:0AF7H LINE# 420 + C:0AF7H LINE# 421 + C:0AFAH LINE# 422 + C:0AFCH LINE# 423 + C:0B03H LINE# 424 + C:0B03H LINE# 425 + C:0B06H LINE# 426 + C:0B08H LINE# 427 + C:0B0FH LINE# 428 + C:0B0FH LINE# 429 + C:0B12H LINE# 430 + C:0B12H LINE# 431 + C:0B12H LINE# 433 + ------- ENDPROC UARTCMDPROCESS + ------- PROC BOOTIAPISP + C:00A6H LINE# 443 + C:00A6H LINE# 444 + C:00A6H LINE# 445 + C:00AFH LINE# 446 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 13 + + + C:00B7H LINE# 447 + C:00B9H LINE# 448 + C:00BCH LINE# 449 + C:00BCH LINE# 450 + C:00BCH LINE# 452 + C:00BCH LINE# 453 + C:00C2H LINE# 454 + C:00C2H LINE# 456 + C:00D0H LINE# 457 + C:00D2H LINE# 458 + C:00D9H LINE# 459 + C:00D9H LINE# 460 + C:00DCH LINE# 461 + C:00DCH LINE# 462 + C:00E1H LINE# 463 + C:00E1H LINE# 464 + C:00ECH LINE# 465 + C:00ECH LINE# 466 + C:00ECH LINE# 467 + C:00ECH LINE# 469 + C:00EEH LINE# 470 + C:00F3H LINE# 471 + C:00F3H LINE# 473 + C:00FBH LINE# 474 + C:00FBH LINE# 475 + C:00FBH LINE# 476 + C:00FDH LINE# 478 + C:00FDH LINE# 479 + C:0102H LINE# 480 + C:0104H LINE# 481 + C:0104H LINE# 482 + C:0107H LINE# 484 + C:0107H LINE# 486 + C:0124H LINE# 487 + C:0124H LINE# 488 + C:0137H LINE# 489 + C:0137H LINE# 490 + C:014CH LINE# 491 + C:014CH LINE# 493 + C:0151H LINE# 494 + C:0151H LINE# 496 + C:0159H LINE# 497 + C:0159H LINE# 498 + C:015CH LINE# 499 + C:015CH LINE# 500 + C:015EH LINE# 501 + C:0164H LINE# 502 + C:0164H LINE# 503 + C:0181H LINE# 508 + C:0181H LINE# 509 + C:0184H LINE# 510 + C:0184H LINE# 511 + C:0184H LINE# 512 + C:0186H LINE# 514 + C:0186H LINE# 515 + C:0189H LINE# 516 + C:018CH LINE# 517 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 14 + + + C:018CH LINE# 518 + C:018CH LINE# 519 + C:018EH LINE# 520 + C:018EH LINE# 522 + C:0191H LINE# 523 + C:0191H LINE# 524 + C:0194H LINE# 526 + C:01ABH LINE# 527 + C:01ABH LINE# 528 + C:01B0H LINE# 529 + C:01B2H LINE# 530 + C:01B6H LINE# 531 + C:01B8H LINE# 532 + C:01BAH LINE# 533 + C:01BCH LINE# 534 + C:01BEH LINE# 536 + C:01BEH LINE# 537 + C:01C0H LINE# 538 + C:01D3H LINE# 539 + C:01D3H LINE# 541 + C:01D5H LINE# 542 + C:01D5H LINE# 544 + C:01DEH LINE# 545 + C:01DEH LINE# 546 + C:01E1H LINE# 547 + C:01E7H LINE# 548 + C:01E7H LINE# 549 + C:01E9H LINE# 550 + C:01EBH LINE# 551 + C:01EEH LINE# 552 + C:01EEH LINE# 553 + C:01EEH LINE# 554 + C:01EEH LINE# 780 + ------- ENDPROC BOOTIAPISP + ------- ENDMOD IAPISP + + ------- MODULE FLASH + C:0000H SYMBOL _ICE_DUMMY_ + D:00F3H PUBLIC IB_CON2 + D:0080H PUBLIC P0 + D:00F4H PUBLIC IB_CON3 + C:0B7EH PUBLIC _McuFlashEraseSector + D:0090H PUBLIC P1 + D:00F5H PUBLIC IB_CON4 + D:00A0H PUBLIC P2 + D:00F6H PUBLIC IB_CON5 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00FCH PUBLIC IB_DATA + C:0D94H PUBLIC _McuFlashRdOneByte + C:0B15H PUBLIC _McuFlashWrOneByte + D:001DH PUBLIC ucMcuFlashWrValid + D:00FBH PUBLIC IB_OFFSET + D:00B1H PUBLIC RSTSTAT + D:00A7H PUBLIC FLASHCON + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 15 + + + C:0D38H PUBLIC BootUpgradeCode + C:0C8CH PUBLIC _McuFlashBlankCheck + C:077CH PUBLIC BootProgram + D:00F7H PUBLIC XPAGE + D:00F2H PUBLIC IB_CON1 + ------- PROC _MCUFLASHERASESECTOR + D:0011H SYMBOL McuFlashAddr + D:0015H SYMBOL McuType + C:0B7EH LINE# 24 + C:0B86H LINE# 25 + C:0B86H LINE# 26 + C:0B89H LINE# 27 + C:0B98H LINE# 29 + C:0B9BH LINE# 30 + C:0B9EH LINE# 31 + C:0B9EH LINE# 32 + C:0BA1H LINE# 33 + C:0BA7H LINE# 34 + C:0BA7H LINE# 35 + C:0BAAH LINE# 36 + C:0BAFH LINE# 37 + C:0BAFH LINE# 38 + C:0BB2H LINE# 39 + C:0BD3H LINE# 40 + C:0BD3H LINE# 41 + C:0BD6H LINE# 42 + C:0BD7H LINE# 43 + C:0BD8H LINE# 44 + C:0BD9H LINE# 45 + C:0BDAH LINE# 46 + C:0BDAH LINE# 47 + C:0BDAH LINE# 48 + C:0BDAH LINE# 49 + C:0BDAH LINE# 51 + C:0BDDH LINE# 52 + ------- ENDPROC _MCUFLASHERASESECTOR + ------- PROC _MCUFLASHBLANKCHECK + D:0011H SYMBOL McuFlashAddr + D:0015H SYMBOL McuType + ------- DO + B:0020H.4 SYMBOL Result + D:0016H SYMBOL i + ------- ENDDO + C:0C8CH LINE# 61 + C:0C94H LINE# 62 + C:0C94H LINE# 63 + C:0C96H LINE# 66 + C:0C99H LINE# 67 + C:0CB0H LINE# 68 + C:0CB0H LINE# 69 + C:0CC1H LINE# 70 + C:0CC1H LINE# 71 + C:0CC3H LINE# 72 + C:0CC5H LINE# 73 + C:0CC5H LINE# 74 + C:0CCFH LINE# 75 + C:0CD2H LINE# 77 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 16 + + + C:0CD4H LINE# 78 + ------- ENDPROC _MCUFLASHBLANKCHECK + ------- PROC _MCUFLASHWRONEBYTE + D:0017H SYMBOL McuFlashAddr + D:001BH SYMBOL WrData + D:001CH SYMBOL McuType + C:0B15H LINE# 87 + C:0B1DH LINE# 88 + C:0B1DH LINE# 89 + C:0B20H LINE# 90 + C:0B2FH LINE# 91 + C:0B34H LINE# 93 + C:0B37H LINE# 94 + C:0B3AH LINE# 95 + C:0B3DH LINE# 96 + C:0B3DH LINE# 97 + C:0B40H LINE# 98 + C:0B46H LINE# 99 + C:0B46H LINE# 100 + C:0B49H LINE# 101 + C:0B4EH LINE# 102 + C:0B4EH LINE# 103 + C:0B51H LINE# 104 + C:0B72H LINE# 105 + C:0B72H LINE# 106 + C:0B75H LINE# 107 + C:0B76H LINE# 108 + C:0B77H LINE# 109 + C:0B78H LINE# 110 + C:0B79H LINE# 111 + C:0B7AH LINE# 112 + C:0B7AH LINE# 113 + C:0B7AH LINE# 114 + C:0B7AH LINE# 115 + C:0B7AH LINE# 117 + C:0B7DH LINE# 118 + ------- ENDPROC _MCUFLASHWRONEBYTE + ------- PROC _MCUFLASHRDONEBYTE + D:0017H SYMBOL McuFlashAddr + D:001BH SYMBOL McuType + ------- DO + D:0007H SYMBOL GetData + ------- ENDDO + C:0D94H LINE# 127 + C:0D9CH LINE# 128 + C:0D9CH LINE# 129 + C:0D9DH LINE# 131 + C:0DA0H LINE# 132 + C:0DA8H LINE# 133 + C:0DABH LINE# 134 + C:0DABH LINE# 135 + ------- ENDPROC _MCUFLASHRDONEBYTE + ------- PROC BOOTPROGRAM + ------- DO + D:0008H SYMBOL i + D:0009H SYMBOL McuCode + D:000AH SYMBOL McuFlashType + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 17 + + + D:000BH SYMBOL j + D:000DH SYMBOL McuFlashAddr + ------- ENDDO + C:077CH LINE# 145 + C:077CH LINE# 146 + C:077CH LINE# 151 + C:077FH LINE# 152 + C:077FH LINE# 153 + C:0782H LINE# 154 + C:0789H LINE# 155 + C:0789H LINE# 156 + C:078CH LINE# 157 + C:07A6H LINE# 158 + C:07A8H LINE# 160 + C:07A8H LINE# 161 + C:07ABH LINE# 162 + C:07C9H LINE# 163 + C:07C9H LINE# 164 + C:07CCH LINE# 165 + C:07DAH LINE# 166 + C:07EDH LINE# 167 + C:07EDH LINE# 168 + C:0807H LINE# 169 + C:0807H LINE# 170 + C:083DH LINE# 171 + C:0858H LINE# 172 + C:0875H LINE# 173 + C:0875H LINE# 174 + C:0878H LINE# 175 + C:0878H LINE# 176 + C:0883H LINE# 177 + C:0883H LINE# 179 + C:0883H LINE# 180 + C:0886H LINE# 181 + C:0886H LINE# 182 + C:0892H LINE# 184 + C:0894H LINE# 185 + ------- ENDPROC BOOTPROGRAM + ------- PROC BOOTUPGRADECODE + ------- DO + B:0020H.3 SYMBOL Result + ------- ENDDO + C:0D38H LINE# 194 + C:0D38H LINE# 195 + C:0D38H LINE# 196 + C:0D3AH LINE# 198 + C:0D40H LINE# 199 + C:0D40H LINE# 200 + C:0D4AH LINE# 201 + C:0D57H LINE# 202 + C:0D59H LINE# 204 + C:0D59H LINE# 205 + C:0D5BH LINE# 206 + C:0D5BH LINE# 208 + C:0D5DH LINE# 209 + ------- ENDPROC BOOTUPGRADECODE + ------- ENDMOD FLASH + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 18 + + + + ------- MODULE ?C_STARTUP + C:0D7AH SEGMENT ?C_C51STARTUP + C:0000H PUBLIC ?C_STARTUP + N:00B2H SYMBOL CLKCON + C:0E00H SYMBOL FLAGCODE + N:0100H SYMBOL IDATALEN + C:0D8EH SYMBOL IDATALOOP + D:0081H SYMBOL SP + N:1000H SYMBOL SSP_LEN + I:0080H SYMBOL STACK + C:0D7AH SYMBOL STARTUP1 + C:0000H LINE# 15 + C:0D7AH LINE# 20 + C:0D7DH LINE# 21 + C:0D80H LINE# 22 + C:0D81H LINE# 23 + C:0D82H LINE# 24 + C:0D83H LINE# 25 + C:0D84H LINE# 26 + C:0D85H LINE# 27 + C:0D86H LINE# 28 + C:0D87H LINE# 29 + C:0D88H LINE# 30 + C:0D8BH LINE# 33 + C:0D8DH LINE# 34 + C:0D8EH LINE# 35 + C:0D8FH LINE# 36 + C:0D91H LINE# 39 + C:0003H LINE# 45 + C:000BH LINE# 48 + C:0013H LINE# 51 + C:001BH LINE# 54 + C:0023H LINE# 57 + C:002BH LINE# 60 + C:0033H LINE# 63 + C:003BH LINE# 66 + C:0043H LINE# 69 + C:004BH LINE# 72 + C:0053H LINE# 75 + C:005BH LINE# 78 + C:0063H LINE# 81 + C:006BH LINE# 84 + C:0073H LINE# 87 + C:007BH LINE# 90 + C:0083H LINE# 93 + C:008BH LINE# 96 + C:0093H LINE# 99 + C:009BH LINE# 102 + C:00A3H LINE# 105 + ------- ENDMOD ?C_STARTUP + + ------- MODULE ?C?IMUL + C:0638H PUBLIC ?C?IMUL + ------- ENDMOD ?C?IMUL + + ------- MODULE ?C?ULDIV + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 12:15:06 PAGE 19 + + + C:0686H PUBLIC ?C?ULDIV + ------- ENDMOD ?C?ULDIV + + ------- MODULE ?C?ULCMP + C:0718H PUBLIC ?C?ULCMP + ------- ENDMOD ?C?ULCMP + + ------- MODULE ?C?ULSHR + C:0729H PUBLIC ?C?ULSHR + ------- ENDMOD ?C?ULSHR + + ------- MODULE ?C?LSHL + C:073CH PUBLIC ?C?LSHL + ------- ENDMOD ?C?LSHL + + ------- MODULE ?C?LIMUL + C:074FH PUBLIC ?C?LIMUL + ------- ENDMOD ?C?LIMUL + +Program Size: data=176.5 xdata=662 code=3929 +LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Calculate.lst b/output/Calculate.lst new file mode 100644 index 0000000..4ab801e --- /dev/null +++ b/output/Calculate.lst @@ -0,0 +1,539 @@ +C51 COMPILER V9.01 CALCULATE 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE CALCULATE +OBJECT MODULE PLACED IN .\output\Calculate.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\Calculate.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_L + -oad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\ + -code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Calculate.lst) OBJECT(.\output + -\Calculate.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 U8 xdata ucChgingCheckCnt; + 13 U8 xdata ucDsgingCheckCnt; + 14 + 15 /************************************************************************************************* + 16 * 函数名: CalcuTemp + 17 * 参 数: 无 + 18 * 返回值: 无 + 19 * 描 述: 根据计算的阻值来查表,获取对应温度。温度变量保存的为开尔文温度*10 + 20 例如摄氏度25°,温度变量保存的值为2731+250 + 21 *************************************************************************************************/ + 22 U16 CalcuTemp(U16 getdata) + 23 { + 24 1 U8 i; + 25 1 U16 Temperature; + 26 1 U32 Tempcalcu; + 27 1 + 28 1 #if (AFE_ID == 0x34) + Tempcalcu = (U32)getdata*REF_RES_VAL/(32768-getdata); + #else + 31 1 Tempcalcu= (U32)getdata*REF_RES_VAL/(4096-getdata); //calculte the resistance value of 103AT + 32 1 if(Tempcalcu > 10) + 33 1 { + 34 2 Tempcalcu -= 10; + 35 2 } + 36 1 #endif + 37 1 + 38 1 if(Tempcalcu >= NTC103AT[0]) //look up table to find the resieter correspond + -temp + 39 1 { + 40 2 Temperature = 2731+(TEMP_LOWER_LIMIT *10); + 41 2 } + 42 1 else if(Tempcalcu <= NTC103AT[NTC103AT_ARRAY_LEN-1]) + 43 1 { + 44 2 Temperature = 2731+(TEMP_UPPER_LIMIT *10); + 45 2 } + 46 1 else + 47 1 { + 48 2 i = ucTempeMiddle; //the ucTempeMiddle must be initialized in InitVar() + 49 2 if(Tempcalcu > NTC103AT[i]) + 50 2 { + 51 3 for(i=ucTempeMiddle-1; i>=0; i--) + C51 COMPILER V9.01 CALCULATE 02/06/2025 15:28:45 PAGE 2 + + 52 3 { + 53 4 if(Tempcalcu <= NTC103AT[i]) //NTC103AT[i+1] NTC103AT[i]) //NTC103AT[i-1] 5) //6~10串应用时 + 119 1 { + 120 2 if(!AFEReadReg(AFE_TEMP2H, 2, (U8 xdata *)&AFE.uiICTempe[1])) + 121 2 { + 122 3 Result = 0; + 123 3 } + 124 2 } + 125 1 + 126 1 return Result; + 127 1 } + 128 + 129 + 130 /************************************************************************************************* + 131 * 函数名: AfeCalcuTempe + 132 * 参 数: 无 + 133 * 返回值: 无 + 134 * 描 述: 计算温度,更新uiTempeMax、uiTempeMin + 135 *************************************************************************************************/ + 136 void AfeCalcuTempe(void) + 137 { + 138 1 U16 TempeData; + 139 1 + 140 1 if(AfeGetTempe()) + 141 1 { + 142 2 TempeData = CalcuTemp(AFE.uiTS[0]) + E2siTS0Offset; //计算外部温度1 + 143 2 #if (UART0_DEFINE != 0) + 144 2 IrqUart0Dis(); + 145 2 #endif + 146 2 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + 149 2 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 152 2 Info.uiTS[0] = TempeData; + 153 2 #if (UART0_DEFINE != 0) + 154 2 IrqUart0En(); //开启uart0中断 + 155 2 #endif + 156 2 #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + 159 2 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 162 2 TempeData = (U32)AFE.uiICTempe[0]*17/10+31; //计算内部温度1 + 163 2 #if (UART0_DEFINE != 0) + 164 2 IrqUart0Dis(); + 165 2 #endif + 166 2 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + 169 2 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 172 2 Info.uiICTempe[0] = TempeData; + 173 2 + 174 2 #if (UART0_DEFINE != 0) + 175 2 IrqUart0En(); //开启uart0中断 + C51 COMPILER V9.01 CALCULATE 02/06/2025 15:28:45 PAGE 4 + + 176 2 #endif + 177 2 #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + 180 2 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 183 2 + 184 2 if(ucCellNum > 5) //6~10串应用时 + 185 2 { + 186 3 TempeData = (U32)AFE.uiICTempe[1]*17/10+31; //计算内部温度2 + 187 3 #if (UART0_DEFINE != 0) + 188 3 IrqUart0Dis(); + 189 3 #endif + 190 3 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + 193 3 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 196 3 Info.uiICTempe[1] = TempeData; + 197 3 #if (UART0_DEFINE != 0) + 198 3 IrqUart0En(); //开启uart0中断 + 199 3 #endif + 200 3 #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + 203 3 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 206 3 } + 207 2 + 208 2 uiTempeMin = Info.uiTS[0]; + 209 2 uiTempeMax = Info.uiTS[0]; + 210 2 if(bTempNum) + 211 2 { + 212 3 TempeData = CalcuTemp(AFE.uiTS[1]) + E2siTS1Offset; //计算外部温度2 + 213 3 #if (UART0_DEFINE != 0) + 214 3 IrqUart0Dis(); + 215 3 #endif + 216 3 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + 219 3 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 222 3 Info.uiTS[1] = TempeData; + 223 3 #if (UART0_DEFINE != 0) + 224 3 IrqUart0En(); //开启uart0中断 + 225 3 #endif + 226 3 #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + 229 3 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 232 3 + 233 3 if(TempeData < uiTempeMin) + 234 3 { + 235 4 uiTempeMin = TempeData; + 236 4 } + 237 3 else + C51 COMPILER V9.01 CALCULATE 02/06/2025 15:28:45 PAGE 5 + + 238 3 { + 239 4 uiTempeMax = TempeData; + 240 4 } + 241 3 } + 242 2 } + 243 1 } + 244 + 245 + 246 /************************************************************************************************* + 247 * 函数名: AfeCalcuVol + 248 * 参 数: 无 + 249 * 返回值: 无 + 250 * 描 述: 计算电压,同步更新最大值最小值uiVadcVmax、uiVadcVmin,用于断线判断 + 251 当没有平衡时,才更新uiCellVmax、uiCellVmin,用于保护判断 + 252 *************************************************************************************************/ + 253 void AfeCalcuVol(void) + 254 { + 255 1 U8 i; + 256 1 U32 TempPackVol=0, TempCellVol=0; + 257 1 uiVadcVmax = 0; + 258 1 uiVadcVmin = 6000; + 259 1 + 260 1 if(AfeGetVol()) + 261 1 { + 262 2 for(i=ucCellNumOffset; i<(ucCellNum+ucCellNumOffset); i++) + 263 2 { + 264 3 TempCellVol = (U32)AFE.uiCell[i]*CALIVOL/E2uiVPackGain; + 265 3 + 266 3 if(TempCellVol > uiVadcVmax) //计算最大值&最小值 + 267 3 { + 268 4 uiVadcVmax = TempCellVol; + 269 4 } + 270 3 if(TempCellVol < uiVadcVmin) + 271 3 { + 272 4 uiVadcVmin = TempCellVol; + 273 4 } + 274 3 + 275 3 if(!bBalancingFlg) //if bCellOpenDecFlag this data will throw away + 276 3 { + 277 4 #if (UART0_DEFINE != 0) + 278 4 IrqUart0Dis(); + 279 4 #endif + 280 4 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + 283 4 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 286 4 Info.uiVCell[i] = TempCellVol; + 287 4 #if (UART0_DEFINE != 0) + 288 4 IrqUart0En(); //开启uart0中断 + 289 4 #endif + 290 4 #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + 293 4 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 296 4 TempPackVol += TempCellVol; + 297 4 } + 298 3 } + 299 2 + C51 COMPILER V9.01 CALCULATE 02/06/2025 15:28:45 PAGE 6 + + 300 2 if(!bBalancingFlg) + 301 2 { + 302 3 uiCellVmax = uiVadcVmax; + 303 3 uiCellVmin = uiVadcVmin; + 304 3 + 305 3 #if (UART0_DEFINE != 0) + 306 3 IrqUart0Dis(); + 307 3 #endif + 308 3 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + 311 3 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 314 3 Info.ulVoltage = TempPackVol; //Calculate the total voltage + 315 3 #if (UART0_DEFINE != 0) + 316 3 IrqUart0En(); //开启uart0中断 + 317 3 #endif + 318 3 #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + 321 3 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 324 3 } + 325 2 } + 326 1 } + 327 + 328 + 329 /************************************************************************************************* + 330 * 函数名: CurTempOffset + 331 * 参 数: 无 + 332 * 返回值: 无 + 333 * 描 述: 不同芯片温度下ADC的补偿值 + 334 *************************************************************************************************/ + 335 S16 code siCurTempOffset[2][13]= + 336 { /**0****1****2****3***4***5***6***7***8***9**10**11**12**/ + 337 {-40, -30, -20, -10, 0, 10, 25, 35, 45, 55, 65, 75, 85}, + 338 { -5, -4, -3, -2, -1, -1, 0, 1, 1, 2, 3, 4, 5}, + 339 }; + 340 + 341 /************************************************************************************************* + 342 * 函数名: OffsetCalculate() + 343 * 参 数: 无 + 344 * 返回值: 无 + 345 * 描 述: 根据芯片内部温度实时调整0电流补偿值,以便消除温度对ADC采集产生的影响 + 346 *************************************************************************************************/ + 347 S16 OffsetCalculate(void) + 348 { + 349 1 S16 xdata siCadcTempOffset=0; //20220620 + 350 1 U8 xdata i; + 351 1 + 352 1 for(i=0; i<12; i++) + 353 1 { + 354 2 if(Info.uiICTempe[0] <= (((S32)siCurTempOffset[0][i] + siCurTempOffset[0][i+1]) / 2 * 10 + 2731)) + 355 2 { + 356 3 siCadcTempOffset = siCurTempOffset[1][i]; + 357 3 break; + 358 3 } + 359 2 } + 360 1 return siCadcTempOffset; + 361 1 } + C51 COMPILER V9.01 CALCULATE 02/06/2025 15:28:45 PAGE 7 + + 362 + 363 /************************************************************************************************* + 364 * 函数名: AfeCalcuCurr + 365 * 参 数: 无 + 366 * 返回值: 无 + 367 * 描 述: 计算CADC采集的电流数据 + 368 *************************************************************************************************/ + 369 void AfeCalcuCurr(void) + 370 { + 371 1 U8 i; + 372 1 S32 Tempdata=0; + 373 1 + 374 1 AFEReadReg(AFE_CURH, 2, (U8 xdata *)&AFE.siCurr); //通过TWI读取CADC采集的电流值 + 375 1 + 376 1 if((AFE.siCurr&0x1000) != 0) //根据bit12判断是否为负数(放电电流为负值),如为负值高位补0 + 377 1 { + 378 2 AFE.siCurr|=0xE000; + 379 2 } + 380 1 slCadcCurrent = (S32)CALICUR*(AFE.siCurr-E2siCadcOffset+OffsetCalculate())/E2siCadcGain; + 381 1 + 382 1 slCadcCurBuf[ucCadcCnt] = slCadcCurrent; //对连续采集的16次电流取平均值,作为当前电流值 + 383 1 if(++ucCadcCnt >= 16) + 384 1 { + 385 2 ucCadcCnt = 0; + 386 2 } + 387 1 for(i=0; i<16; i++) + 388 1 { + 389 2 Tempdata += slCadcCurBuf[i]; + 390 2 } + 391 1 slCadcCurAverage = Tempdata/16; + 392 1 + 393 1 bDSGING = 0; //根据电流判定充放电状态 + 394 1 bCHGING = 0; + 395 1 if(slCadcCurAverage < (-E2siDfilterCur)) + 396 1 { + 397 2 if(++ucDsgingCheckCnt >= TIME_50MS_500MS) //充放电状态检测延时10*50mS + 398 2 { + 399 3 ucDsgingCheckCnt = TIME_50MS_500MS; + 400 3 bDSGING = 1; + 401 3 #if (UART0_DEFINE != 0) + 402 3 IrqUart0Dis(); + 403 3 #endif + 404 3 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + 407 3 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 410 3 Info.slCurr = slCadcCurAverage; + 411 3 #if (UART0_DEFINE != 0) + 412 3 IrqUart0En(); //开启uart0中断 + 413 3 #endif + 414 3 #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + 417 3 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 420 3 } + 421 2 } + 422 1 else if(slCadcCurAverage > E2siDfilterCur) + 423 1 { + C51 COMPILER V9.01 CALCULATE 02/06/2025 15:28:45 PAGE 8 + + 424 2 if(++ucChgingCheckCnt >= TIME_50MS_500MS) //充放电状态检测延时10*50mS + 425 2 { + 426 3 ucChgingCheckCnt = TIME_50MS_500MS; + 427 3 bCHGING = 1; + 428 3 McuPWM2Set(4000, 100); + 429 3 #if (UART0_DEFINE != 0) + 430 3 IrqUart0Dis(); + 431 3 #endif + 432 3 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + 435 3 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 438 3 Info.slCurr = slCadcCurAverage; + 439 3 #if (UART0_DEFINE != 0) + 440 3 IrqUart0En(); //开启uart0中断 + 441 3 #endif + 442 3 #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + 445 3 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 448 3 } + 449 2 } + 450 1 else + 451 1 { + 452 2 #if (UART0_DEFINE != 0) + 453 2 IrqUart0Dis(); + 454 2 #endif + 455 2 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + 458 2 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 461 2 Info.slCurr = 0; + 462 2 #if (UART0_DEFINE != 0) + 463 2 IrqUart0En(); //开启uart0中断 + 464 2 #endif + 465 2 #if (UART1_DEFINE != 0) + IrqUart1En(); //开启uart1中断 + #endif + 468 2 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 471 2 } + 472 1 } + 473 + 474 + 475 /************************************************************************************************* + 476 * 函数名: AFEInfoProcess + 477 * 参 数: 无 + 478 * 返回值: 无 + 479 * 描 述: 每50mS读取AFE信息,并更新电压、电流、温度数据 + 480 *************************************************************************************************/ + 481 void AFEInfoProcess(void) + 482 { + 483 1 AFERdFlg(); + 484 1 + 485 1 bVADCFlg = 0; + C51 COMPILER V9.01 CALCULATE 02/06/2025 15:28:45 PAGE 9 + + 486 1 AfeCalcuVol(); + 487 1 AfeCalcuTempe(); + 488 1 + 489 1 if(bCADCFlg) //当CADC转换完成后,才读取AFE电流信息并计算 + 490 1 { + 491 2 bCADCFlg = 0; + 492 2 AfeCalcuCurr(); + 493 2 } + 494 1 } + 495 + 496 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 1760 ---- + CONSTANT SIZE = 52 ---- + XDATA SIZE = 2 25 + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- 2 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Calculate.obj b/output/Calculate.obj new file mode 100644 index 0000000..189bffa Binary files /dev/null and b/output/Calculate.obj differ diff --git a/output/Calibrate.lst b/output/Calibrate.lst new file mode 100644 index 0000000..62873ee --- /dev/null +++ b/output/Calibrate.lst @@ -0,0 +1,207 @@ +C51 COMPILER V9.01 CALIBRATE 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE CALIBRATE +OBJECT MODULE PLACED IN .\output\Calibrate.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\Calibrate.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_L + -oad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\ + -code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Calibrate.lst) OBJECT(.\output + -\Calibrate.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 BOOL bCaliFlg; //上位机发送校准命令后置位该标志 + 13 U16 xdata ulExtVPack; + 14 S32 xdata slExtCur; + 15 U16 xdata uiExtTemp1; + 16 U16 xdata uiExtTemp2; + 17 U8 xdata ucExtRTC[7]; + 18 U8 xdata ucExtcaliSwitch1; + 19 + 20 /************************************************************************************************* + 21 * 函数名: CaliVoltage + 22 * 参 数: 无 + 23 * 返回值: 无 + 24 * 描 述: 校准总电压,更新E2uiVPackGain增益 + 25 *************************************************************************************************/ + 26 void CaliVoltage(void) + 27 { + 28 1 U8 i; + 29 1 U16 VPackTemp = 0; + 30 1 + 31 1 for(i=ucCellNumOffset; i<(ucCellNumOffset+ucCellNum); i++) + 32 1 { + 33 2 VPackTemp += AFE.uiCell[i]; + 34 2 } + 35 1 + 36 1 E2uiVPackGain = (U32)CALIPACKVOL*VPackTemp/ulExtVPack; + 37 1 } + 38 + 39 + 40 /************************************************************************************************* + 41 * 函数名: CaliCurrentGain + 42 * 参 数: 无 + 43 * 返回值: 无 + 44 * 描 述: 校准电流增益E2siCadcGain,连续两次采集的电流求平均后再校准更新 + 45 *************************************************************************************************/ + 46 void CaliCurrentGain(void) + 47 { + 48 1 S16 TempGain; + 49 1 + 50 1 TempGain = (S32)CALICUR*(AFE.siCurr-E2siCadcOffset)/slExtCur; + 51 1 if(TempGain != 0) + 52 1 { + C51 COMPILER V9.01 CALIBRATE 02/06/2025 15:28:45 PAGE 2 + + 53 2 E2siCadcGain = TempGain; + 54 2 } + 55 1 } + 56 + 57 + 58 /************************************************************************************************* + 59 * 函数名: CaliCurZero + 60 * 参 数: 无 + 61 * 返回值: 无 + 62 * 描 述: 校准零电流 + 63 *************************************************************************************************/ + 64 void CaliCurZero(void) + 65 { + 66 1 E2siCadcOffset = AFE.siCurr; + 67 1 } + 68 + 69 + 70 /************************************************************************************************* + 71 * 函数名: CaliTS1、CaliTS2 + 72 * 参 数: 无 + 73 * 返回值: 无 + 74 * 描 述: 校准温度,温度偏差小于15℃才允许校准 + 75 *************************************************************************************************/ + 76 void CaliTS1(void) + 77 { + 78 1 S16 Tempe; + 79 1 + 80 1 Tempe = uiExtTemp1 - CalcuTemp(AFE.uiTS[0]); + 81 1 if(((Tempe-E2siTS0Offset)<150) && ((Tempe-E2siTS0Offset)>-150)) + 82 1 { + 83 2 E2siTS0Offset = Tempe; + 84 2 } + 85 1 } + 86 + 87 void CaliTS2(void) + 88 { + 89 1 S16 Tempe; + 90 1 + 91 1 Tempe = uiExtTemp2 - CalcuTemp(AFE.uiTS[1]); + 92 1 if(((Tempe-E2siTS1Offset)<150) && ((Tempe-E2siTS1Offset)>-150)) + 93 1 { + 94 2 E2siTS1Offset = Tempe; + 95 2 } + 96 1 } + 97 + 98 + 99 + 100 /************************************************************************************************* + 101 * 函数名: CaliRTCTime + 102 * 参 数: 无 + 103 * 返回值: 无 + 104 * 描 述: 校准RTC + 105 *************************************************************************************************/ + 106 void CaliRTCTime(void) + 107 { + 108 1 RTC.Second = ucExtRTC[0]; + 109 1 RTC.Minute = ucExtRTC[1]; + 110 1 RTC.Hour = ucExtRTC[2]; + 111 1 RTC.Date = ucExtRTC[3]; + 112 1 RTC.Month = ucExtRTC[4]; + 113 1 RTC.Year = ucExtRTC[5]; + 114 1 RTC.Week = ucExtRTC[6]; + C51 COMPILER V9.01 CALIBRATE 02/06/2025 15:28:45 PAGE 3 + + 115 1 + 116 1 RTCModifyTime(&RTC); + 117 1 + 118 1 bE2PProcessFlg = 1; //校准RTC之后,需要保存RTC数据至外部EEP + 119 1 bE2PBKRtc = 1; + 120 1 } + 121 + 122 + 123 + 124 /************************************************************************************************* + 125 * 函数名: CaliProcess + 126 * 参 数: 无 + 127 * 返回值: 无 + 128 * 描 述: 处理校准,通讯中断会置位当前需要校准模块对应的标志。 + 129 校准结束后,将校准参数写入Flash + 130 *************************************************************************************************/ + 131 void CaliProcess(void) + 132 { + 133 1 if(bCaliFlg) + 134 1 { + 135 2 bCaliFlg = 0; + 136 2 + 137 2 if((ucExtcaliSwitch1 & 0x01) != 0) //校准总电压 + 138 2 { + 139 3 CaliVoltage(); + 140 3 } + 141 2 + 142 2 if((ucExtcaliSwitch1 & 0x10) != 0) //校准电流增益 + 143 2 { + 144 3 CaliCurrentGain(); + 145 3 } + 146 2 + 147 2 if((ucExtcaliSwitch1 & 0x20) != 0) //校准零电流 + 148 2 { + 149 3 CaliCurZero(); + 150 3 } + 151 2 + 152 2 if((ucExtcaliSwitch1 & 0x04) != 0) //校准TS1 + 153 2 { + 154 3 CaliTS1(); + 155 3 } + 156 2 + 157 2 if((ucExtcaliSwitch1 & 0x08) != 0) //校准TS2 + 158 2 { + 159 3 CaliTS2(); + 160 3 } + 161 2 + 162 2 if((ucExtcaliSwitch1 & 0x80) != 0) //校准RTC + 163 2 { + 164 3 CaliRTCTime(); + 165 3 } + 166 2 + 167 2 ucExtcaliSwitch1 = 0; + 168 2 bMcuFlashWrWaitFlg = 1; //更新Flash参数 + 169 2 bMcuFlashWrWaitCnt = MCU_FLASH_WATI_DELAY; //立即写 + 170 2 } + 171 1 } + 172 + 173 + 174 + 175 + + C51 COMPILER V9.01 CALIBRATE 02/06/2025 15:28:45 PAGE 4 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 469 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 18 2 + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 1 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Calibrate.obj b/output/Calibrate.obj new file mode 100644 index 0000000..bc96462 Binary files /dev/null and b/output/Calibrate.obj differ diff --git a/output/ChargerLoad.lst b/output/ChargerLoad.lst new file mode 100644 index 0000000..55f3a9f --- /dev/null +++ b/output/ChargerLoad.lst @@ -0,0 +1,125 @@ +C51 COMPILER V9.01 CHARGERLOAD 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE CHARGERLOAD +OBJECT MODULE PLACED IN .\output\ChargerLoad.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\ChargerLoad.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore + -_Load.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include; + -.\code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\ChargerLoad.lst) OBJECT(.\ou + -tput\ChargerLoad.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 //充电器和负载检测 + 13 BOOL bChgerStartCheckFlg; + 14 BOOL bChgerChkingFlg; + 15 BOOL bLoadStartCheckFlg; + 16 BOOL bLoadChkingFlg; + 17 U8 xdata ucChgerRCnt; + 18 U8 xdata ucLoadRCnt; + 19 + 20 /************************************************************************************************* + 21 * 函数名: LoadCheck + 22 * 参 数: 无 + 23 * 返回值: 无 + 24 * 描 述: 负载检测,欠压和过流保护后,需启动负载锁定功能 + 25 *************************************************************************************************/ + 26 void LoadCheck(void) + 27 { + 28 1 if(bLoadStartCheckFlg) //如果发生欠压保护,且电压已经恢复;如果已经发生过流保护 + 29 1 { + 30 2 bLoadStartCheckFlg = 0; + 31 2 bLoadChkingFlg = 1; + 32 2 ucLoadRCnt = 0; + 33 2 AFELoadCheckEn(); //开启AFE负载检测 + 34 2 } + 35 1 else if(bLoadChkingFlg) + 36 1 { + 37 2 AFERdStatus(); + 38 2 if(!bAfeLoad) //检测到负载释放 + 39 2 { + 40 3 if(++ucLoadRCnt >= LOAD_DELAY_CNT) + 41 3 { + 42 4 bLoadChkingFlg = 0; + 43 4 ucLoadRCnt = 0; + 44 4 AFELoadCheckDis(); //关闭负载检测 + 45 4 if(bUVLock) + 46 4 { + 47 5 bUV = 0; //释放欠压、过流 + 48 5 } + 49 4 bOCD1 = 0; + 50 4 bOCD2 = 0; + 51 4 if(bAFE_SC) + 52 4 { + C51 COMPILER V9.01 CHARGERLOAD 02/06/2025 15:28:45 PAGE 2 + + 53 5 bAFE_SC = 0; + 54 5 AFEClrFlg(); //清除短路保护标志 + 55 5 } + 56 4 } + 57 3 } + 58 2 } + 59 1 } + 60 + 61 + 62 /************************************************************************************************* + 63 * 函数名: ChgerCheck + 64 * 参 数: 无 + 65 * 返回值: 无 + 66 * 描 述: 检测充电器,当发生欠压后检测充电器是否连接;当发生充电过流后检测充电器是否移除 + 67 *************************************************************************************************/ + 68 void ChgerCheck(void) + 69 { + 70 1 if(bChgerStartCheckFlg) + 71 1 { + 72 2 bChgerStartCheckFlg = 0; + 73 2 bChgerChkingFlg = 1; + 74 2 ucChgerRCnt = 0; + 75 2 AFEChgerCheckEn(); //开启充电器检测 + 76 2 } + 77 1 else if(bChgerChkingFlg) + 78 1 { + 79 2 AFERdStatus(); + 80 2 if(!bAfeChger) //充电器移除 + 81 2 { + 82 3 if(++ucChgerRCnt >= CHGER_DELAY_CNT) + 83 3 { + 84 4 bChgerChkingFlg = 0; + 85 4 ucChgerRCnt = 0; + 86 4 AFEChgerCheckDis(); //关闭充电器检测 + 87 4 if(bOVLock) + 88 4 { + 89 5 bOV = 0; //释放过压 + 90 5 bAFE_OV = 0; + 91 5 AFEClrFlg(); + 92 5 } + 93 4 bOCC = 0; + 94 4 } + 95 3 } + 96 2 } + 97 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 151 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 2 ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 4 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/ChargerLoad.obj b/output/ChargerLoad.obj new file mode 100644 index 0000000..3c1859a Binary files /dev/null and b/output/ChargerLoad.obj differ diff --git a/output/DataFlash.lst b/output/DataFlash.lst new file mode 100644 index 0000000..7e636f0 --- /dev/null +++ b/output/DataFlash.lst @@ -0,0 +1,720 @@ +C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE DATAFLASH +OBJECT MODULE PLACED IN .\output\DataFlash.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_dataflash\DataFlash.c LARGE OPTIMIZE(7,SIZE) BROWSE INCDIR(.\head + -er) DEBUG OBJECTEXTEND PRINT(.\output\DataFlash.lst) OBJECT(.\output\DataFlash.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2014/09/10 + 6 History: + 7 V0.0 2014/09/10 Preliminary + 8 ********************************************************************************/ + 9 //*** <<< use Configuration Wizard in Context Menu >>> *** + 10 #define _RAM_CHECK_DATA 0x5A + 11 #define _FLASH_CHECK_DATA 0x5AA5 + 12 + 13 // 系统信息区(SubClassID=0x00 length=48) + 14 // 电池包信息(E2uiPackConfigMap) + 15 // 负载锁定 + 16 #define _EPCM_LOAD_LOCK 0 //BIT15; 0:不使能负载锁定; 1:使能负载锁定 + 17 // 充电器锁定 + 18 #define _EPCM_CHARGER_LOCK 0 //BIT14; 0:不支持充电器锁定; 1:支持充电器锁定 + 19 // 温度检测点个数 + 20 #define _EPCM_TEMP_NUM 1 //BIT13; 0:单个温度检测点 1:两个温度检测点 + 21 // LED显示个数 + 22 #define _EPCM_LED_NUM 0 //BIT11~12; 未调用 + 23 // 电芯串数 + 24 #define _EPCM_CELL_NUM 10 //BIT8~10; 电芯串数,6~10串 + 25 // 外挂EEPROM备份 + 26 #define _EPCM_EEPROM_EN 0 //BIT7; 0:不使能外挂EE备份功能; 1:使能外挂EE备份功能 + 27 // 放电过流MOS控制 + 28 #define _EPCM_OCPM 0 //BIT6; 未调用(0:放电过流关闭放电mos 1:放电过流关闭充放电mos) + 29 // 断线检测 + 30 #define _EPCM_CTO_EN 1 //BIT5; 0:不使能断线保护功能; 1:使能断线保护功能 + - + 31 // 二级保护 + 32 #define _EPCM_PF_EN 1 //BIT4; 0:不使能二级保护功能; 1:使能二级保护功能 + 33 // 均衡 + 34 #define _EPCM_BAL_EN 0 //BIT3; 0:不使能均衡功能; 1:使能均衡功能 + 35 // 过流自恢复 + 36 #define _EPCM_OCRC_EN 0 //BIT2; 0:不使能过流自恢复功能; 1:使能过流自恢复功能 + 37 // 硬件过压保护 + 38 #define _EPCM_OV_EN 1 //BIT1; 0:不使能硬件过压功能; 1:使能硬件过压功能 + 39 // 硬件短路保护 + 40 #define _EPCM_SC 1 //BIT0; 0:不使能硬件短路保护功能; 1:使能硬件短路保护功能 + 41 + 42 #define _E2_PACKCONFIGMAP (_EPCM_EEPROM_EN<<15)|(_EPCM_OCPM<<14)|(_EPCM_CTO_EN<<13)|(_EPCM_PF_EN<<12) + -\ + 43 |(_EPCM_BAL_EN<<11)|(_EPCM_OCRC_EN<<10)|(_EPCM_OV_EN<<9)\ + 44 |(_EPCM_SC<<8)|(_EPCM_LOAD_LOCK<<7)|(_EPCM_CHARGER_LOCK<<6)\ + 45 |(_EPCM_TEMP_NUM<<5)|(_EPCM_LED_NUM<<4)|(_EPCM_CELL_NUM-3) //U16 xdata E2uiPackConfigMap + 46 + 47 // + 48 + 49 // OCV电压(mV) + 50 // 10%容量对应电压 + 51 #define _E2_VOC10 3200 //U16 xdata VOC10 + 52 // 20%容量对应电压 + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 2 + + 53 #define _E2_VOC20 3400 //U16 xdata VOC10 + 54 // 30%容量对应电压 + 55 #define _E2_VOC30 3550 //U16 xdata VOC10 + 56 // 40%容量对应电压 + 57 #define _E2_VOC40 3700 //U16 xdata VOC10 + 58 // 50%容量对应电压 + 59 #define _E2_VOC50 3800 //U16 xdata VOC10 + 60 // 60%容量对应电压 + 61 #define _E2_VOC60 3900 //U16 xdata VOC10 + 62 // 70%容量对应电压 + 63 #define _E2_VOC70 4000 //U16 xdata VOC10 + 64 // 80%容量对应电压 + 65 #define _E2_VOC80 4100 //U16 xdata VOC10 + 66 // 90%容量对应电压 + 67 #define _E2_VOC90 4150 //U16 xdata VOC10 + 68 // 100%容量对应电压 + 69 #define _E2_VOC100 4200 //U16 xdata VOC10 + 70 // + 71 + 72 // 延时参数及预留容量参数 + 73 // 设计容量(mAh) + 74 #define _E2_ulDesignCapacity 4000 //U32 xdata E2ulDesignCapacity + 75 // 满充容量(mAh) + 76 #define _E2_ulFCC 4000 //U32 xdata E2ulFCC + 77 // 循环次数更新阈值 + 78 #define _E2_ulCycleThreshold 3000 // U32 xdata E2ulCycleThreshold + 79 // 循环次数 + 80 #define _E2_uiCycleCount 0 // U16 xdata E2uiCycleCount + 81 // 容量学习温度 + 82 #define _E2_uiLearnLowTempe 2881 // U16 xdata E2uiLearnLowTempe + 83 #define _E2_Reserve 0 // U16 xdata E2Reserve 预留占位 + 84 // 充放电检测阈值 + 85 #define _E2_siDfilterCur 100 // U16 xdata E2siDfilterCur + 86 // 低功耗检测延时 + 87 #define _E2_ucLowPowerDeley 20 // U16 xdata E2ucLowPowerDeley + 88 // 充电备份检测延时 + 89 #define _E2_ucChgBKDelay 1 // U16 xdata E2ucChgBKDelay + 90 // 充电备份检测电流 + 91 #define _E2_siChgBKCur 100 // U16 xdata E2siChgBKCur + 92 // RTC备份检测延时 + 93 #define _E2_ucRTCBKDelay 5 // U16 xdata E2ucRTCBKDelay + 94 #define _E2_ucRamCheckFlg0 _RAM_CHECK_DATA // U16 xdata E2ucRamCheckFlg0 + 95 // + 96 // + 97 + 98 // 用户自定义参数(SubClassID=0x01 length=50) + 99 // 软件版本(EXP:0x0106 = V1.06)<0x0000-0xffff> + 100 #define _E2_SWVersion 0x0215 // U16 xdata SWVersion + 101 // 硬件版本(EXP:0x0106 = V1.06)<0x0000-0xffff> + 102 #define _E2_HWVersion 0x0130 // U16 xdata HWVersion + 103 // 设备ID<0x00-0xff> + 104 #define _E2_ID 0x00 // U8 xdata ID + 105 // 制造商名称 + 106 #define _E2_MNFName "sinowealth" // U8 xdata MNFName[12] + 107 // 生产日期(exp:0x20230404=2023.04.04)<0x00000000-0xffffffff> + 108 #define _E2_MNFDate 0x20231222 // U32 xdata MNFDate + 109 // 序列号<0x0000-0xffff> + 110 #define _E2_SerialNum 0x0000 // U16 xdata SerialNum + 111 // 设备名称 + 112 #define _E2_DeviceName "SH39F004" // U8 xdata DeviceName[12] + 113 // 电芯材料 + 114 #define _E2_DeviceChem "LION" // U8 xdata DeviceChem[12] + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 3 + + 115 // 电芯化学ID<0x0000-0xffff> + 116 #define _E2_ChemID 0x0000 // U16 xdata ChemID + 117 #define _E2_ucRamCheckFlg1 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg2 + 118 // + 119 + 120 // 充电参数(SubClassID=0x02 length=18) + 121 // 过压保护阈值 + 122 #define _E2_uiOVvol 4250 // U16 xdata E2uiOVvol + 123 // 过压保护恢复阈值 + 124 #define _E2_uiOVRvol 4150 // U16 xdata E2uiOVRvol + 125 // 过压保护延时 + 126 #define _E2_ucDelayOV 2 // U8 xdata E2ucDelayOV + 127 // 过压保护恢复延时 + 128 #define _E2_ucDelayOVR 2 // U8 xdata E2ucDelayOVR + 129 // 充电截止电压(mV) + 130 #define _E2_uiChgEndVol 4160 // U16 xdata E2uiChgEndVol + 131 // 充电截止电流(mA) + 132 #define _E2_siChgEndCurr 100 // S16 xdata E2siChgEndCurr + 133 // 充电截止延时(S) + 134 #define _E2_ucChgEndDelay 5 // U8 xdata E2ucChgEndDelay + 135 // 充电过流保护阈值 + 136 #define _E2_slOCCvol 3000 // U32 xdata E2slOCCvol + 137 // 充电过流保护延时 + 138 #define _E2_ucDelayOCC 2 // U8 xdata E2ucDelayOCC + 139 // 充电过流保护恢复延时 + 140 #define _E2_ucDelayOCCR 2 // U8 xdata E2ucDelayOCCR + 141 #define _E2_ucRamCheckFlg2 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg2 + 142 // + 143 + 144 // 放电参数(SubClassID=0x03 length=21) + 145 // 欠压保护电压 + 146 #define _E2_uiUVvol 2700 // U16 xdata E2uiUVvol + 147 // 欠压保护恢复电压 + 148 #define _E2_uiUVRvol 3000 // U16 xdata E2uiUVRvol + 149 // 欠压保护延时 + 150 #define _E2_ucDelayUV 2 // U8 xdata E2ucDelayUV + 151 // 欠压保护恢复延时 + 152 #define _E2_ucDelayUVR 2 // U8 xdata E2ucDelayUVR + 153 // 放电截止延时(S) + 154 #define _E2_ucDsgEndDelay 5 // U8 xdata E2ucDsgEndDelay + 155 // 放电截止电压(mV) + 156 #define _E2_uiDsgEndVol 2900 // U16 xdata E2uiDsgEndVol + 157 // 放电过流1保护阈值 + 158 #define _E2_uiOCDvol -20000 //U32 xdata E2uiOCDvol + 159 // 放电过流1保护延时 + 160 #define _E2_ucDelayOCD 2 //U8 xdata E2ucDelayOCD + 161 // 放电过流2保护阈值 + 162 #define _E2_slOCD2vol -40000 // S32 xdata E2slOCD2vol + 163 // 放电过流2保护延时 + 164 #define _E2_ucDelayOCD2 2 //U8 xdata E2ucDelayOCD2 + 165 // 负载移除检测延时 + 166 #define _E2_ucDelayLoadR 4 //U8 xdata E2ucDelayLoadR + 167 #define _E2_ucRamCheckFlg3 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg3 + 168 // + 169 + 170 // 放电PWM参数(SubClassID=0x05 length=5) + 171 // PWM频率(Hz) + 172 #define _E2_DSG1PWMFreq 4000 // U16 xdata DSG1PWMFreq + 173 // PWM低档占空比(%) + 174 #define _E2_DSG1PWMRatioL 30 // U8 xdata DSG1PWMRatioL + 175 // PWM高档占空比(%) + 176 #define _E2_DSG1PWMRatioH 70 // U8 xdata DSG1PWMRatioH + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 4 + + 177 #define _E2_ucRamCheckFlg5 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg5 + 178 // + 179 + 180 // 充电温度保护参数(SubClassID=0x06 length=11) + 181 // 充电高温保护温度(_E2_TempOTC=保护温度*10+2731) + 182 #define _E2_TempOTC 3231 // U16 xdata TempOTC + 183 // 充电高温保护释放温度(_E2_TempOTCR=释放温度*10+2731) + 184 #define _E2_TempOTCR 3181 // U16 xdata TempOTCR + 185 // 充电低温保护温度(_E2_TempUTC=保护温度*10+2731) + 186 #define _E2_TempUTC 2731 // U16 xdata TempUTC + 187 // 充电低温保护释放温度(_E2_TempUTCR=释放温度*10+2731) + 188 #define _E2_TempUTCR 2781 // U16 xdata TempUTCR + 189 // 温度保护延时(s) + 190 #define _E2_DelayOTC 3 // U8 xdata DelayOTC + 191 // 温度保护释放延时(s) + 192 #define _E2_DelayOTCR 3 // U8 xdata DelayOTCR + 193 #define _E2_ucRamCheckFlg6 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg6 + 194 // + 195 + 196 // 放电温度保护参数(SubClassID=0x07 length=9) + 197 // 放电高温保护温度(_E2_TempOTC=保护温度*10+2731) + 198 #define _E2_TempOTD 3431 // U16 xdata TempOTD + 199 // 放电高温保护释放温度(_E2_TempOTCR=释放温度*10+2731) + 200 #define _E2_TempOTDR 3281 // U16 xdata TempOTDR + 201 // 放电低温保护温度(_E2_TempUTC=保护温度*10+2731) + 202 #define _E2_TempUTD 2631 // U16 xdata TempUTD + 203 // 放电低温保护释放温度(_E2_TempUTCR=释放温度*10+2731) + 204 #define _E2_TempUTDR 2681 // U16 xdata TempUTDR + 205 #define _E2_ucRamCheckFlg7 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg6 + 206 // + 207 + 208 // 平衡参数(SubClassID=0x08 length=8) + 209 // 平衡电压(mV) + 210 #define _E2_BalanceVol 4180 // U16 xdata BalanceVol + 211 // 平衡压差(mV) + 212 #define _E2_BalanceVolDiff 20 // U16 xdata BalanceVolDiff + 213 // 平衡电流(mA) + 214 #define _E2_BalCurrent 100 // S16 xdata BalCurrent + 215 // 平衡检测延时(S) + 216 #define _E2_BalanceDelay 2 // U8 xdata BalanceDelay + 217 #define _E2_ucRamCheckFlg8 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg8 + 218 // + 219 + 220 // 容量统计参数(SubClassID=0x09 length=17) + 221 // 容量百分比SOC(%) + 222 #define _E2_ucSOC 100 // U8 xdata E2ucSOC + 223 // 剩余容量E2ulDfRC(mAh) + 224 #define _E2_ulDfRC 3000 // U32 xdata E2ulLastFCC + 225 // 放电截止电流 + 226 #define _E2_slDsgEndCurr -5000 // U32 xdata E2slDsgEndCurr + 227 // 放电循环次数变更计数值 + 228 #define _E2_ulCycleThresholdCount 0 // U32 xdata E2ulCycleThresholdCount + 229 // 上次更新容量时的循环次数 + 230 #define _E2_uiLastCCount 0 // U16 xdata E2uiLastCCount + 231 // 放电截止标志 + 232 #define _E2_ucDsgEndFlg 0 //U8 xdata E2ucDsgEndFlg + 233 #define _E2_ucRamCheckFlg9 _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlg9 + 234 // + 235 + 236 // AFE参数(SubClassID=0x0A length=4) + 237 // 保护配置 + 238 #define _E2_AFEProtectConfig 0x74 // U8 xdata AFEProtectConfig + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 5 + + 239 // 硬件过压保护阈值 + 240 #define _E2_AFEOVvol 4400 // U16 xdata AFEOVvol + 241 #define _E2_ucRamCheckFlgA _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlgA + 242 // + 243 + 244 // 校准参数(SubClassID=0x0B length=12) + 245 // 电压校准增益 + 246 #define _E2_uiVPackGain 2594 // U16 xdata E2uiVPackGain + 247 // 电流校准增益 + 248 #define _E2_siCadcGain -82 // S16 xdata E2siCadcGain + 249 // 电流零漂 + 250 #define _E2_siCadcOffset 1 // S16 xdata E2siCadcOffset + 251 // 外部温度零漂(TS0) + 252 #define _E2_siTS0Offset 0 // S16 xdata E2siTS0Offset + 253 // 外部温度零漂(TS1) + 254 #define _E2_siTS1Offset 0 // S16 xdata E2siTS1Offset + 255 // 校准参数预留 + 256 #define _E2_ucCalibrated 0 // U8 xdata E2ucCalibrated + 257 #define _E2_ucRamCheckFlgB _RAM_CHECK_DATA // U8 xdata E2ucRamCheckFlgB + 258 // + 259 + 260 /********************************************************************************************************* + -********/ + 261 /********************************************************************************************************* + -********/ + 262 /********************************************************************************************************* + -********/ + 263 /********************************************************************************************************* + -********/ + 264 /********************************************************************************************************* + -********/ + 265 /********************************************************************************************************* + -********/ + 266 /********************************************************************************************************* + -********/ + 267 /********************************************************************************************************* + -********/ + 268 /********************************************************************************************************* + -********/ + 269 /********************************************************************************************************* + -********/ + 270 /********************************************************************************************************* + -********/ + 271 /********************************************************************************************************* + -********/ + 272 + 273 struct DataFlashStu + 274 { + 275 //系统信息区开始 SubClassID=0x00 length=48 + 276 unsigned int E2uiPackConfigMap; + 277 unsigned int E2uiVOC[10]; + 278 unsigned long E2ulDesignCapacity; + 279 unsigned long E2ulFCC; + 280 unsigned long E2ulCycleThreshold; + 281 unsigned int E2uiCycleCount; + 282 unsigned int E2uiLearnLowTempe; + 283 unsigned int E2Reserve; + 284 signed int E2siDfilterCur; + 285 unsigned char E2ucLowPowerDeley; + 286 unsigned char E2ucChgBKDelay; + 287 unsigned int E2siChgBKCur; + 288 unsigned char E2ucRTCBKDelay; + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 6 + + 289 unsigned char E2ucRamCheckFlg0; + 290 + 291 //用户自定义参数区开始 SubClassID=0x01 langth=50 + 292 unsigned int E2uiSWVersion; + 293 unsigned int E2uiHWVersion; + 294 unsigned char E2ucID; + 295 unsigned char E2ucMNFName[12]; + 296 unsigned long E2ulMNFDate; + 297 unsigned int E2uiSerialNum; + 298 unsigned char E2ucDeviceName[12]; + 299 unsigned char E2ucDeviceChem[12]; + 300 unsigned int E2uiChemID; + 301 unsigned char E2ucRamCheckFlg1; + 302 + 303 //充电参数区开始 SubClassID=0x02 langth=18 + 304 unsigned int E2uiOVvol; + 305 unsigned int E2uiOVRvol; + 306 unsigned char E2ucOVDelay; + 307 unsigned char E2ucOVRDelay; + 308 unsigned int E2uiChgEndVol0; + 309 signed int E2siChgEndCurr0; + 310 unsigned char E2ucChgEndDelay0; + 311 signed long E2slOCCvol; + 312 unsigned char E2ucDelayOCC; + 313 unsigned char E2ucDelayOCCR; + 314 unsigned char E2ucRamCheckFlg2; + 315 + 316 //放电参数区开始 SubClassID=0x03 langth=21 + 317 unsigned int E2uiUVvol; + 318 unsigned int E2uiUVRvol; + 319 unsigned char E2ucDelayUV; + 320 unsigned char E2ucDelayUVR; + 321 unsigned int E2uiDsgEndVol; + 322 unsigned char E2ucDsgEndDelay; + 323 signed long E2uiOCDvol; + 324 unsigned char E2ucDelayOCD; + 325 signed long E2slOCD2vol; + 326 unsigned char E2ucDelayOCD2; + 327 unsigned char E2ucDelayLoadR; + 328 unsigned char E2ucRamCheckFlg3; + 329 + 330 //放电PWM参数区开始 SubClassID=0x05 langth=5 + 331 unsigned int DSG1PWMFreq; + 332 unsigned char DSG1PWMRatioL; + 333 unsigned char DSG1PWMRatioH; + 334 unsigned char E2ucRamCheckFlg5; + 335 + 336 + 337 //充电温度保护参数开始 SubClassID=0x06 langth=11 + 338 unsigned int TempOTC; + 339 unsigned int TempOTCR; + 340 unsigned int TempUTC; + 341 unsigned int TempUTCR; + 342 unsigned char DelayOTC; + 343 unsigned char DelayOTCR; + 344 unsigned char E2ucRamCheckFlg6; + 345 + 346 //放电温度保护参数开始 SubClassID=0x07 langth=9 + 347 unsigned int TempOTD; + 348 unsigned int TempOTDR; + 349 unsigned int TempUTD; + 350 unsigned int TempUTDR; + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 7 + + 351 unsigned char E2ucRamCheckFlg7; + 352 + 353 //平衡参数区开始 SubClassID=0x08 langth=8 + 354 unsigned int BalanceVol; + 355 unsigned int BalanceVolDiff; + 356 unsigned int BalCurrent; + 357 unsigned char BalanceDelay; + 358 unsigned char E2ucRamCheckFlg8; + 359 + 360 //容量统计 SubClassID=0x09 length=17 + 361 unsigned char E2ucSOC; + 362 unsigned long E2ulDfRC; + 363 signed long E2slDsgEndCurr; + 364 unsigned long E2ulCycleThresholdCount; + 365 unsigned int E2uiLastCCount; + 366 unsigned char E2ucDsgEndFlg; + 367 unsigned char E2ucRamCheckFlg9; + 368 + 369 //AFE参数区开始 SubClassID=0x0A length=4 + 370 unsigned char AFEProtectConfig; + 371 unsigned int AFEOVvol; + 372 unsigned char E2ucRamCheckFlgA; + 373 + 374 //校准参数区开始 SubClassID=0x0B length=12 + 375 unsigned int E2uiVPackGain; + 376 signed int E2siCadcGain; + 377 unsigned int E2siCadcOffset; + 378 unsigned int E2siTS0Offset; + 379 unsigned int E2siTS1Offset; + 380 unsigned char E2ucCalibrated; + 381 unsigned char E2ucRamCheckFlgB; + 382 }; + 383 + 384 union DataFlashUn + 385 { + 386 struct DataFlashStu DataFlashStu0; /*一定要先声明结构体再定义数组*/ + 387 unsigned char reversed[510]; + 388 }; + 389 + 390 struct DataFlashStr + 391 { + 392 union DataFlashUn DataFlashUnRaw; + 393 unsigned int FlashCheck1; + 394 union DataFlashUn DataFlashUnBak; + 395 unsigned int FlashCheck2; + 396 }; + 397 + 398 struct DataFlashStr code dataflashstr = + 399 { + 400 /********************************************************************************************************* + -********/ + 401 //备份A区 + 402 /********************************************************************************************************* + -********/ + 403 //系统信息区开始 SubClassID=0x00 length=48 + 404 { + 405 _E2_PACKCONFIGMAP, //U16 xdata E2uiPackConfigMap + 406 _E2_VOC10, //U16 xdata VOC10 + 407 _E2_VOC20, //U16 xdata VOC20 + 408 _E2_VOC30, //U16 xdata VOC30 + 409 _E2_VOC40, //U16 xdata VOC40 + 410 _E2_VOC50, //U16 xdata VOC50 + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 8 + + 411 _E2_VOC60, //U16 xdata VOC60 + 412 _E2_VOC70, //U16 xdata VOC70 + 413 _E2_VOC80, //U16 xdata VOC80 + 414 _E2_VOC90, //U16 xdata VOC90 + 415 _E2_VOC100, //U16 xdata VOC100 + 416 _E2_ulDesignCapacity, // U32 xdata E2ulDesignCapacity + 417 _E2_ulFCC, // U32 xdata E2ulFCC + 418 _E2_ulCycleThreshold, // U32 xdata E2uiCycleThreshold + 419 _E2_uiCycleCount, // U16 xdata E2uiCycleCount + 420 _E2_uiLearnLowTempe, // U16 xdata E2uiLearnLowTempe + 421 _E2_Reserve, // U16 xdata E2Reserve + 422 _E2_siDfilterCur, // S16 xdata E2siDfilterCur + 423 _E2_ucLowPowerDeley, // U8 xdata E2ucLowPowerDeley + 424 _E2_ucChgBKDelay, // U8 xdata E2ucChgBKDelay + 425 _E2_siChgBKCur, // S16 xdata E2siChgBKCur + 426 _E2_ucRTCBKDelay, // U8 xdata E2ucRTCBKDelay + 427 _E2_ucRamCheckFlg0, // U8 xdata E2ucRamCheckFlg0 + 428 + 429 + 430 //用户自定义参数区开始 SubClassID=0x01 length=50 + 431 _E2_SWVersion, //U16 xdata SWVersion + 432 _E2_HWVersion, //U16 xdata HWVersion + 433 _E2_ID, //U8 xdata ID + 434 _E2_MNFName, //U8 xdata MNFName[12] + 435 _E2_MNFDate, //U32 xdata MNFDate + 436 _E2_SerialNum, //U16 xdata SerialNum + 437 _E2_DeviceName, //U8 xdata DeviceName[12] + 438 _E2_DeviceChem, //U8 xdata DeviceChem[12] + 439 _E2_ChemID, //U16 xdata ChemID + 440 _E2_ucRamCheckFlg1, //U8 xdata E2ucRamCheckFlg1 + 441 + 442 //充电参数区开始 SubClassID=0x02 length=18 + 443 _E2_uiOVvol, //U16 xdata E2uiOVvol + 444 _E2_uiOVRvol, //U16 xdata E2uiOVRvol + 445 _E2_ucDelayOV, //U8 xdata E2ucDelayOV + 446 _E2_ucDelayOVR, //U8 xdata E2ucDelayOVR + 447 _E2_uiChgEndVol, + 448 _E2_siChgEndCurr, + 449 _E2_ucChgEndDelay, + 450 _E2_slOCCvol, //S32 xdata E2slOCCvol + 451 _E2_ucDelayOCC, //U8 xdata E2ucDelayOCC + 452 _E2_ucDelayOCCR, //U8 xdata E2ucDelayOCCR + 453 _E2_ucRamCheckFlg2, //U8 xdata E2ucRamCheckFlg2 + 454 + 455 //放电参数区开始 SubClassID=0x03 langth=21 + 456 _E2_uiUVvol, //U16 xdata E2uiUVvol + 457 _E2_uiUVRvol, //U16 xdata E2uiUVRvol + 458 _E2_ucDelayUV, //U8 xdata E2ucDelayUV + 459 _E2_ucDelayUVR, //U8 xdata E2ucDelayUVR + 460 _E2_uiDsgEndVol, + 461 _E2_ucDsgEndDelay, + 462 _E2_uiOCDvol, //S32 xdata E2uiOCDvol + 463 _E2_ucDelayOCD, //U8 xdata E2ucDelayOCD + 464 _E2_slOCD2vol, //S32 xdata E2slOCD2vol + 465 _E2_ucDelayOCD2, //U8 xdata E2ucDelayOCD2 + 466 _E2_ucDelayLoadR, //U8 xdata E2ucDelayLoadR + 467 _E2_ucRamCheckFlg3, //U8 xdata E2ucRamCheckFlg3 + 468 + 469 + 470 //放电PWM参数区开始 SubClassID=0x05 langth=5 + 471 _E2_DSG1PWMFreq, //U16 xdata DSG1PWMFreq + 472 _E2_DSG1PWMRatioL, //U8 xdata DSG1PWMRatioL + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 9 + + 473 _E2_DSG1PWMRatioH, //U8 xdata DSG1PWMRatioH + 474 _E2_ucRamCheckFlg5, //U8 xdata E2ucRamCheckFlg5 + 475 + 476 //充电温度保护参数开始 SubClassID=0x06 langth=11 + 477 _E2_TempOTC, //U16 xdata TempOTC + 478 _E2_TempOTCR, //U16 xdata TempOTCR + 479 _E2_TempUTC, //U16 xdata TempUTC + 480 _E2_TempUTCR, //U16 xdata TempUTCR + 481 _E2_DelayOTC, //U8 xdata DelayOTC + 482 _E2_DelayOTCR, //U8 xdata DelayOTCR + 483 _E2_ucRamCheckFlg6, //U8 xdata E2ucRamCheckFlg6 + 484 + 485 //放电温度保护参数开始 SubClassID=0x07 langth=9 + 486 _E2_TempOTD, //U16 xdata TempOTD + 487 _E2_TempOTDR, //U16 xdata TempOTDR + 488 _E2_TempUTD, //U16 xdata TempUTD + 489 _E2_TempUTDR, //U16 xdata TempUTDR + 490 _E2_ucRamCheckFlg7, //U8 xdata E2ucRamCheckFlg7 + 491 + 492 //平衡参数区开始 SubClassID=0x08 langth=8 + 493 _E2_BalanceVol, // U16 xdata BalanceVol + 494 _E2_BalanceVolDiff, // U16 xdata BalanceVolDiff + 495 _E2_BalCurrent, // S16 xdata BalCurrent + 496 _E2_BalanceDelay, // U8 xdata BalanceDelay + 497 _E2_ucRamCheckFlg8, // U8 xdata E2ucRamCheckFlg8 + 498 + 499 //容量统计 SubClassID=0x09 langth=17 + 500 + 501 _E2_ucSOC, //U8 xdata E2ucSOC + 502 + 503 _E2_ulDfRC, //U32 xdata E2ulLastFCC + 504 + 505 _E2_slDsgEndCurr, //U32 xdata E2slDsgEndCurr + 506 _E2_ulCycleThresholdCount, //U32 xdata E2ulCycleThresholdCount + 507 _E2_uiLastCCount, + 508 _E2_ucDsgEndFlg, //U8 xdata E2ucDsgEndFlg + 509 _E2_ucRamCheckFlg9, //U8 xdata E2ucRamCheckFlg9 + 510 + 511 //AFE参数区开始 SubClassID=0x0A langth=4 + 512 _E2_AFEProtectConfig, // U8 xdata AFEProtectConfig + 513 _E2_AFEOVvol, // U16 xdata AFEOVvol + 514 _E2_ucRamCheckFlgA, // U8 xdata E2ucRamCheckFlgA + 515 + 516 //校准参数区开始 SubClassID=0x0B langth=12 + 517 _E2_uiVPackGain, //U16 xdata E2uiVPackGain + 518 _E2_siCadcGain, //S16 xdata E2siCadcGain + 519 _E2_siCadcOffset, //S16 xdata E2siCadcOffset + 520 _E2_siTS0Offset, //S16 xdata E2siTS0Offset + 521 _E2_siTS1Offset, //S16 xdata E2siTS1Offset + 522 _E2_ucCalibrated, //S16 xdata E2ucCalibrated + 523 _E2_ucRamCheckFlgB, //U8 xdata E2ucRamCheckFlgB + 524 }, + 525 + 526 _FLASH_CHECK_DATA, // U16 xdata FlashCheck + 527 /********************************************************************************************************* + -********/ + 528 //备份B区 + 529 /********************************************************************************************************* + -********/ + 530 /********************************************************************************************************* + -********/ + 531 //系统信息区开始 SubClassID=0x00 langth=48 + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 10 + + 532 { + 533 _E2_PACKCONFIGMAP, //U16 xdata E2uiPackConfigMap + 534 _E2_VOC10, //U16 xdata VOC10 + 535 _E2_VOC20, //U16 xdata VOC20 + 536 _E2_VOC30, //U16 xdata VOC30 + 537 _E2_VOC40, //U16 xdata VOC40 + 538 _E2_VOC50, //U16 xdata VOC50 + 539 _E2_VOC60, //U16 xdata VOC60 + 540 _E2_VOC70, //U16 xdata VOC70 + 541 _E2_VOC80, //U16 xdata VOC80 + 542 _E2_VOC90, //U16 xdata VOC90 + 543 _E2_VOC100, //U16 xdata VOC100 + 544 _E2_ulDesignCapacity, // U32 xdata E2ulDesignCapacity + 545 _E2_ulFCC, // U32 xdata E2ulFCC + 546 _E2_ulCycleThreshold, // U32 xdata E2uiCycleThreshold + 547 _E2_uiCycleCount, // U16 xdata E2uiCycleCount + 548 _E2_uiLearnLowTempe, // U16 xdata E2uiLearnLowTempe + 549 _E2_Reserve, // U16 xdata E2Reserve + 550 _E2_siDfilterCur, // S16 xdata E2siDfilterCur + 551 _E2_ucLowPowerDeley, // U8 xdata E2ucLowPowerDeley + 552 _E2_ucChgBKDelay, // U8 xdata E2ucChgBKDelay + 553 _E2_siChgBKCur, // S16 xdata E2siChgBKCur + 554 _E2_ucRTCBKDelay, // U8 xdata E2ucRTCBKDelay + 555 _E2_ucRamCheckFlg0, // U8 xdata E2ucRamCheckFlg0 + 556 + 557 + 558 //用户自定义参数区开始 SubClassID=0x01 length=50 + 559 _E2_SWVersion, //U16 xdata SWVersion + 560 _E2_HWVersion, //U16 xdata HWVersion + 561 _E2_ID, //U8 xdata ID + 562 _E2_MNFName, //U8 xdata MNFName[12] + 563 _E2_MNFDate, //U32 xdata MNFDate + 564 _E2_SerialNum, //U16 xdata SerialNum + 565 _E2_DeviceName, //U8 xdata DeviceName[12] + 566 _E2_DeviceChem, //U8 xdata DeviceChem[12] + 567 _E2_ChemID, //U16 xdata ChemID + 568 _E2_ucRamCheckFlg1, //U8 xdata E2ucRamCheckFlg1 + 569 + 570 //充电参数区开始 SubClassID=0x02 length=18 + 571 _E2_uiOVvol, //U16 xdata E2uiOVvol + 572 _E2_uiOVRvol, //U16 xdata E2uiOVRvol + 573 _E2_ucDelayOV, //U8 xdata E2ucDelayOV + 574 _E2_ucDelayOVR, //U8 xdata E2ucDelayOVR + 575 _E2_uiChgEndVol, + 576 _E2_siChgEndCurr, + 577 _E2_ucChgEndDelay, + 578 _E2_slOCCvol, //S32 xdata E2slOCCvol + 579 _E2_ucDelayOCC, //U8 xdata E2ucDelayOCC + 580 _E2_ucDelayOCCR, //U8 xdata E2ucDelayOCCR + 581 _E2_ucRamCheckFlg2, //U8 xdata E2ucRamCheckFlg2 + 582 + 583 //放电参数区开始 SubClassID=0x03 langth=21 + 584 _E2_uiUVvol, //U16 xdata E2uiUVvol + 585 _E2_uiUVRvol, //U16 xdata E2uiUVRvol + 586 _E2_ucDelayUV, //U8 xdata E2ucDelayUV + 587 _E2_ucDelayUVR, //U8 xdata E2ucDelayUVR + 588 _E2_uiDsgEndVol, + 589 _E2_ucDsgEndDelay, + 590 _E2_uiOCDvol, //S32 xdata E2uiOCDvol + 591 _E2_ucDelayOCD, //U8 xdata E2ucDelayOCD + 592 _E2_slOCD2vol, //S32 xdata E2slOCD2vol + 593 _E2_ucDelayOCD2, //U8 xdata E2ucDelayOCD2 + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 11 + + 594 _E2_ucDelayLoadR, //U8 xdata E2ucDelayLoadR + 595 _E2_ucRamCheckFlg3, //U8 xdata E2ucRamCheckFlg3 + 596 + 597 + 598 //放电PWM参数区开始 SubClassID=0x05 langth=5 + 599 _E2_DSG1PWMFreq, //U16 xdata DSG1PWMFreq + 600 _E2_DSG1PWMRatioL, //U8 xdata DSG1PWMRatioL + 601 _E2_DSG1PWMRatioH, //U8 xdata DSG1PWMRatioH + 602 _E2_ucRamCheckFlg5, //U8 xdata E2ucRamCheckFlg5 + 603 + 604 //充电温度保护参数开始 SubClassID=0x06 langth=11 + 605 _E2_TempOTC, //U16 xdata TempOTC + 606 _E2_TempOTCR, //U16 xdata TempOTCR + 607 _E2_TempUTC, //U16 xdata TempUTC + 608 _E2_TempUTCR, //U16 xdata TempUTCR + 609 _E2_DelayOTC, //U8 xdata DelayOTC + 610 _E2_DelayOTCR, //U8 xdata DelayOTCR + 611 _E2_ucRamCheckFlg6, //U8 xdata E2ucRamCheckFlg6 + 612 + 613 //放电温度保护参数开始 SubClassID=0x07 langth=9 + 614 _E2_TempOTD, //U16 xdata TempOTD + 615 _E2_TempOTDR, //U16 xdata TempOTDR + 616 _E2_TempUTD, //U16 xdata TempUTD + 617 _E2_TempUTDR, //U16 xdata TempUTDR + 618 _E2_ucRamCheckFlg7, //U8 xdata E2ucRamCheckFlg7 + 619 + 620 //平衡参数区开始 SubClassID=0x08 langth=8 + 621 _E2_BalanceVol, // U16 xdata BalanceVol + 622 _E2_BalanceVolDiff, // U16 xdata BalanceVolDiff + 623 _E2_BalCurrent, // S16 xdata BalCurrent + 624 _E2_BalanceDelay, // U8 xdata BalanceDelay + 625 _E2_ucRamCheckFlg8, // U8 xdata E2ucRamCheckFlg8 + 626 + 627 //容量统计 SubClassID=0x09 langth=17 + 628 _E2_ucSOC, //U8 xdata E2ucSOC + 629 _E2_ulDfRC, //U32 xdata E2ulLastFCC + 630 _E2_slDsgEndCurr, //U32 xdata E2slDsgEndCurr + 631 _E2_ulCycleThresholdCount, //U32 xdata E2ulCycleThresholdCount + 632 _E2_uiLastCCount, + 633 _E2_ucDsgEndFlg, //U8 xdata E2ucDsgEndFlg + 634 + 635 _E2_ucRamCheckFlg9, //U8 xdata E2ucRamCheckFlg9 + 636 + 637 //AFE参数区开始 SubClassID=0x0A langth=4 + 638 _E2_AFEProtectConfig, // U8 xdata AFEProtectConfig + 639 _E2_AFEOVvol, // U16 xdata AFEOVvol + 640 _E2_ucRamCheckFlgA, // U8 xdata E2ucRamCheckFlgA + 641 + 642 //校准参数区开始 SubClassID=0x0B langth=12 + 643 _E2_uiVPackGain, //U16 xdata E2uiVPackGain + 644 _E2_siCadcGain, //S16 xdata E2siCadcGain + 645 _E2_siCadcOffset, //S16 xdata E2siCadcOffset + 646 _E2_siTS0Offset, //S16 xdata E2siTS0Offset + 647 _E2_siTS1Offset, //S16 xdata E2siTS1Offset + 648 _E2_ucCalibrated, //S16 xdata E2ucCalibrated + 649 _E2_ucRamCheckFlgB, //U8 xdata E2ucRamCheckFlgB + 650 }, + 651 + 652 _FLASH_CHECK_DATA, // U16 xdata FlashCheck + 653 }; + 654 + 655 //*** <<< end of configuration section >>> *** + C51 COMPILER V9.01 DATAFLASH 01/23/2025 17:20:39 PAGE 12 + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = 1024 ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/DataFlash.obj b/output/DataFlash.obj new file mode 100644 index 0000000..87c2787 Binary files /dev/null and b/output/DataFlash.obj differ diff --git a/output/Eeprom b/output/Eeprom new file mode 100644 index 0000000..05eb8d8 Binary files /dev/null and b/output/Eeprom differ diff --git a/output/Eeprom.build_log.htm b/output/Eeprom.build_log.htm new file mode 100644 index 0000000..8c89276 --- /dev/null +++ b/output/Eeprom.build_log.htm @@ -0,0 +1,38 @@ + + +
+

礦ision Build Log

+

Tool Versions:

+IDE-Version: μVision V5.22.0.0 +Copyright (C) 2016 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: yang Microsoft, Microsoft, LIC=58E4T-RQU60-GVC1T-RJBYK-PG19C-5N7J7 + +Tool Versions: +Toolchain: PK51 Prof. Developers Kit Version: 9.01 +Toolchain Path: C:\Keil_v5\C51\BIN +C Compiler: C51.exe V9.01 +Assembler: A51.exe V8.02 +Linker/Locator: BL51.exe V6.22 +Library Manager: LIB51.exe V4.24 +Hex Converter: OH51.exe V2.6 +CPU DLL: S8051.DLL V3.72 +Dialog DLL: DP51.DLL V2.59 +Target DLL: SH51.DLL V1.00 +Dialog DLL: TP51.DLL V2.58 + +

Project:

+C:\Users\wenhua.wang\Desktop\demo方案&user guide优化\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231222\SH39F003&F004_DemoCode_V2.15_20231213\MCUCore.uvproj +Project File Date: 12/22/2023 + +

Output:

+Rebuild target 'EEPROM' +compiling DataFlash.c... +linking... +*** WARNING L10: CANNOT DETERMINE ROOT SEGMENT +Program Size: data=0.0 xdata=0 code=1024 +creating hex file from ".\output\Eeprom"... +".\output\Eeprom" - 0 Error(s), 1 Warning(s). +Build Time Elapsed: 00:00:00 +
+ + diff --git a/output/Eeprom.hex b/output/Eeprom.hex new file mode 100644 index 0000000..4f8072b --- /dev/null +++ b/output/Eeprom.hex @@ -0,0 +1,65 @@ +:1000000033270C800D480DDE0E740ED80F3C0FA068 +:1000100010041036106800000FA000000FA00000B0 +:100020000BB800000B410000006414010064055A85 +:10003000021501300073696E6F7765616C7468003A +:100040000020231222000053483339463030340058 +:100050000000004C494F4E0000000000000000006E +:10006000005A109A10360202104000640500000B7E +:10007000B802025A0A8C0BB802020B5405FFFFB1FA +:10008000E002FFFF63C002045A0FA01E465A0C9FF5 +:100090000C6D0AAB0ADD03035A0D670CD10A470A3F +:1000A000795A105400140064025A6400000BB8FF1F +:1000B000FFEC78000000000000005A7411305A0A6A +:1000C00022FFAE000100000000005A000000000006 +:1000D0000000000000000000000000000000000020 +:1000E0000000000000000000000000000000000010 +:1000F0000000000000000000000000000000000000 +:1001000000000000000000000000000000000000EF +:1001100000000000000000000000000000000000DF +:1001200000000000000000000000000000000000CF +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000000000000000000000000000008F +:10017000000000000000000000000000000000007F +:10018000000000000000000000000000000000006F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E000000000000000000000000000000000000F +:1001F00000000000000000000000000000005AA500 +:1002000033270C800D480DDE0E740ED80F3C0FA066 +:1002100010041036106800000FA000000FA00000AE +:100220000BB800000B410000006414010064055A83 +:10023000021501300073696E6F7765616C74680038 +:100240000020231222000053483339463030340056 +:100250000000004C494F4E0000000000000000006C +:10026000005A109A10360202104000640500000B7C +:10027000B802025A0A8C0BB802020B5405FFFFB1F8 +:10028000E002FFFF63C002045A0FA01E465A0C9FF3 +:100290000C6D0AAB0ADD03035A0D670CD10A470A3D +:1002A000795A105400140064025A6400000BB8FF1D +:1002B000FFEC78000000000000005A7411305A0A68 +:1002C00022FFAE000100000000005A000000000004 +:1002D000000000000000000000000000000000001E +:1002E000000000000000000000000000000000000E +:1002F00000000000000000000000000000000000FE +:1003000000000000000000000000000000000000ED +:1003100000000000000000000000000000000000DD +:1003200000000000000000000000000000000000CD +:1003300000000000000000000000000000000000BD +:1003400000000000000000000000000000000000AD +:10035000000000000000000000000000000000009D +:10036000000000000000000000000000000000008D +:10037000000000000000000000000000000000007D +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A000000000000000000000000000000000004D +:1003B000000000000000000000000000000000003D +:1003C000000000000000000000000000000000002D +:1003D000000000000000000000000000000000001D +:1003E000000000000000000000000000000000000D +:1003F00000000000000000000000000000005AA5FE +:00000001FF diff --git a/output/Eeprom.lnp b/output/Eeprom.lnp new file mode 100644 index 0000000..d33ba1c --- /dev/null +++ b/output/Eeprom.lnp @@ -0,0 +1,6 @@ +".\output\DataFlash.obj" +TO ".\output\Eeprom" +PRINT(".\output\Eeprom.m51") RAMSIZE(256) +DISABLEWARNING (16) +CODE( ?CO?DATAFLASH(0x0000) ) +XDATA( 0X0200-0X04FE ) diff --git a/output/Eeprom.m51 b/output/Eeprom.m51 new file mode 100644 index 0000000..459eb11 --- /dev/null +++ b/output/Eeprom.m51 @@ -0,0 +1,48 @@ +BL51 BANKED LINKER/LOCATER V6.22 01/23/2025 17:20:40 PAGE 1 + + +BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: +D:\TOOL\KEIL\C51\BIN\BL51.EXE .\output\DataFlash.obj TO .\output\Eeprom PRINT (.\output\Eeprom.m51) RAMSIZE (256) DISABL +>> EWARNING (16) CODE (?CO?DATAFLASH (0X0000)) XDATA (0X0200-0X04FE) + + +MEMORY MODEL: LARGE + + +INPUT MODULES INCLUDED: + .\output\DataFlash.obj (DATAFLASH) + + +LINK MAP OF MODULE: .\output\Eeprom (DATAFLASH) + + + TYPE BASE LENGTH RELOCATION SEGMENT NAME + ----------------------------------------------------- + + * * * * * * * C O D E M E M O R Y * * * * * * * + CODE 0000H 0400H UNIT ?CO?DATAFLASH + + + +OVERLAY MAP OF MODULE: .\output\Eeprom (DATAFLASH) + + +SEGMENT + +--> CALLED SEGMENT +--------------------- + + +SYMBOL TABLE OF MODULE: .\output\Eeprom (DATAFLASH) + + VALUE TYPE NAME + ---------------------------------- + + ------- MODULE DATAFLASH + C:0000H SYMBOL _ICE_DUMMY_ + C:0000H PUBLIC dataflashstr + ------- ENDMOD DATAFLASH + +*** WARNING L10: CANNOT DETERMINE ROOT SEGMENT + +Program Size: data=0.0 xdata=0 code=1024 +LINK/LOCATE RUN COMPLETE. 1 WARNING(S), 0 ERROR(S) diff --git a/output/Eeprom.plg b/output/Eeprom.plg new file mode 100644 index 0000000..8b1884e --- /dev/null +++ b/output/Eeprom.plg @@ -0,0 +1,7 @@ +Build target 'EEPROM' +compiling DataFlash.c... +linking... +*** WARNING L10: CANNOT DETERMINE ROOT SEGMENT +Program Size: data=0.0 xdata=0 code=1024 +creating hex file from ".\output\Eeprom"... +".\output\Eeprom" - 0 Error(s), 1 Warning(s). diff --git a/output/ExtDll.iex b/output/ExtDll.iex new file mode 100644 index 0000000..6c0896e --- /dev/null +++ b/output/ExtDll.iex @@ -0,0 +1,2 @@ +[EXTDLL] +Count=0 diff --git a/output/ExtE2PRom.lst b/output/ExtE2PRom.lst new file mode 100644 index 0000000..6b21810 --- /dev/null +++ b/output/ExtE2PRom.lst @@ -0,0 +1,609 @@ +C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE EXTE2PROM +OBJECT MODULE PLACED IN .\output\ExtE2PRom.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\ExtE2PRom.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_L + -oad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\ + -code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\ExtE2PRom.lst) OBJECT(.\output + -\ExtE2PRom.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 BOOL bE2PProcessFlg; //EEPROM处理标志 + 12 BOOL bE2PBKDsgEnd; //放电结束标志,需要备份信息到外挂EEPROM + 13 BOOL bE2PBKDsgEndValid; + 14 BOOL bE2PBKChgStop; //充电结束标志,需要备份信息到外挂EEPROM + 15 BOOL bE2PBKChgStart; //充电开始标志,需要备份信息到外挂EEPROM + 16 BOOL bE2PBKRtc; //RTC定时备份标志,需要备份信息到外挂EEPRO + -M + 17 BOOL bE2PErase; //擦除外挂EEPROM标志 + 18 U8 xdata bUart0E2PRdData; //读取外挂EEPROM标志 + 19 U8 xdata bUart1E2PRdData; //读取外挂EEPROM标志 + 20 U8 xdata bUart2E2PRdData; //读取外挂EEPROM标志 + 21 BOOL bE2PRErr; + 22 BOOL bE2PTwiRWErrFlg; + 23 U8 xdata bUart0RTCRdTime; //读取RTC时间标志 + 24 U8 xdata bUart1RTCRdTime; //读取RTC时间标志 + 25 U8 xdata bUart2RTCRdTime; //读取RTC时间标志 + 26 BOOL bDsgToChgFlg; //放电转换为充电,需要备份数据 + 27 BOOL bChgToDsgFlg; //充电转换为放电,需要备份数据 + 28 U16 xdata uiE2PDataAddr; + 29 U8 xdata ucE2PTwiRWErrDelayCnt; + 30 U8 xdata ucRTCBKTime1; + 31 U16 xdata uiRTCBKTime2; + 32 U8 idata ucUpDataLimitTime; + 33 U16 xdata uiCHGValidTime; + 34 U8 xdata ucRTCBuf[7]; + 35 + 36 + 37 /************************************************************************************************* + 38 * 函数名: AFEI2CCheck + 39 * 参 数: 无 + 40 * 返回值: 无 + 41 * 描 述: 连续5S检测到AFE的I2C通讯错误,则置位bAfeErr=1 + 42 *************************************************************************************************/ + 43 void E2PRomTwiCheck(void) + 44 { + 45 1 if(bEnEEPRomBK) + 46 1 { + 47 2 if(bE2PTwiRWErrFlg) + 48 2 { + 49 3 if(++ucE2PTwiRWErrDelayCnt >= TIME_1S_5S) + 50 3 { + 51 4 bE2PRErr = 1; + C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 2 + + 52 4 ucE2PTwiRWErrDelayCnt = TIME_1S_5S; + 53 4 } + 54 3 } + 55 2 else + 56 2 { + 57 3 ucE2PTwiRWErrDelayCnt = 0; + 58 3 } + 59 2 } + 60 1 } + 61 + 62 + 63 /************************************************************************************************* + 64 * 函数名: E2PRomWrite + 65 * 参 数: Addr:地址;Length:长度;WrBuf:写入存放的Buf + 66 * 返回值: 无 + 67 * 描 述: 写入EEPROm + 68 *************************************************************************************************/ + 69 BOOL E2PRomWrite(U16 WrAddr, U8 Length, U8 xdata *WrBuf) + 70 { + 71 1 BOOL Result = 0; + 72 1 U8 i; + 73 1 + 74 1 if(!bE2PRErr) + 75 1 { + 76 2 for(i=0; i<5; i++) + 77 2 { + 78 3 #ifdef TWI_Hardware_Module + 79 3 if(TwiWrite(E2PROM_ID, WrAddr, TWI_ADDR_2B, Length, TWI_CRC_NO, WrBuf)) + 80 3 { + 81 4 Result = 1; + 82 4 break; + 83 4 } + 84 3 #else + if(TwiWrite(E2PROM_ID, WrAddr, Length, WrBuf)) + { + Result = 1; + break; + } + #endif + 91 3 Delay1ms(1); + 92 3 } + 93 2 } + 94 1 bE2PTwiRWErrFlg = !Result; //标记通讯是否正常 + 95 1 + 96 1 return Result; + 97 1 } + 98 + 99 + 100 /************************************************************************************************* + 101 * 函数名: E2PRomRead + 102 * 参 数: Addr:地址;Length:长度;RdBuf:读取存放的Buf + 103 * 返回值: 无 + 104 * 描 述: 读取EEPROm + 105 *************************************************************************************************/ + 106 BOOL E2PRomRead(U16 RdAddr, U8 Length, U8 xdata *RdBuf) + 107 { + 108 1 BOOL Result = 0; + 109 1 U8 i; + 110 1 + 111 1 if(!bE2PRErr) + 112 1 { + 113 2 for(i=0; i<5; i++) + C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 3 + + 114 2 { + 115 3 #ifdef TWI_Hardware_Module + 116 3 if(TwiRead(E2PROM_ID, RdAddr, TWI_ADDR_2B, Length, TWI_CRC_NO, RdBuf)) + 117 3 { + 118 4 Result = 1; + 119 4 break; + 120 4 } + 121 3 #else + if(TwiRead(E2PROM_ID, RdAddr, Length, RdBuf)) + { + Result = 1; + break; + } + #endif + 128 3 Delay1ms(1); + 129 3 } + 130 2 } + 131 1 bE2PTwiRWErrFlg = !Result; //标记通讯是否正常 + 132 1 + 133 1 return Result; + 134 1 } + 135 + 136 + 137 + 138 /************************************************************************************************* + 139 * 函数名: E2PRomErase + 140 * 参 数: 无 + 141 * 返回值: 无 + 142 * 描 述: 擦除EEPROM + 143 *************************************************************************************************/ + 144 void E2PRomErase(void) + 145 { + 146 1 U16 i; + 147 1 U8 xdata WrBuf[8]; + 148 1 + 149 1 MemorySet(WrBuf, 0, 8); //clr Info.uiVCell[] + 150 1 + 151 1 for(i=0; i<(E2PROM_SIZE/32-1); i++) + 152 1 { + 153 2 McuWDTClear(); + 154 2 E2PRomWrite(i*32+31, 1, WrBuf); + 155 2 } + 156 1 + 157 1 E2PRomWrite(E2PROM_BOOT_ADDR, 8, WrBuf); + 158 1 uiE2PDataAddr = 0; + 159 1 } + 160 + 161 + 162 /************************************************************************************************* + 163 * 函数名: InitE2PRom + 164 * 参 数: 无 + 165 * 返回值: 无 + 166 * 描 述: 初始化EEPROM的地址 + 167 *************************************************************************************************/ + 168 BOOL E2PRomInit(void) + 169 { + 170 1 BOOL Result = 0; + 171 1 + 172 1 U8 xdata RdBuf[8]; + 173 1 + 174 1 Result = E2PRomRead(E2PROM_BOOT_ADDR, 8, RdBuf); + 175 1 + C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 4 + + 176 1 RdBuf[2] = RdBuf[0]+RdBuf[1]; + 177 1 RdBuf[6] = RdBuf[4]+RdBuf[5]; + 178 1 + 179 1 if(RdBuf[2] == RdBuf[3]) + 180 1 { + 181 2 uiE2PDataAddr = ((U16)RdBuf[0]<<8) + RdBuf[1]; + 182 2 } + 183 1 else if(RdBuf[6] == RdBuf[7]) + 184 1 { + 185 2 uiE2PDataAddr = ((U16)RdBuf[4]<<8) + RdBuf[5]; + 186 2 } + 187 1 else + 188 1 { + 189 2 uiE2PDataAddr = 0; + 190 2 } + 191 1 + 192 1 return Result; + 193 1 } + 194 + 195 + 196 /************************************************************************************************* + 197 * 函数名: E2PRomBKRTC + 198 * 参 数: 无 + 199 * 返回值: 无 + 200 * 描 述: 备份RTC + 201 *************************************************************************************************/ + 202 void E2PRomBKRTC(void) + 203 { + 204 1 U8 xdata WrBuf[9]; + 205 1 U8 i, checksum = 0; + 206 1 + 207 1 RTCReadTime(&RTC); + 208 1 MemoryCopy((U8 xdata *)&(RTC.Second), WrBuf, 7); + 209 1 for(i=0; i<7; i++) + 210 1 { + 211 2 checksum += WrBuf[i]; + 212 2 } + 213 1 WrBuf[7] = checksum; + 214 1 WrBuf[8] = 0x5A; + 215 1 + 216 1 E2PRomWrite(E2PROM_RTC_ADDR, 9, WrBuf); + 217 1 } + 218 + 219 + 220 /************************************************************************************************* + 221 * 函数名: E2PRomBKBoot + 222 * 参 数: 无 + 223 * 返回值: 无 + 224 * 描 述: 备份EEPROM的Boot区 + 225 *************************************************************************************************/ + 226 void E2PRomBKBoot(void) + 227 { + 228 1 U8 xdata WrBuf[8]; + 229 1 + 230 1 WrBuf[0] = (uiE2PDataAddr>>8); + 231 1 WrBuf[1] = uiE2PDataAddr; + 232 1 WrBuf[3] = WrBuf[0]+WrBuf[1]; //Calculate checksum + 233 1 + 234 1 WrBuf[4] = WrBuf[0]; + 235 1 WrBuf[5] = WrBuf[1]; + 236 1 WrBuf[7] = WrBuf[3]; + 237 1 + C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 5 + + 238 1 E2PRomWrite(E2PROM_BOOT_ADDR, 8, WrBuf); + 239 1 } + 240 + 241 + 242 /************************************************************************************************* + 243 * 函数名: E2PRomBKData + 244 * 参 数: BKType:备份类型 + 245 * 返回值: 无 + 246 * 描 述: 读取外挂EEPROM + 247 *************************************************************************************************/ + 248 void E2PRomBKData(U8 BKType) + 249 { + 250 1 U8 xdata WrBuf[32]; + 251 1 + 252 1 if(BKType == E2PROM_BKTYPE_CHG_START) //充电开始 + 253 1 { + 254 2 MemoryCopy((U8 xdata *)&ucRTCBuf[0], WrBuf, 3); + 255 2 MemoryCopy((U8 xdata *)&ucRTCBuf[4], WrBuf + 3, 3); + 256 2 } + 257 1 else + 258 1 { + 259 2 RTCReadTime(&RTC); + 260 2 MemoryCopy((U8 xdata *)&(RTC.Second), WrBuf, 3); + 261 2 MemoryCopy((U8 xdata *)&(RTC.Date), WrBuf + 3, 3); + 262 2 } + 263 1 + 264 1 WrBuf[6] = (Info.uiPackStatus>>8); + 265 1 WrBuf[7] = Info.uiPackStatus; + 266 1 WrBuf[8] = (Info.uiBatStatus>>8); + 267 1 WrBuf[9] = Info.uiBatStatus; + 268 1 WrBuf[10] = (Info.ulFCC>>24); + 269 1 WrBuf[11] = (Info.ulFCC>>16); + 270 1 WrBuf[12] = (Info.ulFCC>>8); + 271 1 WrBuf[13] = Info.ulFCC; + 272 1 WrBuf[14] = (Info.ulRC>>24); + 273 1 WrBuf[15] = (Info.ulRC>>16); + 274 1 WrBuf[16] = (Info.ulRC>>8); + 275 1 WrBuf[17] = Info.ulRC; + 276 1 WrBuf[18] = (Info.ulVoltage>>24); + 277 1 WrBuf[19] = (Info.ulVoltage>>16); + 278 1 WrBuf[20] = (Info.ulVoltage>>8); + 279 1 WrBuf[21] = Info.ulVoltage; + 280 1 WrBuf[22] = (Info.slCurr>>24); + 281 1 WrBuf[23] = (Info.slCurr>>16); + 282 1 WrBuf[24] = (Info.slCurr>>8); + 283 1 WrBuf[25] = Info.slCurr; + 284 1 WrBuf[26] = (Info.uiTS[0]>>8); + 285 1 WrBuf[27] = Info.uiTS[0]; + 286 1 WrBuf[28] = (Info.uiCycleCount>>8); + 287 1 WrBuf[29] = Info.uiCycleCount; + 288 1 WrBuf[30] = BKType; + 289 1 WrBuf[31] = 0x5A; + 290 1 + 291 1 E2PRomWrite(uiE2PDataAddr, 32, WrBuf); + 292 1 + 293 1 uiE2PDataAddr += 32; + 294 1 if(uiE2PDataAddr >= E2PROM_BOOT_ADDR) + 295 1 { + 296 2 uiE2PDataAddr = 0; + 297 2 } + 298 1 + 299 1 E2PRomBKBoot(); + C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 6 + + 300 1 } + 301 + 302 + 303 /************************************************************************************************* + 304 * 函数名: Uart0RdE2PRom + 305 * 参 数: 无 + 306 * 返回值: 无 + 307 * 描 述: 读取外挂EEPROM + 308 *************************************************************************************************/ + 309 void Uart0RdE2PRom(void) + 310 { + 311 1 U16 RdAddr; + 312 1 + 313 1 RdAddr = ((U16)ucUart0Buf[UART_CMD_NO]-CMD_RD_EEPROM)*128+((U16)ucSubClassID-0x80)*4096; + 314 1 E2PRomRead(RdAddr, ucUart0Buf[UART_LENGTH], &ucUart0Buf[UART_DATA]); + 315 1 + 316 1 ucUart0Buf[UART_DATA+ucUart0Buf[UART_LENGTH]] = CRC8cal(&ucUart0Buf,ucUart0Buf[UART_LENGTH]+UART_DATA) + -; + 317 1 Uart0SendData(); //Start Send Data; Set UART REG + 318 1 } + 319 + 320 /************************************************************************************************* + 321 * 函数名: Uart1RdE2PRom + 322 * 参 数: 无 + 323 * 返回值: 无 + 324 * 描 述: 读取外挂EEPROM + 325 *************************************************************************************************/ + 326 void Uart1RdE2PRom(void) + 327 { + 328 1 U16 RdAddr; + 329 1 + 330 1 RdAddr = ((U16)ucUart1Buf[UART_CMD_NO]-CMD_RD_EEPROM)*128+((U16)ucSubClassID-0x80)*4096; + 331 1 E2PRomRead(RdAddr, ucUart1Buf[UART_LENGTH], &ucUart1Buf[UART_DATA]); + 332 1 + 333 1 ucUart1Buf[UART_DATA+ucUart1Buf[UART_LENGTH]] = CRC8cal(&ucUart1Buf,ucUart1Buf[UART_LENGTH]+UART_DATA) + -; + 334 1 Uart1SendData(); //Start Send Data; Set UART REG + 335 1 } + 336 + 337 /************************************************************************************************* + 338 * 函数名: Uart2RdE2PRom + 339 * 参 数: 无 + 340 * 返回值: 无 + 341 * 描 述: 读取外挂EEPROM + 342 *************************************************************************************************/ + 343 void Uart2RdE2PRom(void) + 344 { + 345 1 U16 RdAddr; + 346 1 + 347 1 RdAddr = ((U16)ucUart2Buf[UART_CMD_NO]-CMD_RD_EEPROM)*128+((U16)ucSubClassID-0x80)*4096; + 348 1 E2PRomRead(RdAddr, ucUart2Buf[UART_LENGTH], &ucUart2Buf[UART_DATA]); + 349 1 + 350 1 ucUart2Buf[UART_DATA+ucUart2Buf[UART_LENGTH]] = CRC8cal(&ucUart2Buf,ucUart2Buf[UART_LENGTH]+UART_DATA) + -; + 351 1 Uart2SendData(); //Start Send Data; Set UART REG + 352 1 } + 353 + 354 + 355 /************************************************************************************************* + 356 * 函数名: UartRdRTC + 357 * 参 数: 无 + 358 * 返回值: 无 + C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 7 + + 359 * 描 述: 读取RTC时间:秒、分、时、日、月、年,并返回给UART + 360 *************************************************************************************************/ + 361 void Uart0RdRTC(void) + 362 { + 363 1 RTCReadTime(&RTC); + 364 1 MemoryCopy((U8 xdata *)&(RTC.Second), &ucUart0Buf[UART_DATA], 7); + 365 1 + 366 1 ucUart0Buf[UART_DATA+ucUart0Buf[UART_LENGTH]] = CRC8cal(&ucUart0Buf,ucUart0Buf[UART_LENGTH]+UART_DATA); + 367 1 Uart0SendData(); //Start Send Data; Set UART REG + 368 1 } + 369 + 370 + 371 /************************************************************************************************* + 372 * 函数名: Uart1RdRTC + 373 * 参 数: 无 + 374 * 返回值: 无 + 375 * 描 述: 读取RTC时间:秒、分、时、日、月、年,并返回给UART + 376 *************************************************************************************************/ + 377 void Uart1RdRTC(void) + 378 { + 379 1 RTCReadTime(&RTC); + 380 1 MemoryCopy((U8 xdata *)&(RTC.Second), &ucUart1Buf[UART_DATA], 7); + 381 1 + 382 1 ucUart1Buf[UART_DATA+ucUart1Buf[UART_LENGTH]] = CRC8cal(&ucUart1Buf,ucUart1Buf[UART_LENGTH]+UART_DATA); + 383 1 Uart1SendData(); //Start Send Data; Set UART REG + 384 1 } + 385 + 386 /************************************************************************************************* + 387 * 函数名: Uart2RdRTC + 388 * 参 数: 无 + 389 * 返回值: 无 + 390 * 描 述: 读取RTC时间:秒、分、时、日、月、年,并返回给UART + 391 *************************************************************************************************/ + 392 void Uart2RdRTC(void) + 393 { + 394 1 RTCReadTime(&RTC); + 395 1 MemoryCopy((U8 xdata *)&(RTC.Second), &ucUart2Buf[UART_DATA], 7); + 396 1 + 397 1 ucUart2Buf[UART_DATA+ucUart2Buf[UART_LENGTH]] = CRC8cal(&ucUart2Buf,ucUart2Buf[UART_LENGTH]+UART_DATA); + 398 1 Uart2SendData(); //Start Send Data; Set UART REG + 399 1 } + 400 + 401 /************************************************************************************************* + 402 * 函数名: E2PRomBKProcess + 403 * 参 数: 无 + 404 * 返回值: 无 + 405 * 描 述: 对外挂EEPROM进行相应处理 + 406 *************************************************************************************************/ + 407 void E2PRomBKProcess(void) + 408 { + 409 1 U8 BKType; + 410 1 + 411 1 if(bEnEEPRomBK && bE2PProcessFlg) + 412 1 { + 413 2 bE2PProcessFlg = 0; + 414 2 // E2PRomInit(); + 415 2 // RTCInitTime(&RTC); + 416 2 + 417 2 if(bE2PErase) + 418 2 { + 419 3 bE2PErase = 0; + 420 3 E2PRomErase(); + C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 8 + + 421 3 } + 422 2 + 423 2 if(bUart0E2PRdData||bUart1E2PRdData||bUart2E2PRdData) + 424 2 { + 425 3 if(bUart0E2PRdData ) + 426 3 { + 427 4 bUart0E2PRdData = 0; + 428 4 Uart0RdE2PRom(); + 429 4 } + 430 3 if(bUart1E2PRdData) + 431 3 { + 432 4 bUart1E2PRdData = 0; + 433 4 Uart2RdE2PRom(); + 434 4 } + 435 3 if(bUart2E2PRdData) + 436 3 { + 437 4 bUart2E2PRdData = 0; + 438 4 Uart2RdE2PRom(); + 439 4 } + 440 3 + 441 3 } + 442 2 + 443 2 if(bUart0RTCRdTime||bUart1RTCRdTime||bUart2RTCRdTime) + 444 2 { + 445 3 if(bUart0RTCRdTime) + 446 3 { + 447 4 bUart0RTCRdTime = 0; + 448 4 Uart0RdRTC(); + 449 4 } + 450 3 if(bUart1RTCRdTime) + 451 3 { + 452 4 bUart1RTCRdTime = 0; + 453 4 Uart1RdRTC(); + 454 4 } + 455 3 if(bUart2RTCRdTime) + 456 3 { + 457 4 bUart2RTCRdTime = 0; + 458 4 Uart2RdRTC(); + 459 4 } + 460 3 } + 461 2 + 462 2 if(bE2PBKRtc) + 463 2 { + 464 3 bE2PBKRtc = 0; + 465 3 E2PRomBKRTC(); + 466 3 } + 467 2 + 468 2 if(bE2PBKChgStart) + 469 2 { + 470 3 bE2PBKChgStart = 0; + 471 3 BKType = E2PROM_BKTYPE_CHG_START; + 472 3 E2PRomBKData(BKType); + 473 3 } + 474 2 + 475 2 if(bE2PBKChgStop) + 476 2 { + 477 3 bE2PBKChgStop = 0; + 478 3 BKType = E2PROM_BKTYPE_CHG_END; + 479 3 E2PRomBKData(BKType); + 480 3 } + 481 2 + 482 2 if(bE2PBKDsgEnd) + C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 9 + + 483 2 { + 484 3 bE2PBKDsgEnd = 0; + 485 3 BKType = E2PROM_BKTYPE_DSG_END; + 486 3 E2PRomBKData(BKType); + 487 3 } + 488 2 } + 489 1 } + 490 + 491 + 492 /************************************************************************************************* + 493 * 函数名: E2PRomBKCheck + 494 * 参 数: 无 + 495 * 返回值: 无 + 496 * 描 述: 每1s检测是否需要备份RTC及EEPROM数据 + 497 *************************************************************************************************/ + 498 void E2PRomBKCheck(void) + 499 { + 500 1 if(bEnEEPRomBK) + 501 1 { + 502 2 // E2PRomInit(); + 503 2 // RTCInitTime(&RTC); + 504 2 + 505 2 if(++ucRTCBKTime1 >= E2ucRTCBKDelay) + 506 2 { + 507 3 ucRTCBKTime1 = 0; + 508 3 RTCReadTime(&RTC); + 509 3 } + 510 2 + 511 2 if(++uiRTCBKTime2 >= 3600) //1h + 512 2 { + 513 3 uiRTCBKTime2 = 0; + 514 3 bE2PProcessFlg = 1; + 515 3 bE2PBKRtc = 1; + 516 3 } + 517 2 + 518 2 if(!bCHGING) + 519 2 { + 520 3 bDsgToChgFlg = 1; + 521 3 if(bChgToDsgFlg) + 522 3 { + 523 4 bChgToDsgFlg = 0; + 524 4 bE2PProcessFlg = 1; + 525 4 bE2PBKChgStop = 1; + 526 4 } + 527 3 if(bUV && bE2PBKDsgEndValid) + 528 3 { + 529 4 bE2PBKDsgEndValid = 0; + 530 4 bE2PProcessFlg = 1; + 531 4 bE2PBKDsgEnd = 1; + 532 4 } + 533 3 else if(!bUV) + 534 3 { + 535 4 bE2PBKDsgEndValid = 1; + 536 4 } + 537 3 } + 538 2 + 539 2 if((bDsgToChgFlg && Info.slCurr>=E2siChgBKCur)) + 540 2 { + 541 3 if(!uiCHGValidTime) + 542 3 { + 543 4 RTCReadTime(&RTC); + 544 4 MemoryCopy((U8 xdata *)&RTC, ucRTCBuf, 7); + C51 COMPILER V9.01 EXTE2PROM 02/06/2025 15:28:45 PAGE 10 + + 545 4 } + 546 3 + 547 3 if(++uiCHGValidTime > ((U16)E2ucChgBKDelay*60)) //1分钟 + 548 3 { + 549 4 uiCHGValidTime = 0; + 550 4 bChgToDsgFlg = 1; + 551 4 bDsgToChgFlg = 0; + 552 4 bE2PProcessFlg = 1; + 553 4 bE2PBKChgStart = 1; + 554 4 } + 555 3 } + 556 2 else + 557 2 { + 558 3 uiCHGValidTime = 0; + 559 3 } + 560 2 } + 561 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 1960 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 21 82 + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = 1 ---- + BIT SIZE = 11 3 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/ExtE2PRom.obj b/output/ExtE2PRom.obj new file mode 100644 index 0000000..52e39fa Binary files /dev/null and b/output/ExtE2PRom.obj differ diff --git a/output/Flash.lst b/output/Flash.lst new file mode 100644 index 0000000..6e6e23b --- /dev/null +++ b/output/Flash.lst @@ -0,0 +1,242 @@ +C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE FLASH +OBJECT MODULE PLACED IN .\output\Flash.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_bootloader\Flash.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\header_bootloa + -der) DEBUG OBJECTEXTEND PRINT(.\output\Flash.lst) OBJECT(.\output\Flash.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "MCURegister.h" + 10 #include "C51_TYPE.H" + 11 #include "Flash.h" + 12 #include + 13 #include + 14 + 15 U8 ucMcuFlashWrValid; + 16 + 17 + 18 /************************************************************************************************* + 19 * 函数名: McuFlashEraseSector + 20 * 参 数: McuFlashAddr:起始地址;McuType:擦除CODE区或者EEPROM + 21 * 返回值: 无 + 22 * 描 述: 擦除Sector + 23 *************************************************************************************************/ + 24 void McuFlashEraseSector(U32 xdata McuFlashAddr, U8 xdata McuType) + 25 { + 26 1 FLASHCON = McuType; + 27 1 XPAGE = McuFlashAddr>>8; + 28 1 + 29 1 IB_CON1 = 0xE6; + 30 1 if(!EA) //防止误写 + 31 1 { + 32 2 IB_CON2 = 0x05; + 33 2 if(FLASHCON == McuType) //防止误写 + 34 2 { + 35 3 IB_CON3 = 0x0A; + 36 3 if(ucMcuFlashWrValid == 0x55) //防止误写 + 37 3 { + 38 4 IB_CON4 = 0x09; + 39 4 if(XPAGE == (McuFlashAddr>>8)) //防止误写 + 40 4 { + 41 5 IB_CON5 = 0x06; + 42 5 _nop_(); + 43 5 _nop_(); + 44 5 _nop_(); + 45 5 _nop_(); + 46 5 } + 47 4 } + 48 3 } + 49 2 } + 50 1 + 51 1 FLASHCON = MCU_TYPE_CODE; + 52 1 } + 53 + 54 + C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 2 + + 55 /************************************************************************************************* + 56 * 函数名: McuFlashBlankCheck + 57 * 参 数: McuFlashAddr:起始地址 + 58 * 返回值: 0:非全0,Erase失败;1:全0,Erase成功 + 59 * 描 述: 当Erase完1个Sector,需检查是否全为0 + 60 *************************************************************************************************/ + 61 BOOL McuFlashBlankCheck(U32 xdata McuFlashAddr, U8 xdata McuType) + 62 { + 63 1 BOOL Result = 1; + 64 1 U16 i; + 65 1 + 66 1 FLASHCON = McuType; + 67 1 for(i=0; i>8; + 91 1 IB_OFFSET = McuFlashAddr % 256; + 92 1 + 93 1 IB_DATA = WrData; + 94 1 IB_CON1 = 0x6E; + 95 1 if(!EA) //防止误写 + 96 1 { + 97 2 IB_CON2 = 0x05; + 98 2 if(FLASHCON == McuType) //防止误写 + 99 2 { + 100 3 IB_CON3 = 0x0A; + 101 3 if(ucMcuFlashWrValid == 0x55) //防止误写 + 102 3 { + 103 4 IB_CON4 = 0x09; + 104 4 if(XPAGE == (McuFlashAddr>>8)) //防止误写 + 105 4 { + 106 5 IB_CON5 = 0x06; + 107 5 _nop_(); + 108 5 _nop_(); + 109 5 _nop_(); + 110 5 _nop_(); + 111 5 _nop_(); + 112 5 } + 113 4 } + 114 3 } + 115 2 } + 116 1 + C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 3 + + 117 1 FLASHCON = MCU_TYPE_CODE; + 118 1 } + 119 + 120 + 121 /************************************************************************************************* + 122 * 函数名: McuFlashRdOneByte + 123 * 参 数: McuFlashAddr:读取CODE区的地址 + 124 * 返回值: 返回当前Code字节 + 125 * 描 述: 读1个字节 + 126 *************************************************************************************************/ + 127 U8 McuFlashRdOneByte(U32 xdata McuFlashAddr, U8 xdata McuType) + 128 { + 129 1 U8 GetData = 0; + 130 1 + 131 1 FLASHCON = McuType; + 132 1 GetData = CBYTE[McuFlashAddr]; + 133 1 FLASHCON = MCU_TYPE_CODE; + 134 1 return GetData; + 135 1 } + 136 + 137 + 138 /************************************************************************************************* + 139 * 函数名: BootProgram + 140 * 参 数: 无 + 141 * 返回值: 无 + 142 * 描 述: Boot区进行升级代码操作:Erase->Program->Verify + 143 每擦除1个Sector,即刻写入数据,校验数据 + 144 *************************************************************************************************/ + 145 U8 BootProgram(void) + 146 { + 147 1 U8 i, McuCode, McuFlashType; + 148 1 U16 j; + 149 1 U32 McuFlashAddr; + 150 1 + 151 1 for(i=0; iProgram->Verify + 193 *************************************************************************************************/ + 194 BOOL BootUpgradeCode(void) + 195 { + 196 1 BOOL Result = 1; + 197 1 + 198 1 if(BootProgram() == BOOT_PGR_OK) + 199 1 { + 200 2 McuFlashEraseSector(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); //写入成功,擦除远程升级标志位 + 201 2 Result = McuFlashBlankCheck(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); //擦除结束后,需要查空 + 202 2 } + 203 1 else + 204 1 { + 205 2 Result = 0; + 206 2 } + 207 1 + 208 1 return Result; + 209 1 } + 210 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 617 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 1 32 + IDATA SIZE = ---- ---- + BIT SIZE = ---- 2 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Flash.obj b/output/Flash.obj new file mode 100644 index 0000000..d160454 Binary files /dev/null and b/output/Flash.obj differ diff --git a/output/GasGauge.lst b/output/GasGauge.lst new file mode 100644 index 0000000..47d0651 --- /dev/null +++ b/output/GasGauge.lst @@ -0,0 +1,308 @@ +C51 COMPILER V9.00 GASGAUGE 03/13/2023 18:09:38 PAGE 1 + + +C51 COMPILER V9.00, COMPILATION OF MODULE GASGAUGE +OBJECT MODULE PLACED IN .\output\GasGauge.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_gasguage\GasGauge.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore + -_Load.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRINT(.\output\ + -GasGauge.lst) OBJECT(.\output\GasGauge.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/05/30 + 6 History: + 7 V0.0 2020/05/30 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 #include "math.h" + 11 + 12 + 13 //容量统计相关的变量 + 14 BOOL bDsgEndFlg; + 15 BOOL bCHGEndFlg; + 16 BOOL bRSOCSlow; //SOC调节速率减慢 + 17 BOOL bRSOCFast; //SOC调节速率加快 + 18 + 19 U16 idata uiRCCharge; //充电容量统计 + 20 U16 idata uiRCDischarge; //放电容量统计 + 21 U16 idata uiTempBK; //温度备份 + 22 U8 idata ucCycleGain; //根据放电次数调整容量百分比 + 23 U16 xdata uiDfFCC; //滤波前的FCC + 24 U16 xdata uiDfRC; //滤波前RC + 25 U16 xdata uiDfRSOC; //滤波前RSOC + 26 U8 xdata ucDSGEndDelay; + 27 U8 xdata ucCHGEndDelay; + 28 U8 xdata ucDSGDelay1; + 29 U8 xdata ucDSGDelay2; + 30 U8 xdata ucRSOCCnt; + 31 S32 xdata slCur; + 32 + 33 + 34 /************************************************************************************************* + 35 * 函数名: GasGaugeInit + 36 * 参 数: 无 + 37 * 返回值: 无 + 38 * 描 述: 第一次上电根据电压初始化容量 + 39 *************************************************************************************************/ + 40 void GasGaugeInit(void) + 41 { + 42 1 U8 i; + 43 1 U16 RSOCtemp = 100; + 44 1 + 45 1 //变量初始化 + 46 1 bDsgEndFlg = 0; + 47 1 uiRCCharge = 0; + 48 1 uiRCDischarge = 0; + 49 1 uiTempBK = 0; + 50 1 ucCycleGain = 0; + 51 1 uiDfFCC = 0; + 52 1 uiDfRC = 0; + 53 1 uiDfRSOC = 0; + C51 COMPILER V9.00 GASGAUGE 03/13/2023 18:09:38 PAGE 2 + + 54 1 ucDSGEndDelay = 0; + 55 1 ucCHGEndDelay = 0; + 56 1 ucDSGDelay1 = 0; + 57 1 ucDSGDelay2 = 0; + 58 1 bRSOCSlow = 0; + 59 1 bRSOCFast = 0; + 60 1 //容量初始化 + 61 1 for(i=0; i<10; i++) //Prejudge capacity according to initial voltage + 62 1 { + 63 2 if(uiCellVmax < E2uiVOC[i]) + 64 2 { + 65 3 if(i == 0) + 66 3 { + 67 4 if((uiCellVmax= E2uiVOC[7]) //防止充满电后,再断电上电,RSOC会改变 + 86 1 { + 87 2 RSOCtemp = 100; + 88 2 } + 89 1 + 90 1 if(RSOCtemp>E2ucSOC) + 91 1 { + 92 2 RSOCtemp = E2ucSOC; + 93 2 } + 94 1 else + 95 1 { + 96 2 if((E2ucSOC-RSOCtemp) > INTSOCDIF) + 97 2 { + 98 3 E2ucSOC = RSOCtemp; + 99 3 } + 100 2 else + 101 2 { + 102 3 RSOCtemp = E2ucSOC; + 103 3 } + 104 2 } + 105 1 + 106 1 Info.uiRSOC = RSOCtemp; + 107 1 Info.ulFCC = E2ulLastFCC; + 108 1 Info.ulRC = (U32)Info.ulFCC*Info.uiRSOC/100; + 109 1 + 110 1 uiDfFCC = Info.ulFCC; //uiDfFCC/uiDfRC/uiDfRSOC为滤波前的参数, + -跏蓟辈⒚挥新瞬 + 111 1 uiDfRC = Info.ulRC; + 112 1 uiDfRSOC = Info.uiRSOC *10; + 113 1 + 114 1 if(E2uiCycleCount>CYCLECOUNTC) //根据循环次数调整FCC修调系数 + C51 COMPILER V9.00 GASGAUGE 03/13/2023 18:09:38 PAGE 3 + + 115 1 { + 116 2 ucCycleGain=75; + 117 2 } + 118 1 else if(E2uiCycleCount>CYCLECOUNTB) + 119 1 { + 120 2 ucCycleGain=95 - E2uiCycleCount/5; + 121 2 } + 122 1 else if(E2uiCycleCount>CYCLECOUNTA) + 123 1 { + 124 2 ucCycleGain=105 - E2uiCycleCount/10; + 125 2 } + 126 1 else + 127 1 { + 128 2 ucCycleGain=100; + 129 2 } + 130 1 + 131 1 uiTempBK = 0; //保证放电就计算一次FCC + 132 1 ucDSGEndDelay = 0; + 133 1 ucDSGDelay1 = 0; + 134 1 ucDSGDelay2 = 0; + 135 1 bDsgEndFlg = 0; + 136 1 ucCHGEndDelay = 0; + 137 1 } + 138 + 139 + 140 /************************************************************************************************* + 141 * 函数名: GasGaugeManage + 142 * 参 数: 无 + 143 * 返回值: 无 + 144 * 描 述: 根据充放电状态统计容量 + 145 *************************************************************************************************/ + 146 void GasGaugeManage(void) + 147 { + 148 1 U16 xdata chgdffcc = 0; + 149 1 + 150 1 slCur=0; + 151 1 + 152 1 if(Info.slCurr > E2siDfilterCur) //充电过程中电量计算 + 153 1 { + 154 2 ucDSGEndDelay = 0; + 155 2 ucDSGDelay1 = 0; + 156 2 ucDSGDelay2 = 0; + 157 2 bDsgEndFlg = 0; + 158 2 + 159 2 chgdffcc = E2ulChgFCC*ucCycleGain/100; //充电过程FCC一直保持不改变 + 160 2 + 161 2 if(chgdffcc != uiDfFCC) //满充容量 + 162 2 { + 163 3 uiDfRC = (U16)(chgdffcc*Info.uiRSOC/100); + 164 3 IrqUartDis(); + 165 3 Info.ulRC = uiDfRC; + 166 3 IrqUartEn(); + 167 3 } + 168 2 uiDfFCC = chgdffcc; + 169 2 + 170 2 uiRCCharge += slCadcCurAverage; //每1S计算一次电量,每次加上电流值即计算每 + -1S的电量mAS + 171 2 while(uiRCCharge >= mAhVALUE) //当累加电量超过3600mAS即等于1mAh + 172 2 { + 173 3 uiRCCharge -= mAhVALUE; + 174 3 if(uiDfRC < uiDfFCC) + 175 3 { + C51 COMPILER V9.00 GASGAUGE 03/13/2023 18:09:38 PAGE 4 + + 176 4 uiDfRC++; //剩余容量增加1mAh + 177 4 } + 178 3 else + 179 3 { + 180 4 uiDfRC = uiDfFCC; //当剩余容量等于满充容量,容量不再增加 + 181 4 uiRCCharge = 0; + 182 4 } + 183 3 } + 184 2 + 185 2 if(uiDfRC < uiDfFCC) + 186 2 { + 187 3 uiDfRSOC = (U32)uiDfRC*1000/uiDfFCC; + 188 3 } + 189 2 else + 190 2 { + 191 3 uiDfRSOC = 1000; + 192 3 } + 193 2 + 194 2 if(slCadcCurAverage < E2siChgEndCurr) //充电截止判断,如果此时的电流小于充电截止 + -电流 + 195 2 { + 196 3 if(uiCellVmax>E2uiChgEndVol) //此时的单节最大电压大于充电截止电压 + 197 3 { + 198 4 if(++ucCHGEndDelay>=E2ucChgEndDelay) + 199 4 { + 200 5 ucCHGEndDelay = E2ucChgEndDelay; + 201 5 bCHGEndFlg = 1; + 202 5 } + 203 4 } + 204 3 } + 205 2 + 206 2 CorrectCHGSOC(); //根据EEPROM中的电压点,修正充电过程中的SO + -C,同时需要调整uiDfRC + 207 2 + 208 2 } + 209 1 else if(Info.slCurr < -E2siDfilterCur) //放电过程中计算电量 + 210 1 { + 211 2 ucCHGEndDelay = 0; + 212 2 bCHGEndFlg = 0; + 213 2 + 214 2 slCur = slCadcCurAverage /*+ slAdcCur2*/; //放电过程中同时计算主回路及辅控回路的电量 + 215 2 if(slCur<0) + 216 2 { + 217 3 uiRCDischarge -= slCur; + 218 3 } + 219 2 if(uiRCDischarge >= mAhVALUE) + 220 2 { + 221 3 while(uiRCDischarge >= mAhVALUE) //累加的放电电量大于3600mAS后同样剩余电量减1mAh + 222 3 { + 223 4 uiRCDischarge -= mAhVALUE; + 224 4 E2ulCycleThresholdCount++; //累计 + 225 4 if(uiDfRC > 1) + 226 4 { + 227 5 uiDfRC --; + 228 5 } + 229 4 } + 230 3 if(E2ulCycleThresholdCount >= E2ulCycleThreshold) //cyclecount + 231 3 { + 232 4 E2ulCycleThresholdCount -= E2ulCycleThreshold; + 233 4 E2uiCycleCount++; + 234 4 } + 235 3 } + C51 COMPILER V9.00 GASGAUGE 03/13/2023 18:09:38 PAGE 5 + + 236 2 + 237 2 CorrectDSGSOC(); + 238 2 } + 239 1 + 240 1 if(bOV) //Charge end + 241 1 { + 242 2 IrqUartDis(); + 243 2 uiDfRC = uiDfFCC; + 244 2 Info.ulRC = uiDfRC; + 245 2 Info.ulFCC = Info.ulRC; + 246 2 Info.uiRSOC = 100; + 247 2 IrqUartEn(); + 248 2 } + 249 1 + 250 1 if(uiDfRC>uiDfFCC) + 251 1 { + 252 2 uiDfRC = uiDfFCC; + 253 2 } + 254 1 else if(uiDfRC <(uiDfFCC*2/100)) + 255 1 { + 256 2 uiDfRC = uiDfFCC*2/100; + 257 2 } + 258 1 uiDfRSOC=(U32)uiDfRC*1000/uiDfFCC; + 259 1 + 260 1 DataFilter(); + 261 1 + 262 1 IrqUartDis(); + 263 1 E2ucSOC = Info.uiRSOC; + 264 1 E2ulLastFCC = Info.ulFCC; + 265 1 Info.uiCycleCount = E2uiCycleCount; + 266 1 IrqUartEn(); + 267 1 } + 268 + 269 + 270 + 271 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 1410 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 15 3 + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = 7 ---- + BIT SIZE = 4 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/GasGauge.obj b/output/GasGauge.obj new file mode 100644 index 0000000..a573fa0 Binary files /dev/null and b/output/GasGauge.obj differ diff --git a/output/GasGaugeInter_V4_12.lst b/output/GasGaugeInter_V4_12.lst new file mode 100644 index 0000000..83d2370 --- /dev/null +++ b/output/GasGaugeInter_V4_12.lst @@ -0,0 +1,252 @@ +C51 COMPILER V9.01 GASGAUGEINTER_V4_12 07/28/2023 12:06:53 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE GASGAUGEINTER_V4_12 +OBJECT MODULE PLACED IN .\output\GasGaugeInter_V4_12.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_gasguage\GasGaugeInter_V4_12.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\out + -put\MCUCore_Load.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRIN + -T(.\output\GasGaugeInter_V4_12.lst) OBJECT(.\output\GasGaugeInter_V4_12.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2022/12/08 + 6 History: + 7 V0.0 2022/12/08 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 //***************************容量计部分相关变量,可直接移动至其他.c文件,其他容量计变量也可以定义在此处, + -部梢栽谄渌募卸ㄒ************************************** + 13 + 14 + 15 U16 xdata Info_uiRSOC; //对外显示的电量(%),变量类型:U16 xdata(输出) + 16 U32 xdata Info_ulFCC; //对外显示的满充容量(mAh),变量类型:U32 xdata(输出) + 17 U32 xdata Info_ulRC; //对外显示的剩余容量(mAh),变量类型:U32 xdata(输出) + 18 U16 xdata Info_uiCycleCount; //对外显示的放电循环次数(次),变量类型:U16 xdata(输出) + 19 + 20 U32 xdata Info_ulDfilterRC; //滤波前的剩余容量值对外显示,变量类型:U32(输出) + 21 U32 xdata Info_ulTempDsgFcc; //计算的可放电容量值对外显示,变量类型:U32(输出) + 22 U16 xdata Info_uiSocDecTime; //剩余电量百分比(%)的变化率对外显示,变量类型:U16(输出) + 23 U16 xdata Info_uiRsocCnt; //剩余电量百分比(%)变化计时对外显示,变量类型:U16(输出) + 24 + 25 //BOOL bOCD1; //放电过流1标志,变量类型:BOOL(输入) + 26 //BOOL bOCD2; //放电过流2标志,变量类型:BOOL(输入) + 27 //BOOL bOCC; //充电过流标志,变量类型:BOOL(输入) + 28 //BOOL bAFE_SC; //短路标志,变量类型:BOOL(输入) + 29 //BOOL bUV; //单节电芯欠压标志,变量类型:BOOL(输入) + 30 //BOOL bOV; //单节电芯过压标志,变量类型:BOOL(输入) + 31 + 32 //U16 xdata E2uiVOC[10]; //OCV电压数组,分别对应静置时10%容量~100%容量共10个电压点,且E2uiVOC_D[0]对应10 + -%、E2uiVOC_D[9]对应100%,变量类型:U16 xdata(输入) + 33 //U32 xdata E2ulDesignCapacity; //设计容量,变量类型:U32 xdata(输入) + 34 //U32 xdata E2ulFCC; //满充容量,变量类型:U32 xdata(输入\输出存入E2) + 35 U32 xdata E2ulDfRC; //RSOC滤波前的剩余容量,变量类型:U32 xdata(输入\输出存入E2) + 36 //U8 xdata E2ucSOC; //滤波后用于对外显示的RSOC,变量类型:U8 xdata(输入\输出存入E2) + 37 + 38 //U16 xdata E2uiChgEndVol; //充电截止电压,变量类型:U16 xdata(输入) + 39 //S16 xdata E2siChgEndCurr; //充电截止电流,变量类型:S16 xdata(输入) + 40 //U8 xdata E2ucChgEndDelay; //充电截止延时,变量类型:U8 xdata(输入) + 41 //U16 xdata E2uiDsgEndVol; //放电截止电压,变量类型:U16 xdata(输入) + 42 S32 xdata E2slDsgEndCurr; //放电截止电流,变量类型:S32 xdata(输入) + 43 //U8 xdata E2ucDsgEndDelay; //放电截止延时,变量类型:U8 xdata(输入) + 44 U8 xdata E2ucDsgEndFlg; //放电截止标志,变量类型:U8 xdata(输入\输出存入E2) + 45 //U16 xdata E2uiOVvol; //单节过压阈值,变量类型:U16 xdata(输入) + 46 //U16 xdata E2uiUVvol; //单节欠压阈值,变量类型:U16 xdata(输入) + 47 + 48 //U32 xdata E2ulCycleThreshold; //循环次数更新阈值,变量类型:U32 xdata(输入) + 49 //U32 xdata E2ulCycleThresholdCount;//循环电量计数,变量类型:U32 xdata(输入\输出存入E2) + 50 //U16 xdata E2uiCycleCount; //循环次数,变量类型:U16 xdata(输入\输出存入E2) + 51 U16 xdata E2uiLastCCount; //上次更新容量时的循环次数 ,变量类型:U16 xdata(输入\输出存入E2) + C51 COMPILER V9.01 GASGAUGEINTER_V4_12 07/28/2023 12:06:53 PAGE 2 + + 52 //S16 xdata E2siDfilterCur; //零电流窗口,变量类型:S16 xdata(输入) + 53 + 54 U16 xdata E2uiDsgAdjLowTemp; //放电末端调节的最低温度,数值 = 温度(度)×10 + 2731,变量类型:U16 xdata + -ㄊ淙耄 + 55 S32 xdata E2slDsgAdjMaxCurr; //放电末端调节的最大放电电流(mA),变量类型:S32 xdata(输入) + 56 U8 xdata E2ucDsgAdjLowFlg; //低温或大电流放电欠压时允许SOC跳至1%的标志(1:允许,0:禁止),变量类型:U8 + -xdata(输入) + 57 U8 xdata E2ucDsgAdjLowSoc; //低温或大电流放电欠压时允许SOC跳至1%的阈值(%),变量类型:U8 xdata(输入) + 58 + 59 U8 xdata E2ucFullDsgDelay; //静置时判断满放的延时(S),变量类型:U8 xdata(输入) + 60 U32 xdata E2ulLoadEndVol; //负载或电芯总压截止总电压(mV),变量类型:U32 xdata(输入) + 61 U32 xdata E2ulChgerEndVol; //充电器或电芯总压截止总电压(mV),变量类型:U32 xdata(输入) + 62 U8 xdata E2ucChgerEndDelay; //充电器或电芯总压截止延时(S),变量类型:U8 xdata(输入) + 63 U32 xdata E2ulIdleSocTimes; //需要调节SOC的自唤醒次数,变量类型:U32 xdata(输入) + 64 + 65 U8 xdata E2ucInitSocDif; //第一次上电容量条件差值30%,一般不用修改,变量类型:U8 xdata(输入) + 66 U8 xdata E2ucInitUpSoc; //第一次上电上调容量的OCV容量阈值,变量类型:U8 xdata(输入) + 67 U8 xdata E2ucChgAdjRatio; //充电末端调节的比例系数,约等于充电时电压从OCV 100%电压~充电截止电压充进的电量 + -百分比(%)(暂定),变量类型:U8 xdata(输入) + 68 U16 xdata E2uiTempFCC_K1; //根据温度调节FCC一阶系数,变量类型:U16 xdata(输入) + 69 U16 xdata E2uiTempFCC_K2; //根据温度调节FCC二阶系数,变量类型:U16 xdata(输入) + 70 U16 xdata E2uiTempFCC_B; //根据温度调节FCC偏移量,变量类型:U16 xdata(输入) + 71 U16 xdata E2uiDsgCorrectVol; //开始放电末端修调的电压(mV),变量类型:U16 xdata(输入) + 72 U8 xdata E2ucDsgCorrectSOC; //开始放电末端修调的容量(%),变量类型:U8 xdata(输入) + 73 + 74 U8 xdata E2ucDsgVolDet; //放电末端电压检测幅度(mV),变量类型:U8 xdata(输入) + 75 + 76 U16 xdata E2uiChgCorrectVol; //开始充电末端修调的电压(mV),变量类型:U16 xdata(输入) + 77 U8 xdata E2ucChgCorrectSOC; //开始充电末端修调的容量(%),变量类型:U8 xdata(输入) + 78 U8 xdata E2ucChg100Ratio; //满足满充条件后上调1%间隔时间(S),变量类型:U8 xdata(输入) + 79 U8 xdata E2ucChgCurRatio; //充电时调节滤波前剩余容量的充电倍率(单位:0.1C),变量类型:U8 xdata(输入) + 80 U8 xdata E2ucChgChangeSocDif; //充电时修改滤波前剩余容量的容量差值(%),变量类型:U8 xdata(输入) + 81 U8 xdata E2ucChgChangeSocRatio; //充电时在CHGCUR_RATIO充电倍率下OCV容量上抬的大致幅度(%),变量类型:U8 xda + -ta(输入) + 82 + 83 U8 xdata E2ucFccUpdatePercent; //单次容量学习更新的最大百分比(%),变量类型:U8 xdata(输入) + 84 U16 xdata E2uiChgEndTemp; //充电截止温度,数值 = X(度)×10 + 2731,变量类型:U16 xdata(输入) + 85 U16 xdata E2uiDsgEndTemp; //放电截止温度,数值 = X(度)×10 + 2731,变量类型:U16 xdata(输入) + 86 + 87 U16 xdata E2ui_CYCLECOUNTA; //根据循环次数调节FCC的衰减阶段一:起始循环次数,变量类型:U16 xdata(输入) + 88 U16 xdata E2ui_CYCLECOUNTA_K; //根据循环次数调节FCC的衰减阶段一:衰减斜率=(CYCLECOUNTB - CYCLECOUNTA)/10 + -淞坷嘈停篣16 xdata(输入) + 89 U16 xdata E2ui_CYCLECOUNTA_B; //根据循环次数调节FCC的衰减阶段一:衰减截距=(CYCLECOUNTB *100 -CYCLECOUN + -TA *95) / (CYCLECOUNTB - CYCLECOUNTA),变量类型:U16 xdata(输入) + 90 U16 xdata E2ui_CYCLECOUNTB; //调节FCC的衰减阶段二:起始循环次数,变量类型:U16 xdata(输入) + 91 U16 xdata E2ui_CYCLECOUNTB_K; //调节FCC的衰减阶段二:衰减斜率=(CYCLECOUNTC -CYCLECOUNTB)/10,变量类型 + -篣16 xdata(输入) + 92 U16 xdata E2ui_CYCLECOUNTB_B; //调节FCC的衰减阶段二:衰减截距=(CYCLECOUNTC *95 -CYCLECOUNTB *85) /(CYC + -LECOUNTC -CYCLECOUNTB),变量类型:U16 xdata(输入) + 93 U16 xdata E2ui_CYCLECOUNTC; //调节FCC的衰减阶段三:起始循环次数,变量类型:U16 xdata(输入) + 94 U16 xdata E2uiUpdateCycleCount; //上次更新容量后,需再次更新容量的循环次数,变量类型:U16 xdata(输入) + 95 + 96 S32 xdata Info_slCurr; //经零电流窗口过滤后用于判断充放电状态的主控回路电流(mA),变量类型:S32 xdata( + -输入) + 97 U16 xdata Info_uiTemp; //对外显示的电芯温度,数值 = X(度)×10 + 2731,变量类型:U16 xdata(输入) + 98 U32 xdata Info_ulVoltage; //电芯总电压:U32 xdata(输入) + 99 + 100 U16 data uiCellVmaxG; //当前电压最高的电芯电压,变量类型:U16 data(输入) + 101 U16 data uiCellVminG; //当前电压最低的电芯电压,变量类型:U16 data(输入) + 102 //U8 data ucCellNum; //电芯串数,变量类型:U8 data(输入) + 103 //S32 xdata slCadcCurAverage; //用于库伦积分的平均电流(主控充放电回路),变量类型:S32 xdata(输入) + 104 S32 xdata slAdcCur2; //用于库伦积分的平均电流(辅控放电回路,如没有可以恒为0),变量类型:S32 xdata(输 + C51 COMPILER V9.01 GASGAUGEINTER_V4_12 07/28/2023 12:06:53 PAGE 3 + + -耄 + 105 S16 xdata siCurCompens; //系统功耗电流补偿(预留),可以恒为0,变量类型:U16 xdata(输入) + 106 //***************************************************************** + 107 + 108 /************************************************************************************************* + 109 * 函数名: GasGaugeVarIn + 110 * 参 数: 无 + 111 * 返回值: 无 + 112 * 描 述: 外部值赋给容量计相关变量,每个容量计功能函数执行时均在第一步调用该接口函数 + 113 *************************************************************************************************/ + 114 void GasGaugeVarIn(void) + 115 { + 116 1 BOOL eabak; + 117 1 + 118 1 eabak = EA; + 119 1 IrqDis(); + 120 1 Info_uiRSOC = Info.uiRSOC; + 121 1 Info_ulFCC = Info.ulFCC; + 122 1 Info_ulRC = Info.ulRC; + 123 1 Info_uiCycleCount = Info.uiCycleCount; + 124 1 Info_slCurr = Info.slCurr; + 125 1 Info_uiTemp = Info.uiTS; + 126 1 Info_ulVoltage = Info.ulVoltage; + 127 1 //slCadcCurAverage = slAdcFilterCurrent; + 128 1 uiCellVmaxG = uiCellVmax; + 129 1 uiCellVminG = uiCellVmin; + 130 1 + 131 1 slAdcCur2 = 0; + 132 1 siCurCompens = 0; + 133 1 + 134 1 EA = eabak; + 135 1 + 136 1 E2ucInitSocDif = 30; + 137 1 E2ucInitUpSoc = 90; + 138 1 E2uiDsgAdjLowTemp = (10*10 + 2731); + 139 1 E2slDsgAdjMaxCurr = -35000; + 140 1 E2ucDsgAdjLowFlg = 0; + 141 1 E2ucDsgAdjLowSoc = 1; + 142 1 E2ucChgAdjRatio = 20; + 143 1 E2uiTempFCC_K1 = 16000; + 144 1 E2uiTempFCC_K2 = 17; + 145 1 E2uiTempFCC_B = 1570; + 146 1 E2ucFullDsgDelay = 60; + 147 1 E2uiDsgCorrectVol = E2uiVOC[0] - 200; + 148 1 E2ucDsgCorrectSOC = 15; + 149 1 E2slDsgEndCurr = -400; + 150 1 E2ucDsgVolDet = 10; + 151 1 + 152 1 E2uiChgCorrectVol = E2uiVOC[9]; + 153 1 E2ucChgCorrectSOC = 90; + 154 1 E2ulChgerEndVol = 4500 * ucCellNum; + 155 1 E2ulLoadEndVol = 3000 * ucCellNum; + 156 1 E2ucChgerEndDelay = 60; + 157 1 E2ucChg100Ratio = 20; + 158 1 + 159 1 E2ucChgCurRatio = 15; + 160 1 E2ucChgChangeSocDif = 20; + 161 1 E2ucChgChangeSocRatio = 10; + 162 1 + 163 1 E2ulIdleSocTimes = 40; + 164 1 + 165 1 E2ucFccUpdatePercent = 30; + C51 COMPILER V9.01 GASGAUGEINTER_V4_12 07/28/2023 12:06:53 PAGE 4 + + 166 1 E2uiChgEndTemp = (15*10 + 2731); + 167 1 E2uiDsgEndTemp = (15*10 + 2731); + 168 1 + 169 1 E2ui_CYCLECOUNTA = 50; + 170 1 E2ui_CYCLECOUNTA_K = 5; + 171 1 E2ui_CYCLECOUNTA_B = 105; + 172 1 E2ui_CYCLECOUNTB = 100; + 173 1 E2ui_CYCLECOUNTB_K = 30; + 174 1 E2ui_CYCLECOUNTB_B = 98; + 175 1 E2ui_CYCLECOUNTC = 400; + 176 1 E2uiUpdateCycleCount = 75; + 177 1 + 178 1 E2ulDesignCapacity = E2ulFCC; + 179 1 E2ulDfRC= E2ulLastFCC; + 180 1 E2uiLastCCount = E2uiCycleCount_Rsv; + 181 1 + 182 1 // bAFE_SC = bSC; + 183 1 } + 184 + 185 /************************************************************************************************* + 186 * 函数名: GasGaugeVarOut + 187 * 参 数: 无 + 188 * 返回值: 无 + 189 * 描 述: 容量计相关变量赋给外部值,每个容量计功能函数执行时均在最后一步调用该接口函数 + 190 *************************************************************************************************/ + 191 void GasGaugeVarOut(void) + 192 { + 193 1 BOOL eabak; + 194 1 + 195 1 eabak = EA; + 196 1 IrqDis(); + 197 1 Info.uiRSOC = Info_uiRSOC; + 198 1 Info.ulFCC = Info_ulFCC; + 199 1 Info.ulRC = Info_ulRC; + 200 1 Info.uiCycleCount = Info_uiCycleCount; + 201 1 E2ulLastFCC = E2ulDfRC; + 202 1 E2uiCycleCount_Rsv = E2uiLastCCount; + 203 1 + 204 1 // Info.ulDfilterRC = Info_ulDfilterRC + 205 1 // Info.ulTempDsgFcc = Info_ulTempDsgFcc; + 206 1 // Info.uiSocDecTime = Info_uiSocDecTime; + 207 1 // Info.uiRsocCnt = Info_uiRsocCnt; + 208 1 EA = eabak; + 209 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 587 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 114 ---- + PDATA SIZE = ---- ---- + DATA SIZE = 4 ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- 2 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/GasGaugeInter_V4_12.obj b/output/GasGaugeInter_V4_12.obj new file mode 100644 index 0000000..f29a231 Binary files /dev/null and b/output/GasGaugeInter_V4_12.obj differ diff --git a/output/GasGaugeInter_V4_13.lst b/output/GasGaugeInter_V4_13.lst new file mode 100644 index 0000000..ece05f0 --- /dev/null +++ b/output/GasGaugeInter_V4_13.lst @@ -0,0 +1,298 @@ +C51 COMPILER V9.01 GASGAUGEINTER_V4_13 02/06/2025 15:28:46 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE GASGAUGEINTER_V4_13 +OBJECT MODULE PLACED IN .\output\GasGaugeInter_V4_13.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_gasguage\GasGaugeInter_V4_13.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\o + -utput\MCUCore_Load.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730 + -_lib\include;.\code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\GasGaugeInter_V + -4_13.lst) OBJECT(.\output\GasGaugeInter_V4_13.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2022/12/08 + 6 History: + 7 V0.0 2022/12/08 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 //***************************容量计部分相关变量,可直接移动至其他.c文件,其他容量计变量也可以定义在此处, + -部梢栽谄渌募卸ㄒ************************************** + 13 + 14 + 15 U16 xdata Info_uiRSOC; //对外显示的电量(%),变量类型:U16 xdata(输出) + 16 U32 xdata Info_ulFCC; //对外显示的满充容量(mAh),变量类型:U32 xdata(输出) + 17 U32 xdata Info_ulRC; //对外显示的剩余容量(mAh),变量类型:U32 xdata(输出) + 18 U16 xdata Info_uiCycleCount; //对外显示的放电循环次数(次),变量类型:U16 xdata(输出) + 19 + 20 U32 xdata Info_ulDfilterRC; //滤波前的剩余容量值对外显示,变量类型:U32(输出) + 21 U32 xdata Info_ulTempDsgFcc; //计算的可放电容量值对外显示,变量类型:U32(输出) + 22 U16 xdata Info_uiSocDecTime; //剩余电量百分比(%)的变化率对外显示,变量类型:U16(输出) + 23 U16 xdata Info_uiRsocCnt; //剩余电量百分比(%)变化计时对外显示,变量类型:U16(输出) + 24 + 25 //BOOL bOCD1; //放电过流1标志,变量类型:BOOL(输入) + 26 //BOOL bOCD2; //放电过流2标志,变量类型:BOOL(输入) + 27 //BOOL bOCC; //充电过流标志,变量类型:BOOL(输入) + 28 //BOOL bAFE_SC; //短路标志,变量类型:BOOL(输入) + 29 //BOOL bUV; //单节电芯欠压标志,变量类型:BOOL(输入) + 30 //BOOL bOV; //单节电芯过压标志,变量类型:BOOL(输入) + 31 + 32 //U16 xdata E2uiVOC[10]; //OCV电压数组,分别对应静置时10%容量~100%容量共10个电压点,且E2uiVOC_D[0]对应10 + -%、E2uiVOC_D[9]对应100%,变量类型:U16 xdata(输入) + 33 //U32 xdata E2ulDesignCapacity; //设计容量,变量类型:U32 xdata(输入) + 34 //U32 xdata E2ulFCC; //满充容量,变量类型:U32 xdata(输入\输出存入E2) + 35 //U32 xdata E2ulDfRC; //RSOC滤波前的剩余容量,变量类型:U32 xdata(输入\输出存入E2) + 36 //U8 xdata E2ucSOC; //滤波后用于对外显示的RSOC,变量类型:U8 xdata(输入\输出存入E2) + 37 + 38 //U16 xdata E2uiChgEndVol; //充电截止电压,变量类型:U16 xdata(输入) + 39 //S16 xdata E2siChgEndCurr; //充电截止电流,变量类型:S16 xdata(输入) + 40 //U8 xdata E2ucChgEndDelay; //充电截止延时,变量类型:U8 xdata(输入) + 41 //U16 xdata E2uiDsgEndVol; //放电截止电压,变量类型:U16 xdata(输入) + 42 //S32 xdata E2slDsgEndCurr; //放电截止电流,变量类型:S32 xdata(输入) + 43 //U8 xdata E2ucDsgEndDelay; //放电截止延时,变量类型:U8 xdata(输入) + 44 //U8 xdata E2ucDsgEndFlg; //放电截止标志,变量类型:U8 xdata(输入\输出存入E2) + 45 //U16 xdata E2uiOVvol; //单节过压阈值,变量类型:U16 xdata(输入) + 46 //U16 xdata E2uiUVvol; //单节欠压阈值,变量类型:U16 xdata(输入) + 47 + 48 //U32 xdata E2ulCycleThreshold; //循环次数更新阈值,变量类型:U32 xdata(输入) + 49 //U32 xdata E2ulCycleThresholdCount;//循环电量计数,变量类型:U32 xdata(输入\输出存入E2) + 50 //U16 xdata E2uiCycleCount; //循环次数,变量类型:U16 xdata(输入\输出存入E2) + C51 COMPILER V9.01 GASGAUGEINTER_V4_13 02/06/2025 15:28:46 PAGE 2 + + 51 //U16 xdata E2uiLastCCount; //上次更新容量时的循环次数 ,变量类型:U16 xdata(输入\输出存入E2) + 52 //S16 xdata E2siDfilterCur; //零电流窗口,变量类型:S16 xdata(输入) + 53 + 54 U16 xdata E2uiDsgAdjLowTemp; //放电末端调节的最低温度,数值 = 温度(度)×10 + 2731,变量类型:U16 xdata + -ㄊ淙耄 + 55 S32 xdata E2slDsgAdjMaxCurr; //放电末端调节的最大放电电流(mA),变量类型:S32 xdata(输入) + 56 U8 xdata E2ucDsgAdjLowFlg; //低温或大电流放电欠压时允许SOC跳至1%的标志(1:允许,0:禁止),变量类型:U8 + -xdata(输入) + 57 U8 xdata E2ucDsgAdjLowSoc; //低温或大电流放电欠压时允许SOC跳至1%的阈值(%),变量类型:U8 xdata(输入) + 58 + 59 U8 xdata E2ucFullDsgDelay; //静置时判断满放的延时(S),变量类型:U8 xdata(输入) + 60 U32 xdata E2ulLoadEndVol; //负载或电芯总压截止总电压(mV),变量类型:U32 xdata(输入) + 61 U32 xdata E2ulChgerEndVol; //充电器或电芯总压截止总电压(mV),变量类型:U32 xdata(输入) + 62 U8 xdata E2ucChgerEndDelay; //充电器或电芯总压截止延时(S),变量类型:U8 xdata(输入) + 63 U32 xdata E2ulIdleSocTimes; //需要调节SOC的自唤醒次数,变量类型:U32 xdata(输入) + 64 + 65 U8 xdata E2ucInitSocDif; //第一次上电容量条件差值30%,一般不用修改,变量类型:U8 xdata(输入) + 66 U8 xdata E2ucInitUpSoc; //第一次上电上调容量的OCV容量阈值,变量类型:U8 xdata(输入) + 67 U8 xdata E2ucChgAdjRatio; //充电末端调节的比例系数,约等于充电时电压从OCV 100%电压~充电截止电压充进的电量 + -百分比(%)(暂定),变量类型:U8 xdata(输入) + 68 U16 xdata E2uiTempFCC_K1; //根据温度调节FCC一阶系数,变量类型:U16 xdata(输入) + 69 U16 xdata E2uiTempFCC_K2; //根据温度调节FCC二阶系数,变量类型:U16 xdata(输入) + 70 U16 xdata E2uiTempFCC_B; //根据温度调节FCC偏移量,变量类型:U16 xdata(输入) + 71 U16 xdata E2uiDsgCorrectVol; //开始放电末端修调的电压(mV),变量类型:U16 xdata(输入) + 72 U8 xdata E2ucDsgCorrectSOC; //开始放电末端修调的容量(%),变量类型:U8 xdata(输入) + 73 + 74 U8 xdata E2ucDsgVolDet; //放电末端电压检测幅度(mV),变量类型:U8 xdata(输入) + 75 + 76 U16 xdata E2uiChgCorrectVol; //开始充电末端修调的电压(mV),变量类型:U16 xdata(输入) + 77 U8 xdata E2ucChgCorrectSOC; //开始充电末端修调的容量(%),变量类型:U8 xdata(输入) + 78 U8 xdata E2ucChg100Ratio; //满足满充条件后上调1%间隔时间(S),变量类型:U8 xdata(输入) + 79 U8 xdata E2ucChgCurRatio; //充电时调节滤波前剩余容量的充电倍率(单位:0.1C),变量类型:U8 xdata(输入) + 80 U8 xdata E2ucChgChangeSocDif; //充电时修改滤波前剩余容量的容量差值(%),变量类型:U8 xdata(输入) + 81 U8 xdata E2ucChgChangeSocRatio; //充电时在CHGCUR_RATIO充电倍率下OCV容量上抬的大致幅度(%),变量类型:U8 xda + -ta(输入) + 82 + 83 U8 xdata E2ucFccUpdatePercent; //单次容量学习更新的最大百分比(%),变量类型:U8 xdata(输入) + 84 U16 xdata E2uiChgEndTemp; //充电截止温度,数值 = X(度)×10 + 2731,变量类型:U16 xdata(输入) + 85 U16 xdata E2uiDsgEndTemp; //放电截止温度,数值 = X(度)×10 + 2731,变量类型:U16 xdata(输入) + 86 + 87 U16 xdata E2ui_CYCLECOUNTA; //根据循环次数调节FCC的衰减阶段一:起始循环次数,变量类型:U16 xdata(输入) + 88 U16 xdata E2ui_CYCLECOUNTA_K; //根据循环次数调节FCC的衰减阶段一:衰减斜率=(CYCLECOUNTB - CYCLECOUNTA)/10 + -淞坷嘈停篣16 xdata(输入) + 89 U16 xdata E2ui_CYCLECOUNTA_B; //根据循环次数调节FCC的衰减阶段一:衰减截距=(CYCLECOUNTB *100 -CYCLECOUN + -TA *95) / (CYCLECOUNTB - CYCLECOUNTA),变量类型:U16 xdata(输入) + 90 U16 xdata E2ui_CYCLECOUNTB; //调节FCC的衰减阶段二:起始循环次数,变量类型:U16 xdata(输入) + 91 U16 xdata E2ui_CYCLECOUNTB_K; //调节FCC的衰减阶段二:衰减斜率=(CYCLECOUNTC -CYCLECOUNTB)/10,变量类型 + -篣16 xdata(输入) + 92 U16 xdata E2ui_CYCLECOUNTB_B; //调节FCC的衰减阶段二:衰减截距=(CYCLECOUNTC *95 -CYCLECOUNTB *85) /(CYC + -LECOUNTC -CYCLECOUNTB),变量类型:U16 xdata(输入) + 93 U16 xdata E2ui_CYCLECOUNTC; //调节FCC的衰减阶段三:起始循环次数,变量类型:U16 xdata(输入) + 94 U16 xdata E2uiUpdateCycleCount; //上次更新容量后,需再次更新容量的循环次数,变量类型:U16 xdata(输入) + 95 + 96 S32 xdata Info_slCurr; //经零电流窗口过滤后用于判断充放电状态的主控回路电流(mA),变量类型:S32 xdata( + -输入) + 97 U16 xdata Info_uiTemp; //对外显示的电芯温度,数值 = X(度)×10 + 2731,变量类型:U16 xdata(输入) + 98 U32 xdata Info_ulVoltage; //电芯总电压:U32 xdata(输入) + 99 + 100 U16 data uiCellVmaxG; //当前电压最高的电芯电压,变量类型:U16 data(输入) + 101 U16 data uiCellVminG; //当前电压最低的电芯电压,变量类型:U16 data(输入) + 102 //U8 data ucCellNum; //电芯串数,变量类型:U8 data(输入) + 103 //S32 xdata slCadcCurAverage; //用于库伦积分的平均电流(主控充放电回路),变量类型:S32 xdata(输入) + C51 COMPILER V9.01 GASGAUGEINTER_V4_13 02/06/2025 15:28:46 PAGE 3 + + 104 S32 xdata slAdcCur2; //用于库伦积分的平均电流(辅控放电回路,如没有可以恒为0),变量类型:S32 xdata(输 + -耄 + 105 S16 xdata siCurCompens; //系统功耗电流补偿(预留),可以恒为0,变量类型:U16 xdata(输入) + 106 //***************************************************************** + 107 + 108 /************************************************************************************************* + 109 * 函数名: GasGaugeVarIn + 110 * 参 数: 无 + 111 * 返回值: 无 + 112 * 描 述: 外部值赋给容量计相关变量,每个容量计功能函数执行时均在第一步调用该接口函数 + 113 *************************************************************************************************/ + 114 void GasGaugeVarIn(void) + 115 { + 116 1 BOOL eabak; + 117 1 + 118 1 eabak = EA; + 119 1 IrqDis(); + 120 1 Info_uiRSOC = Info.uiRSOC; + 121 1 Info_ulFCC = Info.ulFCC; + 122 1 Info_ulRC = Info.ulRC; + 123 1 Info_uiCycleCount = Info.uiCycleCount; + 124 1 Info_slCurr = Info.slCurr; + 125 1 Info_uiTemp = Info.uiTS[0]; + 126 1 Info_ulVoltage = Info.ulVoltage; + 127 1 uiCellVmaxG = uiCellVmax; + 128 1 uiCellVminG = uiCellVmin; + 129 1 + 130 1 slAdcCur2 = 0; + 131 1 siCurCompens = 0; + 132 1 + 133 1 EA = eabak; + 134 1 + 135 1 E2ucInitSocDif = 30; + 136 1 E2ucInitUpSoc = 90; + 137 1 E2uiDsgAdjLowTemp = (10*10 + 2731); + 138 1 E2slDsgAdjMaxCurr = -35000; + 139 1 E2ucDsgAdjLowFlg = 0; + 140 1 E2ucDsgAdjLowSoc = 1; + 141 1 E2ucChgAdjRatio = 20; + 142 1 E2uiTempFCC_K1 = 16000; + 143 1 E2uiTempFCC_K2 = 17; + 144 1 E2uiTempFCC_B = 1570; + 145 1 E2ucFullDsgDelay = 60; + 146 1 E2uiDsgCorrectVol = E2uiVOC[0] - 200; + 147 1 E2ucDsgCorrectSOC = 15; + 148 1 E2ucDsgVolDet = 10; + 149 1 + 150 1 E2uiChgCorrectVol = E2uiVOC[9]; + 151 1 E2ucChgCorrectSOC = 90; + 152 1 E2ulChgerEndVol = 4500 * ucCellNum; + 153 1 E2ulLoadEndVol = 3000 * ucCellNum; + 154 1 E2ucChgerEndDelay = 60; + 155 1 E2ucChg100Ratio = 20; + 156 1 + 157 1 E2ucChgCurRatio = 15; + 158 1 E2ucChgChangeSocDif = 20; + 159 1 E2ucChgChangeSocRatio = 10; + 160 1 + 161 1 E2ulIdleSocTimes = 40; + 162 1 + 163 1 E2ucFccUpdatePercent = 30; + 164 1 E2uiChgEndTemp = (15*10 + 2731); + C51 COMPILER V9.01 GASGAUGEINTER_V4_13 02/06/2025 15:28:46 PAGE 4 + + 165 1 E2uiDsgEndTemp = (15*10 + 2731); + 166 1 + 167 1 E2ui_CYCLECOUNTA = 50; + 168 1 E2ui_CYCLECOUNTA_K = 5; + 169 1 E2ui_CYCLECOUNTA_B = 105; + 170 1 E2ui_CYCLECOUNTB = 100; + 171 1 E2ui_CYCLECOUNTB_K = 30; + 172 1 E2ui_CYCLECOUNTB_B = 98; + 173 1 E2ui_CYCLECOUNTC = 400; + 174 1 E2uiUpdateCycleCount = 75; + 175 1 + 176 1 // + 177 1 // if( bOV ) + 178 1 // { + 179 1 // E2ucSOC = 100; + 180 1 // E2ulDfRC = E2ulFCC; + 181 1 // + 182 1 // Info_uiRSOC = 100; + 183 1 // Info_ulRC = E2ulFCC; + 184 1 // + 185 1 // Info.uiRSOC = 100; + 186 1 // Info.ulRC = E2ulFCC; + 187 1 // } + 188 1 // + 189 1 // + 190 1 // if( bUV ) + 191 1 // { + 192 1 // E2ucSOC = 0; + 193 1 // E2ulDfRC = 0; + 194 1 // + 195 1 // Info_uiRSOC = 0; + 196 1 // Info_ulRC = 0; + 197 1 // + 198 1 // Info.uiRSOC = 0; + 199 1 // Info.ulRC = 0; + 200 1 // } + 201 1 //} + 202 1 // bAFE_SC = bSC; + 203 1 } + 204 + 205 /************************************************************************************************* + 206 * 函数名: GasGaugeVarOut + 207 * 参 数: 无 + 208 * 返回值: 无 + 209 * 描 述: 容量计相关变量赋给外部值,每个容量计功能函数执行时均在最后一步调用该接口函数 + 210 *************************************************************************************************/ + 211 void GasGaugeVarOut(void) + 212 { + 213 1 BOOL eabak; + 214 1 + 215 1 eabak = EA; + 216 1 IrqDis(); + 217 1 Info.uiRSOC = Info_uiRSOC; + 218 1 Info.ulFCC = Info_ulFCC; + 219 1 Info.ulRC = Info_ulRC; + 220 1 Info.uiCycleCount = Info_uiCycleCount; + 221 1 bVDQ = bVDQFlg; + 222 1 bFC = bCHGEndFlg; + 223 1 bFD = E2ucDsgEndFlg; + 224 1 EA = eabak; + 225 1 + 226 1 // if( bOV ) + C51 COMPILER V9.01 GASGAUGEINTER_V4_13 02/06/2025 15:28:46 PAGE 5 + + 227 1 // { + 228 1 // E2ucSOC = 100; + 229 1 // E2ulDfRC = E2ulFCC; + 230 1 // + 231 1 // Info_uiRSOC = 100; + 232 1 // Info_ulRC = E2ulFCC; + 233 1 // + 234 1 // Info.uiRSOC = 100; + 235 1 // Info.ulRC = E2ulFCC; + 236 1 // } + 237 1 // + 238 1 // + 239 1 // if( bUV ) + 240 1 // { + 241 1 // E2ucSOC = 0; + 242 1 // E2ulDfRC = 0; + 243 1 // + 244 1 // Info_uiRSOC = 0; + 245 1 // Info_ulRC = 0; + 246 1 // + 247 1 // Info.uiRSOC = 0; + 248 1 // Info.ulRC = 0; + 249 1 // } + 250 1 //} + 251 1 // bAFE_SC = bSC; + 252 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 534 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 103 ---- + PDATA SIZE = ---- ---- + DATA SIZE = 4 ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- 2 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/GasGaugeInter_V4_13.obj b/output/GasGaugeInter_V4_13.obj new file mode 100644 index 0000000..22a99ba Binary files /dev/null and b/output/GasGaugeInter_V4_13.obj differ diff --git a/output/Hex2Array.exe b/output/Hex2Array.exe new file mode 100644 index 0000000..f0bba21 Binary files /dev/null and b/output/Hex2Array.exe differ diff --git a/output/IapIsp.lst b/output/IapIsp.lst new file mode 100644 index 0000000..b7096fa --- /dev/null +++ b/output/IapIsp.lst @@ -0,0 +1,855 @@ +C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE IAPISP +OBJECT MODULE PLACED IN .\output\IapIsp.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_bootloader\IapIsp.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\header_bootlo + -ader) DEBUG OBJECTEXTEND PRINT(.\output\IapIsp.lst) OBJECT(.\output\IapIsp.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "MCURegister.h" + 10 #include "C51_TYPE.H" + 11 #include "Flash.h" + 12 #include "IapIsp.h" + 13 + 14 BOOL bIapIspFlg; //0:表示当前执行IAP操作;1:表示当前执行ISP操作 + 15 BOOL bHandsheakOkFlg; + 16 BOOL bUartSndOverFlg; + 17 U16 uiUartRcvChkSum; + 18 U8 ucUartErrCode; + 19 U8 ucUartBufPT; + 20 U32 ulIapDataPtr; + 21 U32 ulIapChksum; + 22 U32 ulIapRecDataLen; + 23 U8 ucIapIndexBk; + 24 U8 ucIapRestCommand; + 25 U8 xdata ucUartBuf[150]; + 26 U8 xdata ucIapBuf[MCU_CODE_SECTOR_SIZE]; + 27 + 28 extern void UARTInit(void); + 29 /************************************************************************************************* + 30 * 函数名: UartSendAck + 31 * 参 数: 无 + 32 * 返回值: 无 + 33 * 描 述: 当Slave接收完数据并处理完成后,开始返回数据 + 34 *************************************************************************************************/ + 35 void UartSendAck(void) + 36 { + 37 1 U8 i, DataBak; + 38 1 U16 CheckSum = 0; + 39 1 + 40 1 ucUartBuf[LENGTH] = 0x00; + 41 1 ucUartBuf[COMMAND] = 0x0B; + 42 1 + 43 1 DataBak = ucUartBuf[SOURCE]; //交换源ID和目标ID + 44 1 ucUartBuf[SOURCE] = ucUartBuf[TARGET]; + 45 1 ucUartBuf[TARGET] = DataBak; + 46 1 + 47 1 for(i=2; i<(ucUartBuf[LENGTH]+7); i++) + 48 1 { + 49 2 CheckSum += ucUartBuf[i]; + 50 2 } + 51 1 + 52 1 ucUartBuf[7+ucUartBuf[LENGTH]] = (U8)CheckSum; + 53 1 ucUartBuf[8+ucUartBuf[LENGTH]] = (U8)(CheckSum>>8); + 54 1 + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 2 + + 55 1 bUartSndOverFlg = 0; + 56 1 UartTxEn(ucUartBuf[ucUartBufPT]); + 57 1 } + 58 + 59 + 60 /************************************************************************************************* + 61 * 函数名: IapHandShake + 62 * 参 数: 无 + 63 * 返回值: 无 + 64 * 描 述: 握手协议,进入IAP或者ISP烧写流程 + 65 bIapIspFlg: 0--IAP操作;1--ISP操作 + 66 *************************************************************************************************/ + 67 void IapHandShake(void) + 68 { + 69 1 ucUartBuf[INDEXES] = 0; + 70 1 if(ucUartBuf[DATA]=='I' && ucUartBuf[DATA+1]=='A' && ucUartBuf[DATA+2]=='P') + 71 1 { + 72 2 bIapIspFlg = IAP_MODE; + 73 2 bHandsheakOkFlg = 1; + 74 2 } + 75 1 else if(ucUartBuf[DATA]=='I' && ucUartBuf[DATA+1]=='S' && ucUartBuf[DATA+2]=='P') + 76 1 { + 77 2 bIapIspFlg = ISP_MODE; + 78 2 bHandsheakOkFlg = 1; + 79 2 } + 80 1 else + 81 1 { + 82 2 ucUartBuf[INDEXES] = IAPERROR_HANDSHAKE; //握手失败 + 83 2 bHandsheakOkFlg = 0; + 84 2 } + 85 1 } + 86 + 87 + 88 /************************************************************************************************* + 89 * 函数名: IapBeginAck + 90 * 参 数: 无 + 91 * 返回值: 无 + 92 * 描 述: IAP或ISP开始操作,擦除CODE的备份区30K + 93 *************************************************************************************************/ + 94 void IapBeginAck(void) + 95 { + 96 1 U8 i, SectorNum, McuFlashType; + 97 1 U32 McuFlashAddr; + 98 1 + 99 1 ulIapDataPtr = 0; + 100 1 ulIapChksum = 0; + 101 1 ulIapRecDataLen = 0; + 102 1 ulIapRecDataLen = ((U32)ucUartBuf[DATA+3]<<24) //数据长度 + 103 1 | ((U32)ucUartBuf[DATA+2]<<16) + 104 1 | ((U32)ucUartBuf[DATA+1]<<8) + 105 1 | (U32)ucUartBuf[DATA]; + 106 1 + 107 1 if(!bHandsheakOkFlg) + 108 1 { + 109 2 ucUartBuf[INDEXES] = IAPERROR_HANDSHAKE; //握手失败 + 110 2 } + 111 1 + 112 1 if((ulIapRecDataLen > IAP_BK_CODE_SIZE) && (bIapIspFlg == IAP_MODE)) + 113 1 { + 114 2 ucUartBuf[INDEXES] = IAPERROR_SIZE; //如果数据长度不等于IAP和ISP长度,则 + -默认为长度异常 + 115 2 } + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 3 + + 116 1 else if((ulIapRecDataLen > ISP_CODE_SIZE) && (bIapIspFlg == ISP_MODE)) + 117 1 { + 118 2 ucUartBuf[INDEXES] = IAPERROR_SIZE; //如果数据长度不等于IAP和ISP长度,则 + -默认为长度异常 + 119 2 } + 120 1 else + 121 1 { + 122 2 ucUartBuf[INDEXES] = 0; //先预设回复成功 + 123 2 ucIapIndexBk = 0; + 124 2 + 125 2 //1. 如果当前操作是ISP,则先擦除BOOT区的标志,然后在BOOT_FLG_ISP_ADD中写ISP_FLG标志0xA5 + 126 2 ucMcuFlashWrValid = 0x55; //设置MCU Code区可操作标志,防 + -止误写 + 127 2 McuFlashEraseSector(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); + 128 2 if(McuFlashBlankCheck(BOOT_FLG_START_ADDR, MCU_TYPE_CODE)) //擦除结束后,需要查空 + 129 2 { + 130 3 if(bIapIspFlg == ISP_MODE) + 131 3 { + 132 4 McuFlashWrOneByte(BOOT_FLG_ISP_ADDR, ISP_FLG, MCU_TYPE_CODE); + 133 4 if(McuFlashRdOneByte(BOOT_FLG_ISP_ADDR, MCU_TYPE_CODE) != ISP_FLG) + 134 4 { + 135 5 ucUartBuf[INDEXES] = IAPERROR_WR; //Write失败 + 136 5 } + 137 4 } + 138 3 } + 139 2 else + 140 2 { + 141 3 ucUartBuf[INDEXES] = IAPERROR_ERASE; //Erase失败 + 142 3 } + 143 2 ucMcuFlashWrValid = 0; + 144 2 + 145 2 //2. 不管是IAP还是ISP,都先擦除程序的所有Sector,如果是ISP,则还需要擦除EEPROM区 + 146 2 if(ucUartBuf[INDEXES] == 0) //检查ucUartBuf[INDEXES] + 147 2 { + 148 3 SectorNum = ulIapRecDataLen/MCU_CODE_SECTOR_SIZE; + 149 3 for(i=0; i=(SectorNum-APP_PARA_SIZE/MCU_CODE_SECTOR_SIZE)) //EEPROM按sector擦除 + 165 5 { + 166 6 McuFlashType = MCU_TYPE_E2P; + 167 6 McuFlashAddr = (U16)(i+APP_PARA_SIZE/MCU_CODE_SECTOR_SIZE-SectorNum)*512; + 168 6 } + 169 5 } + 170 4 + 171 4 ucMcuFlashWrValid = 0x55; //设置MCU Code区可操作标志,防止误写 + 172 4 McuFlashEraseSector(McuFlashAddr, McuFlashType); + 173 4 if(!McuFlashBlankCheck(McuFlashAddr, McuFlashType)) //擦除结束后,需要查空 + 174 4 { + 175 5 ucUartBuf[INDEXES] = IAPERROR_ERASE; //Erase失败 + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 4 + + 176 5 } + 177 4 ucMcuFlashWrValid = 0; + 178 4 } + 179 3 } + 180 2 else + 181 2 { + 182 3 ucUartBuf[INDEXES] = IAPERROR_INDEX; + 183 3 } + 184 2 } + 185 1 } + 186 + 187 + 188 /************************************************************************************************* + 189 * 函数名: IapWrSector + 190 * 参 数: 无 + 191 * 返回值: 无 + 192 * 描 述: 写入1个Sector数据 + 193 *************************************************************************************************/ + 194 BOOL IapWrSector(void) + 195 { + 196 1 BOOL Result = 1; + 197 1 U16 i; + 198 1 U32 McuFlashAddr; + 199 1 U8 McuFlashType; + 200 1 + 201 1 for(i=0; i= (ulIapRecDataLen+BOOT_CODE_SIZE-APP_PARA_SIZE)) + 208 3 { + 209 4 McuFlashAddr = McuFlashAddr - (ulIapRecDataLen+BOOT_CODE_SIZE-APP_PARA_SIZE); + 210 4 McuFlashType = MCU_TYPE_E2P; //ISP更新EEPROM区 + 211 4 } + 212 3 } + 213 2 else + 214 2 { + 215 3 McuFlashAddr = IAP_BK_CODE_START_ADDR + ulIapDataPtr; + 216 3 } + 217 2 McuFlashWrOneByte(McuFlashAddr, ucIapBuf[i], McuFlashType); + 218 2 if(ucIapBuf[i] != McuFlashRdOneByte(McuFlashAddr, McuFlashType)) + 219 2 { + 220 3 Result = 0; + 221 3 break; + 222 3 } + 223 2 ulIapDataPtr++; + 224 2 } + 225 1 + 226 1 return Result; + 227 1 } + 228 + 229 + 230 /************************************************************************************************* + 231 * 函数名: IapReceiveData + 232 * 参 数: 无 + 233 * 返回值: 无 + 234 * 描 述: 接收数据,同时将数据写入的MCU CODE区 + 235 *************************************************************************************************/ + 236 void IapReceiveData(void) + 237 { + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 5 + + 238 1 U16 i; + 239 1 U8 j; + 240 1 U32 McuFlashAddr; + 241 1 U8 McuFlashType; + 242 1 + 243 1 bHandsheakOkFlg = 0; + 244 1 + 245 1 if( ((ucUartBuf[INDEXES](ucIapIndexBk+4))) && (ucUartBuf[INDEXES + -] != 0) ) //yangweilei + 246 1 { + 247 2 ucUartBuf[INDEXES] = IAPERROR_INDEX; //数据索引错误,首先判断是否连续,其 + -次判断是否超出范围 + 248 2 } + 249 1 else + 250 1 { + 251 2 ucIapIndexBk = ucUartBuf[INDEXES]; + 252 2 ucUartBuf[INDEXES] = 0; + 253 2 if(ucUartBuf[LENGTH] == 0) + 254 2 { + 255 3 ulIapDataPtr += 512; //如果传递的长度为0,表示当前128个字节 + -0,指针加,但不写(增加150mS/1K) + 256 3 } + 257 2 else + 258 2 { + 259 3 j = ucIapIndexBk % 4; //目前暂定sector长度为512bytes,每次传 + -128bytes,所以定义为4 + 260 3 for(i=0; i= MCU_CODE_SECTOR_SIZE) + 270 5 { + 271 6 ulIapDataPtr -= MCU_CODE_SECTOR_SIZE; //指针返回到该Sector起始 + 272 6 } + 273 5 else + 274 5 { + 275 6 ulIapDataPtr = 0; + 276 6 } + 277 5 + 278 5 McuFlashType = MCU_TYPE_CODE; //默认是CODE区 + 279 5 if(bIapIspFlg == ISP_MODE) //ISP + 280 5 { + 281 6 McuFlashAddr = ISP_CODE_START_ADDR + ulIapDataPtr; + 282 6 if(McuFlashAddr >= (ulIapRecDataLen+BOOT_CODE_SIZE-APP_PARA_SIZE)) + 283 6 { + 284 7 McuFlashAddr = McuFlashAddr - (ulIapRecDataLen+BOOT_CODE_SIZE-APP_PARA_SIZE); + 285 7 McuFlashType = MCU_TYPE_E2P; //ISP更新EEPROM区 + 286 7 } + 287 6 } + 288 5 else + 289 5 { + 290 6 McuFlashAddr = IAP_BK_CODE_START_ADDR + ulIapDataPtr; + 291 6 } + 292 5 ucMcuFlashWrValid = 0x55; + 293 5 McuFlashEraseSector(McuFlashAddr, McuFlashType); + 294 5 if(McuFlashBlankCheck(McuFlashAddr, McuFlashType)) //擦除结束后,需要查空 + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 6 + + 295 5 { + 296 6 if(!IapWrSector()) //如果连续写两次错误,则返回给上位机异常 + 297 6 { + 298 7 ucUartBuf[INDEXES] = IAPERROR_WR; //写入错误 + 299 7 } + 300 6 else + 301 6 { + 302 7 goto UpdateChksum; + 303 7 } + 304 6 } + 305 5 else + 306 5 { + 307 6 ucUartBuf[INDEXES] = IAPERROR_ERASE; //擦除错误 + 308 6 } + 309 5 } + 310 4 else //512Bytes写入正确,才更新checksum值 + 311 4 { + 312 5 UpdateChksum: + 313 5 for(j=0; j= 1)&&(UART_DEFINE<= 30)) + 452 2 { + 453 3 if(RI) + 454 3 { + 455 4 //BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯, + -则判定通讯异常,触发看门狗 + 456 4 ucUartBuf[ucUartBufPT] = SBUF; + 457 4 ucUartBufPT++; + 458 4 if(ucUartBufPT >= 140) //该指针不会超过140 + 459 4 { + 460 5 ucUartBufPT = 0; + 461 5 } + 462 4 if(ucUartBufPT == 1) + 463 4 { + 464 5 if(ucUartBuf[HEARD1] != 0x5A) //检查帧头是否Wie0x5AA5 + 465 5 { + 466 6 ucUartBufPT = 0; + 467 6 } + 468 5 + 469 5 } + 470 4 else if(ucUartBufPT == 2) + 471 4 { + 472 5 + 473 5 if(ucUartBuf[HEARD2] != 0xA5) + 474 5 { + 475 6 ucUartBufPT = 0; + 476 6 } + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 9 + + 477 5 else + 478 5 { + 479 6 uiUartRcvChkSum = 0; //帧头判断正确 + 480 6 ucUartErrCode = 0; + 481 6 } + 482 5 } + 483 4 else + 484 4 { + 485 5 + 486 5 if(ucUartBufPT < (ucUartBuf[LENGTH]+9)) + 487 5 { + 488 6 if(ucUartBufPT <= (ucUartBuf[LENGTH]+7)) + 489 6 { + 490 7 uiUartRcvChkSum += ucUartBuf[ucUartBufPT-1]; + 491 7 } + 492 6 + 493 6 if(ucUartBufPT == (TARGET+1)) //检查ID + 494 6 { + 495 7 + 496 7 if(ucUartBuf[TARGET] != IAP_BMSID) + 497 7 { + 498 8 ucUartBufPT = 0; + 499 8 } + 500 7 } + 501 6 else if(ucUartBufPT == (COMMAND+1)) //检测COMMAND + 502 6 { + 503 7 if((ucUartBuf[COMMAND] != IAP_CMD_HANDSHAKE) + 504 7 && (ucUartBuf[COMMAND] != IAP_CMD_BEGIN) + 505 7 && (ucUartBuf[COMMAND] != IAP_CMD_TRANS) + 506 7 && (ucUartBuf[COMMAND] != IAP_CMD_VERIFY) + 507 7 && (ucUartBuf[COMMAND] != IAP_CMD_RESET)) + 508 7 { + 509 8 ucUartErrCode |= IAPERROR_CMD; + 510 8 } + 511 7 } + 512 6 } + 513 5 else + 514 5 { + 515 6 BootMcuWdtClear(); + 516 6 UartCmdProcess(); + 517 6 } + 518 5 } + 519 4 RI = 0; + 520 4 } + 521 3 + 522 3 if(TI) + 523 3 { + 524 4 BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯,则 + -判定通讯异常,触发看门狗 + 525 4 + 526 4 if(ucUartBufPT >= (ucUartBuf[LENGTH]+8)) + 527 4 { + 528 5 UartRxEn(); //Allow UART receive data + 529 5 ucUartBufPT = 0; + 530 5 ucUartBuf[0] = 0; + 531 5 ucUartBuf[1] = 0; + 532 5 ucUartBuf[2] = 0; + 533 5 bUartSndOverFlg = 1; + 534 5 } + 535 4 else + 536 4 { + 537 5 ucUartBufPT++; + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 10 + + 538 5 UartTxEn(ucUartBuf[ucUartBufPT]); + 539 5 } + 540 4 + 541 4 TI = 0; + 542 4 } + 543 3 + 544 3 if(ucIapRestCommand == IAP_CMD_RESET) + 545 3 { + 546 4 BootMcuWdtClear(); + 547 4 if(bUartSndOverFlg) //Reset帧回复结束 + 548 4 { + 549 5 bUartSndOverFlg = 0; + 550 5 ucIapRestCommand = 0; + 551 5 ((void(code*)(void))0x0000)(); + 552 5 } + 553 4 } + 554 3 } + 555 2 #elif ((UART_DEFINE >= 31)&&(UART_DEFINE<= 60)) + { + INSCON = 0x40; + if(RI1) + { + //BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯, + -则判定通讯异常,触发看门狗 + ucUartBuf[ucUartBufPT] = SBUF1; + INSCON = 0x00; + ucUartBufPT++; + if(ucUartBufPT >= 140) //该指针不会超过140 + { + ucUartBufPT = 0; + } + if(ucUartBufPT == 1) + { + if(ucUartBuf[HEARD1] != 0x5A) //检查帧头是否Wie0x5AA5 + { + ucUartBufPT = 0; + } + + } + else if(ucUartBufPT == 2) + { + + if(ucUartBuf[HEARD2] != 0xA5) + { + ucUartBufPT = 0; + } + else + { + uiUartRcvChkSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + + if(ucUartBufPT < (ucUartBuf[LENGTH]+9)) + { + if(ucUartBufPT <= (ucUartBuf[LENGTH]+7)) + { + uiUartRcvChkSum += ucUartBuf[ucUartBufPT-1]; + } + + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 11 + + if(ucUartBufPT == (TARGET+1)) //检查ID + { + + if(ucUartBuf[TARGET] != IAP_BMSID) + { + ucUartBufPT = 0; + } + } + else if(ucUartBufPT == (COMMAND+1)) //检测COMMAND + { + if((ucUartBuf[COMMAND] != IAP_CMD_HANDSHAKE) + && (ucUartBuf[COMMAND] != IAP_CMD_BEGIN) + && (ucUartBuf[COMMAND] != IAP_CMD_TRANS) + && (ucUartBuf[COMMAND] != IAP_CMD_VERIFY) + && (ucUartBuf[COMMAND] != IAP_CMD_RESET)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + BootMcuWdtClear(); + UartCmdProcess(); + } + } + INSCON = 0x40; + RI1 = 0; + INSCON = 0x00; + } + INSCON = 0x40; + + if(TI1) + { + INSCON = 0x00; + BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯,则 + -判定通讯异常,触发看门狗 + + if(ucUartBufPT >= (ucUartBuf[LENGTH]+8)) + { + UartRxEn(); //Allow UART receive data + ucUartBufPT = 0; + ucUartBuf[0] = 0; + ucUartBuf[1] = 0; + ucUartBuf[2] = 0; + bUartSndOverFlg = 1; + } + else + { + ucUartBufPT++; + UartTxEn(ucUartBuf[ucUartBufPT]); + } + INSCON = 0x40; + + TI1 = 0; + INSCON = 0x00; + } + + if(ucIapRestCommand == IAP_CMD_RESET) + { + BootMcuWdtClear(); + if(bUartSndOverFlg) //Reset帧回复结束 + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 12 + + { + bUartSndOverFlg = 0; + ucIapRestCommand = 0; + ((void(code*)(void))0x0000)(); + } + } + } + #elif ( UART_DEFINE == 61) + { + INSCON = 0x40; + if(RI2) + { + //BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯, + -则判定通讯异常,触发看门狗 + ucUartBuf[ucUartBufPT] = SBUF2; + INSCON = 0x00; + ucUartBufPT++; + if(ucUartBufPT >= 140) //该指针不会超过140 + { + ucUartBufPT = 0; + } + if(ucUartBufPT == 1) + { + if(ucUartBuf[HEARD1] != 0x5A) //检查帧头是否Wie0x5AA5 + { + ucUartBufPT = 0; + } + + } + else if(ucUartBufPT == 2) + { + + if(ucUartBuf[HEARD2] != 0xA5) + { + ucUartBufPT = 0; + } + else + { + uiUartRcvChkSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + + if(ucUartBufPT < (ucUartBuf[LENGTH]+9)) + { + if(ucUartBufPT <= (ucUartBuf[LENGTH]+7)) + { + uiUartRcvChkSum += ucUartBuf[ucUartBufPT-1]; + } + + if(ucUartBufPT == (TARGET+1)) //检查ID + { + + if(ucUartBuf[TARGET] != IAP_BMSID) + { + ucUartBufPT = 0; + } + } + else if(ucUartBufPT == (COMMAND+1)) //检测COMMAND + { + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 13 + + if((ucUartBuf[COMMAND] != IAP_CMD_HANDSHAKE) + && (ucUartBuf[COMMAND] != IAP_CMD_BEGIN) + && (ucUartBuf[COMMAND] != IAP_CMD_TRANS) + && (ucUartBuf[COMMAND] != IAP_CMD_VERIFY) + && (ucUartBuf[COMMAND] != IAP_CMD_RESET)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + BootMcuWdtClear(); + UartCmdProcess(); + } + } + INSCON = 0x40; + RI2 = 0; + INSCON = 0x00; + } + INSCON = 0x40; + + if(TI2) + { + INSCON = 0x00; + BootMcuWdtClear(); //在该程序循环中,未接收到UART通讯,则 + -判定通讯异常,触发看门狗 + + if(ucUartBufPT >= (ucUartBuf[LENGTH]+8)) + { + UartRxEn(); //Allow UART receive data + ucUartBufPT = 0; + ucUartBuf[0] = 0; + ucUartBuf[1] = 0; + ucUartBuf[2] = 0; + bUartSndOverFlg = 1; + } + else + { + ucUartBufPT++; + UartTxEn(ucUartBuf[ucUartBufPT]); + } + INSCON = 0x40; + + TI2 = 0; + INSCON = 0x00; + } + + if(ucIapRestCommand == IAP_CMD_RESET) + { + BootMcuWdtClear(); + if(bUartSndOverFlg) //Reset帧回复结束 + { + bUartSndOverFlg = 0; + ucIapRestCommand = 0; + ((void(code*)(void))0x0000)(); + } + } + } + #endif + 780 2 } + 781 1 } + C51 COMPILER V9.01 IAPISP 12/22/2023 12:15:06 PAGE 14 + + 782 + 783 + 784 + 785 + 786 + 787 + 788 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 2211 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 662 ---- + PDATA SIZE = ---- ---- + DATA SIZE = 18 24 + IDATA SIZE = ---- ---- + BIT SIZE = 3 1 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/IapIsp.obj b/output/IapIsp.obj new file mode 100644 index 0000000..aed0c79 Binary files /dev/null and b/output/IapIsp.obj differ diff --git a/output/Initial.lst b/output/Initial.lst new file mode 100644 index 0000000..9c0b57c --- /dev/null +++ b/output/Initial.lst @@ -0,0 +1,660 @@ +C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE INITIAL +OBJECT MODULE PLACED IN .\output\Initial.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_app\Initial.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Loa + -d.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\co + -de_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Initial.lst) OBJECT(.\output\Ini + -tial.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 /************************************************************************************************* + 13 * 函数名: InitVar + 14 * 参 数: 无 + 15 * 返回值: 无 + 16 * 描 述: 初始化变量,主要是非0变量。在ClrRam()函数中,已将所有Xdata/Idata/Data区全部清零 + 17 *************************************************************************************************/ + 18 void InitVar(void) + 19 { + 20 1 ucBalanceStep = BALANCE_ENABLE; + 21 1 MemorySet((U8 xdata *)slCadcCurBuf, 0, sizeof(slCadcCurBuf)); + 22 1 MemorySet((U8 xdata *)Info.uiVCell, 0, sizeof(Info.uiVCell)); + 23 1 Info.uiTS[0] = 2731; + 24 1 Info.uiTS[1] = 2731; + 25 1 + 26 1 bSlowDischarge = 0; + 27 1 bMidDischarge = 0; + 28 1 ucDsgingSpeed = 2; + 29 1 bFastDischarge = 1; + 30 1 bPorSelfTestFlg = 1; + 31 1 + 32 1 ucTempeMiddle = 80; + 33 1 } + 34 + 35 /************************************************************************************************* + 36 * 函数名: SysParaInit + 37 * 参 数: 无 + 38 * 返回值: 无 + 39 * 描 述: 从MCU Flash参数区读取数据,并针对部分变量进行初始化 + 40 *************************************************************************************************/ + 41 void SysParaInit(void) + 42 { + 43 1 if(McuFlashCheckFlg(MCUFLASH_BK1_FLG_ADDR)) + 44 1 { + 45 2 McuFlashRead(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR, 512); + 46 2 if(!McuFlashCheckFlg(MCUFLASH_BK2_FLG_ADDR)) + 47 2 { + 48 3 McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR); //更新备份区2 + 49 3 } + 50 2 } + 51 1 else if(McuFlashCheckFlg(MCUFLASH_BK2_FLG_ADDR)) + 52 1 { + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 2 + + 53 2 McuFlashRead(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR, 512); + 54 2 McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR); //更新备份区1 + 55 2 } + 56 1 else + 57 1 { + 58 2 bMcuFlashErr = 1; + 59 2 return; + 60 2 } + 61 1 + 62 1 uiPackConfig = E2uiPackConfigMap; + 63 1 Info.uiPackConfig = uiPackConfig; + 64 1 Info.ulFCC = E2ulFCC; + 65 1 Info.uiCycleCount = E2uiCycleCount; + 66 1 + 67 1 ucCellNum = (uiPackConfig&0x0007)+3; //根据配置初始化电芯串数和Offset + 68 1 + 69 1 if(ucCellNum==5 || ucCellNum==10) + 70 1 { + 71 2 ucCellNumOffset = 0; + 72 2 } + 73 1 else if(ucCellNum==4 || ucCellNum==9) + 74 1 { + 75 2 ucCellNumOffset = 1; + 76 2 } + 77 1 else + 78 1 { + 79 2 ucCellNumOffset = 2; + 80 2 } + 81 1 } + 82 + 83 /************************************************************************************************* + 84 * 函数名: InitIRQ + 85 * 参 数: 无 + 86 * 返回值: 无 + 87 * 描 述: 初始化中断 + 88 *************************************************************************************************/ + 89 void InitIRQ(void) + 90 { + 91 1 IrqDis(); //关闭总中断源 + 92 1 #if (UART0_DEFINE != 0) + 93 1 IrqUart0En(); //初始化UART0中断使能,根据具体使用UART模块来进行选择 //检查UART + -0是否正常,如果不正常,则复位指针向量 + 94 1 #endif + 95 1 #if (UART1_DEFINE != 0) + IrqUart1En(); //初始化UART1中断使能,根据具体使用UART模块来进行选择 + #endif + 98 1 #if (UART2_DEFINE != 0) + IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择 + #endif + 101 1 + 102 1 IrqTimer3FlgClr(); //使能Timer3中断 + 103 1 IrqTimer3En(); + 104 1 + 105 1 IrqINT4xChEn(INT4_EXS45 | INT4_EXS46); + 106 1 IrqINT4Trig(INT4_TRIG_FALLING); //下降沿触发 + 107 1 IrqINT4FlgClr(); //清外部中断标志 + 108 1 IrqINT4En(); //使能外部中断4 + 109 1 + 110 1 IrqEn(); + 111 1 } + 112 + 113 + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 3 + + 114 /************************************************************************************************* + 115 * 函数名: InitGPIO + 116 * 参 数: 无 + 117 * 返回值: 无 + 118 * 描 述: 初始化I/O端口,未使用的I/O,默认配置为输出低电平,降低MCU功耗 + 119 P0.7[TXD], P0.6[RXD], P0.5[SCL], P0.4[SDA], P0.3[BLPW], P0.2[], P0.1[], P0.0[], + 120 P0.7ST[1], P0.6ST[1], P0.5ST[1], P0.4ST[1], P0.3ST[1], P0.2ST[0], P0.1ST[0], P0.0ST[0], P0 = 0xF8; + 121 P0.7CR[1], P0.6CR[0], P0.5CR[0], P0.4CR[0], P0.3CR[1], P0.2CR[1], P0.1CR[1], P0.0CR[1], P0CR = 0x8 + -F; + 122 P0.7PC[1], P0.6PC[1], P0.5PC[0], P0.4PC[0], P0.3PC[1], P0.2PC[0], P0.1PC[0], P0.0PC[0], P0PCR = 0x + -C8; + 123 + 124 P1.7[RESET],P1.6[], P1.5[], P1.4[], P1.3[], P1.2[], P1.1[], P1.0[], + 125 P1.7ST[1], P1.6ST[0], P1.5ST[0], P1.4ST[0], P1.3ST[0], P1.2ST[0], P1.1ST[0], P1.0ST[0], P1 = 0x80; + 126 P1.7CR[0], P1.6CR[1], P1.5CR[1], P1.4CR[1], P1.3CR[1], P1.2CR[1], P1.1CR[1], P1.0CR[1], P1CR = 0x7 + -F; + 127 P1.7PC[1], P1.6PC[0], P1.5PC[0], P1.4PC[0], P1.3PC[0], P1.2PC[0], P1.1PC[0], P1.0PC[0], P1PCR = 0x + -80; + 128 + 129 P2.7[KEY_M],P2.6[ALARM],P2.5[CTLD], P2.4[LED5], P2.3[LED4], P2.2[LED3], P2.1[LED2], P2.0[LED1], + 130 P2.7ST[1], P2.6ST[1], P2.5ST[1], P2.4ST[0], P2.3ST[0], P2.2ST[0], P2.1ST[0], P2.0ST[0], P2 = 0xE0; + 131 P2.7CR[0], P2.6CR[0], P2.5CR[1], P2.4CR[1], P2.3CR[1], P2.2CR[1], P2.1CR[1], P2.0CR[1], P2CR = 0x3 + -F; + 132 P2.7PC[1], P2.6PC[1], P2.5PC[0], P2.4PC[0], P2.3PC[0], P2.2PC[0], P2.1PC[0], P2.0PC[0], P2PCR = 0x + -C0; + 133 + 134 P3.7[], P3.6[], P3.5[LED6], P3.4[XTAL1],P3.3[XTAL2],P3.2[], P3.1[], P3.0[KLED], + 135 P3.7ST[0], P3.6ST[0], P3.5ST[0], P3.4ST[1], P3.3ST[1], P3.2ST[0], P3.1ST[0], P3.0ST[1], P3 = 0x19; + 136 P3.7CR[1], P3.6CR[1], P3.5CR[1], P3.4CR[0], P3.3CR[0], P3.2CR[1], P3.1CR[1], P3.0CR[0], P3CR = 0xE + -6; + 137 P3.7PC[0], P3.6PC[0], P3.5PC[0], P3.4PC[1], P3.3PC[1], P3.2PC[0], P3.1PC[0], P3.0PC[1], P3PCR = 0x + -19; + 138 *************************************************************************************************/ + 139 /************************************************************************************************* + 140 * 函数名: InitGPIO_SL + 141 * 参 数: 无 + 142 * 返回值: 无 + 143 * 描 述: 初始化I/O端口,未使用的I/O,默认配置为输出低电平,降低MCU功耗 + 144 P0.7[TX], P0.6[RX], P0.5[SCL], P0.4[SDA], P0.3[], P0.2[], P0.1[], P0.0[], IO状态:P0.[ + -7,6,5,4,3]有效 + 145 P0.7ST[1], P0.6ST[1], P0.5ST[1], P0.4ST[1], P0.3ST[0], P0.2ST[0], P0.1ST[0], P0.0ST[0], P0 = 0xF0; + - IO状态:P0.[7,6,5,4,3]有效 + 146 P0.7CR[1], P0.6CR[0], P0.5CR[0], P0.4CR[0], P0.3CR[1], P0.2CR[1], P0.1CR[1], P0.0CR[1], P0CR = 0x8 + -F; IO方向:P0.[7,6,5,4,3]有效,1输出,0输入 + 147 P0.7PC[1], P0.6PC[1], P0.5PC[0], P0.4PC[0], P0.3PC[0], P0.2PC[0], P0.1PC[0], P0.0PC[0], P0PCR = 0x + -C0; 内部上拉:1开启,0关闭 + 148 + 149 P1.7[RESET],P1.6[], P1.5[], P1.4[], P1.3[], P1.2[], P1.1[], P1.0[], IO状态:P1.[7,6,5,4 + -,3,2]有效 + 150 P1.7ST[1], P1.6ST[0], P1.5ST[0], P1.4ST[0], P1.3ST[0], P1.2ST[0], P1.1ST[0], P1.0ST[0], P1 = 0x80; + - IO状态:P1.[7,6,5,4,3,2]有效 + 151 P1.7CR[0], P1.6CR[1], P1.5CR[1], P1.4CR[1], P1.3CR[1], P1.2CR[1], P1.1CR[1], P1.0CR[1], P1CR = 0x7 + -F; IO方向:P1.[7,6,5,4,3,2]有效,1输出,0输入 + 152 P1.7PC[1], P1.6PC[0], P1.5PC[0], P1.4PC[0], P1.3PC[0], P1.2PC[0], P1.1PC[0], P1.0PC[0], P1PCR = 0x + -80; 内部上拉:1开启,0关闭 + 153 + 154 P2.7[], P2.6[ALARM],P2.5[], P2.4[LED], P2.3[], P2.2[], P2.1[], P2.0[485_DE], IO状态:P2.[7,6,5, + -4,3,2,1,0]有效 + 155 P2.7ST[0], P2.6ST[1], P2.5ST[0], P2.4ST[0], P2.3ST[0], P2.2ST[1], P2.1ST[1], P2.0ST[0], P2 = 0x46; + - IO状态:P2.[7,6,5,4,3,2,1,0]有效 + 156 P2.7CR[1], P2.6CR[0], P2.5CR[1], P2.4CR[1], P2.3CR[1], P2.2CR[0], P2.1CR[1], P2.0CR[1], P2CR = 0xB + -B; IO方向:P2.[7,6,5,4,3,2,1,0]有效,1输出,0输入 + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 4 + + 157 P2.7PC[0], P2.6PC[1], P2.5PC[0], P2.4PC[0], P2.3PC[0], P2.2PC[1], P2.1PC[1], P2.0PC[1], P2PCR = 0x + -46; 内部上拉:1开启,0关闭 + 158 + 159 P3.7[], P3.6[], P3.5[BAT_V_C], P3.4[XTAL1],P3.3[XTAL2],P3.2[], P3.1[], P3.0[BAT_V], I + -O状态:P3.[5,4,3,...,0]有效 + 160 P3.7ST[0], P3.6ST[0], P3.5ST[0], P3.4ST[1], P3.3ST[1], P3.2ST[0], P3.1ST[0], P3.0ST[0], P3 = 0 + -x18; IO状态:P3.[5,4,3,...,0]有效 + 161 P3.7CR[1], P3.6CR[1], P3.5CR[1], P3.4CR[0], P3.3CR[0], P3.2CR[1], P3.1CR[1], P3.0CR[0], P3CR = + - 0xE6; IO方向:P3.[5,4,3,...,0]有效,1输出,0输入 + 162 P3.7PC[0], P3.6PC[0], P3.5PC[0], P3.4PC[1], P3.3PC[1], P3.2PC[0], P3.1PC[0], P3.0PC[0], P3PCR = 0 + -x18; 内部上拉:1开启,0关闭 + 163 *************************************************************************************************/ + 164 void InitGPIO(void) + 165 { + 166 1 + 167 1 P0 = 0xF0; + 168 1 P0CR = 0x8F; + 169 1 P0PCR = 0xC0; + 170 1 + 171 1 P1 = 0x80; + 172 1 P1CR = 0x7F; + 173 1 P1PCR = 0x80; + 174 1 + 175 1 P2 = 0x46; + 176 1 P2CR = 0xBB; + 177 1 P2PCR = 0x46; + 178 1 + 179 1 P3 = 0x18; + 180 1 P3CR = 0xE6; + 181 1 P3PCR = 0x18; + 182 1 + 183 1 //UART0相关IO配置 串口功能映射时注意配置相应IO口的寄存器值,保证功能可正常实现 + 184 1 #if (UART0_DEFINE == 1) + 185 1 P0 |= 0xC0; + 186 1 P0PCR |= 0x80; + 187 1 #endif + 188 1 + 189 1 #if (UART0_DEFINE == 2) + P0 |= 0x40; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + 194 1 + 195 1 #if (UART0_DEFINE == 3) + P0 |= 0x40; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + 200 1 + 201 1 #if (UART0_DEFINE == 4) + P0 |= 0x41; + P0PCR |= 0x01; + #endif + 205 1 + 206 1 #if (UART0_DEFINE == 5) + P0 |= 0x42; + P0PCR |= 0x02; + #endif + 210 1 + 211 1 #if (UART0_DEFINE == 6) + P0 |= 0xC0; + P0PCR |= 0x40; + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 5 + + #endif + 215 1 + 216 1 #if (UART0_DEFINE == 7) + P0 |= 0x80; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + 221 1 + 222 1 #if (UART0_DEFINE == 8) + P0 |= 0x80; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + 227 1 + 228 1 #if (UART0_DEFINE == 9) + P0 |= 0x81; + P0PCR |= 0x01; + #endif + 232 1 + 233 1 #if (UART0_DEFINE == 10) + P0 |= 0x82; + P0PCR |= 0x02; + #endif + 237 1 + 238 1 #if (UART0_DEFINE == 11) + P0 |= 0x40; + P2 |= 0x10; + P0PCR |= 0x40; + #endif + 243 1 + 244 1 #if (UART0_DEFINE == 12) + P0 |= 0x80; + P2 |= 0x10; + P0PCR |= 0x80; + #endif + 249 1 + 250 1 #if (UART0_DEFINE == 13) + P2 |= 0x30; + P2PCR |= 0x20; + #endif + 254 1 + 255 1 #if (UART0_DEFINE == 14) + P0 |= 0x01; + P2 |= 0x10; + P0PCR |= 0x01; + #endif + 260 1 + 261 1 #if (UART0_DEFINE == 15) + P0 |= 0x02; + P2 |= 0x10; + P0PCR |= 0x02; + #endif + 266 1 + 267 1 #if (UART0_DEFINE == 16) + P0 |= 0x40; + P2 |= 0x20; + P0PCR |= 0x40; + #endif + 272 1 + 273 1 #if (UART0_DEFINE == 17) + P0 |= 0x80; + P2 |= 0x20; + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 6 + + P0PCR |= 0x80; + #endif + 278 1 + 279 1 #if (UART0_DEFINE == 18) + P2 |= 0x30; + P2PCR |= 0x10; + #endif + 283 1 + 284 1 #if (UART0_DEFINE == 19) + P0 |= 0x01; + P2 |= 0x20; + P0PCR |= 0x01; + #endif + 289 1 + 290 1 #if (UART0_DEFINE == 20) + P0 |= 0x02; + P2 |= 0x20; + P0PCR |= 0x02; + #endif + 295 1 + 296 1 #if (UART0_DEFINE == 21) + P0 |= 0x81; + P0PCR |= 0x80; + #endif + 300 1 + 301 1 #if (UART0_DEFINE == 22) + P0 |= 0x01; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + 306 1 + 307 1 #if (UART0_DEFINE == 23) + P0 |= 0x01; + P2 |= 0x20; + P2PCR |= 0x20; + #endif + 312 1 + 313 1 #if (UART0_DEFINE == 24) + P0 |= 0x41; + P0PCR |= 0x40; + #endif + 317 1 + 318 1 #if (UART0_DEFINE == 25) + P0 |= 0x03; + P0PCR |= 0x02; + #endif + 322 1 + 323 1 #if (UART0_DEFINE == 26) + P0 |= 0x82; + P0PCR |= 0x80; + #endif + 327 1 + 328 1 #if (UART0_DEFINE == 27) + P0 |= 0x02; + P2 |= 0x10; + P2PCR |= 0x10; + #endif + 333 1 + 334 1 #if (UART0_DEFINE == 28) + P0 |= 0x02; + P2 |= 0x20; + P2PCR |= 0x20; + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 7 + + #endif + 339 1 + 340 1 #if (UART0_DEFINE == 29) + P0 |= 0x42; + P0PCR |= 0x40; + #endif + 344 1 + 345 1 #if (UART0_DEFINE == 30) + P0 |= 0x03; + P0PCR |= 0x01; + #endif + 349 1 + 350 1 //UART1相关IO配置 + 351 1 #if (UART1_DEFINE == 1) + P1 |= 0x03; + P1PCR |= 0x02; + #endif + 355 1 + 356 1 #if (UART1_DEFINE == 2) + P1 |= 0x01; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + 361 1 + 362 1 #if (UART1_DEFINE == 3) + P1 |= 0x01; + P3 |= 0x10; + P3PCR |= 0x10; + #endif + 367 1 + 368 1 #if (UART1_DEFINE == 4) + P1 |= 0x01; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + 373 1 + 374 1 #if (UART1_DEFINE == 5) + P1 |= 0x01; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + 379 1 + 380 1 #if (UART1_DEFINE == 6) + P1 |= 0x03; + P1PCR |= 0x01; + #endif + 384 1 + 385 1 #if (UART1_DEFINE == 7) + P1 |= 0x02; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + 390 1 + 391 1 #if (UART1_DEFINE == 8) + P1 |= 0x02; + P3 |= 0x10; + P3PCR |= 0x10; + #endif + 396 1 + 397 1 #if (UART1_DEFINE == 9) + P1 |= 0x02; + P2 |= 0x40; + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 8 + + P2PCR |= 0x40; + #endif + 402 1 + 403 1 #if (UART1_DEFINE == 10) + P1 |= 0x02; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + 408 1 + 409 1 #if (UART1_DEFINE == 11) + P1 |= 0x01; + P3 |= 0x08; + P1PCR |= 0x01; + #endif + 414 1 + 415 1 #if (UART1_DEFINE == 12) + P1 |= 0x02; + P3 |= 0x08; + P1PCR |= 0x01; + #endif + 420 1 + 421 1 #if (UART1_DEFINE == 13) + P3 |= 0x18; + P3PCR |= 0x10; + #endif + 425 1 + 426 1 #if (UART1_DEFINE == 14) + P3 |= 0x08; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + 431 1 + 432 1 #if (UART1_DEFINE == 15) + P3 |= 0x08; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + 437 1 + 438 1 #if (UART1_DEFINE == 16) + P1 |= 0x01; + P3 |= 0x10; + P1PCR |= 0x01; + #endif + 443 1 + 444 1 #if (UART1_DEFINE == 17) + P1 |= 0x02; + P3 |= 0x10; + P1PCR |= 0x02; + #endif + 449 1 + 450 1 #if (UART1_DEFINE == 18) + P3 |= 0x18; + P3PCR |= 0x08; + #endif + 454 1 + 455 1 #if (UART1_DEFINE == 19) + P3 |= 0x10; + P2 |= 0x40; + P2PCR |= 0x40; + #endif + 460 1 + 461 1 #if (UART1_DEFINE == 20) + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 9 + + P3 |= 0x10; + P2 |= 0x80; + P2PCR |= 0x80; + #endif + 466 1 + 467 1 #if (UART1_DEFINE == 21) + P1 |= 0x01; + P2 |= 0x40; + P1PCR |= 0x01; + #endif + 472 1 + 473 1 #if (UART1_DEFINE == 22) + P1 |= 0x02; + P2 |= 0x40; + P1PCR |= 0x02; + #endif + 478 1 + 479 1 #if (UART1_DEFINE == 23) + P2 |= 0x40; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + 484 1 + 485 1 #if (UART1_DEFINE == 24) + P3 |= 0x10; + P2 |= 0x40; + P3PCR |= 0x10; + #endif + 490 1 + 491 1 #if (UART1_DEFINE == 25) + P2 |= 0xC0; + P2PCR |= 0x80; + #endif + 495 1 + 496 1 #if (UART1_DEFINE == 26) + P1 |= 0x01; + P2 |= 0x80; + P1PCR |= 0x01; + #endif + 501 1 + 502 1 #if (UART1_DEFINE == 27) + P1 |= 0x02; + P2 |= 0x80; + P1PCR |= 0x02; + #endif + 507 1 + 508 1 #if (UART1_DEFINE == 28) + P2 |= 0x80; + P3 |= 0x08; + P3PCR |= 0x08; + #endif + 513 1 + 514 1 #if (UART1_DEFINE == 29) + P3 |= 0x10; + P2 |= 0x80; + P3PCR |= 0x10; + #endif + 519 1 + 520 1 #if (UART1_DEFINE == 30) + P2 |= 0xC0; + P2PCR |= 0x40; + #endif + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 10 + + 524 1 + 525 1 //UART2相关IO配置,当前demo板此串口做LED灯显示功能,不支持串口通讯,故demo板配置为不使能uart2串口功能 + 526 1 #if (UART2_DEFINE == 1) + P2 |= 0x06; + P2PCR |= 0x04; + #endif + 530 1 } + 531 + 532 /************************************************************************************************* + 533 * 函数名: Initial + 534 * 参 数: 无 + 535 * 返回值: 无 + 536 * 描 述: 初始化 + 537 *************************************************************************************************/ + 538 void Initial(void) + 539 { + 540 1 McuClockSet(MCU_CLK_24MHz); //设置系统工作在24MHz + 541 1 + 542 1 InitGPIO(); //初始化GPIO + 543 1 + 544 1 // ClrRam(); //清空MCU RAM(XDATA、IDATA、DATA) + 545 1 + 546 1 SysParaInit(); //初始化系统参数 + 547 1 + 548 1 InitVar(); //初始化变量 + 549 1 + 550 1 McuTimer3Set(TIM_CLK_128KHz, 5); //初始化Timer,采用128KHz外置晶振,周期为5mS + 551 1 + 552 1 #if (UART0_DEFINE != 0) + 553 1 UART0Init(); //初始化UART0模块,9600Bps + 554 1 #endif + 555 1 + 556 1 #if (UART1_DEFINE != 0) + UART1Init(); //初始化UART0模块,9600Bps + #endif + 559 1 + 560 1 #if (UART2_DEFINE != 0) + UART2Init(); //初始化UART0模块,9600Bps + #endif + 563 1 + 564 1 TwiInit(); //初始化TWI模块,通讯频率为100Khz + 565 1 + 566 1 McuPWM2Set(4000, 100); //初始化PWM2,占空比100% + 567 1 + 568 1 AFEInitReg(); //初始化AFE寄存器 + 569 1 if(!AFEInit()) //初始化AFE,MCU是由AFE的V33供电的,当MCU工作时,AFE已经准备好通讯了 + 570 1 { + 571 2 bAfeErr = 1; + 572 2 } + 573 1 AFEClrFlg(); //清零AFE状态寄存器 + 574 1 + 575 1 if(bEnEEPRomBK) + 576 1 { + 577 2 if(!E2PRomInit()) + 578 2 { + 579 3 bE2PRErr = 1; //外挂EEPROM模块出错 + 580 3 } + 581 2 + 582 2 if(!RTCInitTime(&RTC)) + 583 2 { + 584 3 bRTCErr = 1; //外置RTC模块出错 + 585 3 } + C51 COMPILER V9.01 INITIAL 02/06/2025 15:28:44 PAGE 11 + + 586 2 } + 587 1 + 588 1 InitIRQ(); //初始化中断 + 589 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 376 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Initial.obj b/output/Initial.obj new file mode 100644 index 0000000..281b32e Binary files /dev/null and b/output/Initial.obj differ diff --git a/output/Interrupt.lst b/output/Interrupt.lst new file mode 100644 index 0000000..56ccc0b --- /dev/null +++ b/output/Interrupt.lst @@ -0,0 +1,113 @@ +C51 COMPILER V9.01 INTERRUPT 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE INTERRUPT +OBJECT MODULE PLACED IN .\output\Interrupt.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\Interrupt.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_L + -oad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\ + -code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Interrupt.lst) OBJECT(.\output + -\Interrupt.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 /************************************************************************************************* + 13 * 函数名: InterruptINT4 + 14 * 参 数: 无 + 15 * 返回值: 无 + 16 * 描 述: 中断入口函数,判断对应的外部中断后,会调用APP处理函数 + 17 *************************************************************************************************/ + 18 void InterruptINT4(void) interrupt 10 + 19 { + 20 1 _push_(INSCON); + 21 1 McuBank0Sel(); + 22 1 + 23 1 if(IF40) + 24 1 { + 25 2 IF40 = 0; + 26 2 InterruptINT4App(0x01); + 27 2 } + 28 1 if(IF41) + 29 1 { + 30 2 IF41 = 0; + 31 2 InterruptINT4App(0x02); + 32 2 } + 33 1 if(IF42) + 34 1 { + 35 2 IF42 = 0; + 36 2 InterruptINT4App(0x04); + 37 2 } + 38 1 if(IF43) + 39 1 { + 40 2 IF43 = 0; + 41 2 InterruptINT4App(0x08); + 42 2 } + 43 1 if(IF44) + 44 1 { + 45 2 IF44 = 0; + 46 2 InterruptINT4App(0x10); + 47 2 } + 48 1 if(IF45) + 49 1 { + 50 2 IF45 = 0; + 51 2 InterruptINT4App(0x20); + 52 2 } + C51 COMPILER V9.01 INTERRUPT 02/06/2025 15:28:45 PAGE 2 + + 53 1 if(IF46) + 54 1 { + 55 2 IF46 = 0; + 56 2 InterruptINT4App(0x40); + 57 2 } + 58 1 if(IF47) + 59 1 { + 60 2 IF47 = 0; + 61 2 InterruptINT4App(0x80); + 62 2 } + 63 1 + 64 1 _pop_(INSCON); + 65 1 } + 66 + 67 + 68 /************************************************************************************************* + 69 * 函数名: InterruptTimer3 + 70 * 参 数: 无 + 71 * 返回值: 无 + 72 * 描 述: 中断入口函数,会调用APP处理函数 + 73 *************************************************************************************************/ + 74 void InterruptTimer3(void) interrupt 5 + 75 { + 76 1 _push_(INSCON); + 77 1 + 78 1 McuBank1Sel(); + 79 1 TF3 = 0; + 80 1 McuBank0Sel(); + 81 1 + 82 1 InterruptTimer3App(); + 83 1 + 84 1 _pop_(INSCON); + 85 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 143 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Interrupt.obj b/output/Interrupt.obj new file mode 100644 index 0000000..76cfefc Binary files /dev/null and b/output/Interrupt.obj differ diff --git a/output/InterruptApp.lst b/output/InterruptApp.lst new file mode 100644 index 0000000..65d3d0f --- /dev/null +++ b/output/InterruptApp.lst @@ -0,0 +1,98 @@ +C51 COMPILER V9.01 INTERRUPTAPP 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE INTERRUPTAPP +OBJECT MODULE PLACED IN .\output\InterruptApp.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_app\InterruptApp.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCor + -e_Load.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include + -;.\code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\InterruptApp.lst) OBJECT(.\ + -output\InterruptApp.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 BOOL bTimer5msFlg; + 13 BOOL bTimer50msFlg; + 14 BOOL bTimer1sFlg; + 15 U8 ucTimer50ms; + 16 U8 ucTimer1s; + 17 + 18 /************************************************************************************************* + 19 * 函数名: InterruptINT4App + 20 * 参 数: IntSource:外部中断4的中断源 + 21 * 返回值: 无 + 22 * 描 述: 外部中断处理,包括ALARM中断和按键中断,用于低功耗唤醒系统 + 23 *************************************************************************************************/ + 24 void InterruptINT4App(U8 IntSource) + 25 { + 26 1 if(IntSource == INT4_EXS45) //Alarm + 27 1 { + 28 2 if(bPDFlg || bSleepFlg) + 29 2 { + 30 3 McuClockSet(MCU_CLK_24MHz); + 31 3 bWakeupFlg = 1; + 32 3 } + 33 2 } + 34 1 else if(IntSource == INT4_EXS46) //Key wakeup + 35 1 { + 36 2 if(bPDFlg || bSleepFlg) + 37 2 { + 38 3 McuClockSet(MCU_CLK_24MHz); + 39 3 bWakeupFlg = 1; + 40 3 } + 41 2 } + 42 1 } + 43 + 44 + 45 /************************************************************************************************* + 46 * 函数名: InterruptTimer3App + 47 * 参 数: 无 + 48 * 返回值: 无 + 49 * 描 述: 定时器,周期为5mS,产生5mS、50mS、1S三个标志 + 50 *************************************************************************************************/ + 51 void InterruptTimer3App(void) + 52 { + C51 COMPILER V9.01 INTERRUPTAPP 02/06/2025 15:28:45 PAGE 2 + + 53 1 + 54 1 bTimer5msFlg = 1; //5ms标志为预留标志 + 55 1 + 56 1 if(++ucTimer50ms >= TIME_5MS_50MS) + 57 1 { + 58 2 ucTimer50ms = 0; + 59 2 bTimer50msFlg = 1; + 60 2 } + 61 1 + 62 1 if(++ucTimer1s >= TIME_5MS_1S) + 63 1 { + 64 2 ucTimer1s = 0; + 65 2 bTimer1sFlg = 1; + 66 2 } + 67 1 + 68 1 KeyScan(); //扫描按键 + 69 1 } + 70 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 72 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 2 ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 3 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/InterruptApp.obj b/output/InterruptApp.obj new file mode 100644 index 0000000..a46ae14 Binary files /dev/null and b/output/InterruptApp.obj differ diff --git a/output/KeyApp.lst b/output/KeyApp.lst new file mode 100644 index 0000000..09f9d19 --- /dev/null +++ b/output/KeyApp.lst @@ -0,0 +1,130 @@ +C51 COMPILER V9.01 KEYAPP 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE KEYAPP +OBJECT MODULE PLACED IN .\output\KeyApp.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_app\KeyApp.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load + -.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\cod + -e_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\KeyApp.lst) OBJECT(.\output\KeyAp + -p.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 U8 xdata ucDsgingSpeed; + 13 + 14 /************************************************************************************************* + 15 * 函数名: KeySwitchSpeed + 16 * 参 数: 无 + 17 * 返回值: 无 + 18 * 描 述: 按键调速,分为三挡 + 19 *************************************************************************************************/ + 20 void KeySwitchSpeed(void) + 21 { + 22 1 bSlowDischarge = 0; + 23 1 bMidDischarge = 0; + 24 1 bFastDischarge = 0; + 25 1 if(bDSGING) + 26 1 { + 27 2 if(ucDsgingSpeed == 0) + 28 2 { + 29 3 ucDsgingSpeed = 1; + 30 3 bMidDischarge = 1; + 31 3 McuPWM2Set(E2uiDSG1PWMFreq ,E2ucDSG1PWMRatioH); + 32 3 McuPWM2En(); + 33 3 } + 34 2 else if(ucDsgingSpeed == 1) + 35 2 { + 36 3 ucDsgingSpeed = 2; + 37 3 bFastDischarge = 1; + 38 3 McuPWM2Set(E2uiDSG1PWMFreq, 100); + 39 3 McuPWM2En(); + 40 3 } + 41 2 else + 42 2 { + 43 3 ucDsgingSpeed = 0; + 44 3 bSlowDischarge = 1; + 45 3 McuPWM2Set(E2uiDSG1PWMFreq ,E2ucDSG1PWMRatioL); + 46 3 McuPWM2En(); + 47 3 } + 48 2 } + 49 1 else + 50 1 { + 51 2 bSlowDischarge = 0; + 52 2 bMidDischarge = 0; + C51 COMPILER V9.01 KEYAPP 02/06/2025 15:28:45 PAGE 2 + + 53 2 bFastDischarge = 0; + 54 2 } + 55 1 } + 56 + 57 + 58 /************************************************************************************************* + 59 * 函数名: KeyProcess + 60 * 参 数: 无 + 61 * 返回值: 无 + 62 * 描 述: 当检测到有效按键后,处理对应按键 + 63 *************************************************************************************************/ + 64 void KeyProcess(void) + 65 { + 66 1 if(bKeyFlg) + 67 1 { + 68 2 bKeyFlg = 0; //同一按键一直被按下,如果持续的时间足够长,则会先触发长按, + -后触发长按持续,但目前我们没有用到长按持续状态 + 69 2 switch(ucKeyValue) + 70 2 { + 71 3 case KEY_ON_S: + 72 3 KeySwitchSpeed(); + 73 3 break; + 74 3 + 75 3 case KEY_LED_S: + 76 3 bLedDisFlg = 1; + 77 3 ucLedTimeCnt = 0; + 78 3 break; + 79 3 + 80 3 case KEY_LED_L: //长按LED进PD模式 + 81 3 bPDFlg = 1; + 82 3 break; + 83 3 + 84 3 case KEY_ON_L: //长按唤醒按键2S,蓝牙电源开启/关闭 + 85 3 bLedDisBleFlg = ~bLedDisBleFlg; + 86 3 if(bLedDisBleFlg) + 87 3 { + 88 4 BlueToothPowerEn(); + 89 4 } + 90 3 else + 91 3 { + 92 4 BlueToothPowerDis(); + 93 4 } + 94 3 break; + 95 3 + 96 3 default: + 97 3 break; + 98 3 } + 99 2 } + 100 1 } + 101 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 150 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 1 ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/KeyApp.obj b/output/KeyApp.obj new file mode 100644 index 0000000..7c55667 Binary files /dev/null and b/output/KeyApp.obj differ diff --git a/output/KeyScan.lst b/output/KeyScan.lst new file mode 100644 index 0000000..2654c7c --- /dev/null +++ b/output/KeyScan.lst @@ -0,0 +1,165 @@ +C51 COMPILER V9.01 KEYSCAN 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE KEYSCAN +OBJECT MODULE PLACED IN .\output\KeyScan.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\KeyScan.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Loa + -d.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\co + -de_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\KeyScan.lst) OBJECT(.\output\Key + -Scan.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 BOOL bKeyFlg; + 13 U16 data uiKeyValidCnt; + 14 U16 data uiKeyInvalidCnt; + 15 U8 data ucKeyValue; + 16 U8 data ucKeyOldValue; + 17 U8 data ucKeyValueBK; + 18 + 19 /************************************************************************************************* + 20 * 函数名: ScanKey + 21 * 参 数: 无 + 22 * 返回值: 无 + 23 * 描 述: 1. 短按时,按键必须弹起后,才能识别为短按按键。 + 24 2. 长按和长按持续,按键无需弹起,就能识别为长按按键或长按持续。 + 25 3. 按键有优先级,多个按键被同时按下时,仅处理第一个被按下的按键。 + 26 4.同一个按键一直被按着,先触发长按,后触发长按持续,长按和长按持续都会被触发。 + 27 5. bKeyFlg:当检测到有效按键后,置位1 + 28 6. ucKeyValue:高4bit表示按键状态(短按、长按、长按继续、长按结束);低4bit表示键值 + 29 7. ucKeyValueBK 保存按键状态:无按键、有按键1、有按键2 + 30 8. uiKeyValidCnt 按键按下滤波计数器 + 31 9. uiKeyInvalidCnt 按键弹起滤波计数器 + 32 *************************************************************************************************/ + 33 void KeyScan(void) + 34 { + 35 1 if(!bKeyFlg) + 36 1 { + 37 2 ucKeyValueBK = KEYVAL_NULL; //先默认无按键按下 + 38 2 + 39 2 #ifdef KEY_NUM1_DEF //1个按键 + if(!KEY_1_IO_RD) + { + ucKeyValueBK = KEYVAL_1; + } + #endif + 45 2 #ifdef KEY_NUM2_DEF //2个按键 + 46 2 if(!KEY_1_IO_RD) + 47 2 { + 48 3 ucKeyValueBK = KEYVAL_1; //按键按下后,获取新键值 + 49 3 } + 50 2 else if(!KEY_2_IO_RD) + 51 2 { + 52 3 ucKeyValueBK = KEYVAL_2; //按键按下后,获取新键值 + C51 COMPILER V9.01 KEYSCAN 02/06/2025 15:28:45 PAGE 2 + + 53 3 } + 54 2 #endif + 55 2 #ifdef KEY_NUM3_DEF //3个按键 + if(!KEY_1_IO_RD) + { + ucKeyValueBK = KEYVAL_1; + } + else if(!KEY_2_IO_RD) + { + ucKeyValueBK = KEYVAL_2; + } + else if(!KEY_3_IO_RD) + { + ucKeyValueBK = KEYVAL_3; + } + #endif + 69 2 if(ucKeyValueBK != ucKeyOldValue) //ucKeyValueBK中存放了新的键值,如果新键值跟 + -老键值不同, + 70 2 { + 71 3 uiKeyInvalidCnt++; //按键弹起滤波计数器,当按键第一次按下时会清0, + -当按键弹起时会一直计数 + 72 3 if(uiKeyValidCnt >= KEY_S_TIME) //按键按下滤波计数器,当按键被按下后一直计数, + -醇鸷笸V辜剖 + 73 3 { //按下又弹起且未触发长按时,如果uiKeyValidCnt > + -= KEY_S_TIME,则可能是短按 + 74 4 if(uiKeyInvalidCnt >= KEY_S_TIME) //按键弹起滤波计数器达到短按消抖时间,则认为是一次 + -按下和弹起都消抖过的有效按键 + 75 4 { + 76 5 if(uiKeyValidCnt >= KEY_L_TIME) //在此区分是短按,还是长按结束 + 77 5 { + 78 6 ucKeyValue = ucKeyOldValue | KEY_STATE_LE; //按下的时间超过长按时间,认为是长按已经结束了。该状态目 + -前未使用 + 79 6 } + 80 5 else + 81 5 { + 82 6 ucKeyValue = ucKeyOldValue | KEY_STATE_S; //按下的时间没有超过长按时间,认为是一次有效的短按按键 + 83 6 } + 84 5 bKeyFlg = 1; //短按有效,暂停按键检测,去处理按键事件 + 85 5 goto scanend; + 86 5 } + 87 4 // else + 88 4 // { + 89 4 // uiKeyValidCnt++; //该行应该删掉,否则当KEY_S_TIME等于KEY_L_TIME的一 + -爰耙陨鲜保岚讯贪次笫侗鹞ぐ唇崾 + 90 4 // } + 91 4 } + 92 3 else //每当按键按下的时间连短按消抖时间都不够时,认 + -俏扌О醇匦鲁跏蓟 + 93 3 { + 94 4 goto scanend; + 95 4 } + 96 3 } + 97 2 else //ucKeyValueBK中存放了新的键值,新键值跟老键 + -值相同,说明是同一个按键。 + 98 2 { + 99 3 if(ucKeyValueBK != KEYVAL_NULL) //继续处理被按下的按键 + 100 3 { + 101 4 uiKeyInvalidCnt = 0; //清弹起计数器 + 102 4 uiKeyValidCnt++; //累加按下计数器 + 103 4 if(uiKeyValidCnt == KEY_L_TIME) //当按下时间达到长按滤波时间时,认为此按键为长按键 + 104 4 { + 105 5 ucKeyValue = ucKeyOldValue | KEY_STATE_L; + C51 COMPILER V9.01 KEYSCAN 02/06/2025 15:28:45 PAGE 3 + + 106 5 bKeyFlg = 1; + 107 5 } + 108 4 else if(uiKeyValidCnt == KEY_LC_TIME) //当按下时间达到长按持续滤波时间时,认为此按键为长 + -按持续 + 109 4 { + 110 5 uiKeyValidCnt = KEY_L_TIME; + 111 5 ucKeyValue = ucKeyOldValue | KEY_STATE_LC; + 112 5 bKeyFlg = 1; + 113 5 } + 114 4 } + 115 3 else //新键值是空键值,说明全部按键都释放了 + 116 3 { + 117 4 ucKeyValue = KEYVAL_NULL; //全部按键都释放了,需要重新初始化检测寄存器 + 118 4 scanend: + 119 4 uiKeyValidCnt = 0; + 120 4 uiKeyInvalidCnt = 0; + 121 4 ucKeyOldValue = ucKeyValueBK; + 122 4 } + 123 3 } + 124 2 } + 125 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 162 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 7 ---- + IDATA SIZE = ---- ---- + BIT SIZE = 1 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/KeyScan.obj b/output/KeyScan.obj new file mode 100644 index 0000000..7c4a6af Binary files /dev/null and b/output/KeyScan.obj differ diff --git a/output/Led.lst b/output/Led.lst new file mode 100644 index 0000000..99abca4 --- /dev/null +++ b/output/Led.lst @@ -0,0 +1,184 @@ +C51 COMPILER V9.01 LED 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE LED +OBJECT MODULE PLACED IN .\output\Led.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_app\Led.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load.OR + -C) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_c + -lassb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Led.lst) OBJECT(.\output\Led.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 BOOL bLedDisFlg; //LED显示标志 + 13 BOOL bLedDisBleFlg; //蓝牙开启时显示 + 14 U8 xdata ucLedTimeCnt; + 15 U8 xdata ucLedChgFlickCnt; + 16 U8 xdata ucLedBleFlickCnt; + 17 + 18 /************************************************************************************************* + 19 * 函数名: LedGetDisNum + 20 * 参 数: Rsoc:剩余容量百分比 + 21 * 返回值: 无 + 22 * 描 述: 根据剩余容量百分比,计算当前显示的LED数 + 23 *************************************************************************************************/ + 24 U8 LedGetDisNum(U16 Rsoc) + 25 { + 26 1 if(Rsoc > 80) + 27 1 { + 28 2 return 5; + 29 2 } + 30 1 else if(Rsoc > 60) + 31 1 { + 32 2 return 4; + 33 2 } + 34 1 else if(Rsoc > 40) + 35 1 { + 36 2 return 3; + 37 2 } + 38 1 else if(Rsoc > 20) + 39 1 { + 40 2 return 2; + 41 2 } + 42 1 else if(Rsoc > 0) + 43 1 { + 44 2 return 1; + 45 2 } + 46 1 else + 47 1 { + 48 2 return 0; + 49 2 } + 50 1 } + 51 + 52 + 53 /************************************************************************************************* + C51 COMPILER V9.01 LED 02/06/2025 15:28:45 PAGE 2 + + 54 * 函数名: LedAutoOff + 55 * 参 数: 无 + 56 * 返回值: 无 + 57 * 描 述: 按键显示LED持续5S后,关闭LED显示 + 58 *************************************************************************************************/ + 59 void LedAutoOff(void) + 60 { + 61 1 if(bLedDisFlg) + 62 1 { + 63 2 if(++ucLedTimeCnt >= 100) //100*50mS + 64 2 { + 65 3 ucLedTimeCnt = 0; + 66 3 bLedDisFlg = 0; + 67 3 } + 68 2 } + 69 1 } + 70 + 71 /************************************************************************************************* + 72 * 函数名: LedDisplay + 73 * 参 数: 无 + 74 * 返回值: 无 + 75 * 描 述: 显示LED + 76 充电时,充电LED指示灯以500mS周期闪烁 + 77 蓝牙开启时,蓝牙指示灯以250mS周期闪烁 + 78 显示容量时,LED开启5s后,自动熄灭 + 79 *************************************************************************************************/ + 80 void LedDisplay(void) + 81 { + 82 1 U8 LedDisNum; + 83 1 + 84 1 if(bCHGING) //显示充电状态 + 85 1 { + 86 2 if(++ucLedChgFlickCnt >= 10) //10*50mS + 87 2 { + 88 3 ucLedChgFlickCnt = 0; + 89 3 IO_LED_CHARGE ^= 1; + 90 3 } + 91 2 } + 92 1 else + 93 1 { + 94 2 IO_LED_CHARGE = 0; + 95 2 } + 96 1 + 97 1 if(bLedDisBleFlg) //显示蓝牙开启状态 + 98 1 { + 99 2 if(++ucLedBleFlickCnt >= 5) //5*50mS + 100 2 { + 101 3 ucLedBleFlickCnt = 0; + 102 3 // IO_LED_BLE ^= 1; + 103 3 } + 104 2 } + 105 1 else + 106 1 { + 107 2 // IO_LED_BLE = 0; + 108 2 } + 109 1 + 110 1 if(bLedDisFlg) //显示容量信息 + 111 1 { + 112 2 LedDisNum = LedGetDisNum(Info.uiRSOC); + 113 2 if(LedDisNum == 0) + 114 2 { + 115 3 // LEDAllOff(); + C51 COMPILER V9.01 LED 02/06/2025 15:28:45 PAGE 3 + + 116 3 } + 117 2 if(LedDisNum == 1) + 118 2 { + 119 3 // LED1On(); + 120 3 } + 121 2 else if(LedDisNum == 2) + 122 2 { + 123 3 // LED1On(); + 124 3 LED2On(); + 125 3 } + 126 2 else if(LedDisNum == 3) + 127 2 { + 128 3 // LED1On(); + 129 3 LED2On(); + 130 3 LED3On(); + 131 3 } + 132 2 else if(LedDisNum == 4) + 133 2 { + 134 3 // LED1On(); + 135 3 LED2On(); + 136 3 LED3On(); + 137 3 LED4On(); + 138 3 } + 139 2 else if(LedDisNum == 5) + 140 2 { + 141 3 // LEDAllOn(); + 142 3 } + 143 2 } + 144 1 else + 145 1 { + 146 2 // LEDAllOff(); + 147 2 } + 148 1 + 149 1 LedAutoOff(); //定时5s关闭容量LED显示 + 150 1 } + 151 + 152 + 153 + 154 + 155 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 174 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 3 ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 2 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Led.obj b/output/Led.obj new file mode 100644 index 0000000..c4e8983 Binary files /dev/null and b/output/Led.obj differ diff --git a/output/LowPower.lst b/output/LowPower.lst new file mode 100644 index 0000000..dea6d2e --- /dev/null +++ b/output/LowPower.lst @@ -0,0 +1,264 @@ +C51 COMPILER V9.01 LOWPOWER 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE LOWPOWER +OBJECT MODULE PLACED IN .\output\LowPower.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_app\LowPower.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Lo + -ad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\c + -ode_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\LowPower.lst) OBJECT(.\output\L + -owPower.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 BOOL bSleepFlg; //系统进入IDLE标志 + 13 BOOL bPDFlg; + 14 BOOL bWakeupFlg; + 15 BOOL bPCEnterPDFlg; //PC通知系统进入SLEEP标志 + 16 U8 xdata ucSleepTimerCnt; + 17 U8 xdata ucPDTimerCnt; + 18 U8 xdata ucResetFlag; + 19 + 20 /************************************************************************************************* + 21 * 函数名: WakeUpProcess + 22 * 参 数: 无 + 23 * 返回值: 无 + 24 * 描 述: 从Sleep模式唤醒,可通过电流检测和按键唤醒 + 25 *************************************************************************************************/ + 26 void WakeUpProcess(void) + 27 { + 28 1 if(bWakeupFlg) + 29 1 { + 30 2 bWakeupFlg = 0; + 31 2 if(bSleepFlg) + 32 2 { + 33 3 McuClockSet(MCU_CLK_24MHz); + 34 3 IrqEn(); + 35 3 + 36 3 bSleepFlg = 0; + 37 3 ucSleepTimerCnt = 0; + 38 3 Delay1ms(1); + 39 3 + 40 3 #if (UART0_DEFINE != 0) + 41 3 IrqUart0En(); //开启uart0中断 + 42 3 #endif + 43 3 IrqTimer3En(); //开启Timer3中断 + 44 3 McuTwiEn(); //开启MCU Twi模块 + 45 3 + 46 3 AfeAlarmDis(AFE_ALARM_SC | AFE_ALARM_OV | AFE_ALARM_CD); + 47 3 AfeTempADCEn(); //开启AFE温度采集 + 48 3 AfeWDTEn(); //开启AFE WDT + 49 3 } + 50 2 ucSleepTimerCnt = 0; + 51 2 ucPDTimerCnt = 0; + 52 2 ucUart0TimeoutCnt = 0; + C51 COMPILER V9.01 LOWPOWER 02/06/2025 15:28:45 PAGE 2 + + 53 2 ucUart1TimeoutCnt = 0; + 54 2 ucUart2TimeoutCnt = 0; + 55 2 } + 56 1 } + 57 + 58 + 59 /************************************************************************************************* + 60 * 函数名: SystemIntoPD + 61 * 参 数: 无 + 62 * 返回值: 无 + 63 * 描 述: 系统进入掉电模式 + 64 *************************************************************************************************/ + 65 void SystemIntoPD(void) + 66 { + 67 1 while(1) + 68 1 { + 69 2 McuWDTClear(); //清除看门狗 + 70 2 + 71 2 IrqDis(); //关闭中断源 + 72 2 // LEDAllOff(); //关闭LED显示 + 73 2 BlueToothPowerDis(); //关闭蓝牙模块 + 74 2 AFEMosCtl(0); //关闭MOS驱动 + 75 2 + 76 2 AFEEnterPD(); //关闭3.3V电源 + 77 2 } + 78 1 } + 79 + 80 + 81 /************************************************************************************************* + 82 * 函数名: SystemIntoSleep + 83 * 参 数: 无 + 84 * 返回值: 无 + 85 * 描 述: 低功耗处理,进入IDLE或者PD + 86 *************************************************************************************************/ + 87 void SystemIntoSleep(void) + 88 { + 89 1 // LEDAllOff(); //关闭LED显示 + 90 1 BlueToothPowerDis(); //关闭蓝牙模块 + 91 1 bLedDisBleFlg = 0; + 92 1 + 93 1 AfeWDTDis(); //关闭AFE WDT + 94 1 AfeTempADCDis(); //关闭AFE温度采集 + 95 1 AfeAlarmEn(AFE_ALARM_SC | AFE_ALARM_OV | AFE_ALARM_CD); //开启SC,OV,CD的Alarm功能 + 96 1 McuTwiDis(); //关闭MCU Twi模块降低功耗 + 97 1 McuPWM2Dis(); //关闭MCU PWM模块 + 98 1 if(bDSGMOS) //DSG开启时,直接输出高电平 + 99 1 { + 100 2 IO_DSG_PWM = 1; + 101 2 } + 102 1 else + 103 1 { + 104 2 IO_DSG_PWM = 0; + 105 2 } + 106 1 Delay1ms(1); + 107 1 + 108 1 IrqDis(); //关闭总中断源 + 109 1 #if (UART0_DEFINE != 0) + 110 1 IrqUart0Dis(); + 111 1 #endif + 112 1 #if (UART1_DEFINE != 0) + IrqUart1Dis(); + #endif + C51 COMPILER V9.01 LOWPOWER 02/06/2025 15:28:45 PAGE 3 + + 115 1 #if (UART2_DEFINE != 0) + IrqUart2Dis(); + #endif + 118 1 IrqTimer3Dis(); //关闭Timer3中断 + 119 1 IrqINT4FlgClr(); //保留外部中断4,清标志 + 120 1 McuClockSet(MCU_CLK_128KHz); //设置系统时钟为128KHz + 121 1 IrqEn(); + 122 1 + 123 1 McuIntoPD(); //MCU进入PD,可通过外部按键或ALARM唤醒。由于在系 + -辰鴖leep后可能没有关DSG MOS,可能因为持续的小电流而将电芯耗空,但是,AFE内部预留FUSE,在VDD电压低于4V时会关闭LDO,使V33 + -系纭 + 124 1 } + 125 + 126 + 127 + 128 + 129 /************************************************************************************************* + 130 * 函数名: LowPowerCheck + 131 * 参 数: 无 + 132 * 返回值: 无 + 133 * 描 述: 检测是否进入IDLE或者PD + 134 *************************************************************************************************/ + 135 void LowPowerCheck(void) + 136 { + 137 1 if(bPCEnterPDFlg && (bUart0SndAckFlg||bUart1SndAckFlg||bUart2SndAckFlg)) //上位机发送 + -名字强制进入PD + 138 1 { + 139 2 bPCEnterPDFlg = 0; + 140 2 bPDFlg = 1; + 141 2 } + 142 1 else if(bCTO) //发生断线后,延时进入PD + 143 1 { + 144 2 if(++ucPDTimerCnt >= E2ucLowPowerDeley) + 145 2 { + 146 3 ucPDTimerCnt = E2ucLowPowerDeley; + 147 3 bPDFlg = 1; + 148 3 } + 149 2 } + 150 1 else if(!bLedDisFlg) //LED显示关闭后开始检测进入低功耗 + 151 1 { + 152 2 if(!bCHGING && !bDSGING) //非充非放状态 + 153 2 { + 154 3 if(bUV) //发生欠压保护后,延时进入PD + 155 3 { + 156 4 if(++ucPDTimerCnt >= E2ucLowPowerDeley) + 157 4 { + 158 5 ucPDTimerCnt = E2ucLowPowerDeley; + 159 5 bPDFlg = 1; + 160 5 } + 161 4 } + 162 3 else //未发生欠压保护,且未发生其他保护,则延时进入IDLE + 163 3 { + 164 4 ucPDTimerCnt = 0; + 165 4 if(!(bOTC | bUTC | bOV | bOCC | bOTD | bUTD | bUV | bOCD1 | bOCD2 | bAFE_SC | bLedDisBleFl + -g)) + 166 4 { + 167 5 if(++ucSleepTimerCnt >= E2ucLowPowerDeley) + 168 5 { + 169 6 ucSleepTimerCnt = E2ucLowPowerDeley; + 170 6 bSleepFlg = 1; + 171 6 } + 172 5 } + C51 COMPILER V9.01 LOWPOWER 02/06/2025 15:28:45 PAGE 4 + + 173 4 else + 174 4 { + 175 5 ucSleepTimerCnt = 0; + 176 5 } + 177 4 } + 178 3 } + 179 2 else + 180 2 { + 181 3 ucSleepTimerCnt = 0; + 182 3 ucPDTimerCnt = 0; + 183 3 } + 184 2 } + 185 1 else + 186 1 { + 187 2 ucSleepTimerCnt = 0; + 188 2 ucPDTimerCnt = 0; + 189 2 } + 190 1 } + 191 + 192 + 193 /************************************************************************************************* + 194 * 函数名: LowPowerProcess + 195 * 参 数: 无 + 196 * 返回值: 无 + 197 * 描 述: 低功耗处理,进入IDLE或者PD + 198 *************************************************************************************************/ + 199 void LowPowerProcess(void) + 200 { + 201 1 if(!bSleepFlg && !bPDFlg) + 202 1 { + 203 2 IrqDis(); + 204 2 if(!(bKeyFlg | bCaliFlg | bMcuFlashWrFlg | bWakeupFlg | bISPFlg | bTimer50msFlg | bTimer1sFlg) && (ucRes + -etFlag!=0x12)) + 205 2 { + 206 3 IrqEn(); + 207 3 McuIntoIdle(); + 208 3 } + 209 2 IrqEn(); + 210 2 } + 211 1 else if(bPDFlg) + 212 1 { + 213 2 bMcuFlashWrFlg = 1; + 214 2 McuFlashProcess(); + 215 2 SystemIntoPD(); + 216 2 } + 217 1 else if(bSleepFlg) + 218 1 { + 219 2 SystemIntoSleep(); + 220 2 } + 221 1 + 222 1 WakeUpProcess(); //系统从低功耗唤醒 + 223 1 } + 224 + 225 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 342 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 3 ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + C51 COMPILER V9.01 LOWPOWER 02/06/2025 15:28:45 PAGE 5 + + IDATA SIZE = ---- ---- + BIT SIZE = 4 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/LowPower.obj b/output/LowPower.obj new file mode 100644 index 0000000..dea5ead Binary files /dev/null and b/output/LowPower.obj differ diff --git a/output/MCUCore_Load b/output/MCUCore_Load new file mode 100644 index 0000000..d6467ce Binary files /dev/null and b/output/MCUCore_Load differ diff --git a/output/MCUCore_Load.ORC b/output/MCUCore_Load.ORC new file mode 100644 index 0000000..9e46527 --- /dev/null +++ b/output/MCUCore_Load.ORC @@ -0,0 +1,118 @@ +F7FF AFEADCDIS +F7FF AFEADCEN +F7FF AFECADCDIS +F7FF AFECADCEN +F7FF AFECHGERCHECKDIS +F7FF AFECHGERCHECKEN +F7FF AFECLRFLG +F7FF AFEENTERPD +F7FF AFEGETTEMPE +F7FF AFEGETVOL +F7FF AFEINIT +F7FF AFELOADCHECKDIS +F7FF AFELOADCHECKEN +F7FF AFERAMCHECK +F7FF AFERDFLG +F7FF AFERDSTATUS +F7FF AFETEMPADCDIS +F7FF AFETEMPADCEN +F300 AFETWICHECK +F7FF AFEWDTDIS +F7FF AFEWDTEN +F7FF BALPROCESS +E301 CALICURZERO +F7FF CALIRTCTIME +F7FF CHGERCHECK +F300 CTOCHECKVOL +F300 CTOTURNONCHECK +F7FF E2PROMBKBOOT +F7FF E2PROMINIT +F300 E2PROMTWICHECK +FFBF GASGAUGEVARIN +FF8F GASGAUGEVAROUT +C000 INITGPIO +E000 INITIRQ +F797 INITVAR +F301 INTERRUPTINT4 +F300 INTERRUPTTIMER3 +F300 INTERRUPTTIMER3APP +E300 INTERRUPTUART0 +F38F INTERRUPTUART0APPTX +F000 KEYSCAN +F300 LEDAUTOOFF +F303 LEDDISPLAY +F7FF LOADCHECK +F301 LOWPOWERCHECK +F7FF LOWPOWERPROCESS +F7BF MCUFLASHPROCESS +F300 MCUFLASHWRWAITCHECK +C000 MCUINTOIDLE +C000 MCUINTOPD +F7FF MOSCTRL +C000 MOSSTATUSCHECK +F78F PORPROTECTOTC +F78F PORPROTECTOTD +F782 PORPROTECTOV +F78F PORPROTECTUTC +F78F PORPROTECTUTD +F782 PORPROTECTUV +F7FF PROTECTOCRECOVER +F7AF PROTECTOTC +F7AF PROTECTOTD +F7FF PROTECTOV +F7AF PROTECTUTC +F7AF PROTECTUTD +F78B PROTECTUV +F300 RAMCHECKPROCESS +F300 RTCTWICHECK +FFBF SYSPARAINIT +F7FF SYSTEMINTOPD +F7FF SYSTEMINTOSLEEP +E000 TWIINIT +F375 UART0CALICUROFFSET +F377 UART0CALIRTC +F377 UART0CALITS1 +F377 UART0CALITS2 +F377 UART0CALIVOLTAGE +F300 UART0CHECK +E300 UART0HANDSHAKE +F7BF UART0IAPCHECKHANDSHAKE +F3FF UART0RDCMDPROCESS +F7FF UART0RDE2PROM +F375 UART0READSUBCLASSID +F375 UART0WRITEMANUFACTURE +F7FF UART1RDE2PROM +F7FF UART2RDE2PROM +F7FF WAKEUPPROCESS +F7FF _AFEALARMDIS +F7FF _AFEALARMEN +F7FF _AFEBALCTL +F7FF _AFEMOSCTL +F7FF _AFEREADREG +F7FF _AFEWRITEREG +F365 _CRC8CAL +F03E _DELAY1MS +F7FF _E2PROMREAD +F7FF _E2PROMWRITE +F7CF _GETCYCLEGAIN +F301 _INTERRUPTINT4APP +F001 _LEDGETDISNUM +F301 _MCUCLOCKSET +F31C _MCUFLASHBLANKCHECK +F303 _MCUFLASHCHECKFLG +F7AF _MCUFLASHDATACHECK +F307 _MCUFLASHREAD +F7BF _MCUFLASHWRITE +F035 _MCUFLASHWRONEBYTE +F33F _MCUFLASHWRSECTOR +F78D _MEMORYCOPY +F781 _MEMORYSET +C000 _PUTCHAR +F7FF _RTCMODIFYTIME +F7FF _RTCREAD +F7FF _RTCWRITE +F00C _TWICHECKSTATUS +F7FF _TWIREAD +F7FF _TWIWRITE +F37F _UART0READINFO +F7FF _UART0WRITEINFO diff --git a/output/MCUCore_Load.build_log.htm b/output/MCUCore_Load.build_log.htm new file mode 100644 index 0000000..1929aa6 --- /dev/null +++ b/output/MCUCore_Load.build_log.htm @@ -0,0 +1,66 @@ + + +
+

礦ision Build Log

+

Tool Versions:

+IDE-Version: μVision V5.22.0.0 +Copyright (C) 2016 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: yang Microsoft, Microsoft, LIC=58E4T-RQU60-GVC1T-RJBYK-PG19C-5N7J7 + +Tool Versions: +Toolchain: PK51 Prof. Developers Kit Version: 9.01 +Toolchain Path: C:\Keil_v5\C51\BIN +C Compiler: C51.exe V9.01 +Assembler: A51.exe V8.02 +Linker/Locator: BL51.exe V6.22 +Library Manager: LIB51.exe V4.24 +Hex Converter: OH51.exe V2.6 +CPU DLL: S8051.DLL V3.72 +Dialog DLL: DP51.DLL V2.59 +Target DLL: SH51A.dll V1.0.0.0 +Dialog DLL: TP51.DLL V2.58 + +

Project:

+C:\Users\wenhua.wang\Desktop\demo方案&user guide优化\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231222\SH39F003&F004_DemoCode_V2.15_20231213\MCUCore.uvproj +Project File Date: 12/22/2023 + +

Output:

+Rebuild target 'McuFlash_Load' +compiling Main.c... +compiling Initial.c... +compiling InterruptApp.c... +compiling Led.c... +compiling KeyApp.c... +compiling LowPower.c... +compiling UartApp.c... +compiling Memory.c... +compiling AFE.c... +compiling Balance.c... +compiling Calculate.c... +compiling Calibrate.c... +compiling ChargerLoad.c... +compiling ExtE2PRom.c... +compiling Interrupt.c... +compiling KeyScan.c... +compiling McuFlash.c... +compiling McuLib.c... +compiling MosCtrl.c... +compiling PorSelfTest.c... +compiling Protect.c... +compiling RTC.c... +compiling TWI.c... +compiling Uart.c... +compiling Thermistor.c... +compiling TwiIO.c... +assembling STARTUP.A51... +compiling GasGaugeInter_V4_13.c... +compiling BootApp.c... +compiling BootIAP.c... +linking... +Program Size: data=151.4 xdata=1528 code=29687 +creating hex file from ".\output\MCUCore_Load"... +".\output\MCUCore_Load" - 0 Error(s), 0 Warning(s). +Build Time Elapsed: 00:00:04 +
+ + diff --git a/output/MCUCore_Load.hex b/output/MCUCore_Load.hex new file mode 100644 index 0000000..a01a66c --- /dev/null +++ b/output/MCUCore_Load.hex @@ -0,0 +1,2217 @@ +:105C500053797374656D436C6F636B3A20384D48AC +:105C60007A000D0A00424154303A252E3266206DEA +:105C7000560D0A00424154313A252E3266206D56A7 +:105C80000D0A00424154323A252E3266206D560DDF +:105C90000A00424154333A252E3266206D560D0AD1 +:105CA00000424154343A252E3266206D560D0A00CA +:105CB000544F54414C3A252E3266206D560D0A0041 +:105CC00054454D50303A252E326620430D0A00547B +:105CD000454D50312E303A252E326620430D0A00B4 +:105CE00054454D50312E313A252E326620430D0A4F +:015CF00000B3 +:0E7F5100C29CD2A08F993099FDC2A0C2992285 +:1030A6001270A27BFF7A5C7950122C8E30702053FE +:1030B600B1F8C270127E00127F77127C9312787B71 +:1030C6001270541272F8127ABF126410127DEC203C +:1030D6006F0302336FB2A47BFF7A5C7962122C8E87 +:1030E600900285E0FCA3E0FDE4121F1D7B007A80C0 +:1030F600796D7845121D72C004C005C006C00790E0 +:1031060000BFE0FCA3E0FDE4121F1DA804A905AA68 +:1031160006AB07D007D006D005D004121E7B90025E +:10312600BA1224847BFF7A5C7965122C8E90028712 +:10313600E0FCA3E0FDE4121F1D7B007A80796D7828 +:1031460045121D72C004C005C006C0079000BFE04E +:10315600FCA3E0FDE4121F1DA804A905AA06AB07FF +:10316600D007D006D005D004121E7B9002BA1224D6 +:10317600847BFF7A5C7974122C8E900289E0FCA322 +:10318600E0FDE4121F1D7B007A80796D7845121DE3 +:1031960072C004C005C006C0079000BFE0FCA3E0F3 +:1031A600FDE4121F1DA804A905AA06AB07D007D087 +:1031B60006D005D004121E7B9002BA1224847BFF2F +:1031C6007A5C7983122C8E90028BE0FCA3E0FDE4FE +:1031D600121F1D7B007A80796D7845121D72C0041E +:1031E600C005C006C0079000BFE0FCA3E0FDE412E6 +:1031F6001F1DA804A905AA06AB07D007D006D0054F +:10320600D004121E7B9002BA1224847BFF7A5C796A +:1032160092122C8E90028DE0FCA3E0FDE4121F1D9D +:103226007B007A80796D7845121D72C004C005C096 +:1032360006C0079000BFE0FCA3E0FDE4121F1DA836 +:1032460004A905AA06AB07D007D006D005D00412FC +:103256001E7B9002BA1224847BFF7A5C79A1122C21 +:103266008E900289E0FEA3E0FF900288E02FFF9097 +:103276000287E03EFE90028CE02FFF90028BE03E3C +:10328600FE90028EE02FFD90028DE03EFCE4121FC0 +:103296001D7B007A80796D7845121D72C004C005C9 +:1032A600C006C0079000BFE0FCA3E0FDE4121F1DAE +:1032B600A804A905AA06AB07D007D006D005D004F6 +:1032C600121E7B9002BA1224847BFF7A5C79B012BC +:1032D6002C8E7BFF7A5C7962122C8E90029DE0FC2C +:1032E600A3E0FDE4121F1DE4FBFA79887841121D64 +:1032F60072E4FBFA79C87842121E7BE4FBFA7987FE +:1033060078C3121C819002BA1224847BFF7A5C79FE +:10331600C0122C8E900299E0FCA3E0FDE4121F1D62 +:103326009002BA1224847BFF7A5C79CF122C8E909D +:10333600029BE0FCA3E0FDE4121F1D9002BA1224DA +:10334600847BFF7A5C79E0122C8EC26F12255912AB +:10335600691F127D62127CEF127D0C1268564003C3 +:10336600125CF1127DD71250D7127AEC127D291217 +:103376006EC912526E125905900206E524F0A3E5B5 +:0E33860025F0A3E522F0A3E523F00230B222E9 +:107646009005367401F07E027F3C7B40E4FD127BA0 +:10765600437E027F0A7B14E4127B43900224740A61 +:10766600F0A374ABF0A3740AF0A374ABF0C22CC2FF +:107676002D9003FF7402F0D22ED27E90027C7450BD +:02768600F022F0 +:105CF1007FFE7E01127B6D501F7B007A02E4FDFC6A +:105D0100FFFE126A9F7FFE7E03127B6D402CE4FD35 +:105D1100FF7E02125EC580227FFE7E03127B6D50E4 +:105D2100167B007A02E4FDFCFF7E02126A9FE4FD0D +:105D3100FFFE125EC58003D27122900000E0F520C3 +:105D4100A3E0F521900238E520F0A3E521F09000D1 +:105D51001A12241E90022C122484900022E0FFA328 +:105D6100E0900236CFF0A3EFF0E52154072403F5CC +:105D71001364056005E513B40A04E4F51422E51380 +:105D810064046005E513B409047514012275140255 +:015D910022EF +:107CD100C2AFD2ACC086758640C28FD086D2AD43CA +:0E7CE100BA6043E840E4F5D843A908D2AF22C8 +:107B18007580F075E18F75E9C075908075E27F75A5 +:107B2800EA8075A04675E3BB75EB4675B01875E439 +:0B7B3800E675EC184380C043E9802292 +:1070A200E4FF127C51127B18125CF11276467D05C8 +:1070B2007C007F44127A8F126980127DAB7D647FDF +:1070C200A07E0F12631212618A1261034002D25D26 +:1070D2001278043007121263934002D2397E047F81 +:0C70E20097125FEA4002D27B127CD122A0 +:10102E00EFB4200E206603306919E4FF127C51D212 +:10103E006822EFB4400D206603306907E4FF127C8E +:04104E0051D26822F1 +:107C2D00D26E90049FE004F0C3940A4004E4F0D2B5 +:107C3D007090049EE004F0C394C84004E4F0D26F49 +:047C4D00125BAE22F6 +:10774900D3EF9450EE940040037F0522D3EF943C8D +:10775900EE940040037F0422D3EF9428EE94004076 +:10776900037F0322D3EF9414EE940040037F022297 +:0F777900D3EF9400EE940040037F01227F0022A3 +:107E140030740F9003FEE004F0C394644004E4F073 +:037E2400C2742203 +:106B5B00302A149003FCE004F0C3940A400BE4F0D9 +:106B6B00A2B5B392B58002C2B530750D9003FDE0AE +:106B7B0004F0C394054002E4F030742C900234E02E +:106B8B00FEA3E0FF127749EF6401601CEFB402042F +:106B9B00D2A18014EFB40306D2A1D2A2800AEFB423 +:0B6BAB000406D2A1D2A2D2A3127E14D5 +:016BB60022BC +:1067F000C22CC22DC22E302B569003FFE07018041D +:10680000F0D22D900089E0FEA3E0FF90008CE0FD27 +:1068100012631243B701229003FFE0B40116740221 +:10682000F0D22E900089E0FEA3E0FF7D6412631297 +:1068300043B70122E49003FFF0D22C900089E0FEE0 +:10684000A3E0FF90008BE0FD12631243B70122C268 +:066850002CC22DC22E2215 +:107A5F00307D2CC27DE50824FE600F24F1601614E2 +:107A6F006010241170191267F022D274E49003FE93 +:107A7F00F022D26622B275307503C28322D28322DE +:1076C90030683CC268306924E4FF127C51D2AFC2F1 +:1076D90069E490053CF07F011273D1D2ACD2ADD2EE +:1076E900CE7F70127D94127EE5127E73E490053C84 +:1076F900F0A3F09003F4F09003F5F09003F6F02274 +:107F0B0053B1F8C2AFD283E4FF127DC2127BBB80A8 +:027F1B00EF2253 +:1078ED00D283C275127E86127EF87F70127F2FC2F0 +:1078FD00CE53B77E302904D2A58002C2A57F0112D6 +:10790D0073D1C2AFC2ACC2ADE4F5D87F80127C5149 +:06791D00D2AF127F6B22C5 +:105F5C0030670E204306204403304505C267D266E5 +:105F6C002230161490002AE0FF90053DE004F0C3A7 +:105F7C009F406AEFF0D2662220745B202A50202BBF +:105F8C004D30191490002AE0FF90053DE004F0C359 +:105F9C009F404AEFF0D26622E490053DF0A21272C7 +:105FAC00107218721A721172137219721B721C729F +:105FBC00157275401390002AE0FF90053CE004F048 +:105FCC009F401AEFF0D26922E490053CF022E49055 +:0E5FDC00053CF0A3F022E490053CF0A3F02277 +:10770900206926206623C2AFA27C727D72727268DC +:10771900724C7270726F400D90053EE06412600504 +:10772900D2AF127F5FD2AF801330660AD272125283 +:107739006E127F0B80063069031278ED1276C9222A +:10734100000000300062007400000089008E009986 +:1073510000A200AA00BB00BF00FE00000000000068 +:10736100000000000020005000820094000000A9ED +:1073710000AE00B900C200CA00DB00DF011E000040 +:08738100000000000000000004 +:107F1D00900402E07006C29C75995A22C29C759914 +:027F2D00FF2231 +:086486009005EEEEF0A3EFF02B +:10648E007B017A047900900402E02403FD127D461C +:10649E00900402E02403F582E43404F583E06F7087 +:1064AE0041FF900402E0FEEFC39E502953B1F874F1 +:1064BE00032FF582E43404F583E0FE9005EEE0FC54 +:1064CE00A3E0F5828C83EEF09005EEE475F00112F8 +:1064DE0022480F80CDD273E49005FAF0C29C7599D4 +:0764EE005A22C29C7599FFC0 +:0164F5002284 +:1068BC00900402E0D3948C4002E4F0E4FD900402D6 +:1068CC00E0FCEDC39C501D53B1F88F828E83E0FB2E +:1068DC0074032DF582E43404F583EBF00FBF000153 +:1068EC000E0D80D97B017A047900EC2403FD127D16 +:1068FC0046900402E02403F582E43404F583EFF0BF +:10690C00C29C9003F7E02400F582E43404F583E0A4 +:02691C00F599EB +:01691E002256 +:1074EF007B017A047900900402E02403FD127D46AB +:1074FF00900402E02403F582E43404F583E0B50739 +:10750F001E900404E0FFB4410890053E7412F08011 +:10751F0006EFB40502D267C243C29C75995A22C2C4 +:05752F009C7599FF228C +:1078B6007B017A047900900402E02403FD127D46E0 +:1078C600900402E02403F582E43404F583E0B5076E +:1078D60010900403E09003EFF0C243C29C75995ADE +:0778E60022C29C7599FF22EC +:1046AE00900401E0FF12250647020147020247026D +:1046BE00034702044702054702064702074702085E +:1046CE0047020947020A47130B47230C472B0D4796 +:1046DE00330E473B0F471B10474311474B124753AF +:1046EE0013475B14476315476B16477317477B18C1 +:1046FE0000004783EF25E02408F582E43402AF8200 +:10470E00FE1268BC227E027F1E1268BC227E027FD1 +:10471E00201268BC227E027F241268BC227E027F99 +:10472E00261268BC227E027F281268BC227E027F7F +:10473E002A1268BC227E027F2C1268BC227E027F67 +:10474E00301268BC227E027F341268BC227E027F49 +:10475E00361268BC227E027F061268BC227E027F61 +:10476E00081268BC227E027F381268BC227E027F4D +:10477E003A1268BC22900402E0C394804009D23AF7 +:10478E009003DF7401F022900401E0B478109003DE +:10479E00EFE0B40C09D23A9003EC7401F0229004CD +:1047AE0001E0B478229003EFE025E02441F582E4A5 +:1047BE003473F583E493FE740193FF9005F0EEF0ED +:1047CE00A3EFF01268BC22900401E0B479219003AB +:1047DE00EFE025E02465F582E43473F583E493FE7F +:0F47EE00740193FF9005F0EEF0A3EFF01268BC9A +:0147FD002299 +:106E26007B017A047900900402E02403FD127D467A +:106E3600900402E02403F582E43404F583E06F70E5 +:106E46002B900403E0FEA3E0FDEEEDFF9005DFEEE0 +:106E5600F0A3EFF04E7006C29C7599FF22D27C908B +:106E660005DAE04401F0C29C75995A22C29C7599D4 +:026E7600FF22F9 +:10532F007B017A047900900402E02403FD127D468C +:10533F00900402E02403F582E43404F583E06F6007 +:10534F00030253E6900404E0FFE4FCFDFE78101224 +:10535F0023FFC004C005C006C007900403E0FFE4AC +:10536F00FCFDFE78181223FFD003D002D001D0002D +:10537F00122396C004C005C006C007900405E0FFC5 +:10538F00E4FCFDFE78081223FFD003D002D001D039 +:10539F0000122396A804A905AA06AB07A3E0FFE411 +:1053AF00FCFDFE1223969005D61224849002A1E0F4 +:1053BF007002A3E0600C9005D612241EEC4D4E4FE8 +:1053CF007006C29C7599FF22D27C9005DAE04410DA +:0D53DF00F0C29C75995A22C29C7599FF225C +:107923007B017A047900900402E02403FD127D4672 +:10793300900402E02403F582E43404F583E0B50700 +:107943000FD27C9005DAE04420F0C29C75995A224C +:06795300C29C7599FF22A1 +:107266007B017A047900900402E02403FD127D4636 +:10727600900402E02403F582E43404F583E06F70A1 +:1072860022D27C900403E0FEA3E0FDEEEDFF900524 +:10729600DBEEF0A3EFF09005DAE04404F0C29C7553 +:0972A600995A22C29C7599FF223D +:1072AF007B017A047900900402E02403FD127D46ED +:1072BF00900402E02403F582E43404F583E06F7058 +:1072CF0022D27C900403E0FEA3E0FDEEEDFF9005DB +:1072DF00DDEEF0A3EFF09005DAE04408F0C29C7504 +:0972EF00995A22C29C7599FF22F4 +:106DD2007B017A047900900402E02403FD127D46CF +:106DE200900402E02403F582E43404F583E06F703A +:106DF2002DFF74032FF582E43404F583E0FE74E181 +:106E02002FF582E43405F583EEF00FEFB407E3D2F9 +:106E12007C9005DAE04480F0C29C75995A22C29CAB +:036E22007599FF60 +:016E2500224A +:105B0700900401E01225065B33185B37775B537807 +:105B17005B75795B3FA05B47A15B4BA25B3BA35BDC +:105B270043A45B4FAF5B97B000005BAD1274EF22ED +:105B37001278B62212532F22126E262212792322AE +:105B4700127266221272AF22126DD2229003EFE018 +:105B570025E02441F582E43473F583E493FE740170 +:105B670093FF9005F2EEF0A3EFF012648622900304 +:105B7700EFE025E02465F582E43473F583E493FED2 +:105B8700740193FF9005F2EEF0A3EFF01264862202 +:105B9700900403E0B4550AD23AD238C29C75995A98 +:065BA70022C29C7599FF6B +:015BAD0022D5 +:10454700E49005F4F0A3F09003F7E0FFB4021A90AB +:104557000401E064A56006E49003F7F022E4900309 +:10456700FAF0A3F09003F0F022900402E0FD7C0043 +:104577002409FBEC33FA7E00C3EF9BEA6480F874EE +:104587008098505FED2407FDEC33FCD3EF9DEC647E +:1045970080F874809850189003F7E024FFF582E4C0 +:1045A7003403F583E0FF9003FAEE8FF01222489070 +:1045B70003F7E0FFB40511900404E06407700302F9 +:1045C70046ADE49003F7F022EF640660030246ADC0 +:1045D700900405E0640670030246AD9003F0E044E2 +:1045E70020F022E49003F7F0900402E0FD2408F5A0 +:1045F70082E43404F583E0FE74072DF582E4340485 +:10460700F583E07C002400FFEC3EFE9003FAE06EA9 +:104617007003A3E06F60079003F0E04480F090031D +:10462700F0E0FF6006900406F08007D24CE49004A7 +:1046370006F0E4900402F0900405740BF090040374 +:10464700E0FFA3E0900403F0A3EFF07F02900402E1 +:10465700E0FE2407FDE433FCEFC39DEC6480F874AF +:104667008098501874002FF582E43404F583E0FD38 +:104677009005F4E48DF01222480F80D19005F4E004 +:10468700FCA3E0FF74072EF582E43404F583EFF012 +:10469700ECFF900402E02408F582E43404F583EF8C +:0646A700F0C29C75995A57 +:0146AD0022EA +:105E2E009003F7E02400F582E43404F583EFF0905C +:105E3E0003F7E004F0E0C3948C4002E4F09003F723 +:105E4E00E064017027900400E0FF54FEB59A10EF55 +:105E5E0020E006D246C2498013D249C246800D9038 +:105E6E000400E0645A6005E49003F7F030460D90AC +:105E7E0003F7E0640370301246AE802B3049259054 +:105E8E000402E02403FFE433FE9003F7E0D39FEE19 +:105E9E006480F8748098400F125B07C249E4900347 +:105EAE00F7F08003124547C243E490053CF090059D +:075EBE003DF09003F4F02217 +:1059B100900400E0B45A06A3E064A56003304C44AF +:1059C100900402E02408FFE433FE9003F7E0C39F54 +:1059D100EE6480F87480984014D29CE4F0C2469042 +:1059E1000400F0A3F0A3F0A3F0D24380609003F78A +:1059F100E004F0C29CE02400F582E43404F583E085 +:105A0100F59980499003F7E0FF6016900402E024C5 +:105A110003FDE433FCC3EF9DEC6480F8748098408F +:105A210017D29CE49003F7F0C246900400F0A3F073 +:105A3100A3F0A3F0D24380159003F7E004F0C29CD9 +:105A4100E02400F582E43404F583E0F599E490055F +:0B5A51003CF090053DF09003F4F022C3 +:107DEC009003F4E004F0C394044008E4F09003F72B +:047DFC00F0D29C2203 +:107D6200305F119002B1E004F0C39405400BD25D84 +:0A7D72007405F022E49002B1F02243 +:0E5A5C009002BEEFF0A3EDF0A3EAF0A3EBF092 +:105A6A00C24EE4A3F0305D03025AFFA3F09002BFD6 +:105A7A00E0FF9002C3E0C39F507B9002C2E0FF04A4 +:105A8A00F0EFC39405503E9002BEE0FD7C00900208 +:105A9A00F77401F0A3F09002C0E0FFA3E09002F9CE +:105AAA00CFF0A3EFF0E4FB7F361247FE924E304E62 +:105ABA0004801280C5E4F5C87F011273D1127DAB50 +:105ACA001273D180B59002C2E0C3940540048025C8 +:105ADA008015E49002C2F09002BEE004F09002C089 +:105AEA00E475F0011222487F011273D19002C3E0DB +:0C5AFA0004F0025A77A24EB3925FA24E55 +:015B0600227C +:0E671C009002C1EFF0A3EDF0A3EAF0A3EBF0C2 +:10672A00C24EE4A3F0205D4D9002C5E0FF04F0EFF5 +:10673A00C3940550409002C1E0FD7C00A3E09002A2 +:10674A00EDF0A37401F09002C3E0FFA3E09002EF22 +:10675A00CFF0A3EFF0E4FB7F36123D83924E304E2A +:10676A0004801280C3E4F5C87F011273D1127DAB95 +:0C677A001273D180B3A24EB3925FA24E06 +:0167860022F0 +:107804007A027BA37D02E4FF12671C502E9002A330 +:10781400E07004A3E060249002A7E04480F07A02C0 +:107824007BA77D017F04125A5C9002A7E0547FF08D +:0C7834007A027BA77D017F04125A5C22BF +:10618A00E49002A6F0A37450F0E4A3F0A374F8F02C +:10619A00E4A3F0A3F0A37470F0A37401F0A3740352 +:1061AA00F0A374FFF0E4A3F03000199002A7E044D2 +:1061BA0008F09002ACE0FF9000BBE0540FFEEF4EF7 +:1061CA009002ACF030013E9002A7E04404F0900245 +:1061DA00ADE0FF9000BBE054F0FEEF4E9002ADF050 +:1061EA009000BCE0FEA3E0FF7C007D3212252CE487 +:1061FA007B257A01F9F8122304AD07AC06EC90026C +:05620A00AEF0A3EFF06F +:01620F00226C +:10610300D24D9002BD7403F09002BDE0FF14F0EF96 +:1061130060727A027BA67D0B7F03125A5C505C90FF +:1061230002BC7403F09002BCE0FFD3940B504E7A90 +:10613300027BBA7D0212671C9002BCE0FF7E007BEB +:106143000124A3F9EE3402FA122189FD9002BAE088 +:10615300B5051374A42FF9EE3402FA122189FF90C6 +:1061630002BBE06F600C9002BCE064076004C24DA8 +:10617300800B9002BCE02402F080AAC24D304D880F +:0661830080028084A24DA1 +:0161890022F3 +:1077C7007A027BA37D02E4FF12671C502F9002A46C +:1077D700E0FF30E102D25CEF30E002D25E9002A31C +:1077E700E0FF30E307206B04D215D26DEF30E202E1 +:0D77F700D2149002A4E030E20312610322DC +:107D7C007A027BB77D027F0212671C500A9002B711 +:077D8C00E09002A5F0F526CE +:017D930022CD +:10691F009002B97403F09002B9E0FFD3940B50507A +:10692F007A027BB77D0212671C9002B9E0FF7E00EE +:10693F007B0124A3F9EE3402FA122189FD9002B7EC +:10694F00E0B5051374A42FF9EE3402FA122189FF72 +:10695F009002B8E06F60109002B9E064076008120F +:10696F006103400CD266229002B9E02402F080A6A7 +:01697F0022F5 +:107BBB009002B07433F07A027BB07D017F0D125AC4 +:107BCB005C50129002A7E04420F07A027BA77D0163 +:067BDB007F04125A5C2237 +:107DC2009002A8E054FCF04FF07A027BA87D017F7C +:057DD20005125A5C22BD +:107E27009002A7E04401F07A027BA77D017F04124C +:037E37005A5C2270 +:107E3A009002A7E054FEF07A027BA77D017F04122C +:037E4A005A5C225D +:107E4D009002A7E04402F07A027BA77D017F041225 +:037E5D005A5C224A +:107E60009002A7E054FDF07A027BA77D017F041207 +:037E70005A5C2237 +:107788009002B9EEF0A3EFF09002B9E0FEA3E07822 +:1077980005CEC313CE13D8F99002AAF07A027BAAB9 +:1077A8007D017F07125A5C50159002B9E0A3E09062 +:0F77B80002ABF07A027BAB7D017F08125A5C2294 +:107E73009002A7E04410F07A027BA77D017F0412F1 +:037E83005A5C2224 +:107E86009002A7E054EFF07A027BA77D017F0412EF +:037E96005A5C2211 +:107E99009002A9E044F8F07A027BA97D017F0612DD +:037EA9005A5C22FE +:107EAC009002A9E05407F07A027BA97D017F0612AB +:037EBC005A5C22EB +:107EBF009002A9E044E0F07A027BA97D017F0612CF +:037ECF005A5C22D8 +:107ED2009002A9E0541FF07A027BA97D017F06126D +:037EE2005A5C22C5 +:107EE5009002A9E04408F07A027BA97D017F061281 +:037EF5005A5C22B2 +:107EF8009002A9E054F7F07A027BA97D017F06126F +:037F08005A5C229E +:107F2F009002A6E04FF07A027BA67D017F03125AE2 +:027F3F005C22C2 +:107D94009002A6E0FEEFF4FFEE5FF07A027BA67D90 +:077DA400017F03125A5C226B +:10494500306103024A88306203024A882003030269 +:104955004A88E490053AF0A3F0C3900063E095120D +:10496500900062E09511500330181ED3900065E069 +:104975009512900064E09511400320180C20100951 +:10498500201206201103301308C263E4900539F0A4 +:1049950022C39000A3E095129000A2E09511400378 +:1049A500024A81C3E5129510FFE511950FFED390DC +:1049B50000A5E09F9000A4E09E4003024A8190007C +:1049C500A6E0FEA3E0FFEE3395E0FDFC9002201289 +:1049D5002437C31223B15003024A81206306900590 +:1049E50039E004F09000A8E075F00AA4FF900539BD +:1049F500E0C39FE5F06480F87480985003024A880C +:104A0500AD14E5142513FFE433FEEDC39FEE64807A +:104A1500F87480985063ED25E0240AF582E43402A9 +:104A2500F583E0FEA3E0C39510FFEE950FFED3904E +:104A350000A5E09F9000A4E09E503BED25E0240AF0 +:104A4500F582E43402F583E0FEA3E0FF9000A2E0E6 +:104A5500FAA3E0FBC3EF9BEE9A401B74017E00A80E +:104A650005088005C333CE33CED8F9FF90053AE06B +:104A75004EF0A3E04FF00D8089D26322C263E4902B +:034A85000539F000 +:014A8800220B +:10795900C24D30052D20162A306527C39002B4E0A8 +:1079690094B49002B3E094005011D24D900538E0E0 +:1079790004F0C3940A400BD2168007C265E490054F +:0479890038F0A24DE3 +:01798D0022D7 +:10579800C3E5129510FFE511950FFEC3EF94B0EE27 +:1057A8009404500AE5129464E51194055002D265F8 +:1057B800900536E024FE605514605914606A146040 +:1057C8007C2404600302585120620330637B3064F8 +:1057D8001590053AE05455FFA3E054559002B7CF11 +:1057E800F0A3EFF0801390053AE054AAFFA3E05429 +:1057F800AA9002B7CFF0A3EFF09002B7E0FEA3E0C3 +:10580800FF1277889005367402F0D261229005362F +:105818007403F0221279594030E4FFFE1277889021 +:1058280005367404F0B2642212795940079005369F +:105838007405F0229005367401F0B26422900536A2 +:095848007401F0C262C263C26186 +:015851002234 +:107BE10030052220161F900537E004F0C3942D4084 +:107BF10014742DF020610EE4F0D26290053A740302 +:067C0100F0A374FFF02265 +:0A7F7700124945127BE112579822CF +:1079F800FFD8FFE2FFECFFF60000000A00190023A1 +:107A0800002D00370041004B0055FFFBFFFCFFFD38 +:107A1800FFFEFFFFFFFF000000010001000200035E +:047A28000004000551 +:04380C008F828E8396 +:103810007E037FE8AD82AC8312252CC006C007AEC4 +:1038200083AF82C3E49FFF74109EFEAB07FAE4F9F6 +:10383000F8D007D0061223049002BA122484E47F41 +:103840000AFEFDFC9002BA122437D31223C7401D92 +:103850009002BA12241EC3EF940AFFEE9400FEED0C +:103860009400FDEC9400FC9002BA122484904A89E2 +:10387000E493FE740193FFE4FCFD9002BA12243736 +:10388000C31223C7400D9002B87408F0A374B7F0B8 +:103890000239F3904BC9E493FE740193FFE4FCFDFD +:1038A0009002BA122437D31223C7500D9002B87475 +:1038B0000EF0A374F7F00239F390027CE09002B7A7 +:1038C000F075F002904A891224DAE493FE740193B1 +:1038D000FFE4FCFD9002BA122437D31223C7403B09 +:1038E00090027CE0149002B7F09002B7E0FFC3941E +:1038F00000406975F002EF904A891224DAE493FEE1 +:10390000740193FFE4FCFD9002BA122437D3122312 +:10391000C740499002B7E014F080CE90027CE004EA +:103920009002B7F09002B7E0FFC394A0502875F062 +:1039300002EF904A891224DAE493FE740193FFE4C3 +:10394000FCFD9002BA122437D31223C7500890020C +:10395000B7E004F080CE9002B7E014F09002B7E038 +:1039600090027CF075F002904A891224DAE493FE0A +:10397000740193FFE4FCFD9002BA12243712226B0B +:10398000E47B0AFAF9F8122279C004C005C006C027 +:10399000079002B7E0FF75F002904A8B1224DAE438 +:1039A00093FC740193FD75F002EF904A891224DABA +:1039B000C37401939DFFE4939CFEAB07FAE4F9F80E +:1039C000D007D006D005D004122304AB07AA069076 +:1039D000027CE024CEFFE434FFFE7C007D0A12214D +:1039E000E1EF2BFFEE3ACF24ABCF340A9002B8F0D0 +:0B39F000A3EFF09002B8E0FEA3E0FFA0 +:0139FB0022A9 +:1071D200D24D9002C0E514F0E5132514FFE433FE0E +:1071E2009002C0E0C39FEE6480F87480985028E05B +:1071F200FF25E02485F582E43402AB82FAEF25E034 +:10720200240EFF7D0212671C4005C24DA24D229042 +:0972120002C0E004F080C1A24DAD +:01721B002250 +:10738900D24D7A027B997D027F2212671C4002C28C +:107399004D7A027B9B7D027F2412671C4002C24DFD +:1073A9007A027B9D7D027F2612671C4002C24DE551 +:1073B90013D39405400F7A027B9F7D027F281267C1 +:0773C9001C4002C24DA24D61 +:0173D000229A +:104F22001273894003024FFF900299E0FEA3E0FF53 +:104F320012380C9000C6E02FFF9000C5E03EFEC282 +:104F4200AC900224F0A3EFF0D2AC90029DE0FEA35D +:104F5200E0FF7C007D1112252CE47B0AFAF9F8129D +:104F62002304EF241FFFE43EFEC2AC900228F0A30C +:104F7200EFF0D2ACE513D39405402A90029FE0FEF5 +:104F8200A3E0FF7C007D1112252CE47B0AFAF9F8DC +:104F9200122304EF241FFFE43EFEC2AC90022AF06B +:104FA200A3EFF0D2AC900224E0FCA3E0FD90020259 +:104FB200ECF0A3EDF0900204ECF0A3EDF0300D3D27 +:104FC20090029BE0FEA3E0FF12380C9000C8E02F95 +:104FD200FF9000C7E03EFEC2AC900226F0A3EFF0C5 +:104FE200D2ACD3900203E09F900202E09E4006EE14 +:0D4FF200F0A3EFF022900204EEF0A3EFF028 +:014FFF00228F +:104BCB009002B81224A9000000009002BC1224A984 +:104BDB0000000000E4900200F0A3F09002B3741701 +:104BEB00F0A37470F01271D24003024D029002B721 +:104BFB00E514F0E5132514FFE433FE9002B7E0FD56 +:104C0B00C39FEE6480F87480984003024CD9ED2565 +:104C1B00E02485F582E43402F583E0FEA3E0FF7C1B +:104C2B000E7DD812252CC006C0079000BFE0FEA356 +:104C3B00E0FFFBAA06E4F9F8D007D0061223049094 +:104C4B0002BC122484900200E0FEA3E0FFE4FCFD12 +:104C5B009002BC122437D31223C7400E9002BC1211 +:104C6B00241E900200EEF0A3EFF09002B3E0FEA33F +:104C7B00E0FFE4FCFD9002BC122437C31223C750A3 +:104C8B000E9002BC12241E9002B3EEF0A3EFF020A4 +:104C9B006133C2AC9002BC12241E9002B7E025E037 +:104CAB00240AF582E43402F583EEF0A3EFF0D2ACE4 +:104CBB009002B812241E9002BC12243712225E906E +:104CCB0002B81224849002B7E004F0024BFE20617C +:104CDB0026900200E0F511A3E0F5129002B3E0F587 +:104CEB000FA3E0F510C2AC9002B812241E90021E66 +:074CFB00EEF0A3EFF0D2ACD4 +:014D0200228E +:10585200E49002BCF0A3F0A3F09002BEE0FFC39478 +:105862000C40030258FCEF25E024F8F582E4347979 +:10587200F583E493FE740193FFFBAA06EA3395E0F5 +:10588200F9F89002BEE025E024FAF582E43479F5D5 +:1058920083E493FE740193FFEE3395E0FDFC122244 +:1058A2005EE47B02FAF9F8127602E47B0AFAF9F86E +:1058B200122279EF24ABFBEE340AFAE43DF9E43C20 +:1058C200F8900228E0FEA3E0FFE4FCFDC31223B13E +:1058D200401F9002BEE025E02412F582E4347AF5FE +:1058E20083E493FF7401939002BCCFF0A3EFF080A6 +:1058F200099002BEE004F002585B9002BCE0FEA3F5 +:02590200E0FFC4 +:015904002280 +:1040EF009002B81224A9000000007A027BA17D0281 +:1040FF007F2A12671C9002A1E0FEA3E0FFEE30E4DE +:10410F000944E09002A1F0A3EFF01258529000C3BF +:10411F00E0FCA3E0FDC39002A2E09DFD9002A1E0B0 +:10412F009CCD2FFFED3EFE3395E0FDFC7B187AFC16 +:10413F0079FF78FF122279C006C0079000C1E0FE18 +:10414F00A3E0FFFBAA06EA3395E0F9F8D007D00603 +:10415F0012760290027D12248490027D12241E900A +:10416F0002B2E025E025E0243CF582E43402F58339 +:10417F001224849002B2E004F0C394104002E4F0E1 +:10418F00E49002B7F09002B7E0FFC394105026A35B +:10419F00122437EF25E025E0243CF582E43402F5C4 +:1041AF008312241E12225E9002B81224849002B74A +:1041BF00E004F080D0E47B10FAF9F89002B81224F2 +:1041CF001E127602900281122484C22BC22A900002 +:1041DF0028E0FEA3E0FFC3E49FFFE49EFE3395E0DB +:1041EF00FDFC900281122437C31223B15021900598 +:1041FF00F7E004F0C3940A4067740AF0D22BC2AC04 +:10420F0090028112241E900220122484D2AC22909C +:10421F000028E0FEA3E0FFEE3395E0FDFC90028165 +:10422F00122437D31223B140299005F6E004F094FD +:10423F000A402D740AF0D22A7D647FA07E0F12638C +:10424F0012C2AC90028112241E900220122484D23A +:10425F00AC22C2AC9002201224A900000000D2AC04 +:01426F00222C +:107E00001277C7C25E124BCB124F22305C05C25CA8 +:047E10001240EF220B +:10664300E49002B7F0A3F0AF14E513FDE5142DFDBC +:10665300E433FCEFC39DEC6480F8748098501DEF25 +:1066630025E02485F582E43402F583E0FCA3E0FD14 +:106673009002B7EC8DF01222480F80CD9002B7E064 +:10668300FEA3E0FF7C0E7DD812252CC006C0079028 +:1066930005DFE0FEA3E0FFFBAA06E4F9F8D007D08C +:0C66A300061223049000BFEEF0A3EFF0FD +:0166AF0022C8 +:107840009000C3E0FEA3E0FFC39002A2E09FFF9080 +:1078500002A1E09EFE3395E0FDFC7B187AFC79FFE7 +:1078600078FF1222799005D6122437127602EF4E55 +:0A78700060089000C1EEF0A3EFF0F5 +:01787A0022EB +:107F41009002A1E0FFA3E09000C3CFF0A3EFF022E5 +:10753400900299E0FEA3E0FF12380CC39005DCE052 +:107544009FFF9005DBE09EFE9000C5E0FCA3E0FDFC +:10755400C3EF9DFDEE9CFCC3ED9496EC6480948097 +:107564005012ED946AEC6480947F40089000C5EE5C +:04757400F0A3EFF0A1 +:0175780022F0 +:1075790090029BE0FEA3E0FF12380CC39005DEE009 +:107589009FFF9005DDE09EFE9000C7E0FCA3E0FDB3 +:10759900C3EF9DFDEE9CFCC3ED9496EC6480948052 +:1075A9005012ED946AEC6480947F40089000C7EE15 +:0475B900F0A3EFF05C +:0175BD0022AB +:1075BE009005E1E0900497F09005E2E0900498F0D9 +:1075CE009005E3E0900499F09005E4E090049AF0C1 +:1075DE009005E5E090049BF09005E6E090049CF0A9 +:1075EE009005E7E090049DF07E047F97125D92D2A5 +:0475FE003AD23D221E +:106EC900307C4BC27C9005DAE030E00312664390D7 +:106ED90005DAE030E4031278409005DAE030E503A2 +:106EE900127F419005DAE030E2031275349005DA39 +:106EF900E030E3031275799005DAE030E7031275A3 +:0F6F0900BEE49005DAF0D2739005FA7402F0221C +:10705400306D0DC26DD26BE49005F9F0127E4D22B5 +:10706400306B3A127D7C203134900087E075F00259 +:10707400A4FFAEF09005F9E004F0C39FEE6480F83D +:107084007480984018C26BE4F0127E60307902C2BA +:0E70940019C21BC21C301505C2151278042249 +:1072F800306C0DC26CD26AE49005F8F0127E272239 +:10730800306A35127D7C20302F900087E075F002BE +:10731800A4FFAEF09005F8E004F0C39FEE6480F897 +:107328007480984013C26AE4F0127E3A307807C23B +:0973380018C214127804C21A22D2 +:107CEF00300719303B119003E4E004F0C3940540D2 +:0D7CFF000BD2397405F022E49003E4F0226A +:1069E1009002E1EEF0A3EFF0A3EDF0A3EAF0A3EB48 +:0169F100F0B5 +:1069F200C24D203941E4A3F09002E1E0FCA3E0FDA6 +:106A0200A3E09002F7F0E4A3F09002E4E0FFA3E039 +:106A12009002F9CFF0A3EFF07B017FA01247FE5066 +:106A220004D24D80117F011273D19002E6E004F08E +:0D6A3200E0C3940540C2A24DB3923BA24DBB +:016A3F002234 +:106A40009002C3EEF0A3EFF0A3EDF0A3EAF0A3EB06 +:016A5000F055 +:106A5100C24E203941E4A3F09002C3E0FCA3E0FD63 +:106A6100A3E09002EDF0E4A3F09002C6E0FFA3E002 +:106A71009002EFCFF0A3EFF07B017FA0123D835096 +:106A810004D24E80117F011273D19002C8E004F04C +:0D6A9100E0C3940540C2A24EB3923BA24E5A +:016A9E0022D5 +:1066B0007E027FBA7B08E4FD127B43E49002B8F0CF +:1066C000A3F09002B8E0FEA3E0FFE4FCFD7BFF7ABC +:1066D00007F9F8D31223B1402E53B1F89002B8E075 +:1066E000FEA3E07805C333CE33CED8F9241FFFE4F0 +:1066F0003EFE7A027BBA7D011269E19002B8E47530 +:10670000F00112224880BB7A027BBA7D087FE07ECE +:0B671000FF1269E1E49003DDF0A3F04C +:01671B00225B +:10639300C24D7A027BB77D087FE07EFF126A40928E +:1063A3004D9002B8E0FF9002B7E02F9002B9F09051 +:1063B30002BCE0FF9002BBE02F9002BDF09002BA56 +:1063C300E0FF9002B9E0B507179002B7E0FEA3E043 +:1063D3007C002400FFEC3E9003DDF0A3EFF0802A65 +:1063E3009002BEE0FF9002BDE0B507179002BBE04C +:1063F300FEA3E07C002400FFEC3E9003DDF0A3EF5E +:0C640300F08007E49003DDF0A3F0A24D50 +:01640F00226A +:1070EE00E49002C1F07E047F97123BC17E047F972D +:1070FE007C027DB87B07127A2CE4FF74B82FF582E0 +:10710E00E43402F583E0FE9002C1E02EF00FEFB4FE +:10711E0007E99002C1E09002BFF0A3745AF07A0220 +:0B712E007BB87D097FF07EFF1269E155 +:017139002233 +:107688009003DDE0FCA3E0FDEC9002D9F0AF05A388 +:10769800EFF09002D9E02F9002DCF09002D9E09050 +:1076A80002DDF09002DAE09002DEF09002DCE09079 +:1076B80002E0F07A027BD97D087FE07EFF1269E163 +:0176C800229F +:053F3C009002B8EFF057 +:103F41006410701A7E037FE57C027DB97B03127ACF +:103F51002C7E037FE97C027DBC127A2C801F7E04BB +:103F61007F97123BC17E047F977C027DB97B031250 +:103F71007A2C7E047F9A7C027DBC127A2C900206F8 +:103F8100E0FCA3E0FDEC9002BFF0A3EDF09002088D +:103F9100E0FCA3E0FDEC9002C1F0A3EDF090022C57 +:103FA10012241E78181223D89002C3EFF090022C2D +:103FB10012241E78101223D89002C4EFF090022C24 +:103FC10012241E78081223D89002C5EFF090022C1B +:103FD10012241E9002C6EFF090023012241E7818AF +:103FE1001223D89002C7EFF090023012241E7810ED +:103FF1001223D89002C8EFF090023012241E7808E4 +:104001001223D89002C9EFF090023012241E9002C0 +:10401100CAEFF090021EE0FCA3E0FDAE047818CEDA +:10402100C313CE13D8F99002CBF0EDAE047810CEC5 +:10403100C313CE13D8F99002CCF090021EE0FCA37A +:10404100E0FDEC9002CDF0A3EDF090022012241ED1 +:1040510078181223EB9002CFEFF090022012241E69 +:1040610078101223EB9002D0EFF090022012241E60 +:1040710078081223EB9002D1EFF090022012241E57 +:104081009002D2EFF0900224E0FCA3E0FDEC90025C +:10409100D3F0A3EDF0900236E0FCA3E0FDEC90023A +:1040A100D5F0A3EDF09002B8E09002D7F0A3745AD6 +:1040B100F09003DDE0FEA3E0FF7A027BB97D2012E0 +:1040C10069E19003DDE475F0201222489003DDE000 +:1040D100FEA3E0FFE4FCFD7BE07AFFF9F8D31223B5 +:0D40E100B15007E49003DDF0A3F0127688E3 +:0140EE0022AF +:106787009003EFE02480FFE434FFEF7D00C454F072 +:10679700FC900401E02488FFE434FFFEEF7807C390 +:1067A70033CE33CED8F92DFFEE3CFE900402E0FD48 +:1067B7007A047B03126A407B017A04790090040211 +:1067C700E02403FD127D46900402E02403F582E4F1 +:1067D7003404F583EFF0C29C9003F7E02400F582C0 +:0867E700E43404F583E0F599A8 +:0167EF002287 +:1064F6009003EFE02480FFE434FFEF7D00C454F006 +:10650600FC9004A1E02488FFE434FFFEEF7807C383 +:1065160033CE33CED8F92DFFEE3CFE9004A2E0FD3B +:106526007A047BA3126A407B017A0479A09004A2C4 +:10653600E02403FD127D469004A2E024A3F582E444 +:106546003404F583EFF0758640C2A49003F8E02486 +:0E655600A0F582E43404F583E0F5A1E4F586B7 +:016564002214 +:106565009003EFE02480FFE434FFEF7D00C454F096 +:10657500FC900541E02488FFE434FFFEEF7807C373 +:1065850033CE33CED8F92DFFEE3CFE900542E0FD2B +:106595007A057B43126A407B017A05794090054272 +:1065A500E02403FD127D46900542E02443F582E494 +:1065B5003405F583EFF0758640C2949003F9E02425 +:0E65C50040F582E43405F583E0F591E4F586B7 +:0165D30022A5 +:1074A9007E047F97123BC17E047F977C047D037B1A +:1074B90007127A2C7B017A047900900402E02403F4 +:1074C900FD127D46900402E02403F582E43404F5BC +:1074D90083EFF0C29C9003F7E02400F582E43404C2 +:0674E900F583E0F5992295 +:10713A007E047F97123BC17E047F977C047DA37BEC +:10714A0007127A2C7B017A0479A09004A2E0240326 +:10715A00FD127D469004A2E024A3F582E43404F5EE +:10716A0083EFF0758640C2A49003F8E024A0F5826C +:0C717A00E43404F583E0F5A1E4F586227E +:107186007E047F97123BC17E047F977C057D437BFF +:1071960007127A2C7B017A057940900542E0240398 +:1071A600FD127D46900542E02443F582E43405F560 +:1071B60083EFF0758640C2949003F9E02440F5828F +:0C71C600E43405F583E0F591E4F5862241 +:105905002007030259B0203A030259B0C23A303891 +:1059150005C2381266B09003DFE0FF7008A3E0709F +:1059250004A3E06021EF6008E49003DFF0126787CD +:105935009003E0E06005E4F01265659003E1E06046 +:1059450005E4F01265659003ECE0FF7008A3E070D4 +:1059550004A3E06021EF6008E49003ECF01274A961 +:105965009003EDE06005E4F012713A9003EEE0601B +:1059750005E4F0127186303D05C23D1270EE303CF3 +:105985000CC23C9002B77410F0FF123F3C30420C41 +:10599500C2429002B77401F0FF123F3C303F0CC287 +:0B59A5003F9002B77402F0FF123F3C7D +:0159B00022D4 +:1050D7002007030251A990002EE0FF9003DAE004B5 +:1050E700F0C39F4009E4F07E047F97123BC1900311 +:1050F700DBE475F001122248FEC3E5F09410EE944C +:105107000E400BE49003DBF0A3F0D23AD23D202A05 +:105117001ED241304006C240D23AD24230190B303B +:105127003E08C23ED23AD23F8005201902D23E3015 +:10513700416990002CE0FEA3E0FFEE3395E0FDFC13 +:10514700900220122437C31223B1404F9003E2E0AC +:105157007002A3E070147E047F97123BC17E047F28 +:10516700977C037DE57B07127A2C90002BE0FF7E6E +:10517700007C007D3C1221E19003E2E475F001120E +:105187002248FCD3E5F09FEC9E4017E49003E2F041 +:10519700A3F0D240C241D23AD23C22E49003E2F0DB +:0351A700A3F02250 +:031053000265D45F +:1065D400C0E0C083C082C0D075D000C007C086753B +:1065E400860030D807C2D87F0112102E30D907C2D6 +:1065F400D97F0212102E30DA07C2DA7F0412102E6D +:1066040030DB07C2DB7F0812102E30DC07C2DC7FD0 +:106614001012102E30DD07C2DD7F2012102E30DE66 +:1066240007C2DE7F4012102E30DF07C2DF7F8012E8 +:0F663400102ED086D007D0D0D082D083D0E032C5 +:03102B00021003AD +:10100300C0E0C083C082C0D0C086758640C28F75E1 +:101013008600127C2DD086D0D0D082D083D0E0320F +:105BAE00307D03025C4F75090F20A7057509018032 +:105BBE000620B003750902E509650C6038050EE58F +:105BCE000E7002050DC3E50B940AE50A94004065BC +:105BDE00E50E940AE50D94004067E50B9490E50AF6 +:105BEE0094014008E50C4440F5088003850C08D26A +:105BFE007D80428040E509640F6037E4F50DF50EB7 +:105C0E00050BE50B7002050AB4900EE50AB4010906 +:105C1E00E50C4410F508D27D22E50BB4B023E50A5D +:105C2E00B4041E750A01750B90E50C4420F508D2DC +:105C3E007D2275080FE4F50AF50BF50DF50E8509B5 +:015C4E000C49 +:015C4F002232 +:10798E00AB07AA06C2AF43A701EAF5F7AF038FFB19 +:10799E00AF058FFC75F26E75F30575F40A75F50972 +:1079AE00EAADF7B50509E475F606000000000053D0 +:0579BE00A7FED2AF227C +:107C0700D250E4FDFCEF2DFBEE3C8B82F583E49331 +:107C17006004C250800D0DBD00010CE4B505E6EC13 +:057C2700B402E2A250CE +:017C2C002235 +:086C6D009002BDEEF0A3EFF070 +:106C7500D250AE04AF05E4A3F0A3F09002BFE0FC50 +:106C8500A3E0FDC3EC940250369002BEE02DFD90CA +:106C950002BDE03C8D82F583E493FD9002BFE0FAEE +:106CA500A3E02FF582EE3AF583E0FCED6C6004C2BB +:106CB50050800C9002BFE475F00112224880BCA2FE +:016CC500507E +:016CC60022AB +:086077009002BDEEF0A3EFF072 +:10607F00C250AF05A3ECF0A3EFF0E4FDFC9002BD1E +:10608F00E0FAA3E0FB2DF5FBEB2DEA3CF5F7A3E0DF +:10609F00FEA3E02DF582EE3CF583E0F5FC75F26E84 +:1060AF0020AF3D75F305E5A7603275F40A9005FB47 +:1060BF00E06455702375F5099002BEE02D9002BD86 +:1060CF00E03CABF7B5030DE475F6060000000000E9 +:1060DF00D2508010C2508019C2508015C25080110A +:1060EF00C250800D0DBD00010CED7003EC64027009 +:0360FF008CA25020 +:01610200227A +:0E5EC5009002B9EEF0A3EFF0A3ECF0A3EDF025 +:105ED300C24F53B1F8C2AF43A7019002B9E0FF7EAE +:105EE30000F5F775F2E620AF5B75F305E5A760549F +:105EF30075F40A9005FBE06455704975F509ADF733 +:105F0300EF6D7001EE703D75F60600000000009025 +:105F130002B9E0FEA3E0FF127C0750289002B9E02B +:105F2300FEA3E0FFA3E0FCA3E0FD12607750159011 +:105F330002B9E0FEA3E0FFA3E0FCA3E0FD126C6D59 +:105F43005002D24FE4F5F2F5F3F5F4F5F5F5F65317 +:085F5300A7FEF5F7D2AFA24F43 +:015F5B002223 +:10526E00C24DC24E20720302532EC2729005FB74C1 +:10527E0055F0E513D39405400C9002B77427F0A3B4 +:10528E007410F0800A9002B77413F0A37488F09033 +:10529E0002B7E0FEA3E0FFC390021FE09F90021E44 +:1052AE00E09E406B9001FEE0645A7004A3E064A59A +:1052BE00705DFDFCFFFE125EC54023E4FDFCFFFEAB +:1052CE00125EC54019D24D74FF9001FEF0A3F0FDA1 +:1052DE007FFE7E0112798E7DFF7FFF12798EE4FDB7 +:1052EE00FCFF7E02125EC5402AE4FDFCFF7E021228 +:1052FE005EC5401FD24E74FF9001FEF0A3F0FD7FFD +:10530E00FE7E0312798E7DFF7FFF12798E8004D28E +:10531E004DD24EE49005FBF0304D05304E02D27169 +:01532E00225C +:0E6A9F009002B7EEF0A3EFF0A3EAF0A3EBF045 +:106AAD00D24DAE04AF058E158F16C2AF43A701535D +:106ABD00B1F8E4FFFED39002BAE09F9002B9E09ED8 +:106ACD0040279002B8E02FFD9002B7E03E8D82F591 +:106ADD0083E493851682851583F00516E5167002FD +:106AED0005150FBF00010E80CC53A7FED2AFA24DEE +:016AFD002276 +:107DD7003073119005FAE004F0C394024006C273B1 +:057DE700E4F0D272225D +:107B6D00C24D43A701EEC313FEEF1325E0FFEE3325 +:107B7D008F82F583740193B4A507E493B45A02D2AE +:067B8D004D53A7FEA24DBE +:017B930022CF +:057A8F009002B7EFF0CA +:107A9400758640758830AE04AF057C1F7D40122585 +:107AA4002CE4FB7A01F9F8122304C3E49FFFE49E5B +:0A7AB400FE8F8CF58DD28AE4F58672 +:017ABE0022A5 +:057C51009002B7EFF006 +:107C5600A2AFE433FFC2AF43B20800000000000049 +:0C7C6600000053B26043B20424FF92AF50 +:017C720022EF +:106210009005E8EEF0A3EFF0A3EDF075C7B09005A0 +:10622000E8E0FEA3E0FFFBAA06E4F9F87FD87EB819 +:106230007D05FC1276028FCC9005E8E0FEA3E0FF1E +:10624000FBAA06E4F9F87FD87EB87D05FC12760239 +:1062500078081223EB8FCDAFCDEFFEADCC7C00E400 +:106260002DFFEC3EFE9005EAE0FBFD1221E17D648E +:106270001221F38FCEAFCDEFFEADCC7C00E42DFF2D +:10628000EC3EFEAD031221E17D641221F3EEF5CF69 +:0162900022EB +:106291009005EBEEF0A3EFF0A3EDF075B6B090052D +:1062A100EBE0FEA3E0FFFBAA06E4F9F87FD87EB895 +:1062B1007D05FC1276028FAE9005EBE0FEA3E0FFB8 +:1062C100FBAA06E4F9F87FD87EB87D05FC127602B8 +:1062D10078081223EB8FAFAFAFEFFEADAE7C00E4D9 +:1062E1002DFFEC3EFE9005EDE0FBFD1221E17D640A +:1062F1001221F38FA4AFAFEFFEADAE7C00E42DFF12 +:10630100EC3EFEAD031221E17D641221F3EEF5A511 +:016311002269 +:106312009002BCEEF0A3EFF0A3EDF075B7B09002DF +:10632200BCE0FEA3E0FFFBAA06E4F9F87FD87EB842 +:106332007D05FC1276028FBC9002BCE0FEA3E0FF5A +:10634200FBAA06E4F9F87FD87EB87D05FC12760236 +:1063520078081223EB8FBDAFBDEFFEADBC7C00E42D +:106362002DFFEC3EFE9002BEE0FBFD1221E17D64BA +:106372001221F38FBEAFBDEFFEADBC7C00E42DFF5A +:10638200EC3EFEAD031221E17D641221F3EEF5BF76 +:0163920022E8 +:1073D100E5B2547070067C067D868020E5B254705B +:1073E100FEBE20067C037D438012E5B25470FEBED2 +:1073F10040067C017DA180047C007D8BE4FEEEC310 +:107401009F5014E4FBFAC3EB9DEA9C50070BBB00B1 +:07741100010A80F20E80E782 +:017418002251 +:1068560090002FE0645A705A900061E0645A7052BA +:10686600900073E0645A704A900088E0645A70425F +:1068760090008DE0645A703A900098E0645A703245 +:106886009000A1E0645A702A9000A9E0B45A2390BF +:1068960000BAE0B45A1C9000BEE0B45A159000CA83 +:1068A600E0B45A0E9001FEE0645A7004A3E064A5B9 +:0668B6006002C322D322A0 +:087B43009002C3EEF0A3EFF085 +:107B4B00E4FFEFC39B501A9002C3E0F8A3E0F58269 +:107B5B008883EDF09002C3E475F0011222480F8088 +:017B6B00E138 +:017B6C0022F6 +:087A2C009002D9EEF0A3EFF087 +:107A3400E4FFEFC39B50239002D9E0F8A3E0F58262 +:107A44008883E08D828C83F00DBD00010C9002D9F7 +:0A7A5400E475F0011222480F80D8FB +:017A5E002205 +:0C7F5F00758E55438701000000000022D1 +:0C7F6B00758E55438702000000000022C4 +:107AEC0090053EE064127023204306204403304589 +:107AFC001A207317207214C2AFE4F5A8F5A9F58803 +:0C7B0C00F5E8F59DF59CF59812000022AC +:10721C00D228D229201403301602C22820110F20A4 +:10722C00130C201B09201C06201503301602C22942 +:10723C00202B0E201009201206201803301A02C22F +:10724C0028202A05301902C229201B06201C0330D5 +:0A725C001502C228301A02C22922CE +:107ABF0012721CA276302801B34008A27730290138 +:107ACF00B35019A2289276A2299277A229E433FF04 +:0D7ADF0025E0FFA228E4334FFF127DC222F4 +:10741900201844C3900063E09512900062E0951132 +:10742900501F9003BCE475F001122248FEC3E5F039 +:107439009401EE94004020D218E49003BCF0A3F02C +:1074490022D3900065E09512900064E09511400701 +:08745900E49003BCF0A3F02253 +:10746100201944D3900075E09510900074E0950FB9 +:10747100401F9003BEE475F001122248FEC3E5F0FF +:107481009401EE94004020D219E49003BEF0A3F0E1 +:1074910022C3900077E09510900076E0950F500799 +:0874A100E49003BEF0A3F02209 +:106F180020104B90008EE0FEA3E0FF900204E0FCFE +:106F2800A3E0FDD39FEC9E401F9003CEE475F001D3 +:106F3800122248FEC3E5F09401EE94004020D210DE +:106F4800E49003CEF0A3F022900090E0FEA3E0FFCF +:0F6F5800C3ED9FEC9E5007E49003CEF0A3F02210 +:106F670020124B900092E0FEA3E0FF900202E0FCAB +:106F7700A3E0FDC39FEC9E501F9003D2E475F00180 +:106F8700122248FEC3E5F09401EE94004020D2128D +:106F9700E49003D2F0A3F022900094E0FEA3E0FF78 +:0F6FA700D3ED9FEC9E4007E49003D2F0A3F022BD +:106FB60020114B900099E0FEA3E0FF900204E0FC54 +:106FC600A3E0FDD39FEC9E401F9003D0E475F00133 +:106FD600122248FEC3E5F09401EE94004020D2113F +:106FE600E49003D0F0A3F02290009BE0FEA3E0FF24 +:0F6FF600C3ED9FEC9E5007E49003D0F0A3F02270 +:1070050020134B90009DE0FEA3E0FF900202E0FC00 +:10701500A3E0FDC39FEC9E501F9003D4E475F001DF +:10702500122248FEC3E5F09401EE94004020D213ED +:10703500E49003D4F0A3F02290009FE0FEA3E0FFCC +:0F704500D3ED9FEC9E4007E49003D4F0A3F0221C +:10787B00307E37124BCB124F2212741912746112D5 +:10788B006F18126F67126FB612700590053FE00408 +:10789B00F0C394024014C27E205D09203906207B80 +:0B78AB0003307103D266221243DF227B +:1051AA0020185C201459C3900063E09512900062A5 +:1051BA00E095115033900066E075F00AA4FFAEF056 +:1051CA009003BCE475F001122248FCC3E5F09FECA1 +:1051DA009E500302526DD218C278E49003BCF0A329 +:1051EA00F09003D6F0A3F022D3900065E0951290D8 +:1051FA000064E09511406CE49003BCF0A3F0222017 +:10520A007861D3900065E09512900064E0951140B2 +:10521A003C900067E075F00AA4FFAEF09003D6E474 +:10522A0075F001122248FCC3E5F09FEC9E40343031 +:10523A000E06D278D26C8007C218C214127804E41F +:10524A009003BCF0A3F09003D6F0A3F022C3900021 +:10525A0063E09512900062E095115007E49003D63E +:04526A00F0A3F0229B +:1053EC00201959D3900075E09510900074E0950F3A +:1053FC004033900078E075F00AA4FFAEF09003BE45 +:10540C00E475F001122248FCC3E5F09FEC9E5003BA +:10541C000254A7D219C279E49003BEF0A3F0900312 +:10542C00D8F0A3F022C3900077E09510900076E0BE +:10543C00950F5067E49003BEF0A3F02220795CC373 +:10544C00900077E09510900076E0950F5037900023 +:10545C0079E075F00AA4FFAEF09003D8E475F00182 +:10546C00122248FCC3E5F09FEC9E402F300F06D271 +:10547C0079D26D8002C219E49003BEF0A3F09003C0 +:10548C00D8F0A3F022D3900075E09510900074E052 +:0C549C00950F4007E49003D8F0A3F02225 +:1054A80020105E90008EE0FEA3E0FF900204E0FC76 +:1054B800A3E0FDD39FEC9E4031900096E075F01478 +:1054C800A4FFAEF09003CEE475F001122248FAC3AF +:1054D800E5F09FEA9E5003025563D210E49003CE94 +:1054E800F0A3F09003C0F0A3F022900090E0FEA398 +:1054F800E0FFC3ED9FEC9E5062E49003CEF0A3F072 +:1055080022900090E0FEA3E0FF900204E0FCA3E0FC +:10551800FDC39FEC9E502E900096E075F014A4FFFA +:10552800AEF09003C0E475F001122248FAC3E5F02A +:105538009FEA9E4026C210E49003CEF0A3F09003A9 +:10554800C0F0A3F02290008EE0FEA3E0FFD3ED9F11 +:0C555800EC9E4007E49003C0F0A3F0229A +:1055640020125E900092E0FEA3E0FF900202E0FCB5 +:10557400A3E0FDC39FEC9E5031900096E075F014BB +:10558400A4FFAEF09003D2E475F001122248FAC3EE +:10559400E5F09FEA9E500302561FD212E49003D214 +:1055A400F0A3F09003C4F0A3F022900094E0FEA3D3 +:1055B400E0FFD3ED9FEC9E4062E49003D2F0A3F0B1 +:1055C40022900094E0FEA3E0FF900202E0FCA3E03E +:1055D400FDD39FEC9E402E900096E075F014A4FF3E +:1055E400AEF09003C4E475F001122248FAC3E5F06A +:1055F4009FEA9E4026C212E49003D2F0A3F09003E7 +:10560400C4F0A3F022900092E0FEA3E0FFC3ED9F5C +:0C561400EC9E5007E49003C4F0A3F022C9 +:1056200020115E900099E0FEA3E0FF900204E0FCF0 +:10563000A3E0FDD39FEC9E4031900096E075F014FE +:10564000A4FFAEF09003D0E475F001122248FAC333 +:10565000E5F09FEA9E50030256DBD211E49003D09E +:10566000F0A3F09003C2F0A3F02290009BE0FEA311 +:10567000E0FFC3ED9FEC9E5062E49003D0F0A3F0F6 +:105680002290009BE0FEA3E0FF900204E0FCA3E078 +:10569000FDC39FEC9E502E900096E075F014A4FF81 +:1056A000AEF09003C2E475F001122248FAC3E5F0AF +:1056B0009FEA9E4026C211E49003D0F0A3F090032D +:1056C000C2F0A3F022900099E0FEA3E0FFD3ED9F8B +:0C56D000EC9E4007E49003C2F0A3F0221F +:1056DC0020135E90009DE0FEA3E0FF900202E0FC30 +:1056EC00A3E0FDC39FEC9E5031900096E075F01442 +:1056FC00A4FFAEF09003D4E475F001122248FAC373 +:10570C00E5F09FEA9E5003025797D213E49003D41E +:10571C00F0A3F09003C6F0A3F02290009FE0FEA34C +:10572C00E0FFD3ED9FEC9E4062E49003D4F0A3F035 +:10573C002290009FE0FEA3E0FF900202E0FCA3E0B9 +:10574C00FDD39FEC9E402E900096E075F014A4FFC4 +:10575C00AEF09003C6E475F001122248FAC3E5F0EE +:10576C009FEA9E4026C213E49003D4F0A3F090036A +:10577C00C6F0A3F02290009DE0FEA3E0FFC3ED9FD6 +:0C578C00EC9E5007E49003C6F0A3F0224E +:106CC700201A5590006D12241E90027D122437D38E +:106CD7001223B1402A900071E075F00AA4FFAEF0CC +:106CE7009003CAE475F001122248FCC3E5F09FEC5B +:106CF7009E4025D21AD26CE49003CAF0A3F022205A +:106D07006A16D39003CBE094009003CAE094004046 +:096D17000774FFF5F01222482276 +:106D2000201B5590007D12241E90027D122437C333 +:106D30001223B1502A900081E075F00AA4FFAEF052 +:106D40009003B8E475F001122248FCC3E5F09FEC13 +:106D50009E4025E49003B8F0A3F0D21BD26D222010 +:106D60006B16D39003B9E094009003B8E094004010 +:096D70000774FFF5F0122248221D +:106D7900201C5590008212241E90027D122437C3D4 +:106D89001223B1502A900086E075F002A4FFAEF0FC +:106D99009003BAE475F001122248FCD3E5F09FECA8 +:106DA9009E4025E49003BAF0A3F0D21CD26D2220B4 +:106DB9006B16D39003BBE094009003BAE0940040B3 +:096DC9000774FFF5F012224822C4 +:107C9300207E1B1251AA1253EC1254A812556412DF +:0F7CA30056201256DC126CC7126D20126D79221A +:10641000300272201B06201C03301539900072E0F8 +:1064200075F014A4FFAEF09003CCE475F0011222D5 +:1064300048FCC3E5F09FEC9E401BE49005F9F0900A +:1064400003CCF0A3F0C21BC21CC26DC26B30150599 +:10645000C215127804301A2D900072E075F014A461 +:10646000FFAEF09003C8E475F001122248FCD3E5BA +:10647000F09FEC9E400FE49003C8F0A3F0C21A9086 +:0664800005F8F0C26A22DB +:107D0C00300719307A11900496E004F0C3940540C2 +:0D7D1C000BD27B7405F022E4900496F02257 +:0E6BB7009002EEEFF0A3EDF0A3EAF0A3EBF0F6 +:106BC500C250207B40E4A3F09002EEE0FD7C00A3E0 +:106BD500E09002F7F0E4A3F09002F0E0FFA3E0906C +:106BE50002F9CFF0A3EFF0E4FB7FDE1247FE50047D +:106BF500D25080117F011273D19002F2E004F0E0CF +:0C6C0500C3940540C3A250B3927AA25081 +:016C11002260 +:0E6C12009002E4EFF0A3EDF0A3EAF0A3EBF0A4 +:106C2000C24F207B40E4A3F09002E4E0FD7C00A38F +:106C3000E09002EDF0E4A3F09002E6E0FFA3E09024 +:106C400002EFCFF0A3EFF0E4FB7FDE123D835004B0 +:106C5000D24F80117F011273D19002E8E004F0E07E +:0C6C6000C3940540C3A24FB3927AA24F28 +:016C6C002205 +:083BC1009002D9EEF0A3EFF031 +:103BC900C24E7A027BDB7D09E4FF126C12400302CC +:103BD9003D809002E2E030E003023D739002DDE0B7 +:103BE90020E703023C929002DBE0FF5470945040BE +:103BF90003023C92EF540F94094003023C92E054B3 +:103C09007F94594003023C92A3E0FF5470945050B2 +:103C190078EF540F94095071E0547F9459506AA376 +:103C2900E0FF543094205061EF540F9409505AE04A +:103C3900542F94245053A3E0FF54309430504AEF4A +:103C4900540F94095043E0543FFF9431503BEF60C7 +:103C590038A3E0FF54109410502FEF540F940950DB +:103C690028E0541FFF94125020EF601DA3E0FF5479 +:103C7900F094905014EF540F9409500DE09499501A +:103C890008A3E05407940640779002D9E0FEA3E028 +:103C9900FFF5828E83E09002DBF08F828E83A3E0B2 +:103CA9009002DCF09002D9E0A3E0F5828E83A3A311 +:103CB900E09002DDF08F828E83A3A3A3E09002DE61 +:103CC900F09002D9E0A3E02404F582E43EF583E014 +:103CD9009002DFF0EF2405F582E43EF583E09002DF +:103CE900E0F09002D9E0A3E02406F582E43EF583F2 +:103CF900E09002E1F07E027FDB125D92924E8077C6 +:103D09009002DBE0FF9002D9E0FCA3E0FDF5828C94 +:103D190083EFF09002DCE08D828C83A3F09002DDCA +:103D2900E0541F8D828C83A3A3F09002DEE08D8284 +:103D39008C83A3A3A3F09002DFE0FFED2404F582B6 +:103D4900E43CF583EFF09002E0E0FFED2405F58215 +:103D5900E43CF583EFF09002E1E0FFED2406F58203 +:103D6900E43CF583EFF0D24E800D9002D9E0FEA33A +:093D7900E0FF125D92924EA24E91 +:013D8200221E +:085D92009002E4EEF0A3EFF033 +:105D9A00C24FA37490F07A027BE67D017F07126BF3 +:105DAA00B7924F9002E4E0FEA3E0FFF5828E83E013 +:105DBA009002E7F08F828E83A3E09002E8F09002CF +:105DCA00E4E0FCA3E0FDF5828C83A3A3E044809089 +:105DDA0002E9F08D828C83A3A3A3E09002EAF090FB +:105DEA0002E4E0A3E0FF2404F582E43EF583E090B8 +:105DFA0002EBF0EF2405F582E43EF583E09002EC35 +:105E0A00F09002E4E0A3E02406F582E43EF583E0A4 +:105E1A009002EDF07A027BE77D07E4FF126BB792FE +:035E2A004FA24F35 +:015E2D002252 +:085FEA009002B7EEF0A3EFF006 +:105FF200C24DE49002C2F07E027FB97B09FD127BA2 +:10600200437A027BB97D097FF07EFF126A40E4FF8A +:1060120074B92FF582E43402F583E0FE9002C2E007 +:106022002EF00FEFB407E99002C2E0FF9002C0E049 +:10603200B50706A3E0645A601BE49002B9F0A3F02E +:10604200A37412F0A37401F0A37405F0A37420F0FA +:10605200A37405F07E027FB99002B7E0FCA3E0FDD5 +:106062007B07127A2C9002B7E0FEA3E0FF123BC13D +:04607200924DA24D5C +:016076002207 +:104E220000070E091C1B1215383F363124232A2D88 +:104E320070777E796C6B6265484F464154535A5D78 +:104E4200E0E7EEE9FCFBF2F5D8DFD6D1C4C3CACD68 +:104E520090979E998C8B8285A8AFA6A1B4B3BABD58 +:104E6200C7C0C9CEDBDCD5D2FFF8F1F6E3E4EDEA48 +:104E7200B7B0B9BEABACA5A28F88818693949D9A38 +:104E82002720292E3B3C35321F18111603040D0A28 +:104E92005750595E4B4C45426F68616673747D7A18 +:104EA200898E878095929B9CB1B6BFB8ADAAA3A408 +:104EB200F9FEF7F0E5E2EBECC1C6CFC8DDDAD3D4F8 +:104EC200696E676075727B7C51565F584D4A4344E8 +:104ED200191E171005020B0C21262F283D3A3334D8 +:104EE2004E49404752555C5B7671787F6A6D6463C8 +:104EF2003E39303722252C2B0601080F1A1D1413B8 +:104F0200AEA9A0A7B2B5BCBB9691989F8A8D8483A7 +:104F1200DED9D0D7C2C5CCCBE6E1E8EFFAFDF4F397 +:107D4600E4FFEDD3940040131221896F904E2293E5 +:0B7D5600FF740129F9E43AFA1D80E7F0 +:017D610022FF +:107B9400D2527D807CBBE5C820E31053B1F8ED4C94 +:107BA4006009ED1D70011C80ED80EBE5D154F86F88 +:067BB4006002C252A25261 +:017BBA0022A8 +:1047FE009002F6EBF09002F3EFF0A3ECF0A3EDF0E5 +:10480E00D2519002FF74BBF0A37480F09002FBEFC4 +:10481E00F0A3EDF09002F9E0FEA3E0F5828E83E0C6 +:10482E009002FDF07B017A0279FB7D03127D4690AA +:10483E0002FEEFF09002F7E0D394005003024942DB +:10484E0043E6C043D10143C80175C8607F08127B9F +:10485E0094400C7F10127B944005C25102491F9068 +:10486E0002F3E0F58D75C8407F18127B944005C2A7 +:10487E005102491F9002F6E0B401159002F4E0F5E2 +:10488E008D75C8407F28127B944005C25102491F86 +:10489E009002F4E0A3E0F58D75C8407F28127B945A +:1048AE004004C251806B9002F8E06401702EA3E0C8 +:1048BE00FEA3E0F5828E83E0F58D75C8407F281249 +:1048CE007B944004C25180499002FEE0F58D75C87C +:1048DE00407F28127B944039C2518035E4FE90020D +:1048EE00F7E0FFEEC39F50299002F9E0FCA3E0F53C +:1048FE00828C83E0F58D75C8407F28127B9440042E +:10490E00C251800D9002F9E475F0011222480E801A +:10491E00CD75C850E5C830E41B53B1F89002FFE0E6 +:10492E007002A3E0600E9002FF74FFF5F0122248B1 +:06493E0080E280E0A251BE +:014944002250 +:0A3D8300AA079002EAECF0A3EDF0AD +:103D8D00D250E4900320F0A374BBF0A37480F090A4 +:103D9D0002F2EAF0A3EDF0EA4401A3F09002EDE0A7 +:103DAD00D394005003023F3943E6C043D10143C8C9 +:103DBD000175C8607F08127B94400C7F10127B94B4 +:103DCD004005C250023F168A8D75C8407F18127B80 +:103DDD00944005C250023F16EBB401159002EAE083 +:103DED00F58D75C8407F28127B944005C250023F67 +:103DFD00169002EAE0A3E0F58D75C8407F28127B8E +:103E0D00944005C250023F1675C8607F08127B941E +:103E1D00400C7F10127B944005C250023F16EA44BD +:103E2D0001F58D75C8407F40127B944005C250024C +:103E3D003F16E49002F1F09002EDE0FF9002F1E008 +:103E4D00FEC39F50579002EEE07031EF14B5060A95 +:103E5D0075C8407F58127B94800875C8447F5012F6 +:103E6D007B949002EFE0FEA3E0F5828E83E58DF06A +:103E7D009002EFE475F001122248801875C8447F56 +:103E8D0050127B949002F1E024F5F582E43402F5B2 +:103E9D0083E58DF09002F1E004F0809B9002EEE05E +:103EAD006401706575C8407F58127B94900320E5BE +:103EBD008DF07B017A0279F29002EDE02403FD1280 +:103ECD007D46900320E0B5073EE49002F1F09002AC +:103EDD00EDE0FF9002F1E0FEC39F502D74F52EF53D +:103EED0082E43402F583E0FF9002EFE0FCA3E0F5FD +:103EFD00828C83EFF09002EFE475F001122248906E +:103F0D0002F1E004F080C7C25075C850E5C830E436 +:103F1D001B53B1F8900321E07002A3E0600E9003F3 +:0E3F2D002174FFF5F012224880E280E0A250DD +:013F3B002263 +:107DAB0075C632E4F5E6F5D1758A2075D10275C832 +:077DBB00407589FFF58D22E0 +:0369800075C432A9 +:10698300E4F5877598509002B7747FF0A374CCF048 +:106993009002B7E0F59D759CCCE0FEA3E0FFFBE41D +:1069A300C39BFF74809EFEE49400FDE49400FCE42A +:1069B3007B10FAF9F8122279EC121F18A804A90522 +:1069C300AA06AB077F557E557D507C44121C7D1271 +:0D69D3001F568F9E439D80759A0A759BFF8D +:0169E0002294 +:03102300027CB29A +:067CB200C0E0C083C082A7 +:107CB800C086758600309808C2989002B6E599F09B +:027CC800D08664 +:077CCA00D082D083D0E0322C +:104A890080B678FA71C46B0C64C760C25B2755EBBA +:104A990051074C7449A2458441AA3E0D3AAB384AA4 +:104AA900354132682FBB2D382B7A29362715251425 +:104AB900233121C320101E761CF41B881A79192F63 +:104AC90017F816D215BC14DD13E212F41213113EB5 +:104AD90010970FD50F1E0E700DCC0D3E0CA90C1B97 +:104AE9000B940B140AA80A3309C5095B08F7089D3A +:104AF900084207EB0798074A070406BC06770636FB +:104B090005F705BD0584054D051904E804B9048BAD +:104B190004600436040E03E803C303A0037E035EA6 +:104B2900033F0321030402E902CF02B6029E028673 +:104B39000270025B02470232021F020D01FC01EB07 +:104B490001DA01CB01BC01AE01A001920185017915 +:104B5900016D01620156014B01410137012E01240A +:104B6900011B0113010B010300FB00F300EC00E53D +:104B790000DF00D800D200CC00C600C000BA00B5E2 +:104B890000B000AB00A700A2009D0099009500911C +:104B9900008D008900850082007F007B0078007508 +:104BA9000072006F006C0069006600640061005FBC +:104BB900005C005A0058005600530051004F004E47 +:024BC900004C9E +:03100000027C73FC +:107C730075819F007808760008B8A0FAE4900000A8 +:107C8300F0A3A882A983B8DCF7B907F4000230A6F1 +:1039FC00A2AF924DC2AF900234E0FFA3E09003253A +:103A0C00CFF0A3EFF090022C12241E90034312244B +:103A1C008490023012241E90037612248490023675 +:103A2C00E0FFA3E0900364CFF0A3EFF0900220122C +:103A3C00241E90037B122484900224E0FFA3E090C8 +:103A4C000374CFF0A3EFF090021EE0FEA3E0FFE4BE +:103A5C00FCFD90034D12248485111C85121D850FCD +:103A6C001A85101B90035F1224A900000000E4903B +:103A7C000372F0A3F0A24D92AF90034C741EF09021 +:103A8C00036B745AF0A3740BF0A3740FF0900366DD +:103A9C001224A9FFFF7748E490036AF090036F04A7 +:103AAC00F09003877414F090033C743EF0A3748080 +:103ABC00F0A3E4F0A37411F09003707406F0A374F7 +:103ACC0022F0900389743CF0900003E02438FE90BF +:103ADC000002E034FF900323F0A3CEF09003577460 +:103AEC000FF090035E740AF0900014E0FFA3E090D6 +:103AFC00037FCFF0A3EFF090034B745AF0E513FB68 +:103B0C007A007C117D94FF7E001221E1E4FCFD9093 +:103B1C00032D1224847C0B7DB8AF037E001221E1AF +:103B2C00E4FCFD900353122484900363743CF090E6 +:103B3C0003887414F0900331740FF090037A7414AA +:103B4C00F090036E740AF09003271224A900000071 +:103B5C0028900342741EF0900340740BF0A3744140 +:103B6C00F0900351740BF0A37441F0900381E4F0D6 +:103B7C00A37432F0900347E4F0A37405F09003387B +:103B8C00E4F0A37469F0900383E4F0A37464F09000 +:103B9C000349E4F0A3741EF090033AE4F0A37462BA +:103BAC00F09003857401F0A37490F090035CE4F042 +:043BBC00A3744BF0B3 +:013BC00022E2 +:106E7800A2AF924DC2AF900325E0FFA3E090023489 +:106E8800CFF0A3EFF090034312241E90022C12249B +:106E98008490037612241E90023012248490036496 +:106EA800E0FFA3E0900236CFF0A3EFF0A25A9222BF +:106EB800A25B92209000B9E024FF9221A24D92AFEC +:016EC80022A7 +:067F81005AA569963CC3FD +:104D03007F647E00E49002B9F09002B9E0FDC394A1 +:104D13000A4003024E21ED25E02402F582E434002B +:104D2300F583E0FCA3E0D3951DEC951C5003024EE4 +:104D3300189002B9E0705790007AE0FCA3E0FDD32D +:104D4300951DEC951C5003301906E4FEFF024E211D +:104D5300C3E51D9DFFE51C9CFE7C007D0A12252CEE +:104D6300EEC0E0EFC0E090007AE0FEA3E0FFC39066 +:104D73000003E09FFF900002E09EFECBEFCBFAE43E +:104D8300F9F8D0E0FFD0E0FE122304024E21900296 +:104D9300B9E025E02400F582E43400F583E0FEA3C6 +:104DA300E0FFC3E51D9FFFE51C9EFE7C007D0A120C +:104DB300252CECC0E0EDC0E0EEC0E0EFC0E09002D7 +:104DC300B9E0FF25E02400F582E43400F583E0FC3C +:104DD300A3E0FDEF25E02402F582E43400F583E04F +:104DE300FEA3E0C39DFFEE9CFECBEFCBFAE4F9F804 +:104DF300D0E0FFD0E0FED0E0FDD0E0FC122304CDF4 +:104E0300EFCDCCEECC9002B9E075F00AA42DFFE50E +:0F4E1300F03CFE80099002B9E004F0024D0C2241 +:104270009002B9EEF0A3EFF09000AAE0F9FDD3EFC1 +:104280009DEE9400500302434990036BE0FF9002BF +:10429000B9E0FCA3E0FDD39FEC94004078ED94647A +:1042A000EC940050709002B9E0FAA3E0FBC3746490 +:1042B0009BFFE49AFE7C007D0A1221E1E9FDC3EB3D +:1042C0009DFDEA9CFCD3ED9FEC9E50030243DE90E3 +:1042D00002B9E0FEA3E0FF9000AAF07C007D0A1284 +:1042E00021E19003A8EEF0A3EFF09002B9E0FEA365 +:1042F000E0FFE4FD90001AE0F8A3E0F9A3E0FAA3E0 +:10430000E0FB122279E47B64FAF9F81223049000AE +:10431000AB122484229002B9E07004A3E0646460CC +:10432000030243DE9000AA7464F09003A87403F0C3 +:10433000A374E8F090001AE0FCA3E0FDA3E0FEA364 +:10434000E0FF9000AB122484229000AAE0FD9002CE +:10435000B9E0FEA3E0FFC3ED9FFDE49EFC90034C9B +:10436000E0FBD3ED9BEC9400403F9000AAEFF07C83 +:10437000007D0A1221E19003A8EEF0A3EFF0900275 +:10438000B9E0FEA3E0FFE4FD90001AE0F8A3E0F935 +:10439000A3E0FAA3E0FB122279E47B64FAF9F812B5 +:1043A00023049000AB122484229002B9E07002A38F +:1043B000E0702B9000AA04F09003A8E4F0A3740A24 +:1043C000F0E47B64FAF9F890001AE0FCA3E0FDA3A6 +:0F43D000E0FEA3E0FF1223049000AB122484222E +:1043DF001239FC124D039002B7EEF0A3EFF0E47F19 +:1043EF00E87E03FDFC9000ABE0F8A3E0F9A3E0FA50 +:1043FF00A3E0FB12227990001AE0F8A3E0F9A3E002 +:10440F00FAA3E0FB1223049003A8EEF0A3EFF090C1 +:10441F0002B7E0FEA3E0FF1242709000AAE0FF7E19 +:10442F0000900325EEF0FAA3EFF0FB90001AE0FCEA +:10443F00A3E0FDA3E0FEA3E0FF900343122484CF8B +:10444F00EBCF7E00E4FCFD900343E0F8A3E0F9A37B +:10445F00E0FAA3E0FB122279E47B64FAF9F8122365 +:10446F00049003761224849000ABE0FCA3E0FDA33C +:10447F00E0FEA3E0FF90035812248490033412242B +:10448F00A9000000009003A6E0FFA3E090032BCF4C +:10449F00F0A3EFF0E47830F608F67838F608F678FF +:1044AF0034122490000000009003AC1224A90000E5 +:1044BF000000E490039CF0A3F09003B2F0A3F090FF +:1044CF0003AAF0A3F0C25BC257C2599003A5F090A4 +:1044DF0003A4F0783AF608F67832F608F69003A8B7 +:1044EF00E0FFA3E09003B0CFF0A3EFF0C25AC256A3 +:1044FF009003B41224A900000000E49003A6F0A3D7 +:10450F00F090038E1224A90000000090039712244C +:10451F00A9000000009003921224A900000000E4FB +:10452F0090039BF0900396F0C25890038A1224A92F +:08453F0000000000126E78225A +:10500000124D039002B7EEF0A3EFF0900331E0FFF2 +:10501000E4FCFDFE90001AE0F8A3E0F9A3E0FAA397 +:10502000E0FB122279E47B0AFAF9F8122304C8ECB7 +:10503000C8C9EDC9CAEECACBEFCB90037BE0FCA395 +:10504000E0FDA3E0FEA3E0FFD31223C7500302500C +:10505000D690037AE0FF7E009002B7E0FCA3E0FD6B +:10506000D39FEC9E4070D3900380E0951D90037F0A +:10507000E0951C4061ED9FFBEC9EFA9003A8E0FEDA +:10508000A3E0FF7C007D0A1221F3C3EF9BEE9A5050 +:105090004590036EE0FFC39002B8E09FFF9002B717 +:1050A000E09400FE7C007D0A1221E19003A8EEF05E +:1050B000A3EFF0E4FD90001AE0F8A3E0F9A3E0FA12 +:1050C000A3E0FB122279E47BE87A03F9F8122304C7 +:0750D0009000AB12248422C2 +:102559001239FC900340E0FEA3E0FFD3900375E03D +:102569009F900374E09E401EE4FFFEFDFC900397DC +:10257900E0F8A3E0F9A3E0FAA3E0FBD31223B1400A +:1025890005301802D25BC3900380E0951D90037F4C +:10259900E0951C5012900396E004F0E09405400E7B +:1025A9007405F0D2578007C257E4900396F0900063 +:1025B90028E0FEA3E0FFEE3395E0FDFC90037BE00D +:1025C900F8A3E0F9A3E0FAA3E0FBD31223B1500387 +:1025D9000227C1E49003B2F0A3F09003AAF0A3F09C +:1025E90090039BE004F0E0D3940540057405F0D214 +:1025F900589000B9E06010D25AE4F09003B4122464 +:10260900A900000000C256900372E0FEA3E0FFEEAD +:102619003395E0FDFC900281E0F8A3E0F9A3E0FA2C +:10262900A3E02FFFEA3EFEE93DFDE83CFC90038E66 +:10263900122484E4FFFEFDFC90038EE0F8A3E0F988 +:10264900A3E0FAA3E0FBD31223B14021900281E079 +:10265900A3E0A3E0FEA3E0FF900373E02FFF900344 +:1026690072E03EFE783BEF26F618EE36F6C3783B6D +:10267900E6941018E6940E500302270B0874F0260E +:10268900F61874F136F690001AE0FCA3E0FDA3E019 +:10269900FEA3E0FF9000ABE0F8A3E0F9A3E0FAA302 +:1026A900E0FBC31223C750219000ABE0FCA3E0FD7F +:1026B900A3E0FEA3E02401FFE43EFEE43DFDE43C8B +:1026C900FC9000AB122484801490001AE0FCA3E073 +:1026D900FDA3E0FEA3E0FF9000AB122484305A8DE5 +:1026E9009003B4E0FCA3E0FDA3E0FEA3E02401FF16 +:1026F900E43EFEE43DFDE43CFC9003B41224840274 +:102709002676900340E0FEA3E0FFD3900375E09F97 +:10271900900374E09E404490006AE0FEA3E0FFEE5F +:102729003395E0FDFC900281E0F8A3E0F9A3E0FA1B +:10273900A3E0FBC31223B15022C3900069E0951DA9 +:10274900900068E0951C501390006CE0FF9003A581 +:10275900E004F0C39F4004EFF0D25B90006AE0FE12 +:10276900A3E0FFEE3395E0FDFC900281E0F8A3E0E1 +:10277900F9A3E0FAA3E0FBC31223B1503590034D4E +:10278900E0FCA3E0FDA3E0FEA3E0FF90032DE0F849 +:10279900A3E0F9A3E0FAA3E0FBC31223C750139007 +:1027A9000363E0FF9003A4E004F0C39F4004EFF04B +:1027B900D259125000022AFF900028E0FEA3E0FF40 +:1027C900C3E49FFFE49EFE3395E0FDFC90037BE0AC +:1027D900F8A3E0F9A3E0FAA3E0FBC31223B1400395 +:1027E9000229B6E49003A5F09003A4F0C259C25B94 +:1027F9009003AAF0A3F09003B3F090039BF0C258A2 +:1028090090035FE0FCA3E0FDA3E0FEA3E0FF9002DC +:1028190081E0F8A3E0F9A3E0FAA3E02FFBEA3EFA8E +:10282900E93DF9E83CF8900372E0FEA3E0FFEE33DE +:1028390095E0FDFCEB2FFFEA3EFEE93DFDE83CFC9F +:1028490090038E12248490038EE0FCA3E0FDA3E0A4 +:10285900FEA3E0FFEC33500AC37833E69FF618E68F +:102869009EF6C37833E6941018E6940E50030229B5 +:102879004BC37833E6941018E6940E40670874F059 +:1028890026F61874F136F69000B3E0FCA3E0FDA338 +:10289900E0FEA3E02401FFE43EFEE43DFDE43CFC50 +:1028A9009000B3122484E47F01FEFDFC9000ABE0AC +:1028B900F8A3E0F9A3E0FAA3E0FBD31223C740B1E0 +:1028C9009000ABE0FCA3E0FDA3E0FEA3E024FFFF42 +:1028D900EE34FFFEED34FFFDEC34FFFC9000AB124B +:1028E9002484808D90001EE0FCA3E0FDA3E0FEA3FC +:1028F900E0FF9000B3E0F8A3E0F9A3E0FAA3E0FB5E +:10290900C31223C7403C9000B3E0FCA3E0FDA3E061 +:10291900FEA3E0FF90001EE0F8A3E0F9A3E0FAA30C +:10292900E0FBEF9BFFEE9AFEED99FDEC98FC900021 +:10293900B3122484900023E004F07006900022E092 +:1029490004F0900351E0FEA3E0FFD3900375E09FEC +:10295900900374E09E5003022AFF9000AFE0FCA3AD +:10296900E0FDA3E0FEA3E0FF900281E0F8A3E0F917 +:10297900A3E0FAA3E0FBD31223B15003022AFFD349 +:1029890090007BE0951B90007AE0951A5003022A8B +:10299900FF90007CE0FF9003B2E004F09F50030237 +:1029A9002AFFEFF09000B97401F0022AFF90037238 +:1029B900E0FAA3E0FBFFCEEACEEE3395E0FDFC336F +:1029C9004003022AA9C37833E69BFF18E69AFEF66C +:1029D90008EFF6C39410EE940E5003022AA974F07E +:1029E90026F61874F136F69000B3E0FCA3E0FDA3D7 +:1029F900E0FEA3E02401FFE43EFEE43DFDE43CFCEF +:102A09009000B3122484E47F01FEFDFC9000ABE04A +:102A1900F8A3E0F9A3E0FAA3E0FBD31223C740220D +:102A29009000ABE0FCA3E0FDA3E0FEA3E024FFFFE0 +:102A3900EE34FFFEED34FFFDEC34FFFC9000AB12E9 +:102A4900248490001EE0FCA3E0FDA3E0FEA3E0FFC8 +:102A59009000B3E0F8A3E0F9A3E0FAA3E0FBC31206 +:102A690023C7403C9000B3E0FCA3E0FDA3E0FEA334 +:102A7900E0FF90001EE0F8A3E0F9A3E0FAA3E0FB71 +:102A8900EF9BFFEE9AFEED99FDEC98FC9000B312D6 +:102A99002484900023E004F07006900022E004F002 +:102AA900900389E0FF9003AAE475F001122248FC23 +:102AB900C3E5F09FEC9400403A900351E0FEA3E097 +:102AC900FFD3900375E09F900374E09E4025D39057 +:102AD900007BE0951B90007AE0951A401690007CE7 +:102AE900E0FF9003B3E004F09F4008EFF09000B9D5 +:102AF9007401F0123394E47FE87E03FDFC9000AB8F +:102B0900E0F8A3E0F9A3E0FAA3E0FB122279900030 +:102B19001AE0F8A3E0F9A3E0FAA3E0FB122304907A +:102B290003A8EEF0A3EFF0900028E0FEA3E0FFC3B6 +:102B3900E49FFFE49EFE3395E0FDFC90037BE0F803 +:102B4900A3E0F9A3E0FAA3E0FBC31223B1400C20F0 +:102B59001509201A06201B03301C02C25A121056EE +:102B69009000AAE0FF7E00900325EEF0FAA3EFF0B3 +:102B7900FB90001AE0FCA3E0FDA3E0FEA3E0FF90B8 +:102B89000343122484CFEBCF7E00E4FCFD90034382 +:102B9900E0F8A3E0F9A3E0FAA3E0FB122279E47BD1 +:102BA90064FAF9F81223049003761224849000221F +:102BB900E0FFA3E0900364CFF0A3EFF09003A8E057 +:102BC900FFA3E09003B0CFF0A3EFF090038EE0FCF9 +:102BD900A3E0FDA3E0FEA3E0FF90039712248490F5 +:102BE90000ABE0FCA3E0FDA3E0FEA3E0FF900358E7 +:102BF9001224849003ACE0FCA3E0FDA3E0FEA3E073 +:102C0900FF9003341224849003A6E0FFA3E090030D +:0A2C19002BCFF0A3EFF0126E78222B +:1079C3001239FC90038A122443900327E0F8A3E0C2 +:1079D300F9A3E0FAA3E0FBC31223C75014900327D3 +:1079E300E0FCA3E0FDA3E0FEA3E0FF90038A1224E2 +:0579F30084126E7822F1 +:1035EC009005FCE4F0A37464F01239FC124D0390C6 +:1035FC0005FCEEF0A3EFF04E702E9000AA04F090B4 +:10360C0003A8E4F0A3740AF0E47B64FAF9F89000E0 +:10361C001AE0FCA3E0FDA3E0FEA3E0FF122304905C +:10362C0000AB1224840236F6900327E0FCA3E0FDE5 +:10363C00A3E0FEA3E0FF90038AE0F8A3E0F9A3E087 +:10364C00FAA3E0FBC31223C7400E9005FCE0FEA3D7 +:10365C00E0FF1242700236F6E47F64FEFDFC90003F +:10366C001AE0F8A3E0F9A3E0FAA3E0FB12227990A8 +:10367C0000ABE0F8A3E0F9A3E0FAA3E0FB1223040B +:10368C00C8ECC8C9EDC9CAEECACBEFCB90034CE06D +:10369C00FF9005FDE02FFF9005FCE03400FEE4FCFC +:1036AC00FDD31223C740439005FCE0FAA3E0FB7C5A +:1036BC00007D0AFFCEEACE1221E19003A8EEF0A322 +:1036CC00EFF0CFEBCFCEEACEE4FD90001AE0F8A3FA +:1036DC00E0F9A3E0FAA3E0FB122279E47B64FAF9A7 +:1036EC00F81223049000AB122484E47830F608F628 +:1036FC007838F608F6783412249000000000900315 +:10370C00AC1224A900000000E490039CF0A3F090FC +:10371C0003B2F0A3F09003AAF0A3F0C25BC257C2AD +:10372C00599003A5F09003A4F0783AF608F6783295 +:10373C00F608F69003A8E0FFA3E09003B0CFF0A347 +:10374C00EFF0C25AC2569003B41224A90000000034 +:10375C00E49003A6F0A3F090038E1224A9000000BD +:10376C00009003971224A9000000009003921224E9 +:10377C00A900000000E490039BF0900396F0C2585F +:10378C0090038A1224A9000000009000AAE0FF7E9A +:10379C0000900325EEF0FAA3EFF0FB90001AE0FC8A +:1037AC00A3E0FDA3E0FEA3E0FF900343122484CF2B +:1037BC00EBCF7E00E4FCFD900343E0F8A3E0F9A31B +:1037CC00E0FAA3E0FB122279E47B64FAF9F8122305 +:1037DC00049003761224849000ABE0FCA3E0FDA3DC +:1037EC00E0FEA3E0FF9003581224849003341224CB +:1037FC00A900000000E490032BF0A3F0126E7822D5 +:10339400305A09305B06C25AD2568021305B1E90E7 +:1033A40003A87403F0A374E8F090001AE0FCA3E00F +:1033B400FDA3E0FEA3E0FF9000AB1224843056038B +:1033C4000234449000B7E0FCA3E0FD900022E0FE4C +:1033D400A3E0FFC39DFDEE9CFCC390035DE09D90C4 +:1033E400035CE09C40030235EB205B030235EB12E7 +:1033F4006AFEE4FCFDFE90001AE0F8A3E0F9A3E005 +:10340400FAA3E0FB122279ECC0E0EDC0E0EEC0E0EC +:10341400EFC0E09000B7E0FEA3E0FF126AFECBEF3E +:10342400CBE4FAF9F8D0E0FFD0E0FED0E0FDD0E044 +:10343400FC1223049003B41224840235A00235A0A4 +:10344400C256E47F32FEFDFC900016E0F8A3E0F9DA +:10345400A3E0FAA3E0FB122279E47B64FAF9F81200 +:1034640023049002B71224849002B7E0FCA3E0FD89 +:10347400A3E0FEA3E0FF9003B4E0F8A3E0F9A3E027 +:10348400FAA3E02FFFEA3EFEE93DFDE83CFC900094 +:1034940016E0F8A3E0F9A3E0FAA3E0FBC31223C704 +:1034A40040030235EB900342E0FFE4FCFDFE900094 +:1034B4001AE0F8A3E0F9A3E0FAA3E0FB122279E40E +:1034C4007B64FAF9F81223049002B7122484900260 +:1034D400B7E0FCA3E0FDA3E0FEA3E0FF90001AE048 +:1034E400F8A3E0F9A3E0FAA3E02FFFEA3EFEE93DEA +:1034F400FDE83CFC9003B4E0F8A3E0F9A3E0FAA3F0 +:10350400E0FBD31223C7402E9002B7E0FCA3E0FDFA +:10351400A3E0FEA3E0FF90001AE0F8A3E0F9A3E023 +:10352400FAA3E02FFFEA3EFEE93DFDE83CFC9003F0 +:10353400B412248480669002B7E0FCA3E0FDA3E00B +:10354400FEA3E0FF9003B4E0F8A3E0F9A3E0FAA33C +:10355400E02FFFEA3EFEE93DFDE83CFC90001AE066 +:10356400F8A3E0F9A3E0FAA3E0FBD31223C7402CAD +:103574009002B7E0F8A3E0F9A3E0FAA3E0FB90001F +:103584001AE0FCA3E0FDA3E0FEA3E09BFFEE9AFE9D +:10359400ED99FDEC98FC9003B41224849003B4E0FC +:1035A400FCA3E0FDA3E0FEA3E0FF90001A12248434 +:1035B4009003A87403F0A374E8F090001AE0FCA34D +:1035C400E0FDA3E0FEA3E0FF9000AB122484900092 +:1035D40022E0FFA3E09000B7CFF0A3EFF09003B494 +:0835E4001224A90000000022DE +:106AFE00C3900386E09F900385E09E5004795580F5 +:106B0E0048C3900384E09F900383E09E5016900349 +:106B1E0049E0FCA3E0FD1221F390033AE0A3E0C3A9 +:106B2E009FF98025C3900382E09F900381E09E50E1 +:106B3E0016900347E0FCA3E0FD1221F3900338E02A +:0D6B4E00A3E0C39FF980027964CFE9CF2254 +:10105600E49002B7F0A3F0FFA3F0A3F0A3F090038F +:101066009EE0645A6028A2AF924DC2AF75A701E414 +:10107600EF90124093FE749E2FF582E43403F583BD +:10108600EEF00FEFB406E9E4F5A7A24D92AF900398 +:10109600A3E064C36003021C48FF749E2FF582E43C +:1010A6003403F583E0FEEF907F81936E6003021CAC +:1010B600480FEFB406E48003021C48900028E0FEC7 +:1010C600A3E0FFEE3395E0FDFC90037BE0F8A3E0A0 +:1010D600F9A3E0FAA3E0FBD31223B150030214F103 +:1010E6002058030214F1E47830F608F67838F6084A +:1010F600F69000AAE0D394634003021C48C3900311 +:1011060080E0951D90037FE0951C401E90034BE008 +:10111600FF7E007C007D0A1221E1D39003A9E09FA7 +:101126009003A8E09E50030213C930575A90034B10 +:10113600E0FBFF7E007C007D0A1221E19003A9E01E +:101146002496FD9003A8E03400FCC3ED9FEC9E506E +:1011560036EBFF7E007C007D0A1221E1EEF0A3EF64 +:10116600F0CFEBCFE4FDFE90001AE0F8A3E0F9A380 +:10117600E0FAA3E0FB122279E47B64FAF9F8122381 +:10118600049000AB12248490034DE0FCA3E0FDA381 +:10119600E0FEA3E0FF90032DE0F8A3E0F9A3E0FA58 +:1011A600A3E0FBD31223C7500302123090034DE095 +:1011B600F8A3E0F9A3E0FAA3E0FB90032DE0FCA37B +:1011C600E0FDA3E0FEA3E09BFBEE9AFAED99F9ECB5 +:1011D60098F8900387E0FFE4FCFDFE122279E47B99 +:1011E6000AFAF9F8122279EEC0E0EFC0E090001496 +:1011F600E0FEA3E0FFC3900069E09FFF900068E077 +:101206009EFECBEFCBFAE4F9F8D0E0FFD0E0FE1279 +:101216002304EFC0E0AF13CBEFCBE4FAF9F8D0E04C +:10122600FF122304900392122484C3900063E09576 +:101236001DFF900062E0951CFE900387E0FD7C0098 +:1012460012252CE47B0AFAF9F8122279EEC0E0EFB7 +:10125600C0E0900014E0FEA3E0FFC3900069E09FA9 +:10126600FF900068E09EFECBEFCBFAE4F9F8D0E001 +:10127600FFD0E0FE1223049002BC12248490039255 +:10128600E0FCA3E0FDA3E0FEA3E0FF9002BCE0F8D3 +:10129600A3E0F9A3E0FAA3E0FBC31223C75014901E +:1012A60002BCE0FCA3E0FDA3E0FEA3E0FF900392F6 +:1012B600122484E47F24FEFDFC90001AE0F8A3E0EB +:1012C600F9A3E0FAA3E0FB122279900392E0F8A3D7 +:1012D600E0F9A3E0FAA3E0FB122279EEC0E0EFC04A +:1012E600E09000AAE0FFC374659FFFE49400FECB84 +:1012F600EFCBFAE4F9F8D0E0FFD0E0FE122304E4E5 +:101306007B0AFAF9F81223049003921224849000BF +:101316006AE0FEA3E0FFEE3395E0FDFC90038EE06D +:10132600F8A3E0F9A3E0FAA3E0FBD31223B1406CE3 +:1013360090038EE0FCA3E0FDA3E0FEA3E0FFC8EC73 +:10134600C8A3E0FCA3E0FDA3E0FEA3E0FF12230494 +:10135600ECC0E0EDC0E0EEC0E0EFC0E090006AE077 +:10136600FEA3E0FFFBCAEECAEA3395E0F9F8900364 +:101376008EE0FCA3E0FDA3E0FEA3E0C39BFFEE9A94 +:10138600FEED99FDEC98FCD0E0FBD0E0FAD0E0F958 +:10139600D0E0F8122279900392122484900063E040 +:1013A60024FFFF900062E034FFFEC3E51D9FE51CAD +:1013B6009E50030214839003921224A90000000099 +:1013C6000214839003A8E0FEA3E0FF7C007D0A12CE +:1013D60021F3EF2401FFE43EFE9000AAE0FB7A0031 +:1013E600C39FEA9E503C9003A8E0FEA3E0FF7C006A +:1013F6007D0A1221F3EB2401FDEA33FCD3ED9FECC9 +:101406009E401FE47F24FEFDFC90001AE0F8A3E056 +:10141600F9A3E0FAA3E0FB12227990039212248446 +:10142600805B9000ABE0F8A3E0F9A3E0FAA3E0FB51 +:1014360090001AE0FCA3E0FDA3E0FEA3E0C39BFF3F +:10144600EE9AFEED99FDEC98FCE47B107A0EF9F825 +:10145600122279EEC0E0EFC0E09000AAE0FFC3746C +:10146600649FFFE49400FECBEFCBFAE4F9F8D0E0FA +:10147600FFD0E0FE12230490039212248490038E80 +:10148600E0FCA3E0FDA3E0FEA3E0FFFBCAEECAC9B1 +:10149600EDC9C8ECC8A3E0FCA3E0FDA3E0FEA3E011 +:1014A600FF1223049002BAEEF0A3EFF020590330A6 +:1014B6005B0D900388E0FF9002BAE4F0A3EFF09092 +:1014C60003A6E475F001122248FEC39002BBE09524 +:1014D600F09002BAE09E4003021C489000AAE00485 +:1014E600F0E49003A6F0A3F0021C48900028E0FE6A +:1014F600A3E0FFC3E49FFFE49EFE3395E0FDFC906E +:10150600037BE0F8A3E0F9A3E0FAA3E0FBC3122310 +:10151600B14003021BE89000AAE094015003021CAC +:1015260048900323E0FEA3E0FFAD137C0012252CB8 +:1015360090034DE0F8A3E0F9A3E0FAA3E0FBC312A1 +:1015460023C7402DD390007BE0951B90007AE09551 +:101556001A501E900357E0FF7E007C007D0A122180 +:10156600E1C39003A9E09F9003A8E09E4003021800 +:101576000B90036CE0FEA3E0FFD3900375E09F9011 +:101586000374E09E500302180B900366E0FCA3E090 +:10159600FDA3E0FEA3E0FF90037BE0F8A3E0F9A340 +:1015A600E0FAA3E0FBD31223B1500302180B7839FB +:1015B600E61846700302180B900397E0FCA3E0FDC3 +:1015C600A3E0FEA3E024D0FFEE3407FEE43DFDE4F5 +:1015D6003CFC90038EE0F8A3E0F9A3E0FAA3E0FB5D +:1015E600C31223B1400302180B900397E0FCA3E05B +:1015F600FDA3E0FEA3E02430FFEE34F8FEED34FF59 +:10160600FDEC34FFFC90038EE0F8A3E0A3E0A3E03A +:10161600D31223B1500302180B90035EE07E00251F +:101626001BFFEE351AFEC3EF783996EE1896400387 +:101636000217FA90039CE0FEA3E0FF9400EE9400EC +:1016460050030217FAEF9401EE9400500890039CA1 +:10165600E4F0A304F090034DE0FCA3E0FDA3E0FE5C +:10166600A3E0FF783412242AD31223C750030217AB +:1016760013900353E0F8A3E0F9A3E0FAA3E0FB908C +:10168600034DE0FCA3E0FDA3E0FEA3E09BFBEE9A86 +:10169600FAED99F9EC98F890039CE0FEA3E0FFE4DC +:1016A600FCFD122279ECC0E0EDC0E0EEC0E0EFC038 +:1016B600E090034DE0F8A3E0F9A3E0FAA3E0FBE82D +:1016C600C0E07834122412D0E0F8C3EF9BFBEE9A08 +:1016D600FAED99F9EC98F8D0E0FFD0E0FED0E0FD05 +:1016E600D0E0FC122304EEC0E0EFC0E09000AAE0D8 +:1016F60024FFFFE434FFFECBEFCBFAE4F9F8D0E0A9 +:10170600FFD0E0FE1223049003921224849000740A +:10171600E0FEA3E0FFC3E51B9FFFE51A9EFE9003D4 +:101726009CE0FCA3E0FD12252CEEC0E0EFC0E0C378 +:101736007839E6951BFF18E6951AFECBEFCBFAE44F +:10174600F9F8D0E0FFD0E0FE122304EEC0E0EFC0CF +:10175600E09000AAE024FFFFE434FFFECBEFCBFAD3 +:10176600E4F9F8D0E0FFD0E0FE1223049002BC12A8 +:101776002484900392E0FCA3E0FDA3E0FEA3E0FF37 +:101786009002BCE0F8A3E0F9A3E0FAA3E0FBC312E1 +:1017960023C750149002BCE0FCA3E0FDA3E0FEA327 +:1017A600E0FF9003921224847838A61A08A61B90AC +:1017B600034DE0FCA3E0FDA3E0FEA3E0FF783412B6 +:1017C6002478E490039CF0A3F0900392E0F8A3E061 +:1017D600F9A3E0FAA3E0FB90038EE0FCA3E0FDA3EF +:1017E600E0FEA3E0FF1223A31222799003921224B3 +:1017F60084021B7690039DE004F0700690039CE043 +:1018060004F0021B767838A61A08A61B90034DE052 +:10181600FCA3E0FDA3E0FEA3E0FF7834122478E405 +:1018260090039CF0A3F090036CE0FEA3E0FFC3904E +:101836000375E09F900374E09E4021900366E0FCF0 +:10184600A3E0FDA3E0FEA3E0FF90037BE0F8A3E0A6 +:10185600F9A3E0FAA3E0FB1223B1501D90001AE0B1 +:10186600FCA3E0FDA3E0FEA3E0FF9003AC122484FA +:10187600E47830F608F60219FA7830E6FE08E6FF54 +:101886002414FDE43EFC900374E0FAA3E0FBD39D30 +:10189600EA9C5011EB2414FDE43AFCD3EF9DEE9C38 +:1018A60050030219FA900374E0FEA3E0FF7830EECD +:1018B600F608EFF62487FFEE34F59002B7F0A3EFB3 +:1018C600F090033EE0FEA3E0FFFBCAEECAE4F9F89F +:1018D6009002B7E0FEA3E0FFEE3395E0FDFC122296 +:1018E60079C8ECC8C9EDC9CAEECACBEFCB90033CA8 +:1018F600E0FEA3E0FFE4C3EF9BFBEE9AFAE499F95E +:10190600E498F89002B7E0FEA3E0FFEE3395E0FD21 +:10191600FC122279E47B107A27F9F8127602C8ECD9 +:10192600C8C9EDC9CAEECACBEFCB900370E0FEA3DF +:10193600E0FFE4FCFDEB2FFFEA3EFEED39FDEC385F +:10194600FC90001AE0F8A3E0F9A3E0FAA3E0FB128A +:101956002279E47BD07A07F9F81223049003AC12BB +:10196600248490001AE0FCA3E0FDA3E0FEA3E0FFC0 +:101976009003ACE0F8A3E0F9A3E0FAA3E0FBD312EE +:1019860023C7401690001AE0FCA3E0FDA3E0FEA3E7 +:10199600E0FF9003AC122484805AE47F06FEFDFC2F +:1019A60090001AE0F8A3E0F9A3E0FAA3E0FB122204 +:1019B60079E47B0AFAF9F81223049003ACE0F8A361 +:1019C600E0F9A3E0FAA3E0FBC31223C75026E47FA5 +:1019D60006FEFDFC90001AE0F8A3E0F9A3E0FAA3E6 +:1019E600E0FB122279E47B0AFAF9F8122304900349 +:1019F600AC1224849003ACE0F8A3E0F9A3E0FAA3C8 +:101A0600E0FB90001AE0FCA3E0FDA3E0FEA3E0C328 +:101A16009BFFEE9AFEED99FDEC98FCE47B0DFAF93E +:101A2600F8122279E47B0AFAF9F81223049000AB43 +:101A3600E0F8A3E0F9A3E0FAA3E0FBC31223C75042 +:101A460020E47F24FEFDFC90001AE0F8A3E0F9A351 +:101A5600E0FAA3E0FB122279900392122484021B7F +:101A6600769000ABE0FCA3E0FDA3E0FEA3E0FF90D0 +:101A760003ACE0F8A3E0F9A3E0FAA3E02FFFEA3E07 +:101A8600FEE93DFDE83CFC90001AE0F8A3E0F9A36E +:101A9600E0FAA3E0FBC3EF9BFFEE9AFEED99FDECA7 +:101AA60098FCE47B64FAF9F81222799003ACE0F82A +:101AB600A3E0F9A3E0FAA3E0FB1223049002B9EF36 +:101AC600F02401FFE433FE9000AAE0FDC39FEE641C +:101AD60080F87480985035ED2401FFE433FE9002BF +:101AE600B9E0FDD3EF9D7480F86E98401FE47F2423 +:101AF600FEFDFC9003ACE0F8A3E0F9A3E0FAA3E056 +:101B0600FB12227990039212248480649000ABE049 +:101B1600FCA3E0FDA3E0FEA3E0FF9003ACE0F8A386 +:101B2600E0F9A3E0FAA3E02FFFEA3EFEE93DFDE877 +:101B36003CFC90001AE0F8A3E0F9A3E0FAA3E0FB6E +:101B4600C3EF9BFFEE9AFEED99FDEC98FCE47B104B +:101B56007A0EF9F8122279EFC0E09000AAE0FFFBB6 +:101B6600E4FAF9F8D0E0FF122304900392122484D9 +:101B760090038EE0FCA3E0FDA3E0FEA3E0FF1223AA +:101B8600A3CBEFCBCAEECAC9EDC9C8ECC8A3E0FC2B +:101B9600A3E0FDA3E0FEA3E0FF1223049002BAEE49 +:101BA600F0A3EFF09003A6E475F001122248FCD3EF +:101BB600E5F09FEC9E400D9000AAE014F0E490033F +:101BC600A6F0A3F030197B90036FE0FF9000AAE027 +:101BD600D39F506E90036AE060689000AA7401F08B +:101BE6008060E47838F608F6783412249000000015 +:101BF60000E47830F608F69000AAE0D3940140425B +:101C0600900372E0FEA3E0FFEE3395E0FDFC335057 +:101C1600319003A8E0FEA3E0FF7C007D0A1221F3C9 +:101C2600CAEECACBEFCB9003B0E0FEA3E0FF7C0088 +:101C36007D0A1221F3D3EF9BEE9A40069000AAE0AC +:101C460014F0E4FFFEFDFC900397E0F8A3E0F9A38F +:101C5600E0FAA3E0FBD31223B14009301806900046 +:101C6600AA7464F09002BAE0FFA3E0900332CFF0CA +:041C7600A3EFF022C6 +:107D2900304C19204306204403304510C24CC2434D +:0D7D3900C244C245C2AF127E861200A622CF +:10000000020D7A021003000000000002100B000035 +:10001000000000021013000000000002101B00008E +:10002000000000021023000000000002102B00005E +:10003000000000021033000000000002103B00002E +:10004000000000021043000000000002104B0000FE +:10005000000000021053000000000002105B0000CE +:10006000000000021063000000000002106B00009E +:10007000000000021073000000000002107B00006E +:10008000000000021083000000000002108B00003E +:10009000000000021093000000000002109B00000E +:1000A0000000000210A3E4F526F525F524F523F55C +:1000B00030F52FF52EF52DF52C120D5E209803024C +:1000C000018E7400252BF582E43402F583E599F066 +:1000D000052BE52BC3948C4003E4F52BE52BB401F1 +:1000E0000D900200E0645A700302018C806BE52BD6 +:1000F000B40214900201E064A56002805CE4F53172 +:10010000F532F52202018C900202E0FF7E00240904 +:10011000FDEE33FCAB2B7A00C3EB9DEC6480F874EE +:1001200080985062EF2407FFEE33FED3EB9FEE641E +:1001300080F8748098501574FF252BF582E4340103 +:10014000F583E02532F532E43531F531E52BB405A0 +:100150000D900204E064076033E4F52B802EE52B5C +:1001600064067028900205E0FF6406601FEF6407D4 +:10017000601AEF64086015EF64096010EF640A60AC +:100180000B432230800653B1F8120A9DC298309971 +:100190004453B1F8900202E02408FFE433FEC3E5C3 +:1001A0002B9FEE6480F87480984013E4F586D29C0F +:1001B000F52B900200F0A3F0A3F0D2028015052BDE +:1001C000E4F586C29C7400252BF582E43402F583A5 +:1001D000E0F599C299E52C640A60030200BC53B1B2 +:1001E000F82002030200BCC202F52C12000002003B +:1001F000BCC200900206E0FFC395214014E5212413 +:1002000004FDE433FCD3EF9DEC6480F874809840E7 +:100210000A900206E060047405F022900206E0F500 +:1002200021E4F0900202E070152526F526E525343C +:1002300002F525E43524F524E43523F52322E521D0 +:100240005403F50AE4F508F509900202E0FD7C008C +:10025000C3E5099DE5089C503274072509F582E441 +:100260003402F583E0FBAF0A7E00120638E5092F61 +:10027000FFE5083EFE74002FF58274003EF583EB27 +:10028000F00509E50970C2050880BEE50A6403604F +:100290000302044F751D551208955003020386E4AE +:1002A000FF7E02FDFCAB26AA25A924A8231207186D +:1002B000401AE5269400F526E5259402F525E52467 +:1002C0009400F524E5239400F5238009E4F526F550 +:1002D00025F524F523E4F50F30015E2526F50EE51E +:1002E000253410F50DE43524F50CE43523F50BE445 +:1002F000252AFFE529340CFEE43528FDE43527FCEA +:10030000AB0EAA0DA90CA80BC31207184040E42598 +:100310002AFBE529340CFAE43528F9E43527F8C33B +:10032000E50E9BF50EE50D9AF50DE50C99F50CE53E +:100330000B98F50B750F018015E42526F50EE525C4 +:100340003484F50DE43524F50CE43523F50B751DE7 +:1003500055AF0EAE0DAD0CAC0B850F15120B7EAF6D +:100360000EAE0DAD0CAC0B850F15120C8C500E1291 +:10037000089540129002067403F002044C900206A5 +:100380007402F002044CE4F50A75F004E50AA424B2 +:1003900002F582E5F03400F583E0FFE4FCFDFE7831 +:1003A0001012073CC004C005C006C00775F004E584 +:1003B0000AA42403F582E5F03400F583E0FFE4FCB1 +:1003C000FDFE781812073CD003D002D001D000EF18 +:1003D0004BFFEE4AFEED49FDEC48FCC004C005C0F1 +:1003E00006C00775F004E50AA42401F582E5F0349F +:1003F00000F583E0FFE4FCFDFE780812073CD00323 +:10040000D002D001D000EF4BFBEE4AFAED49F9ECF7 +:1004100048F875F004E50AA42400F582E5F03400FC +:10042000F583E0FFEB4FFFEAFEE9FDE8FCE5302F46 +:10043000F530E52F3EF52FE52E3DF52EE52D3CF56B +:100440002D050AE50A64806003020389E4F51D2294 +:10045000E4F526F525F524F523F530F52FF52EF5F1 +:100460002DF52AF529F528F527900209E0FFE4FC8F +:10047000FDFE781012073CC004C005C006C007A3EB +:10048000E0FFE4FCFDFE781812073CD003D002D058 +:1004900001D000EF4BFFEE4AFEED49FDEC48FCC0F9 +:1004A00004C005C006C007900208E0FFE4FCFDFEA2 +:1004B000780812073CD003D002D001D000EF4BFBEC +:1004C000EE4AFAED49F9EC48F8900207E0FFEB4FED +:1004D000F52AEAF529E9F528E8F527200006900233 +:1004E00006740AF0E4FF7E78FDFCAB2AAA29A9284D +:1004F000A827D312071840052001028017E4FF7EC9 +:10050000ECFDFCAB2AAA29A928A827D3120718407A +:100510000A3001079002067401F022E4900206F00E +:10052000F521751D55F515FF7E0EFDFC120B7EE4C1 +:10053000F515FF7E0EFDFC120C8C502B30012E7534 +:100540001BA5E4F51C7FFF7E0FFDFC120B15E4F5E7 +:100550001B7FFF7E0FFDFC120D94EF64A5600E90D3 +:1005600002067403F080069002067402F0E4F51DA2 +:10057000900206E06003020631FB7A02F9F8AF2A26 +:10058000AE29AD28AC271206868F09E4F508E508E8 +:10059000C395094003020637E4F50A300107F50E5A +:1005A000750D108006E4F50E750D84F50CF50BE560 +:1005B0000825E0FEE4FCFD250EF50EE50D3EF50DEB +:1005C000ED350CF50CEC350BF50B300135E5092458 +:1005D000FEFBE434FFFAED34FFF9EC34FFF8AF082A +:1005E000E4FED3120718501A750A01E5082402FF29 +:1005F000C3EF9509FFEF25E0FEE4F50E8E0DF50C37 +:10060000F50B751D55AF0EAE0DAD0CAC0B850A1577 +:10061000120B7EAF0EAE0DAD0CAC0B850A15120C95 +:100620008C40069002067402F0E4F51D05080205F0 +:100630008E9002067405F022EF8DF0A4A8F0CF8C06 +:10064000F0A428CE8DF0A42EFE2275F0087582004D +:10065000EF2FFFEE33FECD33CDCC33CCC58233C587 +:10066000829BED9AEC99E58298400CF582EE9BFE18 +:10067000ED9AFDEC99FC0FD5F0D6E4CEFBE4CDFA73 +:10068000E4CCF9A88222B800C1B90059BA002DEC17 +:100690008BF084CFCECDFCE5F0CBF97818EF2FFFAF +:1006A000EE33FEED33FDEC33FCEB33FB10D7039957 +:1006B0004004EB99FB0FD8E5E4F9FA227818EF2F04 +:1006C000FFEE33FEED33FDEC33FCC933C910D70523 +:1006D0009BE99A4007EC9BFCE99AF90FD8E0E4C942 +:1006E000FAE4CCFB2275F010EF2FFFEE33FEED3372 +:1006F000FDCC33CCC833C810D7079BEC9AE899409F +:100700000AED9BFDEC9AFCE899F80FD5F0DAE4CD00 +:10071000FBE4CCFAE4C8F922EB9FF5F0EA9E42F044 +:10072000E99D42F0E89C45F022E8600FECC313FC21 +:10073000ED13FDEE13FEEF13FFD8F122E8600FEF8B +:10074000C333FFEE33FEED33FDEC33FCD8F122EC86 +:100750008EF0A4CCC5F0CCCDF8EFA4CEC5F02DFD25 +:10076000E43CFCE8A42EC8C5F03DFDE43CFCEFA44D +:10077000FFE5F028FEE43DFDE43CFC22E4F50853EF +:10078000B1F8E508C3943A501FE4F50AAF08FE7CBF +:1007900002FD12074FE42FF510EE3410F50FE43D83 +:1007A000F50EE43CF50D8021750A01AF087E007C52 +:1007B000027D0012074FE42FF510EE348CF50FED9B +:1007C00034FFF50EEC34FFF50D751D55AF10AE0F6F +:1007D000AD0EAC0D850A15120B7EAF10AE0FAD0E2F +:1007E000AC0D850A15120C8C4003020883E4F50B4E +:1007F000F50CAE0BAF0CE4FCFDFB7A02F9F8D3125A +:1008000007185003020886AF087E007C027D0012A4 +:10081000074FA804A905AA06AB07E4250CFFE50BC2 +:100820003484FEE433FDE433FCEB2FFFEA3EFEE9C3 +:100830003DFDE83CFCE4F51B120D948F09E50C2509 +:1008400010FFE50B350FFEE4350EFDE4350DFC859C +:10085000091B850A1C120B15E50C2510FFE50B354D +:100860000FFEE4350EFDE4350DFC850A1B120D94D8 +:10087000EF650960037F0222050CE50C7002050B91 +:100880000207F27F01220508E508C3943C500302E9 +:10089000077F7F0022D203E4F510F511AE10AF11EF +:1008A000E4FCFDFB7A02F9F8D312071850030209A1 +:1008B0008CE4F51630015E2526F515E5253410F596 +:1008C00014E43524F513E43523F512E4252AFFE575 +:1008D00029340CFEE43528FDE43527FCAB15AA14B9 +:1008E000A913A812C31207184040E4252AFBE529E2 +:1008F000340CFAE43528F9E43527F8C3E5159BF5FF +:1009000015E5149AF514E51399F513E51298F51207 +:100910007516018015E42526F515E5253484F514B2 +:10092000E43524F513E43523F512AF15AE14AD13F9 +:10093000AC1274002511F58274003510F583E0F5D2 +:100940001B85161C120B15AF15AE14AD13AC12851A +:10095000161B120D9474002511F58274003510F5E4 +:1009600083E06F6004C2038023E5262401F526E4BA +:100970003525F525E43524F524E43523F523051143 +:10098000E511600302089C051002089CA203227E68 +:10099000007D007C00900209E0FFE4781012073C23 +:1009A000C004C005C006C007A3E0FFE4FCFDFE785C +:1009B0001812073CD003D002D001D000EF4BFFEE5D +:1009C0004AFEED49FDEC48FCC004C005C006C00766 +:1009D000900208E0FFE4FCFDFE780812073CD0031B +:1009E000D002D001D000EF4BFBEE4AFAED49F9EC12 +:1009F00048F8900207E0FFEB4FFFEAFEE9FDE8FC54 +:100A0000AB30AA2FA92EA82DC31207186007900299 +:100A1000067408F022E4900206F022E4F508F509D5 +:100A2000900202F0900205740BF0900203E0FFA325 +:100A3000E0900203F0A3EFF07F02900202E0FE24B8 +:100A400007FDE433FCEFC39DEC6480F8748098509C +:100A50001774002FF582E43402F583E02509F509C7 +:100A6000E43508F5080F80D274072EF582E43402CD +:100A7000F583E509F0E508FF900202E02408F5821D +:100A8000E43402F583EFF0C202E4F586C29C740000 +:100A9000252BF582E43402F583E0F59922E4F52B69 +:100AA000900202E0FD2408F582E43402F583E0FEC2 +:100AB00074072DF582E43402F583E07C002400FF06 +:100AC000EC3EFEEF65327003EE6531600343228039 +:100AD000E5226006900206F08038900205E0FEB440 +:100AE0000605120CD5802BEEB407051204508022A7 +:100AF000900205E0B408051201F18016900205E0AD +:100B0000B4090512098F800A900205E0B40A0312A5 +:100B10000BDE020A1B8F1A8E198D188C17851CA7E5 +:100B2000AF1AAE19AD18AC1778081207298FF7E580 +:100B30001AFF8FFB851BFC75F26E20AF3D75F30528 +:100B4000E5A7651C703475F40AE51DB4552C75F5E0 +:100B500009AF1AAE19AD18AC177808120729A80406 +:100B6000A905AA06AB07AFF7E4FCFDFEC312071800 +:100B7000700875F6060000000000E4F5A7228F1447 +:100B80008E138D128C118515A7AF14AE13AD12AC58 +:100B90001178081207298FF775F2E620AF3C75F33C +:100BA00005E5A76515703375F40AE51DB4552B7579 +:100BB000F509AF14AE13AD12AC117808120729A8CD +:100BC00004A905AA06AB07AFF7E4FCFDFEC31207B4 +:100BD00018700775F60600000000E4F5A722E490FF +:100BE0000206F0752C0A751D55F515FF7E0EFDFCED +:100BF000120B7EE4F515FF7E0EFDFC120C8C502AC4 +:100C0000200130751B5AE4F51C7FFF7E0FFDFC129E +:100C10000B15E4F51B7FFF7E0FFDFC120D94EF64B6 +:100C20005A6010900206740380059002067402F068 +:100C3000E4F52CE4F51D2253B1F8120DACE4F51BDC +:100C40007FFF7E0FFDFC120D94EF645A7026C201E7 +:100C5000751D55120D3850028005120D385005E4EF +:100C6000F51D8024E4F51D758E55438702000000B4 +:100C7000000080F0E4F51B7FFF7E0FFDFC120D9459 +:100C8000BFA505D2010200A6121000228F148E13F8 +:100C90008D128C11D2048515A7E4F516F517AE1642 +:100CA000AF17E4FCFDFB7A02F9F8D3120718401FD6 +:100CB000E5172514FFE51635138F82F583E493605D +:100CC00004C204800A0517E51770D3051680CFE427 +:100CD000F5A7A20422E4900206F0A3E0FFB4490FB6 +:100CE000A3E0B4410AA3E0B45005C201D20022EF50 +:100CF000B44911900208E0B4530AA3E0B45005D2FD +:100D000001D20022900206740AF0C200227580F817 +:100D100075E18F75E9C875908075E27F75EA807519 +:100D2000A0E075E33F75EBC075B01975E4E675ECAE +:100D3000194380C043E98022D20312077CEF701967 +:100D4000F515FF7E0EFDFC120B7EE4F515FF7E0E01 +:100D5000FDFC120C8C92038002C203A2032275C414 +:100D600032E4F587759850759D7F759C64759E0477 +:100D7000439D80759A0A759BFF2275817F75B20825 +:100D8000000000000000000043B20478FFE4F6D841 +:100D9000FD020C378F1A8E198D188C17E4851BA74E +:100DA000851A8285198393FFE4F5A722120DB512E7 +:100DB0000D0DC20022E4F5A8F5A9F5AA2200000055 +:100DC0000000000000000000000000000000000023 +:100DD0000000000000000000000000000000000013 +:100DE0000000000000000000000000000000000003 +:100DF00000000000000000000000000000000000F3 +:100E000000000000000000000000000000000000E2 +:100E100000000000000000000000000000000000D2 +:100E200000000000000000000000000000000000C2 +:100E300000000000000000000000000000000000B2 +:100E400000000000000000000000000000000000A2 +:100E50000000000000000000000000000000000092 +:100E60000000000000000000000000000000000082 +:100E70000000000000000000000000000000000072 +:100E80000000000000000000000000000000000062 +:100E90000000000000000000000000000000000052 +:100EA0000000000000000000000000000000000042 +:100EB0000000000000000000000000000000000032 +:100EC0000000000000000000000000000000000022 +:100ED0000000000000000000000000000000000012 +:100EE0000000000000000000000000000000000002 +:100EF00000000000000000000000000000000000F2 +:100F000000000000000000000000000000000000E1 +:100F100000000000000000000000000000000000D1 +:100F200000000000000000000000000000000000C1 +:100F300000000000000000000000000000000000B1 +:100F400000000000000000000000000000000000A1 +:100F50000000000000000000000000000000000091 +:100F60000000000000000000000000000000000081 +:100F70000000000000000000000000000000000071 +:100F80000000000000000000000000000000000061 +:100F90000000000000000000000000000000000051 +:100FA0000000000000000000000000000000000041 +:100FB0000000000000000000000000000000000031 +:100FC0000000000000000000000000000000000021 +:100FD0000000000000000000000000000000000011 +:100FE0000000000000000000000000000000000001 +:100FF00000000000000000000000000000000000F1 +:101C7A00021FC2E86480F8E933E83360110460F0B7 +:101C8A00ED33EC337009E8FCE9FDEAFEEBFF2204D0 +:101C9A0060DED3EB9FEA9EE99DE8C2E78CF0C2F7CB +:101CAA0095F0400CE8CCF8E9CDF9EACEFAEBCFFB97 +:101CBA00121F8D85D0F05804700320D5B3E8047044 +:101CCA00075002B2D5021FCC92D5EC0460F7E4CCDF +:101CDA00C0E0C398F8603B94186008400DD0E0FB60 +:101CEA00021FA4E4FBFAC9FC8028E830E406E4C930 +:101CFA00FBE4CAFCE830E305E4C9CACBFCE85407B4 +:101D0A006010F8C3E913F9EA13FAEB13FBEC13FCBE +:101D1A00D8F130F52FC3E49CFCEF9BFFEE9AFEED61 +:101D2A0099FDD0E0FBEF4E4D4C701222DB03021FEF +:101D3A00C9EC2CFCEF33FFEE33FEED33FDED30E75B +:101D4A00EB021FA4EF2BFFEE3AFEED39FDD0E0FBCC +:101D5A0050130BBB0003021FCCED13FDEE13FEEF75 +:081D6A0013FFEC13FC021FA49F +:101D7200EC4D6011E8497017ED33EC3304600DE46B +:101D8200FCFFFEFD22E933E8330470F8021FC212A1 +:101D92001F8D58046009E4CC2481500628500902A2 +:101DA2001FCC284003021FC9C0E0EB4A7044B9802F +:101DB20006D0E0FB021FB8EF4E701CBD8008EBFF9F +:101DC200EAFEE9FD80EBE98DF0A4FEE5F0021E5B80 +:101DD200E9CDF9EAFEEBFFEF89F0A4FCE5F0CE894C +:101DE200F0A42EFFE435F0CD89F0A42DFEE435F009 +:101DF2008067EF4E7005BD80D780C3EF8BF0A4AC37 +:101E0200F0EE8BF0A42CFCE435F0F8EF8AF0A42C71 +:101E1200E5F038FCE433CB8DF0A42CFCE5F03BF884 +:101E2200EE8AF0A42CFCE5F038F8E433CF89F0A474 +:101E32002CFCE5F038CF3400CE89F0A42FFFE5F07A +:101E42003EFEE433C98DF0A42EFEE5F039CD8AF0D2 +:101E5200A42FFFE5F03EFEE43DFD33D0E0FB50074A +:101E62000BBB000F021FCCEC2CFCEF33FFEE33FE5A +:061E7200ED33FD021FA488 +:101E7800021FCCEC5D046005E859047003021FC220 +:101E8800121F8D580460F6EC4860F2EC7004FDFEF9 +:101E9800FF22C860DB2481C85009C398600250063D +:101EA800021FC99850CAF582E9294B4A7005AB82CE +:101EB800021FB875F0007C1A7880C3EF9BEE9AED8C +:101EC80099400DC3EF9BFFEE9AFEED99FDE842F0B5 +:101ED800DC23ACF0D0E0FFD0E0FED0E0FDAB822008 +:101EE800E7101BEB60BAEC2CFCEF33FFEE33FEED92 +:101EF80033FD021FA4E803F830E705C0F075F000D1 +:101F0800EF2FFFEE33FEED33FD40B830E7C280AA75 +:101F180075F020800E75F010800575F0087D007E44 +:101F2800007F003392D530D5031223A3EC33401041 +:101F3800EF33FFEE33FEED33FDEC33FCD5F0ED224D +:0E1F4800E5F0247EA2D513CC92E7CDCEFF2289 +:101F5600EDD2E7CD33EC3392D524814006E4FFFE83 +:101F6600FDFC22FCE4CFCECDCC24E0501174FF80E2 +:101F7600EDC3CC13CCCD13CDCE13CECF13CF04707F +:071F8600F030D5DE0223A3B9 +:102C2300E51524BAF582E43402F583E00515229014 +:102C330002B73054039002BAE475F0011224E6029D +:102C43002189204DE97F2ED24D8018EF540F249017 +:102C5300D43440D4FF30510BEF24BFB41A005003D7 +:102C63002461FFE516600215160519E519700205C2 +:102C73001830540E9002B7E475F0011224E6EF0207 +:102C830021CF027F517403D2548003E4C254F5155B +:102C93009002B71224FDE4F516F518F519E5166050 +:102CA300077F20122C6680F57517FFC24EC24DC2F6 +:102CB3004FC250C252C253C255122C32FF700D3054 +:102CC30054057F00122C77AF19AE1822B4255FC2CA +:102CD300D5C251122C32FF24D0B40A00501A75F019 +:102CE3000A781630D50508B6FF0106C6A426F620D5 +:102CF300D5047002D25080D924CFB41A00EF500407 +:102D0300C2E5D251022F69D24E80C6D24D80C0D2C5 +:102D13004F80BCD2D580BAD25280B47F20122C66A9 +:102D2300204F077401B5160040F1122C23FF122C1B +:102D330066022CA0D255D2538095122C23FB122C61 +:102D430023FA122C23F94A4B700679677A307BFFFA +:102D5300204F2EE516602A7E008E82758300122195 +:102D6300A260060EEE651770F0C2D5EBC0E0EAC0B4 +:102D7300E0E9C0E0EE122FCAD0E0F9D0E0FAD0E0EB +:102D8300FB122189FF60AAEBC0E0EAC0E0E9C0E0E2 +:102D9300122C66D0E02401F9D0E03400FAD0E0FB35 +:102DA300E5170460DCD517D98087D24F80A2122F94 +:102DB300AC60F7E517700104121FD7A917600DE582 +:102DC30017600914F517123054EF60F3EA30E70285 +:102DD300F404C3995079EAF425170430E701E404B5 +:102DE300F517800D122FAC60C1EA05172517121FC6 +:102DF300D7EA9002E6F030E701E4251704D517047B +:102E030020520114122FCAE4C0E01230549002E69B +:102E1300E0601320E70714F0122C4E802204F0D058 +:102E2300E014C0E07F00122C4EE5176007122C451A +:102E33001517800B305203122C45D0E0022CA0D082 +:102E4300E00480C4122FAC609EE51704121FD790D4 +:102E530002E6EAF0E5172052026001042404122F6F +:012E6300CAA4 +:102E640074FF04C0E0123054122C4EE517205202B5 +:102E74006003122C45D0E0B517E87F45122C58901A +:102E840002E6E07F2B30E7047F2DF404C0E0122C2F +:102E940066D0E075F00A84C0F0122C4FD0E0122CFA +:102EA4004F022CA0791080027908C253C2558008C1 +:102EB400D2D5790A8004790AC2D5E517047002F5DF +:102EC40017E4FAFDFEFF122C23FC7B08204E13129C +:102ED4002C23FD7B10304D0A122C23FE122C23FFD1 +:102EE4007B20EC3382D592D55013C3E4304D069F3A +:102EF400FFE49EFEE4204E039DFDE49CFCE4CBF83D +:102F0400C24EEC700CCFCECDCCE824F8F870F38030 +:102F140017C3EF33FFEE33FEED33FDEC33FCEB333D +:102F2400FB994002FB0FD8E9EB304E05F8D0E0C422 +:102F340048B24EC0E00AEC4D4E4F78207B0070C280 +:102F4400EAB5170040BCC0E0122FCCD0F0D0E0208E +:102F54004E04C4C0E0C4B24EC0F0122C4FD0F0D521 +:102F6400F0EB022CA01225062D3D532EA8582D0E51 +:102F74004C2D0A422EAC4F2EB4442EB4492D23437B +:102F84002EBA552DE7462E47452DB1473087502D93 +:102F9400122D2D162E2D392B2D1A232D372030705E +:102FA4002A2CD24800002D31E517B4FF037517060B +:102FB400122C23FC122C23FD122C23FE122C23FF93 +:102FC4009002DF022014790AA2D52050143052094D +:102FD400B910020404B9080104A2D5205302500117 +:102FE40004204F68924FB516005034C0E07F203063 +:102FF40050197F30A24F72537252500F123023C2B5 +:103004004FC253C252C2557F30800F305203E9C0C1 +:10301400E0122C66305203D0E0F9D0E0B516CC3083 +:1030240052177F30B9100C122C667F583051077F2D +:10303400788003B90803122C66304F057F2D022CCB +:10304400667F202055F87F2B2053F322924F80CFA8 +:103054007F00B40700500B24DFF582E43402F583CB +:10306400E0FF22286E756C6C2900D24E122C23309E +:103074004EF8C24E781630D50108F6022CD22D50E7 +:10308400434958122C232403B405004001E4903032 +:103094008293122C57743A122C57D250751604028C +:0230A4002EA854 +:101F8D00E9D2E7C933E833F892D5EDD2E7CD33EC9A +:071F9D0033FC5002B2D52213 +:101FA400EC30E7100FBF000C0EBE00080DBD00049E +:101FB4000BEB6014A2D5EB13FCED92E7FD2274FF4A +:101FC400FCFDFEFF22E480F8A2D574FF13FC7D80A3 +:031FD400E480EFB7 +:101FD700F920E73624F950037907E4F42402FBE5F6 +:101FE70082158270021583DBF6E024FB501BE96043 +:101FF70014E4F0E582158270021583E004F0B40A58 +:0D20070008E4F0D9EE7401F00A22C2D522DF +:10201400ED33EC3392D5FA602AB4FF33EDC2E77B9B +:10202400FF60067A207939E4227A20794220D504A7 +:102034007A20793D224E614E002B494E46002D49AF +:102044004E4600E47A08F0A3DAFC7B00740722C051 +:1020540083C082ECC0E0EDC0E0EEC0E0EFC0E0EA97 +:1020640075F010A4CAABF075F04DA42BFBE435F069 +:10207400FCEA2410FAEB34C5FBEC34D9FCEDC2E7DE +:10208400FF75F056A4F42411C5F0F434C58FF0A400 +:102094002AE5F03BE43CF020E714122149D0E0FFAC +:1020A400D0E0FED0E0FDD0E0FC121E7B8014F404EE +:1020B400122149D0E0FFD0E0FED0E0FDD0E0FC12D8 +:1020C4001D72D082D083E0FAEDD2E7CD33EC332415 +:1020D40082FBE4C3CF33CFCE33CECD33CD33DBF36A +:1020E4007B0775F00A846004F0A31B0AE5F0F0A3F3 +:1020F4008FF0740AA4FFACF08EF0740AA42CFEAC2A +:10210400F050010C8DF0740AA42CFDE435F0F0A31A +:05211400DBDE74072270 +:102119003F8000004120000042C80000447A0000CE +:10212900461C400047C35000497424004B18968050 +:102139004CBEBC205A0E1BCA6753C21C749DC5AE47 +:10214900FB60065407601C2323122177EB54386087 +:1021590009122163122172121D72ECF8EDF9EEFADF +:10216900EFCB22EB12217280F1543803241C902109 +:1021790019FE93FC0EEE93FD0EEE930ECE93FF2205 +:10218900BB010689828A83E0225002E722BBFE0254 +:09219900E32289828A83E4932287 +:1021A200BB010CE58229F582E5833AF583E02250F2 +:1021B20006E92582F8E622BBFE06E92582F8E2223C +:0D21C200E58229F582E5833AF583E4932256 +:1021CF00BB010689828A83F0225002F722BBFE01EF +:0221DF00F322E9 +:1021E100EF8DF0A4A8F0CF8CF0A428CE8DF0A42E12 +:0221F100FE22CC +:1021F300BC000BBE0029EF8DF084FFADF022E4CCD0 +:10220300F875F008EF2FFFEE33FEEC33FCEE9DEC98 +:10221300984005FCEE9DFE0FD5F0E9E4CEFD22EDDE +:10222300F8F5F0EE8420D21CFEADF075F008EF2F28 +:10223300FFED33FD4007985006D5F0F222C398FD19 +:052243000FD5F0EA22B6 +:10224800C5F0F8A3E028F0C5F0F8E5821582700221 +:062258001583E038F022BE +:0D225E00EF2BFFEE3AFEED39FDEC38FC22CF +:0E226B00C3EF9BFFEE9AFEED99FDEC98FC226E +:10227900E88FF0A4CC8BF0A42CFCE98EF0A42CFC04 +:102289008AF0EDA42CFCEA8EF0A4CDA8F08BF0A482 +:102299002DCC3825F0FDE98FF0A42CCD35F0FCEBE1 +:1022A9008EF0A4FEA9F0EB8FF0A4CFC5F02ECD39A6 +:0F22B900FEE43CFCEAA42DCE35F0FDE43CFC2213 +:1022C80075F008758200EF2FFFEE33FECD33CDCCCD +:1022D80033CCC58233C5829BED9AEC99E582984050 +:1022E8000CF582EE9BFEED9AFDEC99FC0FD5F0D62D +:1022F800E4CEFBE4CDFAE4CCF9A88222B800C1B957 +:102308000059BA002DEC8BF084CFCECDFCE5F0CB94 +:10231800F97818EF2FFFEE33FEED33FDEC33FCEBCD +:1023280033FB10D703994004EB99FB0FD8E5E4F988 +:10233800FA227818EF2FFFEE33FEED33FDEC33FC75 +:10234800C933C910D7059BE99A4007EC9BFCE99A69 +:10235800F90FD8E0E4C9FAE4CCFB2275F010EF2FAE +:10236800FFEE33FEED33FDCC33CCC833C810D707AE +:102378009BEC9AE899400AED9BFDEC9AFCE899F8E9 +:0E2388000FD5F0DAE4CDFBE4CCFAE4C8F9227C +:10760200C2D5E830E70FB2D5E4C39BFBE49AFAE4B3 +:1076120099F9E498F8EC30E717B2D51276381223CC +:1076220004E4C39BFBE49AFAE499F9E498F8800332 +:1076320012230430D50DE4C39FFFE49EFEE49DFDBA +:04764200E49CFC22A6 +:0D239600EF4BFFEE4AFEED49FDEC48FC2246 +:0E23A300C3E49FFFE49EFEE49DFDE49CFC224B +:1023B100EB9FF5F0EA9E42F0E99D42F0EC6480C8A3 +:0623C10064809845F02243 +:1023C700EB9FF5F0EA9E42F0E99D42F0E89C45F06C +:0123D70022E3 +:1023D800E8600FECC313FCED13FDEE13FEEF13FFE3 +:0323E800D8F12207 +:1023EB00E86010ECA2E713FCED13FDEE13FEEF1308 +:0423FB00FFD8F022F5 +:1023FF00E8600FEFC333FFEE33FEED33FDEC33FC3C +:03240F00D8F122DF +:0C241200E6FC08E6FD08E6FE08E6FF22F6 +:0C241E00E0FCA3E0FDA3E0FEA3E0FF2231 +:0D242A00E6FB08E6F908E6FA08E6CBF82222 +:0C243700E0F8A3E0F9A3E0FAA3E0FB2228 +:102443007401FF3395E0FEFDFCA3A3A3E02FFFF08F +:10245300E582158270021583E03EFEF0E582158267 +:1024630070021583E03DFDF0E5821582700215834D +:05247300E03CFCF0223A +:0C247800ECF608EDF608EEF608EFF62290 +:0C248400ECF0A3EDF0A3EEF0A3EFF022CB +:10249000D083D082E493F608740193F60874029313 +:0924A000F608740393F67404734A +:1024A900A8828583F0D083D0821224C01224C0125E +:1024B90024C01224C0E473E493A3C583C5F0C58383 +:1024C900C8C582C8F0A3C583C5F0C583C8C582C87D +:0124D90022E0 +:0C24DA00A42582F582E5F03583F583220D +:1024E600F8E0FBA3A3E0F925F0F0E582158270027F +:0724F6001583E0FA38F02223 +:0924FD00EBF0A3EAF0A3E9F022E0 +:10250600D083D082F8E4937012740193700DA3A364 +:1025160093F8740193F5828883E473740293686078 +:06252600EFA3A3A380DF78 +:10252C00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D3C +:10253C00FDE43CFCE8A42EC8C5F03DFDE43CFCEFFA +:0D254C00A4FFE5F028FEE43DFDE43CFC2288 +:00000001FF diff --git a/output/MCUCore_Load.lnp b/output/MCUCore_Load.lnp new file mode 100644 index 0000000..5f1e025 --- /dev/null +++ b/output/MCUCore_Load.lnp @@ -0,0 +1,36 @@ +".\output\Main.obj", +".\output\Initial.obj", +".\output\InterruptApp.obj", +".\output\Led.obj", +".\output\KeyApp.obj", +".\output\LowPower.obj", +".\output\UartApp.obj", +".\output\Memory.obj", +".\output\AFE.obj", +".\output\Balance.obj", +".\output\Calculate.obj", +".\output\Calibrate.obj", +".\output\ChargerLoad.obj", +".\output\ExtE2PRom.obj", +".\output\Interrupt.obj", +".\output\KeyScan.obj", +".\output\McuFlash.obj", +".\output\McuLib.obj", +".\output\MosCtrl.obj", +".\output\PorSelfTest.obj", +".\output\Protect.obj", +".\output\RTC.obj", +".\output\TWI.obj", +".\output\Uart.obj", +".\output\Thermistor.obj", +".\output\TwiIO.obj", +".\output\STARTUP.obj", +".\output\GasGaugeInter_V4_13.obj", +".\code_gasguage\GasGaugeV4_13.LIB", +".\output\BootApp.obj", +".\output\BootIAP.obj" +TO ".\output\MCUCore_Load" REGFILE (.\output\MCUCore_Load.ORC) +PRINT(".\output\MCUCore_Load.m51") RAMSIZE(256) +DISABLEWARNING (16) +CODE( 0X0000-0XFBFF , ?CO?BootIAP(0x0000) ) +XDATA( 0X0200-0X0AFE ) diff --git a/output/MCUCore_Load.m51 b/output/MCUCore_Load.m51 new file mode 100644 index 0000000..bc65522 --- /dev/null +++ b/output/MCUCore_Load.m51 @@ -0,0 +1,6642 @@ +BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 1 + + +BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: +D:\TOOL\KEIL\C51\BIN\BL51.EXE .\output\Main.obj, .\output\Initial.obj, .\output\InterruptApp.obj, .\output\Led.obj, .\ou +>> tput\KeyApp.obj, .\output\LowPower.obj, .\output\UartApp.obj, .\output\Memory.obj, .\output\AFE.obj, .\output\Balance +>> .obj, .\output\Calculate.obj, .\output\Calibrate.obj, .\output\ChargerLoad.obj, .\output\ExtE2PRom.obj, .\output\Inte +>> rrupt.obj, .\output\KeyScan.obj, .\output\McuFlash.obj, .\output\McuLib.obj, .\output\MosCtrl.obj, .\output\PorSelfTe +>> st.obj, .\output\Protect.obj, .\output\RTC.obj, .\output\TWI.obj, .\output\Uart.obj, .\output\Thermistor.obj, .\outpu +>> t\TwiIO.obj, .\output\STARTUP.obj, .\output\GasGaugeInter_V4_13.obj, .\code_gasguage\GasGaugeV4_13.LIB, .\output\Boot +>> App.obj, .\output\BootIAP.obj TO .\output\MCUCore_Load REGFILE (.\output\MCUCore_Load.ORC) PRINT (.\output\MCUCore_Lo +>> ad.m51) RAMSIZE (256) DISABLEWARNING (16) CODE (0X0000-0XFBFF, ?CO?BOOTIAP (0X0000)) XDATA (0X0200-0X0AFE) + + +MEMORY MODEL: LARGE WITH FLOATING POINT ARITHMETIC + + +INPUT MODULES INCLUDED: + .\output\Main.obj (MAIN) + .\output\Initial.obj (INITIAL) + .\output\InterruptApp.obj (INTERRUPTAPP) + .\output\Led.obj (LED) + .\output\KeyApp.obj (KEYAPP) + .\output\LowPower.obj (LOWPOWER) + .\output\UartApp.obj (UARTAPP) + .\output\Memory.obj (MEMORY) + .\output\AFE.obj (AFE) + .\output\Balance.obj (BALANCE) + .\output\Calculate.obj (CALCULATE) + .\output\Calibrate.obj (CALIBRATE) + .\output\ChargerLoad.obj (CHARGERLOAD) + .\output\ExtE2PRom.obj (EXTE2PROM) + .\output\Interrupt.obj (INTERRUPT) + .\output\KeyScan.obj (KEYSCAN) + .\output\McuFlash.obj (MCUFLASH) + .\output\McuLib.obj (MCULIB) + .\output\MosCtrl.obj (MOSCTRL) + .\output\PorSelfTest.obj (PORSELFTEST) + .\output\Protect.obj (PROTECT) + .\output\RTC.obj (RTC) + .\output\TWI.obj (TWI) + .\output\Uart.obj (UART) + .\output\Thermistor.obj (THERMISTOR) + .\output\TwiIO.obj (TWIIO) + .\output\STARTUP.obj (?C_STARTUP) + .\output\GasGaugeInter_V4_13.obj (GASGAUGEINTER_V4_13) + .\code_gasguage\GasGaugeV4_13.LIB (GASGAUGEV4_12) + .\output\BootApp.obj (BOOTAPP) + .\output\BootIAP.obj (BOOTIAP) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (?C?FPADD) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (?C?FPMUL) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (?C?FPDIV) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (?C?FCAST) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (?C?CASTF) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (PRINTF) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (?C?FPGETOPN) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (?C?FPROUND) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (?C?FPCONVERT) + D:\TOOL\KEIL\C51\LIB\C51FPL.LIB (?C?FTNPWR) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?CLDPTR) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?CLDOPTR) + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 2 + + + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?CSTPTR) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?IMUL) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?UIDIV) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?IILDX) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LADD) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LSUB) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LMUL) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?ULDIV) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?SLDIV) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LOR) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LNEG) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?SLCMP) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?ULCMP) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?ULSHR) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?SLSHR) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LSHL) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LLDIDATA) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LLDXDATA) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LLDIDATA0) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LLDXDATA0) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LILDXDATA) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LSTIDATA) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LSTXDATA) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LSTKIDATA) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LSTKXDATA) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?OFFXADD) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?PLDIXDATA) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?PSTXDATA) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?CCASE) + D:\TOOL\KEIL\C51\LIB\C51L.LIB (?C?LIMUL) + + +LINK MAP OF MODULE: .\output\MCUCore_Load (MAIN) + + + TYPE BASE LENGTH RELOCATION SEGMENT NAME + ----------------------------------------------------- + + * * * * * * * D A T A M E M O R Y * * * * * * * + REG 0000H 0008H ABSOLUTE "REG BANK 0" + DATA 0008H 0007H UNIT ?DT?KEYSCAN + DATA 000FH 0006H UNIT ?DT?AFE + DATA 0015H 0005H UNIT _DATA_GROUP_ + DATA 001AH 0004H UNIT ?DT?GASGAUGEINTER_V4_13 + IDATA 001EH 0001H UNIT ?ID?EXTE2PROM + 001FH 0001H *** GAP *** + DATA 0020H 0007H BIT_ADDR ?BA?MEMORY + BIT 0027H.0 0001H.3 UNIT ?BI?EXTE2PROM + BIT 0028H.3 0001H.2 UNIT ?BI?UARTAPP + BIT 0029H.5 0001H.1 UNIT _BIT_GROUP_ + BIT 002AH.6 0000H.6 UNIT ?BI?GASGAUGEV4_12 + BIT 002BH.4 0000H.5 UNIT ?BI?AFE + BIT 002CH.1 0000H.5 UNIT ?BI?BALANCE + BIT 002CH.6 0000H.4 UNIT ?BI?LOWPOWER + BIT 002DH.2 0000H.4 UNIT ?BI?CHARGERLOAD + BIT 002DH.6 0000H.3 UNIT ?BI?INTERRUPTAPP + BIT 002EH.1 0000H.3 UNIT ?BI?MCUFLASH + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 3 + + + BIT 002EH.4 0000H.2 UNIT ?BI?LED + BIT 002EH.6 0000H.2 UNIT ?BI?MOSCTRL + BIT 002FH.0 0000H.2 UNIT ?BI?PROTECT + BIT 002FH.2 0000H.2 UNIT ?BI?RTC + BIT 002FH.4 0000H.1 UNIT ?BI?CALIBRATE + BIT 002FH.5 0000H.1 UNIT ?BI?KEYSCAN + BIT 002FH.6 0000H.1 UNIT ?BI?PORSELFTEST + 002FH.7 0000H.1 *** GAP *** + IDATA 0030H 000CH UNIT ?ID?GASGAUGEV4_12 + 003CH 0064H *** GAP *** + IDATA 00A0H 0060H ABSOLUTE + + * * * * * * * X D A T A M E M O R Y * * * * * * * + XDATA 0000H 0002H ABSOLUTE + XDATA 0002H 0014H ABSOLUTE + XDATA 0016H 0004H ABSOLUTE + XDATA 001AH 0004H ABSOLUTE + XDATA 001EH 0004H ABSOLUTE + XDATA 0022H 0002H ABSOLUTE + XDATA 0024H 0002H ABSOLUTE + XDATA 0026H 0002H ABSOLUTE + XDATA 0028H 0002H ABSOLUTE + XDATA 002AH 0001H ABSOLUTE + XDATA 002BH 0001H ABSOLUTE + XDATA 002CH 0002H ABSOLUTE + XDATA 002EH 0001H ABSOLUTE + XDATA 002FH 0001H ABSOLUTE + XDATA 0030H 0002H ABSOLUTE + XDATA 0032H 0002H ABSOLUTE + XDATA 0034H 0001H ABSOLUTE + XDATA 0035H 000CH ABSOLUTE + XDATA 0041H 0004H ABSOLUTE + XDATA 0045H 0002H ABSOLUTE + XDATA 0047H 000CH ABSOLUTE + XDATA 0053H 000CH ABSOLUTE + XDATA 005FH 0002H ABSOLUTE + XDATA 0061H 0001H ABSOLUTE + XDATA 0062H 0002H ABSOLUTE + XDATA 0064H 0002H ABSOLUTE + XDATA 0066H 0001H ABSOLUTE + XDATA 0067H 0001H ABSOLUTE + XDATA 0068H 0002H ABSOLUTE + XDATA 006AH 0002H ABSOLUTE + XDATA 006CH 0001H ABSOLUTE + XDATA 006DH 0004H ABSOLUTE + XDATA 0071H 0001H ABSOLUTE + XDATA 0072H 0001H ABSOLUTE + XDATA 0073H 0001H ABSOLUTE + XDATA 0074H 0002H ABSOLUTE + XDATA 0076H 0002H ABSOLUTE + XDATA 0078H 0001H ABSOLUTE + XDATA 0079H 0001H ABSOLUTE + XDATA 007AH 0002H ABSOLUTE + XDATA 007CH 0001H ABSOLUTE + XDATA 007DH 0004H ABSOLUTE + XDATA 0081H 0001H ABSOLUTE + XDATA 0082H 0004H ABSOLUTE + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 4 + + + XDATA 0086H 0001H ABSOLUTE + XDATA 0087H 0001H ABSOLUTE + XDATA 0088H 0001H ABSOLUTE + XDATA 0089H 0002H ABSOLUTE + XDATA 008BH 0001H ABSOLUTE + XDATA 008CH 0001H ABSOLUTE + XDATA 008DH 0001H ABSOLUTE + XDATA 008EH 0002H ABSOLUTE + XDATA 0090H 0002H ABSOLUTE + XDATA 0092H 0002H ABSOLUTE + XDATA 0094H 0002H ABSOLUTE + XDATA 0096H 0001H ABSOLUTE + XDATA 0097H 0001H ABSOLUTE + XDATA 0098H 0001H ABSOLUTE + XDATA 0099H 0002H ABSOLUTE + XDATA 009BH 0002H ABSOLUTE + XDATA 009DH 0002H ABSOLUTE + XDATA 009FH 0002H ABSOLUTE + XDATA 00A1H 0001H ABSOLUTE + XDATA 00A2H 0002H ABSOLUTE + XDATA 00A4H 0002H ABSOLUTE + XDATA 00A6H 0002H ABSOLUTE + XDATA 00A8H 0001H ABSOLUTE + XDATA 00A9H 0001H ABSOLUTE + XDATA 00AAH 0001H ABSOLUTE + XDATA 00ABH 0004H ABSOLUTE + XDATA 00AFH 0004H ABSOLUTE + XDATA 00B3H 0004H ABSOLUTE + XDATA 00B7H 0002H ABSOLUTE + XDATA 00B9H 0001H ABSOLUTE + XDATA 00BAH 0001H ABSOLUTE + XDATA 00BBH 0001H ABSOLUTE + XDATA 00BCH 0002H ABSOLUTE + XDATA 00BEH 0001H ABSOLUTE + XDATA 00BFH 0002H ABSOLUTE + XDATA 00C1H 0002H ABSOLUTE + XDATA 00C3H 0002H ABSOLUTE + XDATA 00C5H 0002H ABSOLUTE + XDATA 00C7H 0002H ABSOLUTE + XDATA 00C9H 0001H ABSOLUTE + XDATA 00CAH 0001H ABSOLUTE + XDATA 00CBH 0133H ABSOLUTE + XDATA 01FEH 0002H ABSOLUTE + XDATA 0200H 00B5H UNIT ?XD?AFE + XDATA 02B5H 006EH UNIT _XDATA_GROUP_ + XDATA 0323H 0067H UNIT ?XD?GASGAUGEINTER_V4_13 + XDATA 038AH 002EH UNIT ?XD?GASGAUGEV4_12 + XDATA 03B8H 0022H UNIT ?XD?PROTECT + XDATA 03DAH 0015H UNIT ?XD?EXTE2PROM + XDATA 03EFH 000DH UNIT ?XD?UARTAPP + XDATA 03FCH 0003H UNIT ?XD?LED + XDATA 03FFH 0001H UNIT ?XD?KEYAPP + XDATA 0400H 0096H ABSOLUTE + XDATA 0496H 0008H UNIT ?XD?RTC + XDATA 049EH 0002H UNIT ?XD?INTERRUPTAPP + XDATA 04A0H 0096H ABSOLUTE + XDATA 0536H 0006H UNIT ?XD?BALANCE + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 5 + + + XDATA 053CH 0003H UNIT ?XD?LOWPOWER + XDATA 053FH 0001H UNIT ?XD?PORSELFTEST + XDATA 0540H 0096H ABSOLUTE + XDATA 05D6H 0012H UNIT ?XD?CALIBRATE + XDATA 05E8H 0003H UNIT ?XD?_MCUPWM0SET?MCULIB + XDATA 05EBH 0003H UNIT ?XD?_MCUPWM1SET?MCULIB + XDATA 05EEH 0002H UNIT ?XD?_UART0WRITEINFO?UARTAPP + XDATA 05F0H 0002H UNIT ?XD?UART0RDCMDPROCESS?UARTAPP + XDATA 05F2H 0002H UNIT ?XD?UART0WRCMDPROCESS?UARTAPP + XDATA 05F4H 0002H UNIT ?XD?UART0IAPCHECKHANDSHAKE?UARTAPP + XDATA 05F6H 0002H UNIT ?XD?CALCULATE + XDATA 05F8H 0002H UNIT ?XD?CHARGERLOAD + XDATA 05FAH 0002H UNIT ?XD?MCUFLASH + XDATA 05FCH 0002H UNIT ?XD?GASGAUGEWKUP?GASGAUGEV4_12 + + * * * * * * * C O D E M E M O R Y * * * * * * * + CODE 0000H 1000H UNIT ?CO?BOOTIAP + CODE 1000H 0003H ABSOLUTE + CODE 1003H 0020H UNIT ?PR?INTERRUPTTIMER3?INTERRUPT + CODE 1023H 0003H ABSOLUTE + 1026H 0005H *** GAP *** + CODE 102BH 0003H ABSOLUTE + CODE 102EH 0024H UNIT ?PR?_INTERRUPTINT4APP?INTERRUPTAPP + 1052H 0001H *** GAP *** + CODE 1053H 0003H ABSOLUTE + CODE 1056H 0C24H UNIT ?PR?DATAFILTER?GASGAUGEV4_12 + CODE 1C7AH 08DFH UNIT ?C?LIB_CODE + CODE 2559H 06CAH UNIT ?PR?GASGAUGEMANAGE?GASGAUGEV4_12 + CODE 2C23H 0483H UNIT ?PR?PRINTF?PRINTF + CODE 30A6H 02EEH UNIT ?PR?MAIN?MAIN + CODE 3394H 0258H UNIT ?PR?FCCUPDATE?GASGAUGEV4_12 + CODE 35ECH 0220H UNIT ?PR?GASGAUGEWKUP?GASGAUGEV4_12 + CODE 380CH 01F0H UNIT ?PR?_CALCUTEMP?CALCULATE + CODE 39FCH 01C5H UNIT ?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 + CODE 3BC1H 01C2H UNIT ?PR?_RTCREADTIME?RTC + CODE 3D83H 01B9H UNIT ?PR?_TWIREAD?TWI + CODE 3F3CH 01B3H UNIT ?PR?_E2PROMBKDATA?EXTE2PROM + CODE 40EFH 0181H UNIT ?PR?AFECALCUCURR?CALCULATE + CODE 4270H 016FH UNIT ?PR?_GASGAUGEINITSOC?GASGAUGEV4_12 + CODE 43DFH 0168H UNIT ?PR?GASGAUGEINIT?GASGAUGEV4_12 + CODE 4547H 0167H UNIT ?PR?UART0IAPCHECKHANDSHAKE?UARTAPP + CODE 46AEH 0150H UNIT ?PR?UART0RDCMDPROCESS?UARTAPP + CODE 47FEH 0147H UNIT ?PR?_TWIWRITE?TWI + CODE 4945H 0144H UNIT ?PR?BALTURNONCHECK?BALANCE + CODE 4A89H 0142H UNIT ?CO?THERMISTOR + CODE 4BCBH 0138H UNIT ?PR?AFECALCUVOL?CALCULATE + CODE 4D03H 011FH UNIT ?PR?GASGAUGEGETOCV?GASGAUGEV4_12 + CODE 4E22H 0100H UNIT ?CO?TWI + CODE 4F22H 00DEH UNIT ?PR?AFECALCUTEMPE?CALCULATE + CODE 5000H 00D7H UNIT ?PR?CORRECTCHGDFRC?GASGAUGEV4_12 + CODE 50D7H 00D3H UNIT ?PR?E2PROMBKCHECK?EXTE2PROM + CODE 51AAH 00C4H UNIT ?PR?PROTECTOV?PROTECT + CODE 526EH 00C1H UNIT ?PR?MCUFLASHPROCESS?MCUFLASH + CODE 532FH 00BDH UNIT ?PR?UART0CALICURRENT?UARTAPP + CODE 53ECH 00BCH UNIT ?PR?PROTECTUV?PROTECT + CODE 54A8H 00BCH UNIT ?PR?PROTECTOTC?PROTECT + CODE 5564H 00BCH UNIT ?PR?PROTECTUTC?PROTECT + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 6 + + + CODE 5620H 00BCH UNIT ?PR?PROTECTOTD?PROTECT + CODE 56DCH 00BCH UNIT ?PR?PROTECTUTD?PROTECT + CODE 5798H 00BAH UNIT ?PR?BALPROCESS?BALANCE + CODE 5852H 00B3H UNIT ?PR?OFFSETCALCULATE?CALCULATE + CODE 5905H 00ACH UNIT ?PR?E2PROMBKPROCESS?EXTE2PROM + CODE 59B1H 00ABH UNIT ?PR?INTERRUPTUART0APPTX?UARTAPP + CODE 5A5CH 00ABH UNIT ?PR?_AFEWRITEREG?AFE + CODE 5B07H 00A7H UNIT ?PR?UART0WRCMDPROCESS?UARTAPP + CODE 5BAEH 00A2H UNIT ?PR?KEYSCAN?KEYSCAN + CODE 5C50H 00A1H UNIT ?CO?MAIN + CODE 5CF1H 00A1H UNIT ?PR?SYSPARAINIT?INITIAL + CODE 5D92H 009CH UNIT ?PR?_RTCMODIFYTIME?RTC + CODE 5E2EH 0097H UNIT ?PR?_INTERRUPTUART0APPRX?UARTAPP + CODE 5EC5H 0097H UNIT ?PR?_MCUFLASHWRITE?MCUFLASH + CODE 5F5CH 008EH UNIT ?PR?LOWPOWERCHECK?LOWPOWER + CODE 5FEAH 008DH UNIT ?PR?_RTCINITTIME?RTC + CODE 6077H 008CH UNIT ?PR?_MCUFLASHWRSECTOR?MCUFLASH + CODE 6103H 0087H UNIT ?PR?AFEINIT?AFE + CODE 618AH 0086H UNIT ?PR?AFEINITREG?AFE + CODE 6210H 0081H UNIT ?PR?_MCUPWM0SET?MCULIB + CODE 6291H 0081H UNIT ?PR?_MCUPWM1SET?MCULIB + CODE 6312H 0081H UNIT ?PR?_MCUPWM2SET?MCULIB + CODE 6393H 007DH UNIT ?PR?E2PROMINIT?EXTE2PROM + CODE 6410H 0076H UNIT ?PR?PROTECTOCRECOVER?PROTECT + CODE 6486H 0070H UNIT ?PR?_UART0WRITEINFO?UARTAPP + CODE 64F6H 006FH UNIT ?PR?UART1RDE2PROM?EXTE2PROM + CODE 6565H 006FH UNIT ?PR?UART2RDE2PROM?EXTE2PROM + CODE 65D4H 006FH UNIT ?PR?INTERRUPTINT4?INTERRUPT + CODE 6643H 006DH UNIT ?PR?CALIVOLTAGE?CALIBRATE + CODE 66B0H 006CH UNIT ?PR?E2PROMERASE?EXTE2PROM + CODE 671CH 006BH UNIT ?PR?_AFEREADREG?AFE + CODE 6787H 0069H UNIT ?PR?UART0RDE2PROM?EXTE2PROM + CODE 67F0H 0066H UNIT ?PR?KEYSWITCHSPEED?KEYAPP + CODE 6856H 0066H UNIT ?PR?RAMCHECKPROCESS?MCULIB + CODE 68BCH 0063H UNIT ?PR?_UART0READINFO?UARTAPP + CODE 691FH 0061H UNIT ?PR?AFERAMCHECK?AFE + CODE 6980H 0061H UNIT ?PR?UART0INIT?UART + CODE 69E1H 005FH UNIT ?PR?_E2PROMWRITE?EXTE2PROM + CODE 6A40H 005FH UNIT ?PR?_E2PROMREAD?EXTE2PROM + CODE 6A9FH 005FH UNIT ?PR?_MCUFLASHREAD?MCUFLASH + CODE 6AFEH 005DH UNIT ?PR?_GETCYCLEGAIN?GASGAUGEV4_12 + CODE 6B5BH 005CH UNIT ?PR?LEDDISPLAY?LED + CODE 6BB7H 005BH UNIT ?PR?_RTCWRITE?RTC + CODE 6C12H 005BH UNIT ?PR?_RTCREAD?RTC + CODE 6C6DH 005AH UNIT ?PR?_MCUFLASHDATACHECK?MCUFLASH + CODE 6CC7H 0059H UNIT ?PR?PROTECTOCC?PROTECT + CODE 6D20H 0059H UNIT ?PR?PROTECTOCD1?PROTECT + CODE 6D79H 0059H UNIT ?PR?PROTECTOCD2?PROTECT + CODE 6DD2H 0054H UNIT ?PR?UART0CALIRTC?UARTAPP + CODE 6E26H 0052H UNIT ?PR?UART0CALIVOLTAGE?UARTAPP + CODE 6E78H 0051H UNIT ?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 + CODE 6EC9H 004FH UNIT ?PR?CALIPROCESS?CALIBRATE + CODE 6F18H 004FH UNIT ?PR?PORPROTECTOTC?PORSELFTEST + CODE 6F67H 004FH UNIT ?PR?PORPROTECTUTC?PORSELFTEST + CODE 6FB6H 004FH UNIT ?PR?PORPROTECTOTD?PORSELFTEST + CODE 7005H 004FH UNIT ?PR?PORPROTECTUTD?PORSELFTEST + CODE 7054H 004EH UNIT ?PR?LOADCHECK?CHARGERLOAD + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 7 + + + CODE 70A2H 004CH UNIT ?PR?INITIAL?INITIAL + CODE 70EEH 004CH UNIT ?PR?E2PROMBKRTC?EXTE2PROM + CODE 713AH 004CH UNIT ?PR?UART1RDRTC?EXTE2PROM + CODE 7186H 004CH UNIT ?PR?UART2RDRTC?EXTE2PROM + CODE 71D2H 004AH UNIT ?PR?AFEGETVOL?CALCULATE + CODE 721CH 004AH UNIT ?PR?MOSSTATUSCHECK?MOSCTRL + CODE 7266H 0049H UNIT ?PR?UART0CALITS1?UARTAPP + CODE 72AFH 0049H UNIT ?PR?UART0CALITS2?UARTAPP + CODE 72F8H 0049H UNIT ?PR?CHGERCHECK?CHARGERLOAD + CODE 7341H 0048H UNIT ?CO?UARTAPP + CODE 7389H 0048H UNIT ?PR?AFEGETTEMPE?CALCULATE + CODE 73D1H 0048H UNIT ?PR?_DELAY1MS?MCULIB + CODE 7419H 0048H UNIT ?PR?PORPROTECTOV?PORSELFTEST + CODE 7461H 0048H UNIT ?PR?PORPROTECTUV?PORSELFTEST + CODE 74A9H 0046H UNIT ?PR?UART0RDRTC?EXTE2PROM + CODE 74EFH 0045H UNIT ?PR?UART0WRITEMANUFACTURE?UARTAPP + CODE 7534H 0045H UNIT ?PR?CALITS1?CALIBRATE + CODE 7579H 0045H UNIT ?PR?CALITS2?CALIBRATE + CODE 75BEH 0044H UNIT ?PR?CALIRTCTIME?CALIBRATE + CODE 7602H 0044H UNIT ?C?LDIV + CODE 7646H 0042H UNIT ?PR?INITVAR?INITIAL + CODE 7688H 0041H UNIT ?PR?E2PROMBKBOOT?EXTE2PROM + CODE 76C9H 0040H UNIT ?PR?WAKEUPPROCESS?LOWPOWER + CODE 7709H 0040H UNIT ?PR?LOWPOWERPROCESS?LOWPOWER + CODE 7749H 003FH UNIT ?PR?_LEDGETDISNUM?LED + CODE 7788H 003FH UNIT ?PR?_AFEBALCTL?AFE + CODE 77C7H 003DH UNIT ?PR?AFERDFLG?AFE + CODE 7804H 003CH UNIT ?PR?AFECLRFLG?AFE + CODE 7840H 003BH UNIT ?PR?CALICURRENTGAIN?CALIBRATE + CODE 787BH 003BH UNIT ?PR?PORSELFTEST?PORSELFTEST + CODE 78B6H 0037H UNIT ?PR?UART0READSUBCLASSID?UARTAPP + CODE 78EDH 0036H UNIT ?PR?SYSTEMINTOSLEEP?LOWPOWER + CODE 7923H 0036H UNIT ?PR?UART0CALICUROFFSET?UARTAPP + CODE 7959H 0035H UNIT ?PR?CTOCHECKVOL?BALANCE + CODE 798EH 0035H UNIT ?PR?_MCUFLASHWRONEBYTE?MCUFLASH + CODE 79C3H 0035H UNIT ?PR?GASGAUGEIDLE?GASGAUGEV4_12 + CODE 79F8H 0034H UNIT ?CO?CALCULATE + CODE 7A2CH 0033H UNIT ?PR?_MEMORYCOPY?MCULIB + CODE 7A5FH 0030H UNIT ?PR?KEYPROCESS?KEYAPP + CODE 7A8FH 0030H UNIT ?PR?_MCUTIMER3SET?MCULIB + CODE 7ABFH 002DH UNIT ?PR?MOSCTRL?MOSCTRL + CODE 7AECH 002CH UNIT ?PR?SYSTEMRESETPROCESS?MCULIB + CODE 7B18H 002BH UNIT ?PR?INITGPIO?INITIAL + CODE 7B43H 002AH UNIT ?PR?_MEMORYSET?MCULIB + CODE 7B6DH 0027H UNIT ?PR?_MCUFLASHCHECKFLG?MCUFLASH + CODE 7B94H 0027H UNIT ?PR?_TWICHECKSTATUS?TWI + CODE 7BBBH 0026H UNIT ?PR?AFEENTERPD?AFE + CODE 7BE1H 0026H UNIT ?PR?CTOTURNONCHECK?BALANCE + CODE 7C07H 0026H UNIT ?PR?_MCUFLASHBLANKCHECK?MCUFLASH + CODE 7C2DH 0024H UNIT ?PR?INTERRUPTTIMER3APP?INTERRUPTAPP + CODE 7C51H 0022H UNIT ?PR?_MCUCLOCKSET?MCULIB + CODE 7C73H 0020H UNIT ?C_C51STARTUP + CODE 7C93H 001FH UNIT ?PR?PROTECTPROCESS?PROTECT + CODE 7CB2H 001FH UNIT ?PR?INTERRUPTUART0?UART + CODE 7CD1H 001EH UNIT ?PR?INITIRQ?INITIAL + CODE 7CEFH 001DH UNIT ?PR?E2PROMTWICHECK?EXTE2PROM + CODE 7D0CH 001DH UNIT ?PR?RTCTWICHECK?RTC + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 8 + + + CODE 7D29H 001DH UNIT ?PR?ISPPROCESS?BOOTAPP + CODE 7D46H 001CH UNIT ?PR?_CRC8CAL?TWI + CODE 7D62H 001AH UNIT ?PR?AFETWICHECK?AFE + CODE 7D7CH 0018H UNIT ?PR?AFERDSTATUS?AFE + CODE 7D94H 0017H UNIT ?PR?_AFEALARMDIS?AFE + CODE 7DABH 0017H UNIT ?PR?TWIINIT?TWI + CODE 7DC2H 0015H UNIT ?PR?_AFEMOSCTL?AFE + CODE 7DD7H 0015H UNIT ?PR?MCUFLASHWRWAITCHECK?MCUFLASH + CODE 7DECH 0014H UNIT ?PR?UART0CHECK?UARTAPP + CODE 7E00H 0014H UNIT ?PR?AFEINFOPROCESS?CALCULATE + CODE 7E14H 0013H UNIT ?PR?LEDAUTOOFF?LED + CODE 7E27H 0013H UNIT ?PR?AFECHGERCHECKEN?AFE + CODE 7E3AH 0013H UNIT ?PR?AFECHGERCHECKDIS?AFE + CODE 7E4DH 0013H UNIT ?PR?AFELOADCHECKEN?AFE + CODE 7E60H 0013H UNIT ?PR?AFELOADCHECKDIS?AFE + CODE 7E73H 0013H UNIT ?PR?AFEWDTEN?AFE + CODE 7E86H 0013H UNIT ?PR?AFEWDTDIS?AFE + CODE 7E99H 0013H UNIT ?PR?AFEADCEN?AFE + CODE 7EACH 0013H UNIT ?PR?AFEADCDIS?AFE + CODE 7EBFH 0013H UNIT ?PR?AFECADCEN?AFE + CODE 7ED2H 0013H UNIT ?PR?AFECADCDIS?AFE + CODE 7EE5H 0013H UNIT ?PR?AFETEMPADCEN?AFE + CODE 7EF8H 0013H UNIT ?PR?AFETEMPADCDIS?AFE + CODE 7F0BH 0012H UNIT ?PR?SYSTEMINTOPD?LOWPOWER + CODE 7F1DH 0012H UNIT ?PR?UART0HANDSHAKE?UARTAPP + CODE 7F2FH 0012H UNIT ?PR?_AFEALARMEN?AFE + CODE 7F41H 0010H UNIT ?PR?CALICURZERO?CALIBRATE + CODE 7F51H 000EH UNIT ?PR?_PUTCHAR?MAIN + CODE 7F5FH 000CH UNIT ?PR?MCUINTOIDLE?MCULIB + CODE 7F6BH 000CH UNIT ?PR?MCUINTOPD?MCULIB + CODE 7F77H 000AH UNIT ?PR?BALANCEPROCESS?BALANCE + CODE 7F81H 0006H UNIT ?CO?GASGAUGEV4_12 + + + +OVERLAY MAP OF MODULE: .\output\MCUCore_Load (MAIN) + + +SEGMENT BIT_GROUP DATA_GROUP XDATA_GROUP + +--> CALLED SEGMENT START LENGTH START LENGTH START LENGTH +------------------------------------------------------------------------------------------------------ +?PR?INTERRUPTINT4?INTERRUPT ----- ----- ----- ----- ----- ----- + +--> ?PR?_INTERRUPTINT4APP?INTERRUPTAPP + +?PR?_INTERRUPTINT4APP?INTERRUPTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUCLOCKSET?MCULIB + +?PR?_MCUCLOCKSET?MCULIB ----- ----- ----- ----- 02B7H 0001H + +*** NEW ROOT *************************************************** + +?PR?INTERRUPTTIMER3?INTERRUPT ----- ----- ----- ----- ----- ----- + +--> ?PR?INTERRUPTTIMER3APP?INTERRUPTAPP + +?PR?INTERRUPTTIMER3APP?INTERRUPTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?KEYSCAN?KEYSCAN + + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 9 + + +*** NEW ROOT *************************************************** + +?PR?INTERRUPTUART0?UART ----- ----- ----- ----- 02B6H 0001H + +*** NEW ROOT *************************************************** + +?C_C51STARTUP ----- ----- ----- ----- ----- ----- + +--> ?PR?MAIN?MAIN + +?PR?MAIN?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?INITIAL?INITIAL + +--> ?CO?MAIN + +--> ?PR?PRINTF?PRINTF + +--> ?PR?AFEINFOPROCESS?CALCULATE + +--> ?PR?BALANCEPROCESS?BALANCE + +--> ?PR?PROTECTPROCESS?PROTECT + +--> ?PR?PORSELFTEST?PORSELFTEST + +--> ?PR?LOADCHECK?CHARGERLOAD + +--> ?PR?CHGERCHECK?CHARGERLOAD + +--> ?PR?MOSCTRL?MOSCTRL + +--> ?PR?PROTECTOCRECOVER?PROTECT + +--> ?PR?UART0CHECK?UARTAPP + +--> ?PR?GASGAUGEMANAGE?GASGAUGEV4_12 + +--> ?PR?AFERAMCHECK?AFE + +--> ?PR?AFETWICHECK?AFE + +--> ?PR?E2PROMTWICHECK?EXTE2PROM + +--> ?PR?RTCTWICHECK?RTC + +--> ?PR?RAMCHECKPROCESS?MCULIB + +--> ?PR?SYSPARAINIT?INITIAL + +--> ?PR?MCUFLASHWRWAITCHECK?MCUFLASH + +--> ?PR?E2PROMBKCHECK?EXTE2PROM + +--> ?PR?SYSTEMRESETPROCESS?MCULIB + +--> ?PR?ISPPROCESS?BOOTAPP + +--> ?PR?CALIPROCESS?CALIBRATE + +--> ?PR?MCUFLASHPROCESS?MCUFLASH + +--> ?PR?E2PROMBKPROCESS?EXTE2PROM + +?PR?INITIAL?INITIAL ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?INITGPIO?INITIAL + +--> ?PR?SYSPARAINIT?INITIAL + +--> ?PR?INITVAR?INITIAL + +--> ?PR?_MCUTIMER3SET?MCULIB + +--> ?PR?UART0INIT?UART + +--> ?PR?TWIINIT?TWI + +--> ?PR?_MCUPWM2SET?MCULIB + +--> ?PR?AFEINITREG?AFE + +--> ?PR?AFEINIT?AFE + +--> ?PR?AFECLRFLG?AFE + +--> ?PR?E2PROMINIT?EXTE2PROM + +--> ?PR?_RTCINITTIME?RTC + +--> ?PR?INITIRQ?INITIAL + +?PR?SYSPARAINIT?INITIAL ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUFLASHCHECKFLG?MCUFLASH + +--> ?PR?_MCUFLASHREAD?MCUFLASH + +--> ?PR?_MCUFLASHWRITE?MCUFLASH + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 10 + + + +?PR?_MCUFLASHCHECKFLG?MCUFLASH 0029H.5 0000H.1 ----- ----- ----- ----- + +?PR?_MCUFLASHREAD?MCUFLASH 0029H.5 0000H.1 0015H 0002H 02B7H 0004H + +?PR?_MCUFLASHWRITE?MCUFLASH 0029H.7 0000H.1 ----- ----- 02B9H 0004H + +--> ?PR?_MCUFLASHBLANKCHECK?MCUFLASH + +--> ?PR?_MCUFLASHWRSECTOR?MCUFLASH + +--> ?PR?_MCUFLASHDATACHECK?MCUFLASH + +?PR?_MCUFLASHBLANKCHECK?MCUFLASH 002AH.0 0000H.1 ----- ----- ----- ----- + +?PR?_MCUFLASHWRSECTOR?MCUFLASH 002AH.0 0000H.1 ----- ----- 02BDH 0004H + +?PR?_MCUFLASHDATACHECK?MCUFLASH 002AH.0 0000H.1 ----- ----- 02BDH 0004H + +?PR?INITVAR?INITIAL ----- ----- ----- ----- ----- ----- + +--> ?PR?_MEMORYSET?MCULIB + +?PR?_MEMORYSET?MCULIB ----- ----- ----- ----- 02C3H 0002H + +?PR?_MCUTIMER3SET?MCULIB ----- ----- ----- ----- 02B7H 0001H + +?PR?UART0INIT?UART ----- ----- ----- ----- 02B7H 0002H + +?PR?_MCUPWM2SET?MCULIB ----- ----- ----- ----- 02BCH 0003H + +?PR?AFEINIT?AFE 0029H.5 0000H.1 ----- ----- 02BAH 0004H + +--> ?PR?_AFEWRITEREG?AFE + +--> ?PR?_AFEREADREG?AFE + +?PR?_AFEWRITEREG?AFE 0029H.6 0000H.1 ----- ----- 02BEH 0006H + +--> ?PR?_TWIWRITE?TWI + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?TWIINIT?TWI + +?PR?_TWIWRITE?TWI 002AH.1 0000H.1 ----- ----- 02F3H 000EH + +--> ?PR?_CRC8CAL?TWI + +--> ?PR?_TWICHECKSTATUS?TWI + +?PR?_CRC8CAL?TWI ----- ----- ----- ----- ----- ----- + +--> ?CO?TWI + +?PR?_TWICHECKSTATUS?TWI 002AH.2 0000H.1 ----- ----- ----- ----- + +?PR?_AFEREADREG?AFE 0029H.6 0000H.1 ----- ----- 02C1H 0005H + +--> ?PR?_TWIREAD?TWI + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?TWIINIT?TWI + +?PR?_TWIREAD?TWI 002AH.0 0000H.1 ----- ----- 02E9H 003AH + +--> ?PR?_TWICHECKSTATUS?TWI + +--> ?PR?_CRC8CAL?TWI + +?PR?AFECLRFLG?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?_AFEWRITEREG?AFE + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 11 + + + +?PR?E2PROMINIT?EXTE2PROM 0029H.5 0000H.1 ----- ----- 02B7H 0008H + +--> ?PR?_E2PROMREAD?EXTE2PROM + +?PR?_E2PROMREAD?EXTE2PROM 0029H.6 0000H.1 ----- ----- 02C3H 0006H + +--> ?PR?_TWIREAD?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?_RTCINITTIME?RTC 0029H.5 0000H.1 ----- ----- 02B7H 000CH + +--> ?PR?_MEMORYSET?MCULIB + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_RTCREADTIME?RTC + +?PR?_MEMORYCOPY?MCULIB ----- ----- ----- ----- 02D9H 0002H + +?PR?_RTCREADTIME?RTC 0029H.6 0000H.1 ----- ----- 02D9H 000BH + +--> ?PR?_RTCREAD?RTC + +--> ?PR?_RTCMODIFYTIME?RTC + +?PR?_RTCREAD?RTC 0029H.7 0000H.1 ----- ----- 02E4H 0005H + +--> ?PR?_TWIREAD?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?_RTCMODIFYTIME?RTC 0029H.7 0000H.1 ----- ----- 02E4H 000AH + +--> ?PR?_RTCWRITE?RTC + +?PR?_RTCWRITE?RTC 002AH.0 0000H.1 ----- ----- 02EEH 0005H + +--> ?PR?_TWIWRITE?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?PRINTF?PRINTF 0029H.5 0001H.1 0015H 0005H 02B7H 0030H + +--> ?PR?_PUTCHAR?MAIN + +?PR?AFEINFOPROCESS?CALCULATE ----- ----- ----- ----- ----- ----- + +--> ?PR?AFERDFLG?AFE + +--> ?PR?AFECALCUVOL?CALCULATE + +--> ?PR?AFECALCUTEMPE?CALCULATE + +--> ?PR?AFECALCUCURR?CALCULATE + +?PR?AFERDFLG?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?AFEINIT?AFE + +?PR?AFECALCUVOL?CALCULATE ----- ----- ----- ----- 02B7H 0009H + +--> ?PR?AFEGETVOL?CALCULATE + +?PR?AFEGETVOL?CALCULATE 0029H.5 0000H.1 ----- ----- 02C0H 0001H + +--> ?PR?_AFEREADREG?AFE + +?PR?AFECALCUTEMPE?CALCULATE ----- ----- ----- ----- ----- ----- + +--> ?PR?AFEGETTEMPE?CALCULATE + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?AFEGETTEMPE?CALCULATE 0029H.5 0000H.1 ----- ----- ----- ----- + +--> ?PR?_AFEREADREG?AFE + + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 12 + + +?PR?_CALCUTEMP?CALCULATE ----- ----- ----- ----- 02B7H 0007H + +--> ?CO?THERMISTOR + +?PR?AFECALCUCURR?CALCULATE ----- ----- ----- ----- 02B7H 0005H + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?OFFSETCALCULATE?CALCULATE + +--> ?PR?_MCUPWM2SET?MCULIB + +?PR?OFFSETCALCULATE?CALCULATE ----- ----- ----- ----- 02BCH 0003H + +--> ?CO?CALCULATE + +?PR?BALANCEPROCESS?BALANCE ----- ----- ----- ----- ----- ----- + +--> ?PR?BALTURNONCHECK?BALANCE + +--> ?PR?CTOTURNONCHECK?BALANCE + +--> ?PR?BALPROCESS?BALANCE + +?PR?BALPROCESS?BALANCE ----- ----- ----- ----- 02B7H 0002H + +--> ?PR?_AFEBALCTL?AFE + +--> ?PR?CTOCHECKVOL?BALANCE + +?PR?_AFEBALCTL?AFE ----- ----- ----- ----- 02B9H 0002H + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CTOCHECKVOL?BALANCE 0029H.5 0000H.1 ----- ----- ----- ----- + +?PR?PROTECTPROCESS?PROTECT ----- ----- ----- ----- ----- ----- + +--> ?PR?PROTECTOV?PROTECT + +--> ?PR?PROTECTUV?PROTECT + +--> ?PR?PROTECTOTC?PROTECT + +--> ?PR?PROTECTUTC?PROTECT + +--> ?PR?PROTECTOTD?PROTECT + +--> ?PR?PROTECTUTD?PROTECT + +--> ?PR?PROTECTOCC?PROTECT + +--> ?PR?PROTECTOCD1?PROTECT + +--> ?PR?PROTECTOCD2?PROTECT + +?PR?PROTECTOV?PROTECT ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECLRFLG?AFE + +?PR?PORSELFTEST?PORSELFTEST ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECALCUVOL?CALCULATE + +--> ?PR?AFECALCUTEMPE?CALCULATE + +--> ?PR?PORPROTECTOV?PORSELFTEST + +--> ?PR?PORPROTECTUV?PORSELFTEST + +--> ?PR?PORPROTECTOTC?PORSELFTEST + +--> ?PR?PORPROTECTUTC?PORSELFTEST + +--> ?PR?PORPROTECTOTD?PORSELFTEST + +--> ?PR?PORPROTECTUTD?PORSELFTEST + +--> ?PR?GASGAUGEINIT?GASGAUGEV4_12 + +?PR?GASGAUGEINIT?GASGAUGEV4_12 ----- ----- ----- ----- 02B7H 0002H + +--> ?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 + +--> ?PR?GASGAUGEGETOCV?GASGAUGEV4_12 + +--> ?PR?_GASGAUGEINITSOC?GASGAUGEV4_12 + +--> ?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 + +?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 0029H.5 0000H.1 ----- ----- ----- ----- + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 13 + + + +?PR?GASGAUGEGETOCV?GASGAUGEV4_12 ----- ----- ----- ----- 02B9H 0001H + +?PR?_GASGAUGEINITSOC?GASGAUGEV4_12 ----- ----- ----- ----- 02B9H 0002H + +?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 0029H.5 0000H.1 ----- ----- ----- ----- + +?PR?LOADCHECK?CHARGERLOAD ----- ----- ----- ----- ----- ----- + +--> ?PR?AFELOADCHECKEN?AFE + +--> ?PR?AFERDSTATUS?AFE + +--> ?PR?AFELOADCHECKDIS?AFE + +--> ?PR?AFECLRFLG?AFE + +?PR?AFELOADCHECKEN?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFERDSTATUS?AFE ----- ----- ----- ----- 02B7H 0002H + +--> ?PR?_AFEREADREG?AFE + +?PR?AFELOADCHECKDIS?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CHGERCHECK?CHARGERLOAD ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECHGERCHECKEN?AFE + +--> ?PR?AFERDSTATUS?AFE + +--> ?PR?AFECHGERCHECKDIS?AFE + +--> ?PR?AFECLRFLG?AFE + +?PR?AFECHGERCHECKEN?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFECHGERCHECKDIS?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?MOSCTRL?MOSCTRL ----- ----- ----- ----- ----- ----- + +--> ?PR?MOSSTATUSCHECK?MOSCTRL + +--> ?PR?_AFEMOSCTL?AFE + +?PR?_AFEMOSCTL?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?PROTECTOCRECOVER?PROTECT ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECLRFLG?AFE + +?PR?GASGAUGEMANAGE?GASGAUGEV4_12 ----- ----- ----- ----- ----- ----- + +--> ?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 + +--> ?PR?CORRECTCHGDFRC?GASGAUGEV4_12 + +--> ?PR?FCCUPDATE?GASGAUGEV4_12 + +--> ?PR?DATAFILTER?GASGAUGEV4_12 + +--> ?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 + +?PR?CORRECTCHGDFRC?GASGAUGEV4_12 ----- ----- ----- ----- 02B7H 0002H + +--> ?PR?GASGAUGEGETOCV?GASGAUGEV4_12 + +?PR?FCCUPDATE?GASGAUGEV4_12 ----- ----- ----- ----- 02B7H 0004H + +--> ?PR?_GETCYCLEGAIN?GASGAUGEV4_12 + + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 14 + + +?PR?DATAFILTER?GASGAUGEV4_12 0029H.5 0000H.1 ----- ----- 02B7H 0009H + +--> ?CO?GASGAUGEV4_12 + +?PR?AFERAMCHECK?AFE ----- ----- ----- ----- 02B7H 0003H + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?AFEINIT?AFE + +?PR?E2PROMBKCHECK?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +?PR?ISPPROCESS?BOOTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?AFEWDTDIS?AFE + +?PR?AFEWDTDIS?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CALIPROCESS?CALIBRATE ----- ----- ----- ----- ----- ----- + +--> ?PR?CALIVOLTAGE?CALIBRATE + +--> ?PR?CALICURRENTGAIN?CALIBRATE + +--> ?PR?CALICURZERO?CALIBRATE + +--> ?PR?CALITS1?CALIBRATE + +--> ?PR?CALITS2?CALIBRATE + +--> ?PR?CALIRTCTIME?CALIBRATE + +?PR?CALIVOLTAGE?CALIBRATE ----- ----- ----- ----- 02B7H 0002H + +?PR?CALITS1?CALIBRATE ----- ----- ----- ----- ----- ----- + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?CALITS2?CALIBRATE ----- ----- ----- ----- ----- ----- + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?CALIRTCTIME?CALIBRATE ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCMODIFYTIME?RTC + +?PR?MCUFLASHPROCESS?MCUFLASH 0029H.5 0000H.2 ----- ----- 02B7H 0002H + +--> ?PR?_MCUFLASHWRITE?MCUFLASH + +--> ?PR?_MCUFLASHWRONEBYTE?MCUFLASH + +?PR?E2PROMBKPROCESS?EXTE2PROM ----- ----- ----- ----- 02B7H 0001H + +--> ?PR?E2PROMERASE?EXTE2PROM + +--> ?PR?UART0RDE2PROM?EXTE2PROM + +--> ?PR?UART2RDE2PROM?EXTE2PROM + +--> ?PR?UART0RDRTC?EXTE2PROM + +--> ?PR?UART1RDRTC?EXTE2PROM + +--> ?PR?UART2RDRTC?EXTE2PROM + +--> ?PR?E2PROMBKRTC?EXTE2PROM + +--> ?PR?_E2PROMBKDATA?EXTE2PROM + +?PR?E2PROMERASE?EXTE2PROM ----- ----- ----- ----- 02B8H 000AH + +--> ?PR?_MEMORYSET?MCULIB + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?_E2PROMWRITE?EXTE2PROM 0029H.5 0000H.1 ----- ----- 02E1H 0006H + +--> ?PR?_TWIWRITE?TWI + +--> ?PR?_DELAY1MS?MCULIB + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 15 + + + +?PR?UART0RDE2PROM?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_CRC8CAL?TWI + +?PR?UART2RDE2PROM?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0RDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWI + +?PR?UART1RDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWI + +?PR?UART2RDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWI + +?PR?E2PROMBKRTC?EXTE2PROM ----- ----- ----- ----- 02B8H 000AH + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?_E2PROMBKDATA?EXTE2PROM ----- ----- ----- ----- 02B8H 0021H + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +--> ?PR?E2PROMBKBOOT?EXTE2PROM + +?PR?E2PROMBKBOOT?EXTE2PROM ----- ----- ----- ----- 02D9H 0008H + +--> ?PR?_E2PROMWRITE?EXTE2PROM + + + +SYMBOL TABLE OF MODULE: .\output\MCUCore_Load (MAIN) + + VALUE TYPE NAME + ---------------------------------- + + ------- MODULE MAIN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A0H.0 PUBLIC P2_0 + B:00A0H.4 PUBLIC P2_4 + B:0098H.1 PUBLIC TI + C:30A6H PUBLIC main + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 16 + + + D:0099H PUBLIC SBUF + D:00B1H PUBLIC RSTSTAT + B:0098H.4 PUBLIC REN + C:7F51H PUBLIC _putchar + ------- PROC _PUTCHAR + D:0007H SYMBOL c + C:7F51H LINE# 13 + C:7F51H LINE# 14 + C:7F51H LINE# 15 + C:7F53H LINE# 16 + C:7F55H LINE# 17 + C:7F57H LINE# 18 + C:7F5AH LINE# 19 + C:7F5CH LINE# 20 + C:7F5EH LINE# 21 + C:7F5EH LINE# 22 + ------- ENDPROC _PUTCHAR + ------- PROC MAIN + C:30A6H LINE# 32 + C:30A6H LINE# 33 + C:30A6H LINE# 34 + C:30A9H LINE# 36 + C:30B2H LINE# 38 + C:30B2H LINE# 39 + C:30B2H LINE# 42 + C:30B5H LINE# 43 + C:30B5H LINE# 44 + C:30B8H LINE# 46 + C:30BAH LINE# 47 + C:30BDH LINE# 49 + C:30C0H LINE# 51 + C:30C3H LINE# 53 + C:30C6H LINE# 55 + C:30C9H LINE# 57 + C:30CCH LINE# 59 + C:30CFH LINE# 61 + C:30D2H LINE# 66 + C:30D5H LINE# 76 + C:30D5H LINE# 78 + C:30DBH LINE# 79 + C:30DBH LINE# 80 + C:30DDH LINE# 82 + C:30E6H LINE# 83 + C:3133H LINE# 84 + C:3180H LINE# 85 + C:31CDH LINE# 86 + C:321AH LINE# 87 + C:3267H LINE# 88 + C:32D8H LINE# 89 + C:32E1H LINE# 90 + C:331AH LINE# 92 + C:3335H LINE# 93 + C:3350H LINE# 95 + C:3352H LINE# 96 + C:3355H LINE# 98 + C:3358H LINE# 100 + C:335BH LINE# 101 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 17 + + + C:335EH LINE# 102 + C:3361H LINE# 104 + C:3366H LINE# 105 + C:3366H LINE# 106 + C:3369H LINE# 107 + C:3369H LINE# 109 + C:336CH LINE# 111 + C:336FH LINE# 116 + C:336FH LINE# 118 + C:3372H LINE# 120 + C:3375H LINE# 122 + C:3378H LINE# 124 + C:337BH LINE# 126 + C:337EH LINE# 130 + C:3388H LINE# 131 + C:3390H LINE# 133 + ------- ENDPROC MAIN + ------- ENDMOD MAIN + + ------- MODULE INITIAL + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:7CD1H PUBLIC InitIRQ + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00A9H PUBLIC IEN1 + D:00E8H PUBLIC EXF0 + D:00D8H PUBLIC EXF1 + D:00E1H PUBLIC P0CR + D:00E2H PUBLIC P1CR + D:00E3H PUBLIC P2CR + D:00E4H PUBLIC P3CR + D:00BAH PUBLIC IENC + C:7646H PUBLIC InitVar + C:7B18H PUBLIC InitGPIO + B:00A8H.4 PUBLIC ES0 + B:00A8H.5 PUBLIC ET3 + D:0086H PUBLIC INSCON + B:0088H.7 PUBLIC TF3 + C:70A2H PUBLIC Initial + C:5CF1H PUBLIC SysParaInit + D:00E9H PUBLIC P0PCR + D:00EAH PUBLIC P1PCR + D:00EBH PUBLIC P2PCR + D:00ECH PUBLIC P3PCR + ------- PROC INITVAR + C:7646H LINE# 18 + C:7646H LINE# 19 + C:7646H LINE# 20 + C:764CH LINE# 21 + C:7657H LINE# 22 + C:7661H LINE# 23 + C:766BH LINE# 24 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 18 + + + C:7673H LINE# 26 + C:7675H LINE# 27 + C:7677H LINE# 28 + C:767DH LINE# 29 + C:767FH LINE# 30 + C:7681H LINE# 32 + C:7687H LINE# 33 + ------- ENDPROC INITVAR + ------- PROC SYSPARAINIT + C:5CF1H LINE# 41 + C:5CF1H LINE# 42 + C:5CF1H LINE# 43 + C:5CFAH LINE# 44 + C:5CFAH LINE# 45 + C:5D06H LINE# 46 + C:5D0FH LINE# 47 + C:5D0FH LINE# 48 + C:5D17H LINE# 49 + C:5D17H LINE# 50 + C:5D19H LINE# 51 + C:5D22H LINE# 52 + C:5D22H LINE# 53 + C:5D2FH LINE# 54 + C:5D36H LINE# 55 + C:5D38H LINE# 57 + C:5D38H LINE# 58 + C:5D3BH LINE# 60 + C:5D3BH LINE# 62 + C:5D45H LINE# 63 + C:5D4FH LINE# 64 + C:5D5BH LINE# 65 + C:5D6AH LINE# 67 + C:5D72H LINE# 69 + C:5D7BH LINE# 70 + C:5D7BH LINE# 71 + C:5D7EH LINE# 72 + C:5D7FH LINE# 73 + C:5D8AH LINE# 74 + C:5D8AH LINE# 75 + C:5D8DH LINE# 76 + C:5D8EH LINE# 78 + C:5D8EH LINE# 79 + C:5D91H LINE# 80 + C:5D91H LINE# 81 + ------- ENDPROC SYSPARAINIT + ------- PROC INITIRQ + C:7CD1H LINE# 89 + C:7CD1H LINE# 90 + C:7CD1H LINE# 91 + C:7CD3H LINE# 93 + C:7CD5H LINE# 102 + C:7CDEH LINE# 103 + C:7CE0H LINE# 105 + C:7CE3H LINE# 106 + C:7CE6H LINE# 107 + C:7CE9H LINE# 108 + C:7CECH LINE# 110 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 19 + + + C:7CEEH LINE# 111 + ------- ENDPROC INITIRQ + ------- PROC INITGPIO + C:7B18H LINE# 164 + C:7B18H LINE# 165 + C:7B18H LINE# 167 + C:7B1BH LINE# 168 + C:7B1EH LINE# 169 + C:7B21H LINE# 171 + C:7B24H LINE# 172 + C:7B27H LINE# 173 + C:7B2AH LINE# 175 + C:7B2DH LINE# 176 + C:7B30H LINE# 177 + C:7B33H LINE# 179 + C:7B36H LINE# 180 + C:7B39H LINE# 181 + C:7B3CH LINE# 185 + C:7B3FH LINE# 186 + C:7B42H LINE# 530 + ------- ENDPROC INITGPIO + ------- PROC INITIAL + C:70A2H LINE# 538 + C:70A2H LINE# 539 + C:70A2H LINE# 540 + C:70A7H LINE# 542 + C:70AAH LINE# 546 + C:70ADH LINE# 548 + C:70B0H LINE# 550 + C:70B9H LINE# 553 + C:70BCH LINE# 564 + C:70BFH LINE# 566 + C:70C8H LINE# 568 + C:70CBH LINE# 569 + C:70D0H LINE# 570 + C:70D0H LINE# 571 + C:70D2H LINE# 572 + C:70D2H LINE# 573 + C:70D5H LINE# 575 + C:70D8H LINE# 576 + C:70D8H LINE# 577 + C:70DDH LINE# 578 + C:70DDH LINE# 579 + C:70DFH LINE# 580 + C:70DFH LINE# 582 + C:70E8H LINE# 583 + C:70E8H LINE# 584 + C:70EAH LINE# 585 + C:70EAH LINE# 586 + C:70EAH LINE# 588 + C:70EDH LINE# 589 + ------- ENDPROC INITIAL + ------- ENDMOD INITIAL + + ------- MODULE INTERRUPTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 20 + + + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + X:049EH PUBLIC ucTimer1s + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:102EH PUBLIC _InterruptINT4App + B:002DH.6 PUBLIC bTimer5msFlg + X:049FH PUBLIC ucTimer50ms + B:002DH.7 PUBLIC bTimer1sFlg + C:7C2DH PUBLIC InterruptTimer3App + B:002EH.0 PUBLIC bTimer50msFlg + ------- PROC _INTERRUPTINT4APP + D:0007H SYMBOL IntSource + C:102EH LINE# 24 + C:102EH LINE# 25 + C:102EH LINE# 26 + C:1032H LINE# 27 + C:1032H LINE# 28 + C:1038H LINE# 29 + C:1038H LINE# 30 + C:103DH LINE# 31 + C:103FH LINE# 32 + C:103FH LINE# 33 + C:1040H LINE# 34 + C:1044H LINE# 35 + C:1044H LINE# 36 + C:104AH LINE# 37 + C:104AH LINE# 38 + C:104FH LINE# 39 + C:1051H LINE# 40 + C:1051H LINE# 41 + C:1051H LINE# 42 + ------- ENDPROC _INTERRUPTINT4APP + ------- PROC INTERRUPTTIMER3APP + C:7C2DH LINE# 51 + C:7C2DH LINE# 52 + C:7C2DH LINE# 54 + C:7C2FH LINE# 56 + C:7C3AH LINE# 57 + C:7C3AH LINE# 58 + C:7C3CH LINE# 59 + C:7C3EH LINE# 60 + C:7C3EH LINE# 62 + C:7C49H LINE# 63 + C:7C49H LINE# 64 + C:7C4BH LINE# 65 + C:7C4DH LINE# 66 + C:7C4DH LINE# 68 + C:7C50H LINE# 69 + ------- ENDPROC INTERRUPTTIMER3APP + ------- ENDMOD INTERRUPTAPP + + ------- MODULE LED + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 21 + + + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:7749H PUBLIC _LedGetDisNum + B:00A0H.1 PUBLIC P2_1 + B:00A0H.2 PUBLIC P2_2 + B:00A0H.3 PUBLIC P2_3 + X:03FCH PUBLIC ucLedChgFlickCnt + B:00B0H.5 PUBLIC P3_5 + X:03FDH PUBLIC ucLedBleFlickCnt + X:03FEH PUBLIC ucLedTimeCnt + B:002EH.4 PUBLIC bLedDisFlg + B:002EH.5 PUBLIC bLedDisBleFlg + C:7E14H PUBLIC LedAutoOff + C:6B5BH PUBLIC LedDisplay + ------- PROC _LEDGETDISNUM + D:0006H SYMBOL Rsoc + C:7749H LINE# 24 + C:7749H LINE# 25 + C:7749H LINE# 26 + C:7752H LINE# 27 + C:7752H LINE# 28 + C:7755H LINE# 29 + C:7755H LINE# 30 + C:775EH LINE# 31 + C:775EH LINE# 32 + C:7761H LINE# 33 + C:7761H LINE# 34 + C:776AH LINE# 35 + C:776AH LINE# 36 + C:776DH LINE# 37 + C:776DH LINE# 38 + C:7776H LINE# 39 + C:7776H LINE# 40 + C:7779H LINE# 41 + C:7779H LINE# 42 + C:7782H LINE# 43 + C:7782H LINE# 44 + C:7785H LINE# 45 + C:7785H LINE# 47 + C:7785H LINE# 48 + C:7787H LINE# 49 + C:7787H LINE# 50 + ------- ENDPROC _LEDGETDISNUM + ------- PROC LEDAUTOOFF + C:7E14H LINE# 59 + C:7E14H LINE# 60 + C:7E14H LINE# 61 + C:7E17H LINE# 62 + C:7E17H LINE# 63 + C:7E22H LINE# 64 + C:7E22H LINE# 65 + C:7E24H LINE# 66 + C:7E26H LINE# 67 + C:7E26H LINE# 68 + C:7E26H LINE# 69 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 22 + + + ------- ENDPROC LEDAUTOOFF + ------- PROC LEDDISPLAY + ------- DO + D:0007H SYMBOL LedDisNum + ------- ENDDO + C:6B5BH LINE# 80 + C:6B5BH LINE# 81 + C:6B5BH LINE# 84 + C:6B5EH LINE# 85 + C:6B5EH LINE# 86 + C:6B69H LINE# 87 + C:6B69H LINE# 88 + C:6B6BH LINE# 89 + C:6B70H LINE# 90 + C:6B70H LINE# 91 + C:6B72H LINE# 93 + C:6B72H LINE# 94 + C:6B74H LINE# 95 + C:6B74H LINE# 97 + C:6B77H LINE# 98 + C:6B77H LINE# 99 + C:6B82H LINE# 100 + C:6B82H LINE# 101 + C:6B84H LINE# 103 + C:6B84H LINE# 104 + C:6B84H LINE# 106 + C:6B84H LINE# 108 + C:6B84H LINE# 110 + C:6B87H LINE# 111 + C:6B87H LINE# 112 + C:6B92H LINE# 113 + C:6B92H LINE# 114 + C:6B92H LINE# 116 + C:6B92H LINE# 117 + C:6B97H LINE# 118 + C:6B97H LINE# 120 + C:6B97H LINE# 121 + C:6B9BH LINE# 122 + C:6B9BH LINE# 124 + C:6B9DH LINE# 125 + C:6B9FH LINE# 126 + C:6BA3H LINE# 127 + C:6BA3H LINE# 129 + C:6BA5H LINE# 130 + C:6BA7H LINE# 131 + C:6BA9H LINE# 132 + C:6BADH LINE# 133 + C:6BADH LINE# 135 + C:6BAFH LINE# 136 + C:6BB1H LINE# 137 + C:6BB3H LINE# 138 + C:6BB3H LINE# 139 + C:6BB3H LINE# 140 + C:6BB3H LINE# 142 + C:6BB3H LINE# 143 + C:6BB3H LINE# 145 + C:6BB3H LINE# 147 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 23 + + + C:6BB3H LINE# 149 + C:6BB6H LINE# 150 + ------- ENDPROC LEDDISPLAY + ------- ENDMOD LED + + ------- MODULE KEYAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + D:00B7H PUBLIC PWM2CON + C:7A5FH PUBLIC KeyProcess + B:0080H.3 PUBLIC P0_3 + C:67F0H PUBLIC KeySwitchSpeed + X:03FFH PUBLIC ucDsgingSpeed + ------- PROC KEYSWITCHSPEED + C:67F0H LINE# 20 + C:67F0H LINE# 21 + C:67F0H LINE# 22 + C:67F2H LINE# 23 + C:67F4H LINE# 24 + C:67F6H LINE# 25 + C:67F9H LINE# 26 + C:67F9H LINE# 27 + C:67FFH LINE# 28 + C:67FFH LINE# 29 + C:6801H LINE# 30 + C:6803H LINE# 31 + C:6813H LINE# 32 + C:6816H LINE# 33 + C:6817H LINE# 34 + C:681EH LINE# 35 + C:681EH LINE# 36 + C:6821H LINE# 37 + C:6823H LINE# 38 + C:6830H LINE# 39 + C:6833H LINE# 40 + C:6834H LINE# 42 + C:6834H LINE# 43 + C:6839H LINE# 44 + C:683BH LINE# 45 + C:684BH LINE# 46 + C:684EH LINE# 47 + C:684EH LINE# 48 + C:684FH LINE# 50 + C:684FH LINE# 51 + C:6851H LINE# 52 + C:6853H LINE# 53 + C:6855H LINE# 54 + C:6855H LINE# 55 + ------- ENDPROC KEYSWITCHSPEED + ------- PROC KEYPROCESS + C:7A5FH LINE# 64 + C:7A5FH LINE# 65 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 24 + + + C:7A5FH LINE# 66 + C:7A62H LINE# 67 + C:7A62H LINE# 68 + C:7A64H LINE# 69 + C:7A75H LINE# 70 + C:7A75H LINE# 71 + C:7A75H LINE# 72 + C:7A78H LINE# 73 + C:7A79H LINE# 75 + C:7A79H LINE# 76 + C:7A7BH LINE# 77 + C:7A80H LINE# 78 + C:7A81H LINE# 80 + C:7A81H LINE# 81 + C:7A83H LINE# 82 + C:7A84H LINE# 84 + C:7A84H LINE# 85 + C:7A86H LINE# 86 + C:7A89H LINE# 87 + C:7A89H LINE# 88 + C:7A8BH LINE# 89 + C:7A8CH LINE# 91 + C:7A8CH LINE# 92 + C:7A8EH LINE# 93 + C:7A8EH LINE# 94 + C:7A8EH LINE# 96 + C:7A8EH LINE# 97 + C:7A8EH LINE# 98 + C:7A8EH LINE# 99 + C:7A8EH LINE# 100 + ------- ENDPROC KEYPROCESS + ------- ENDMOD KEYAPP + + ------- MODULE LOWPOWER + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:053CH PUBLIC ucSleepTimerCnt + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + B:00C8H.6 PUBLIC ENTWI + D:00B7H PUBLIC PWM2CON + B:002CH.6 PUBLIC bPDFlg + B:0080H.3 PUBLIC P0_3 + D:00D8H PUBLIC EXF1 + B:00A0H.5 PUBLIC P2_5 + X:053DH PUBLIC ucPDTimerCnt + C:78EDH PUBLIC SystemIntoSleep + C:5F5CH PUBLIC LowPowerCheck + B:002CH.7 PUBLIC bPCEnterPDFlg + C:7709H PUBLIC LowPowerProcess + C:76C9H PUBLIC WakeUpProcess + D:00B1H PUBLIC RSTSTAT + C:7F0BH PUBLIC SystemIntoPD + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 25 + + + B:00A8H.4 PUBLIC ES0 + B:00A8H.5 PUBLIC ET3 + X:053EH PUBLIC ucResetFlag + B:002DH.0 PUBLIC bWakeupFlg + B:002DH.1 PUBLIC bSleepFlg + ------- PROC WAKEUPPROCESS + C:76C9H LINE# 26 + C:76C9H LINE# 27 + C:76C9H LINE# 28 + C:76CCH LINE# 29 + C:76CCH LINE# 30 + C:76CEH LINE# 31 + C:76D1H LINE# 32 + C:76D1H LINE# 33 + C:76D6H LINE# 34 + C:76D8H LINE# 36 + C:76DAH LINE# 37 + C:76DFH LINE# 38 + C:76E4H LINE# 41 + C:76E6H LINE# 43 + C:76E8H LINE# 44 + C:76EAH LINE# 46 + C:76EFH LINE# 47 + C:76F2H LINE# 48 + C:76F5H LINE# 49 + C:76F5H LINE# 50 + C:76FAH LINE# 51 + C:76FCH LINE# 52 + C:7700H LINE# 53 + C:7704H LINE# 54 + C:7708H LINE# 55 + C:7708H LINE# 56 + ------- ENDPROC WAKEUPPROCESS + ------- PROC SYSTEMINTOPD + C:7F0BH LINE# 65 + C:7F0BH LINE# 66 + C:7F0BH LINE# 67 + C:7F0BH LINE# 68 + C:7F0BH LINE# 69 + C:7F0EH LINE# 71 + C:7F10H LINE# 73 + C:7F12H LINE# 74 + C:7F17H LINE# 76 + C:7F1AH LINE# 77 + ------- ENDPROC SYSTEMINTOPD + ------- PROC SYSTEMINTOSLEEP + C:78EDH LINE# 87 + C:78EDH LINE# 88 + C:78EDH LINE# 90 + C:78EFH LINE# 91 + C:78F1H LINE# 93 + C:78F4H LINE# 94 + C:78F7H LINE# 95 + C:78FCH LINE# 96 + C:78FEH LINE# 97 + C:7901H LINE# 98 + C:7904H LINE# 99 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 26 + + + C:7904H LINE# 100 + C:7906H LINE# 101 + C:7908H LINE# 103 + C:7908H LINE# 104 + C:790AH LINE# 105 + C:790AH LINE# 106 + C:790FH LINE# 108 + C:7911H LINE# 110 + C:7913H LINE# 118 + C:7915H LINE# 119 + C:7918H LINE# 120 + C:791DH LINE# 121 + C:791FH LINE# 123 + C:7922H LINE# 124 + ------- ENDPROC SYSTEMINTOSLEEP + ------- PROC LOWPOWERCHECK + C:5F5CH LINE# 135 + C:5F5CH LINE# 136 + C:5F5CH LINE# 137 + C:5F68H LINE# 138 + C:5F68H LINE# 139 + C:5F6AH LINE# 140 + C:5F6CH LINE# 141 + C:5F6DH LINE# 142 + C:5F70H LINE# 143 + C:5F70H LINE# 144 + C:5F7FH LINE# 145 + C:5F7FH LINE# 146 + C:5F81H LINE# 147 + C:5F83H LINE# 148 + C:5F83H LINE# 149 + C:5F84H LINE# 150 + C:5F87H LINE# 151 + C:5F87H LINE# 152 + C:5F8DH LINE# 153 + C:5F8DH LINE# 154 + C:5F90H LINE# 155 + C:5F90H LINE# 156 + C:5F9FH LINE# 157 + C:5F9FH LINE# 158 + C:5FA1H LINE# 159 + C:5FA3H LINE# 160 + C:5FA3H LINE# 161 + C:5FA4H LINE# 163 + C:5FA4H LINE# 164 + C:5FA9H LINE# 165 + C:5FC1H LINE# 166 + C:5FC1H LINE# 167 + C:5FCFH LINE# 168 + C:5FCFH LINE# 169 + C:5FD1H LINE# 170 + C:5FD3H LINE# 171 + C:5FD3H LINE# 172 + C:5FD4H LINE# 174 + C:5FD4H LINE# 175 + C:5FD9H LINE# 176 + C:5FD9H LINE# 177 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 27 + + + C:5FD9H LINE# 178 + C:5FDAH LINE# 180 + C:5FDAH LINE# 181 + C:5FDFH LINE# 182 + C:5FE1H LINE# 183 + C:5FE1H LINE# 184 + C:5FE2H LINE# 186 + C:5FE2H LINE# 187 + C:5FE7H LINE# 188 + C:5FE9H LINE# 189 + C:5FE9H LINE# 190 + ------- ENDPROC LOWPOWERCHECK + ------- PROC LOWPOWERPROCESS + C:7709H LINE# 199 + C:7709H LINE# 200 + C:7709H LINE# 201 + C:770FH LINE# 202 + C:770FH LINE# 203 + C:7711H LINE# 204 + C:7729H LINE# 205 + C:7729H LINE# 206 + C:772BH LINE# 207 + C:772EH LINE# 208 + C:772EH LINE# 209 + C:7730H LINE# 210 + C:7732H LINE# 211 + C:7735H LINE# 212 + C:7735H LINE# 213 + C:7737H LINE# 214 + C:773AH LINE# 215 + C:773DH LINE# 216 + C:773FH LINE# 217 + C:7742H LINE# 218 + C:7742H LINE# 219 + C:7745H LINE# 220 + C:7745H LINE# 222 + C:7748H LINE# 223 + ------- ENDPROC LOWPOWERPROCESS + ------- ENDMOD LOWPOWER + + ------- MODULE UARTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + C:46AEH PUBLIC Uart0RdCmdProcess + D:0090H PUBLIC P1 + C:78B6H PUBLIC Uart0ReadSubClassID + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + B:0028H.3 PUBLIC bUart0SndAckFlg + D:0080H PUBLIC P5 + B:0028H.4 PUBLIC bUart1SndAckFlg + B:0028H.5 PUBLIC bUart2SndAckFlg + X:03EFH PUBLIC ucSubClassID + C:5E2EH PUBLIC _InterruptUart0AppRx + C:5B07H PUBLIC Uart0WrCmdProcess + C:59B1H PUBLIC InterruptUart0AppTx + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 28 + + + X:03F0H PUBLIC ucUartErrCode + C:6E26H PUBLIC Uart0CaliVoltage + C:7266H PUBLIC Uart0CaliTS1 + C:72AFH PUBLIC Uart0CaliTS2 + C:7341H PUBLIC Page1WrRdFuncTable + C:7365H PUBLIC Page2WrRdFuncTable + C:7DECH PUBLIC Uart0Check + D:0099H PUBLIC SBUF + C:532FH PUBLIC Uart0CaliCurrent + C:6DD2H PUBLIC Uart0CaliRTC + X:03F1H PUBLIC ucUart0SndLength + X:03F2H PUBLIC ucUart1SndLength + X:03F3H PUBLIC ucUart2SndLength + D:00B1H PUBLIC RSTSTAT + X:03F4H PUBLIC ucUart0TimeoutCnt + X:03F5H PUBLIC ucUart1TimeoutCnt + X:03F6H PUBLIC ucUart2TimeoutCnt + X:0400H PUBLIC ucUart0Buf + X:04A0H PUBLIC ucUart1Buf + X:0540H PUBLIC ucUart2Buf + B:0028H.6 PUBLIC bUart0ReadFlg + B:0028H.7 PUBLIC bUart1ReadFlg + B:0029H.0 PUBLIC bUart2ReadFlg + C:4547H PUBLIC Uart0IapCheckHandshake + B:0029H.1 PUBLIC bUart0WriteFlg + C:68BCH PUBLIC _Uart0ReadInfo + C:7F1DH PUBLIC Uart0Handshake + B:0029H.2 PUBLIC bUart1WriteFlg + B:0029H.3 PUBLIC bUart2WriteFlg + C:74EFH PUBLIC Uart0WriteManufacture + C:7923H PUBLIC Uart0CaliCurOffset + B:0098H.4 PUBLIC REN + B:0029H.4 PUBLIC bISPFlg + C:6486H PUBLIC _Uart0WriteInfo + X:03F7H PUBLIC ucUart0BufPT + X:03F8H PUBLIC ucUart1BufPT + X:03F9H PUBLIC ucUart2BufPT + D:009AH PUBLIC SADDR + X:03FAH PUBLIC uiReceCheckSum + ------- PROC UART0HANDSHAKE + C:7F1DH LINE# 110 + C:7F1DH LINE# 111 + C:7F1DH LINE# 112 + C:7F23H LINE# 113 + C:7F23H LINE# 114 + C:7F28H LINE# 115 + C:7F29H LINE# 117 + C:7F29H LINE# 118 + C:7F2EH LINE# 119 + C:7F2EH LINE# 120 + ------- ENDPROC UART0HANDSHAKE + ------- PROC _UART0WRITEINFO + X:05EEH SYMBOL ptr + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:6486H LINE# 170 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 29 + + + C:648EH LINE# 171 + C:648EH LINE# 174 + C:64AFH LINE# 175 + C:64AFH LINE# 176 + C:64BAH LINE# 177 + C:64BAH LINE# 178 + C:64BDH LINE# 179 + C:64D6H LINE# 180 + C:64E0H LINE# 181 + C:64E3H LINE# 182 + C:64E5H LINE# 183 + C:64EAH LINE# 185 + C:64EFH LINE# 186 + C:64F0H LINE# 188 + C:64F0H LINE# 189 + C:64F5H LINE# 190 + C:64F5H LINE# 191 + ------- ENDPROC _UART0WRITEINFO + ------- PROC _UART0READINFO + D:0006H SYMBOL ptr + ------- DO + D:0005H SYMBOL i + ------- ENDDO + C:68BCH LINE# 263 + C:68BCH LINE# 264 + C:68BCH LINE# 267 + C:68C5H LINE# 268 + C:68C5H LINE# 269 + C:68C7H LINE# 270 + C:68C7H LINE# 271 + C:68D3H LINE# 272 + C:68D3H LINE# 273 + C:68D6H LINE# 274 + C:68E8H LINE# 275 + C:68EDH LINE# 276 + C:68F0H LINE# 277 + C:690CH LINE# 279 + C:691EH LINE# 280 + ------- ENDPROC _UART0READINFO + ------- PROC UART0WRITEMANUFACTURE + C:74EFH LINE# 346 + C:74EFH LINE# 347 + C:74EFH LINE# 348 + C:7510H LINE# 349 + C:7510H LINE# 350 + C:7518H LINE# 351 + C:7518H LINE# 352 + C:751EH LINE# 353 + C:7520H LINE# 354 + C:7524H LINE# 355 + C:7524H LINE# 356 + C:7526H LINE# 357 + C:7526H LINE# 358 + C:7528H LINE# 359 + C:752DH LINE# 360 + C:752EH LINE# 362 + C:752EH LINE# 363 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 30 + + + C:7533H LINE# 364 + C:7533H LINE# 365 + ------- ENDPROC UART0WRITEMANUFACTURE + ------- PROC UART0READSUBCLASSID + C:78B6H LINE# 437 + C:78B6H LINE# 438 + C:78B6H LINE# 439 + C:78D7H LINE# 440 + C:78D7H LINE# 441 + C:78DFH LINE# 443 + C:78E1H LINE# 444 + C:78E6H LINE# 445 + C:78E7H LINE# 447 + C:78E7H LINE# 448 + C:78ECH LINE# 449 + C:78ECH LINE# 450 + ------- ENDPROC UART0READSUBCLASSID + ------- PROC UART0RDCMDPROCESS + ------- DO + X:05F0H SYMBOL rdaddr + ------- ENDDO + C:46AEH LINE# 506 + C:46AEH LINE# 507 + C:46AEH LINE# 510 + C:4702H LINE# 511 + C:4702H LINE# 512 + C:4702H LINE# 513 + C:4702H LINE# 514 + C:4702H LINE# 515 + C:4702H LINE# 516 + C:4702H LINE# 517 + C:4702H LINE# 518 + C:4702H LINE# 519 + C:4702H LINE# 520 + C:4702H LINE# 521 + C:4702H LINE# 522 + C:4712H LINE# 523 + C:4713H LINE# 525 + C:4713H LINE# 526 + C:471AH LINE# 527 + C:471BH LINE# 529 + C:471BH LINE# 530 + C:4722H LINE# 531 + C:4723H LINE# 533 + C:4723H LINE# 534 + C:472AH LINE# 535 + C:472BH LINE# 537 + C:472BH LINE# 538 + C:4732H LINE# 539 + C:4733H LINE# 541 + C:4733H LINE# 542 + C:473AH LINE# 543 + C:473BH LINE# 545 + C:473BH LINE# 546 + C:4742H LINE# 547 + C:4743H LINE# 549 + C:4743H LINE# 550 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 31 + + + C:474AH LINE# 551 + C:474BH LINE# 553 + C:474BH LINE# 554 + C:4752H LINE# 555 + C:4753H LINE# 557 + C:4753H LINE# 558 + C:475AH LINE# 559 + C:475BH LINE# 561 + C:475BH LINE# 562 + C:4762H LINE# 563 + C:4763H LINE# 565 + C:4763H LINE# 566 + C:476AH LINE# 567 + C:476BH LINE# 569 + C:476BH LINE# 570 + C:4772H LINE# 571 + C:4773H LINE# 573 + C:4773H LINE# 574 + C:477AH LINE# 575 + C:477BH LINE# 577 + C:477BH LINE# 578 + C:4782H LINE# 579 + C:4783H LINE# 581 + C:4783H LINE# 582 + C:478CH LINE# 583 + C:478CH LINE# 584 + C:478EH LINE# 585 + C:4794H LINE# 586 + C:4795H LINE# 587 + C:47A3H LINE# 588 + C:47A3H LINE# 589 + C:47A5H LINE# 590 + C:47ABH LINE# 591 + C:47ACH LINE# 592 + C:47B3H LINE# 593 + C:47B3H LINE# 594 + C:47D1H LINE# 595 + C:47D4H LINE# 596 + C:47D5H LINE# 597 + C:47DCH LINE# 598 + C:47DCH LINE# 599 + C:47FAH LINE# 600 + C:47FDH LINE# 601 + C:47FDH LINE# 602 + C:47FDH LINE# 603 + C:47FDH LINE# 604 + ------- ENDPROC UART0RDCMDPROCESS + ------- PROC UART0CALIVOLTAGE + C:6E26H LINE# 830 + C:6E26H LINE# 831 + C:6E26H LINE# 832 + C:6E47H LINE# 833 + C:6E47H LINE# 834 + C:6E5AH LINE# 836 + C:6E5DH LINE# 837 + C:6E5DH LINE# 838 + C:6E62H LINE# 839 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 32 + + + C:6E63H LINE# 841 + C:6E63H LINE# 842 + C:6E65H LINE# 843 + C:6E6CH LINE# 844 + C:6E71H LINE# 845 + C:6E71H LINE# 846 + C:6E72H LINE# 848 + C:6E72H LINE# 849 + C:6E77H LINE# 850 + C:6E77H LINE# 851 + ------- ENDPROC UART0CALIVOLTAGE + ------- PROC UART0CALICURRENT + C:532FH LINE# 923 + C:532FH LINE# 924 + C:532FH LINE# 925 + C:5353H LINE# 926 + C:5353H LINE# 930 + C:53BBH LINE# 932 + C:53D1H LINE# 933 + C:53D1H LINE# 934 + C:53D6H LINE# 935 + C:53D7H LINE# 937 + C:53D7H LINE# 938 + C:53D9H LINE# 939 + C:53E0H LINE# 940 + C:53E5H LINE# 941 + C:53E5H LINE# 942 + C:53E6H LINE# 944 + C:53E6H LINE# 945 + C:53EBH LINE# 946 + C:53EBH LINE# 947 + ------- ENDPROC UART0CALICURRENT + ------- PROC UART0CALICUROFFSET + C:7923H LINE# 950 + C:7923H LINE# 951 + C:7923H LINE# 952 + C:7944H LINE# 953 + C:7944H LINE# 954 + C:7946H LINE# 955 + C:794DH LINE# 957 + C:7952H LINE# 958 + C:7953H LINE# 960 + C:7953H LINE# 961 + C:7958H LINE# 962 + C:7958H LINE# 963 + ------- ENDPROC UART0CALICUROFFSET + ------- PROC UART0CALITS1 + C:7266H LINE# 1073 + C:7266H LINE# 1074 + C:7266H LINE# 1075 + C:7287H LINE# 1076 + C:7287H LINE# 1077 + C:7289H LINE# 1078 + C:729CH LINE# 1079 + C:72A3H LINE# 1081 + C:72A8H LINE# 1082 + C:72A9H LINE# 1084 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 33 + + + C:72A9H LINE# 1085 + C:72AEH LINE# 1086 + C:72AEH LINE# 1087 + ------- ENDPROC UART0CALITS1 + ------- PROC UART0CALITS2 + C:72AFH LINE# 1090 + C:72AFH LINE# 1091 + C:72AFH LINE# 1092 + C:72D0H LINE# 1093 + C:72D0H LINE# 1094 + C:72D2H LINE# 1095 + C:72E5H LINE# 1096 + C:72ECH LINE# 1098 + C:72F1H LINE# 1099 + C:72F2H LINE# 1101 + C:72F2H LINE# 1102 + C:72F7H LINE# 1103 + C:72F7H LINE# 1104 + ------- ENDPROC UART0CALITS2 + ------- PROC UART0CALIRTC + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:6DD2H LINE# 1196 + C:6DD2H LINE# 1197 + C:6DD2H LINE# 1200 + C:6DF3H LINE# 1201 + C:6DF3H LINE# 1202 + C:6DF4H LINE# 1203 + C:6DF4H LINE# 1204 + C:6E0CH LINE# 1205 + C:6E11H LINE# 1206 + C:6E13H LINE# 1207 + C:6E1AH LINE# 1208 + C:6E1FH LINE# 1209 + C:6E20H LINE# 1211 + C:6E20H LINE# 1212 + C:6E25H LINE# 1213 + C:6E25H LINE# 1214 + ------- ENDPROC UART0CALIRTC + ------- PROC UART0WRCMDPROCESS + ------- DO + X:05F2H SYMBOL rdaddr + ------- ENDDO + C:5B07H LINE# 1280 + C:5B07H LINE# 1281 + C:5B07H LINE# 1283 + C:5B33H LINE# 1284 + C:5B33H LINE# 1285 + C:5B33H LINE# 1286 + C:5B36H LINE# 1287 + C:5B37H LINE# 1288 + C:5B37H LINE# 1289 + C:5B3AH LINE# 1290 + C:5B3BH LINE# 1291 + C:5B3BH LINE# 1292 + C:5B3EH LINE# 1293 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 34 + + + C:5B3FH LINE# 1294 + C:5B3FH LINE# 1295 + C:5B42H LINE# 1296 + C:5B43H LINE# 1297 + C:5B43H LINE# 1298 + C:5B46H LINE# 1299 + C:5B47H LINE# 1300 + C:5B47H LINE# 1301 + C:5B4AH LINE# 1302 + C:5B4BH LINE# 1303 + C:5B4BH LINE# 1304 + C:5B4EH LINE# 1305 + C:5B4FH LINE# 1307 + C:5B4FH LINE# 1308 + C:5B52H LINE# 1309 + C:5B53H LINE# 1310 + C:5B53H LINE# 1311 + C:5B71H LINE# 1312 + C:5B74H LINE# 1313 + C:5B75H LINE# 1314 + C:5B75H LINE# 1315 + C:5B93H LINE# 1316 + C:5B96H LINE# 1317 + C:5B97H LINE# 1319 + C:5B97H LINE# 1320 + C:5B9EH LINE# 1321 + C:5B9EH LINE# 1322 + C:5BA0H LINE# 1323 + C:5BA2H LINE# 1324 + C:5BA7H LINE# 1325 + C:5BA8H LINE# 1327 + C:5BA8H LINE# 1328 + C:5BADH LINE# 1329 + C:5BADH LINE# 1330 + C:5BADH LINE# 1331 + C:5BADH LINE# 1332 + ------- ENDPROC UART0WRCMDPROCESS + ------- PROC UART0IAPCHECKHANDSHAKE + ------- DO + D:0007H SYMBOL i + D:0007H SYMBOL databak + X:05F4H SYMBOL checksum + ------- ENDDO + C:4547H LINE# 1466 + C:4547H LINE# 1467 + C:4547H LINE# 1469 + C:454EH LINE# 1471 + C:4556H LINE# 1472 + C:4556H LINE# 1473 + C:455EH LINE# 1474 + C:455EH LINE# 1475 + C:4563H LINE# 1476 + C:4564H LINE# 1478 + C:4564H LINE# 1479 + C:456BH LINE# 1480 + C:456FH LINE# 1481 + C:456FH LINE# 1482 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 35 + + + C:4570H LINE# 1484 + C:4570H LINE# 1485 + C:458BH LINE# 1486 + C:458BH LINE# 1487 + C:459EH LINE# 1488 + C:459EH LINE# 1489 + C:45B6H LINE# 1490 + C:45B6H LINE# 1491 + C:45BEH LINE# 1492 + C:45BEH LINE# 1493 + C:45C9H LINE# 1494 + C:45C9H LINE# 1495 + C:45CEH LINE# 1496 + C:45CEH LINE# 1497 + C:45CFH LINE# 1498 + C:45D7H LINE# 1499 + C:45D7H LINE# 1500 + C:45E2H LINE# 1501 + C:45E2H LINE# 1502 + C:45E9H LINE# 1503 + C:45E9H LINE# 1504 + C:45E9H LINE# 1505 + C:45EAH LINE# 1507 + C:45EAH LINE# 1508 + C:45EFH LINE# 1509 + C:461EH LINE# 1510 + C:461EH LINE# 1511 + C:4625H LINE# 1512 + C:4625H LINE# 1514 + C:462CH LINE# 1515 + C:462CH LINE# 1516 + C:4630H LINE# 1517 + C:4632H LINE# 1519 + C:4632H LINE# 1520 + C:4634H LINE# 1521 + C:4639H LINE# 1522 + C:4639H LINE# 1524 + C:463EH LINE# 1525 + C:4644H LINE# 1527 + C:4649H LINE# 1528 + C:464FH LINE# 1529 + C:4652H LINE# 1531 + C:466BH LINE# 1532 + C:466BH LINE# 1533 + C:4680H LINE# 1534 + C:4683H LINE# 1536 + C:4697H LINE# 1537 + C:46A8H LINE# 1539 + C:46ADH LINE# 1540 + C:46ADH LINE# 1541 + C:46ADH LINE# 1542 + ------- ENDPROC UART0IAPCHECKHANDSHAKE + ------- PROC _INTERRUPTUART0APPRX + D:0007H SYMBOL RxData + C:5E2EH LINE# 1729 + C:5E2EH LINE# 1730 + C:5E2EH LINE# 1731 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 36 + + + C:5E3DH LINE# 1732 + C:5E43H LINE# 1733 + C:5E49H LINE# 1734 + C:5E49H LINE# 1735 + C:5E4BH LINE# 1736 + C:5E4BH LINE# 1737 + C:5E53H LINE# 1738 + C:5E53H LINE# 1739 + C:5E5DH LINE# 1740 + C:5E5DH LINE# 1741 + C:5E61H LINE# 1742 + C:5E61H LINE# 1743 + C:5E63H LINE# 1744 + C:5E65H LINE# 1745 + C:5E67H LINE# 1747 + C:5E67H LINE# 1748 + C:5E69H LINE# 1749 + C:5E6BH LINE# 1750 + C:5E6BH LINE# 1751 + C:5E6DH LINE# 1752 + C:5E75H LINE# 1753 + C:5E75H LINE# 1754 + C:5E7AH LINE# 1755 + C:5E7AH LINE# 1756 + C:5E7AH LINE# 1758 + C:5E7DH LINE# 1759 + C:5E7DH LINE# 1760 + C:5E85H LINE# 1761 + C:5E85H LINE# 1762 + C:5E88H LINE# 1763 + C:5E88H LINE# 1764 + C:5E8AH LINE# 1765 + C:5E8DH LINE# 1766 + C:5E8DH LINE# 1767 + C:5EA6H LINE# 1768 + C:5EA6H LINE# 1769 + C:5EA9H LINE# 1770 + C:5EABH LINE# 1771 + C:5EB0H LINE# 1772 + C:5EB0H LINE# 1773 + C:5EB2H LINE# 1775 + C:5EB2H LINE# 1776 + C:5EB5H LINE# 1777 + C:5EB5H LINE# 1778 + C:5EB7H LINE# 1780 + C:5EBCH LINE# 1781 + C:5EC0H LINE# 1782 + C:5EC4H LINE# 1783 + ------- ENDPROC _INTERRUPTUART0APPRX + ------- PROC INTERRUPTUART0APPTX + C:59B1H LINE# 1792 + C:59B1H LINE# 1793 + C:59B1H LINE# 1794 + C:59C1H LINE# 1795 + C:59C1H LINE# 1796 + C:59DAH LINE# 1797 + C:59DAH LINE# 1798 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 37 + + + C:59DCH LINE# 1799 + C:59DEH LINE# 1800 + C:59E0H LINE# 1801 + C:59E4H LINE# 1802 + C:59E6H LINE# 1803 + C:59E8H LINE# 1804 + C:59EAH LINE# 1805 + C:59ECH LINE# 1806 + C:59EEH LINE# 1808 + C:59EEH LINE# 1809 + C:59F4H LINE# 1810 + C:5A03H LINE# 1811 + C:5A03H LINE# 1812 + C:5A05H LINE# 1813 + C:5A22H LINE# 1814 + C:5A22H LINE# 1815 + C:5A24H LINE# 1816 + C:5A29H LINE# 1817 + C:5A2BH LINE# 1818 + C:5A2FH LINE# 1819 + C:5A31H LINE# 1820 + C:5A33H LINE# 1821 + C:5A35H LINE# 1822 + C:5A37H LINE# 1823 + C:5A39H LINE# 1825 + C:5A39H LINE# 1826 + C:5A3FH LINE# 1827 + C:5A4EH LINE# 1828 + C:5A4EH LINE# 1830 + C:5A53H LINE# 1831 + C:5A57H LINE# 1832 + C:5A5BH LINE# 1833 + ------- ENDPROC INTERRUPTUART0APPTX + ------- PROC UART0CHECK + C:7DECH LINE# 1842 + C:7DECH LINE# 1843 + C:7DECH LINE# 1844 + C:7DF7H LINE# 1845 + C:7DF7H LINE# 1846 + C:7DF9H LINE# 1847 + C:7DFDH LINE# 1848 + C:7DFFH LINE# 1849 + C:7DFFH LINE# 1850 + ------- ENDPROC UART0CHECK + ------- ENDMOD UARTAPP + + ------- MODULE MEMORY + C:0000H SYMBOL _ICE_DUMMY_ + B:0020H.2 PUBLIC bOCRC_EN + X:0024H PUBLIC E2uiLearnLowTempe + D:0080H PUBLIC P0 + D:0022H PUBLIC uiBatStatus + D:0090H PUBLIC P1 + X:001EH PUBLIC E2ulCycleThreshold + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + B:0025H.6 PUBLIC bFastDischarge + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 38 + + + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:0023H.0 PUBLIC bOV + X:002AH PUBLIC E2ucLowPowerDeley + B:0023H.1 PUBLIC bUV + X:00B3H PUBLIC E2ulCycleThresholdCount + B:0025H.5 PUBLIC bMidDischarge + B:0020H.6 PUBLIC bOCPM + B:0025H.2 PUBLIC bCHGING + X:006DH PUBLIC E2slOCCCurrent + X:00C5H PUBLIC E2siTS0Offset + X:0087H PUBLIC E2ucLoadRDelay + X:00C7H PUBLIC E2siTS1Offset + X:0071H PUBLIC E2ucOCCDelay + X:00ABH PUBLIC E2ulDfRC + B:0025H.4 PUBLIC bSlowDischarge + B:0021H.3 PUBLIC bLEDNum0 + B:0021H.4 PUBLIC bLEDNum1 + X:00BCH PUBLIC E2uiAFEOVvol + X:002FH PUBLIC E2ucRamCheckFlg0 + X:006AH PUBLIC E2siChgEndCurr + X:0061H PUBLIC E2ucRamCheckFlg1 + B:0025H.3 PUBLIC bDSGING + X:0073H PUBLIC E2ucRamCheckFlg2 + X:008CH PUBLIC E2ucDSG1PWMRatioH + X:0088H PUBLIC E2ucRamCheckFlg3 + X:0064H PUBLIC E2uiOVRvol + X:002CH PUBLIC E2siChgBKCur + X:00B9H PUBLIC E2ucDsgEndFlg + X:008DH PUBLIC E2ucRamCheckFlg5 + X:0053H PUBLIC E2ucDeviceChem + X:0098H PUBLIC E2ucRamCheckFlg6 + B:0022H.5 PUBLIC bAFE_SC + B:0025H.0 PUBLIC bCHGMOS + B:0020H.3 PUBLIC bBAL_EN + X:001AH PUBLIC E2ulFCC + X:00A1H PUBLIC E2ucRamCheckFlg7 + X:008BH PUBLIC E2ucDSG1PWMRatioL + X:00A9H PUBLIC E2ucRamCheckFlg8 + X:00BAH PUBLIC E2ucRamCheckFlg9 + X:0076H PUBLIC E2uiUVRvol + X:0047H PUBLIC E2ucDeviceName + X:0090H PUBLIC E2uiTempOTCR + X:009BH PUBLIC E2uiTempOTDR + B:0021H.5 PUBLIC bTempNum + X:00C3H PUBLIC E2siCadcOffset + X:0097H PUBLIC E2ucTempRDelay + D:0026H PUBLIC ucAFEStatus + X:00AFH PUBLIC E2slDsgEndCurr + X:0094H PUBLIC E2uiTempUTCR + B:0020H.7 PUBLIC bEnEEPRomBK + X:00BFH PUBLIC E2uiVPackGain + X:00BEH PUBLIC E2ucRamCheckFlgA + X:00A4H PUBLIC E2uiBalanceVolDiff + X:009FH PUBLIC E2uiTempUTDR + X:00CAH PUBLIC E2ucRamCheckFlgB + B:0025H.1 PUBLIC bDSGMOS + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 39 + + + X:01FEH PUBLIC E2uiCheckFlag + X:00A2H PUBLIC E2uiBalanceVol + B:0022H.4 PUBLIC bAFE_OV + X:0068H PUBLIC E2uiChgEndVol + X:00AAH PUBLIC E2ucSOC + X:0035H PUBLIC E2ucMNFName + B:0023H.2 PUBLIC bOCC + D:0020H PUBLIC uiPackConfig + X:0067H PUBLIC E2ucOVRDelay + X:002EH PUBLIC E2ucRTCBKDelay + X:0041H PUBLIC E2ulMNFDate + B:0020H.5 PUBLIC bCTO_EN + X:00B7H PUBLIC E2uiLastCCount + X:0002H PUBLIC E2uiVOC + X:0079H PUBLIC E2ucUVRDelay + X:007AH PUBLIC E2uiDsgEndVol + X:00C9H PUBLIC E2ucCalibrated + B:0026H.4 PUBLIC bAfeCHG + X:00C1H PUBLIC E2siCadcGain + B:0026H.2 PUBLIC bAfeChging + X:00CBH PUBLIC Reserved + B:0021H.0 PUBLIC bCellNum1 + X:007DH PUBLIC E2slOCD1Current + B:0022H.6 PUBLIC bCTO + B:0022H.0 PUBLIC bOTC + B:0021H.1 PUBLIC bCellNum2 + X:0082H PUBLIC E2slOCD2Current + B:0022H.1 PUBLIC bOTD + B:0021H.2 PUBLIC bCellNum3 + X:0081H PUBLIC E2ucOCD1Delay + X:0086H PUBLIC E2ucOCD2Delay + X:00A6H PUBLIC E2siBalCurrent + B:0024H.2 PUBLIC bVDQ + B:0026H.5 PUBLIC bAfeDSG + B:0022H.2 PUBLIC bUTC + X:0062H PUBLIC E2uiOVvol + X:0028H PUBLIC E2siDfilterCur + B:0026H.3 PUBLIC bAfeDsging + B:0022H.3 PUBLIC bUTD + X:0000H PUBLIC E2uiPackConfigMap + X:0074H PUBLIC E2uiUVvol + X:0022H PUBLIC E2uiCycleCount + X:008EH PUBLIC E2uiTempOTC + X:0099H PUBLIC E2uiTempOTD + X:0026H PUBLIC E2Reserve + B:0021H.6 PUBLIC bChgerLock + X:0096H PUBLIC E2ucTempDelay + B:0026H.0 PUBLIC bAfeChger + X:0092H PUBLIC E2uiTempUTC + X:009DH PUBLIC E2uiTempUTD + X:0034H PUBLIC E2ucID + X:00BBH PUBLIC E2ucAFEProtectConfig + X:0032H PUBLIC E2uiHWVersion + X:005FH PUBLIC E2uiChemID + X:002BH PUBLIC E2ucChgBKDelay + X:0066H PUBLIC E2ucOVDelay + D:0024H PUBLIC uiPackStatus + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 40 + + + B:0023H.3 PUBLIC bOCD1 + B:0023H.4 PUBLIC bOCD2 + B:0024H.0 PUBLIC bFC + B:0020H.4 PUBLIC bPF_EN + X:0072H PUBLIC E2ucOCCRDelay + X:0016H PUBLIC E2ulDesignCapacity + B:0024H.1 PUBLIC bFD + B:0020H.0 PUBLIC bSC_EN + X:0045H PUBLIC E2uiSerialNum + X:0030H PUBLIC E2uiSWVersion + X:00A8H PUBLIC E2ucBalanceDelay + X:0089H PUBLIC E2uiDSG1PWMFreq + X:0078H PUBLIC E2ucUVDelay + X:006CH PUBLIC E2ucChgEndDelay + B:0021H.7 PUBLIC bLoadLock + B:0026H.1 PUBLIC bAfeLoad + I:00A0H PUBLIC STACK + B:0020H.1 PUBLIC bOV_EN + X:007CH PUBLIC E2ucDsgEndDelay + ------- ENDMOD MEMORY + + ------- MODULE AFE + C:0000H SYMBOL _ICE_DUMMY_ + X:0200H PUBLIC uiVadcVmax + D:000FH PUBLIC uiCellVmin + D:0080H PUBLIC P0 + D:0011H PUBLIC uiCellVmax + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:618AH PUBLIC AFEInitReg + X:0202H PUBLIC uiTempeMin + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:0204H PUBLIC uiTempeMax + B:002BH.4 PUBLIC bCADCFlg + C:7E99H PUBLIC AfeADCEn + C:7804H PUBLIC AFEClrFlg + C:7D7CH PUBLIC AFERdStatus + D:0013H PUBLIC ucCellNum + X:0206H PUBLIC Info + C:7EF8H PUBLIC AfeTempADCDis + X:023CH PUBLIC slCadcCurBuf + B:002BH.5 PUBLIC bAfeErr + B:002BH.6 PUBLIC bVADCFlg + C:77C7H PUBLIC AFERdFlg + C:7D94H PUBLIC _AfeAlarmDis + C:7E86H PUBLIC AfeWDTDis + B:002BH.7 PUBLIC bAfeI2CRWErrFlg + C:7DC2H PUBLIC _AFEMosCtl + C:7EE5H PUBLIC AfeTempADCEn + X:027CH PUBLIC ucTempeMiddle + C:7F2FH PUBLIC _AfeAlarmEn + C:7E73H PUBLIC AfeWDTEn + X:027DH PUBLIC slCadcCurrent + X:0281H PUBLIC slCadcCurAverage + C:7ED2H PUBLIC AfeCADCDis + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 41 + + + C:7E3AH PUBLIC AFEChgerCheckDis + C:7788H PUBLIC _AfeBalCtl + X:0285H PUBLIC AFE + C:7EBFH PUBLIC AfeCADCEn + C:7E27H PUBLIC AFEChgerCheckEn + C:691FH PUBLIC AFERamCheck + C:7E60H PUBLIC AFELoadCheckDis + D:00C8H PUBLIC TWICON + X:02A3H PUBLIC REG + C:7BBBH PUBLIC AFEEnterPD + C:6103H PUBLIC AFEInit + C:7D62H PUBLIC AFETwiCheck + C:7E4DH PUBLIC AFELoadCheckEn + C:671CH PUBLIC _AFEReadReg + X:02B1H PUBLIC ucAfeI2CErrDelayCnt + X:02B2H PUBLIC ucCadcCnt + C:7EACH PUBLIC AfeADCDis + D:0014H PUBLIC ucCellNumOffset + C:5A5CH PUBLIC _AFEWriteReg + B:002CH.0 PUBLIC bAfeAlarmFlg + X:02B3H PUBLIC uiVadcVmin + ------- PROC AFETWICHECK + C:7D62H LINE# 43 + C:7D62H LINE# 44 + C:7D62H LINE# 45 + C:7D65H LINE# 46 + C:7D65H LINE# 47 + C:7D70H LINE# 48 + C:7D70H LINE# 49 + C:7D72H LINE# 50 + C:7D75H LINE# 51 + C:7D75H LINE# 52 + C:7D76H LINE# 54 + C:7D76H LINE# 55 + C:7D7BH LINE# 56 + C:7D7BH LINE# 57 + ------- ENDPROC AFETWICHECK + ------- PROC _AFEWRITEREG + X:02BEH SYMBOL Reg + X:02BFH SYMBOL Length + X:02C0H SYMBOL WrBuf + ------- DO + B:0029H.6 SYMBOL Result + X:02C2H SYMBOL Times + X:02C3H SYMBOL i + ------- ENDDO + C:5A5CH LINE# 67 + C:5A6AH LINE# 68 + C:5A6AH LINE# 69 + C:5A6CH LINE# 70 + C:5A6FH LINE# 73 + C:5A75H LINE# 74 + C:5A75H LINE# 75 + C:5A84H LINE# 76 + C:5A84H LINE# 77 + C:5A91H LINE# 78 + C:5A91H LINE# 80 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 42 + + + C:5A91H LINE# 81 + C:5AB8H LINE# 82 + C:5AB8H LINE# 88 + C:5ABBH LINE# 89 + C:5ABBH LINE# 90 + C:5ABDH LINE# 91 + C:5ABFH LINE# 93 + C:5ABFH LINE# 94 + C:5AC2H LINE# 95 + C:5AC7H LINE# 96 + C:5ACAH LINE# 97 + C:5ACDH LINE# 98 + C:5ACDH LINE# 99 + C:5ACFH LINE# 100 + C:5AD8H LINE# 101 + C:5AD8H LINE# 102 + C:5ADAH LINE# 103 + C:5ADCH LINE# 105 + C:5ADCH LINE# 106 + C:5AE1H LINE# 107 + C:5AE7H LINE# 108 + C:5AF1H LINE# 109 + C:5AF1H LINE# 110 + C:5AF6H LINE# 111 + C:5AFFH LINE# 112 + C:5AFFH LINE# 113 + C:5B04H LINE# 115 + C:5B06H LINE# 116 + ------- ENDPROC _AFEWRITEREG + ------- PROC _AFEREADREG + X:02C1H SYMBOL Reg + X:02C2H SYMBOL Length + X:02C3H SYMBOL RdBuf + ------- DO + B:0029H.6 SYMBOL Result + X:02C5H SYMBOL Times + ------- ENDDO + C:671CH LINE# 126 + C:672AH LINE# 127 + C:672AH LINE# 128 + C:672CH LINE# 129 + C:672FH LINE# 131 + C:6732H LINE# 132 + C:6732H LINE# 133 + C:673FH LINE# 134 + C:673FH LINE# 136 + C:6768H LINE# 140 + C:676BH LINE# 141 + C:676BH LINE# 142 + C:676DH LINE# 143 + C:676FH LINE# 145 + C:676FH LINE# 146 + C:6772H LINE# 147 + C:6777H LINE# 148 + C:677AH LINE# 149 + C:677DH LINE# 150 + C:677DH LINE# 151 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 43 + + + C:677FH LINE# 152 + C:677FH LINE# 153 + C:6784H LINE# 155 + C:6786H LINE# 156 + ------- ENDPROC _AFEREADREG + ------- PROC AFECLRFLG + C:7804H LINE# 165 + C:7804H LINE# 166 + C:7804H LINE# 167 + C:7811H LINE# 168 + C:7811H LINE# 169 + C:781BH LINE# 170 + C:781BH LINE# 171 + C:7822H LINE# 172 + C:782DH LINE# 173 + C:7834H LINE# 174 + C:783FH LINE# 175 + C:783FH LINE# 176 + C:783FH LINE# 177 + ------- ENDPROC AFECLRFLG + ------- PROC AFEINITREG + ------- DO + D:0004H SYMBOL TempVar + ------- ENDDO + C:618AH LINE# 186 + C:618AH LINE# 187 + C:618AH LINE# 190 + C:618FH LINE# 191 + C:6193H LINE# 192 + C:6196H LINE# 193 + C:619AH LINE# 194 + C:619DH LINE# 195 + C:619FH LINE# 196 + C:61A3H LINE# 197 + C:61A7H LINE# 198 + C:61ABH LINE# 199 + C:61AFH LINE# 200 + C:61B2H LINE# 202 + C:61B5H LINE# 203 + C:61B5H LINE# 204 + C:61BCH LINE# 205 + C:61CEH LINE# 206 + C:61CEH LINE# 207 + C:61D1H LINE# 208 + C:61D1H LINE# 209 + C:61D8H LINE# 210 + C:61EAH LINE# 211 + C:6207H LINE# 212 + C:620CH LINE# 213 + C:620FH LINE# 214 + C:620FH LINE# 215 + ------- ENDPROC AFEINITREG + ------- PROC AFEINIT + ------- DO + X:02BAH SYMBOL RdBuf + X:02BCH SYMBOL i + B:0029H.5 SYMBOL Result + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 44 + + + X:02BDH SYMBOL j + ------- ENDDO + C:6103H LINE# 225 + C:6103H LINE# 226 + C:6103H LINE# 229 + C:6105H LINE# 230 + C:610BH LINE# 232 + C:6115H LINE# 233 + C:6115H LINE# 234 + C:6122H LINE# 235 + C:6122H LINE# 236 + C:6132H LINE# 237 + C:6132H LINE# 238 + C:613BH LINE# 240 + C:6169H LINE# 241 + C:6169H LINE# 242 + C:6171H LINE# 243 + C:6171H LINE# 244 + C:6173H LINE# 245 + C:6175H LINE# 246 + C:6175H LINE# 247 + C:6175H LINE# 248 + C:617EH LINE# 249 + C:617EH LINE# 251 + C:617EH LINE# 252 + C:6180H LINE# 253 + C:6180H LINE# 254 + C:6183H LINE# 255 + C:6183H LINE# 256 + C:6185H LINE# 257 + C:6185H LINE# 258 + C:6187H LINE# 259 + C:6189H LINE# 261 + ------- ENDPROC AFEINIT + ------- PROC AFERDFLG + C:77C7H LINE# 272 + C:77C7H LINE# 273 + C:77C7H LINE# 274 + C:77D4H LINE# 275 + C:77D4H LINE# 276 + C:77DCH LINE# 277 + C:77DCH LINE# 278 + C:77DEH LINE# 279 + C:77DEH LINE# 281 + C:77E2H LINE# 282 + C:77E2H LINE# 283 + C:77E4H LINE# 284 + C:77E4H LINE# 286 + C:77EFH LINE# 287 + C:77EFH LINE# 288 + C:77F1H LINE# 289 + C:77F3H LINE# 290 + C:77F3H LINE# 291 + C:77F7H LINE# 292 + C:77F7H LINE# 293 + C:77F9H LINE# 294 + C:77F9H LINE# 296 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 45 + + + C:7800H LINE# 297 + C:7800H LINE# 298 + C:7803H LINE# 299 + C:7803H LINE# 300 + C:7803H LINE# 301 + ------- ENDPROC AFERDFLG + ------- PROC AFERDSTATUS + ------- DO + X:02B7H SYMBOL RegTemp + ------- ENDDO + C:7D7CH LINE# 310 + C:7D7CH LINE# 311 + C:7D7CH LINE# 313 + C:7D89H LINE# 314 + C:7D89H LINE# 315 + C:7D93H LINE# 316 + C:7D93H LINE# 317 + ------- ENDPROC AFERDSTATUS + ------- PROC AFERAMCHECK + ------- DO + X:02B7H SYMBOL RdBuf + X:02B9H SYMBOL i + ------- ENDDO + C:691FH LINE# 326 + C:691FH LINE# 327 + C:691FH LINE# 331 + C:692FH LINE# 332 + C:692FH LINE# 333 + C:6938H LINE# 335 + C:6966H LINE# 336 + C:6966H LINE# 337 + C:696EH LINE# 338 + C:696EH LINE# 339 + C:6973H LINE# 340 + C:6973H LINE# 341 + C:6975H LINE# 342 + C:6975H LINE# 343 + C:6976H LINE# 344 + C:6976H LINE# 345 + C:6976H LINE# 346 + C:697FH LINE# 347 + ------- ENDPROC AFERAMCHECK + ------- PROC AFEENTERPD + C:7BBBH LINE# 356 + C:7BBBH LINE# 357 + C:7BBBH LINE# 358 + C:7BC1H LINE# 359 + C:7BCEH LINE# 360 + C:7BCEH LINE# 361 + C:7BD5H LINE# 362 + C:7BE0H LINE# 363 + C:7BE0H LINE# 364 + ------- ENDPROC AFEENTERPD + ------- PROC _AFEMOSCTL + D:0007H SYMBOL MosStatus + C:7DC2H LINE# 373 + C:7DC2H LINE# 374 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 46 + + + C:7DC2H LINE# 375 + C:7DC9H LINE# 376 + C:7DCBH LINE# 377 + C:7DD6H LINE# 378 + ------- ENDPROC _AFEMOSCTL + ------- PROC AFECHGERCHECKEN + C:7E27H LINE# 388 + C:7E27H LINE# 389 + C:7E27H LINE# 390 + C:7E2EH LINE# 391 + C:7E39H LINE# 392 + ------- ENDPROC AFECHGERCHECKEN + ------- PROC AFECHGERCHECKDIS + C:7E3AH LINE# 395 + C:7E3AH LINE# 396 + C:7E3AH LINE# 397 + C:7E41H LINE# 398 + C:7E4CH LINE# 399 + ------- ENDPROC AFECHGERCHECKDIS + ------- PROC AFELOADCHECKEN + C:7E4DH LINE# 402 + C:7E4DH LINE# 403 + C:7E4DH LINE# 404 + C:7E54H LINE# 405 + C:7E5FH LINE# 406 + ------- ENDPROC AFELOADCHECKEN + ------- PROC AFELOADCHECKDIS + C:7E60H LINE# 409 + C:7E60H LINE# 410 + C:7E60H LINE# 411 + C:7E67H LINE# 412 + C:7E72H LINE# 413 + ------- ENDPROC AFELOADCHECKDIS + ------- PROC _AFEBALCTL + X:02B9H SYMBOL BalChTemp + C:7788H LINE# 422 + C:7790H LINE# 423 + C:7790H LINE# 424 + C:77A4H LINE# 425 + C:77B1H LINE# 426 + C:77B1H LINE# 427 + C:77BBH LINE# 428 + C:77C6H LINE# 429 + C:77C6H LINE# 430 + ------- ENDPROC _AFEBALCTL + ------- PROC AFEWDTEN + C:7E73H LINE# 439 + C:7E73H LINE# 440 + C:7E73H LINE# 441 + C:7E7AH LINE# 442 + C:7E85H LINE# 443 + ------- ENDPROC AFEWDTEN + ------- PROC AFEWDTDIS + C:7E86H LINE# 446 + C:7E86H LINE# 447 + C:7E86H LINE# 448 + C:7E8DH LINE# 449 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 47 + + + C:7E98H LINE# 450 + ------- ENDPROC AFEWDTDIS + ------- PROC AFEADCEN + C:7E99H LINE# 459 + C:7E99H LINE# 460 + C:7E99H LINE# 461 + C:7EA0H LINE# 462 + C:7EABH LINE# 463 + ------- ENDPROC AFEADCEN + ------- PROC AFEADCDIS + C:7EACH LINE# 466 + C:7EACH LINE# 467 + C:7EACH LINE# 468 + C:7EB3H LINE# 469 + C:7EBEH LINE# 470 + ------- ENDPROC AFEADCDIS + ------- PROC AFECADCEN + C:7EBFH LINE# 472 + C:7EBFH LINE# 473 + C:7EBFH LINE# 474 + C:7EC6H LINE# 475 + C:7ED1H LINE# 476 + ------- ENDPROC AFECADCEN + ------- PROC AFECADCDIS + C:7ED2H LINE# 479 + C:7ED2H LINE# 480 + C:7ED2H LINE# 481 + C:7ED9H LINE# 482 + C:7EE4H LINE# 483 + ------- ENDPROC AFECADCDIS + ------- PROC AFETEMPADCEN + C:7EE5H LINE# 485 + C:7EE5H LINE# 486 + C:7EE5H LINE# 487 + C:7EECH LINE# 488 + C:7EF7H LINE# 489 + ------- ENDPROC AFETEMPADCEN + ------- PROC AFETEMPADCDIS + C:7EF8H LINE# 492 + C:7EF8H LINE# 493 + C:7EF8H LINE# 494 + C:7EFFH LINE# 495 + C:7F0AH LINE# 496 + ------- ENDPROC AFETEMPADCDIS + ------- PROC _AFEALARMEN + D:0007H SYMBOL AlarmFlg + C:7F2FH LINE# 505 + C:7F2FH LINE# 506 + C:7F2FH LINE# 507 + C:7F35H LINE# 508 + C:7F40H LINE# 509 + ------- ENDPROC _AFEALARMEN + ------- PROC _AFEALARMDIS + D:0007H SYMBOL AlarmFlg + C:7D94H LINE# 511 + C:7D94H LINE# 512 + C:7D94H LINE# 513 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 48 + + + C:7D9FH LINE# 514 + C:7DAAH LINE# 515 + ------- ENDPROC _AFEALARMDIS + ------- ENDMOD AFE + + ------- MODULE BALANCE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + B:002CH.1 PUBLIC bBalancingFlg + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + B:002CH.2 PUBLIC bCellOpenDecFlag + D:0080H PUBLIC P5 + C:7F77H PUBLIC BalanceProcess + X:0536H PUBLIC ucBalanceStep + X:0537H PUBLIC ucCellOpenDecCnt + X:0538H PUBLIC ucCtoCnt + B:002CH.3 PUBLIC bBalanceFlg + C:7BE1H PUBLIC CTOTurnOnCheck + X:0539H PUBLIC ucBalanceTimeCnt + B:002CH.4 PUBLIC bBalanceOddFlg + X:053AH PUBLIC uiBalanceChannel + B:002CH.5 PUBLIC bCTOValidFlg + C:4945H PUBLIC BalTurnOnCheck + C:5798H PUBLIC BalProcess + C:7959H PUBLIC CTOCheckVol + ------- PROC BALTURNONCHECK + ------- DO + D:0005H SYMBOL i + ------- ENDDO + C:4945H LINE# 32 + C:4945H LINE# 33 + C:4945H LINE# 36 + C:4951H LINE# 37 + C:4951H LINE# 38 + C:4957H LINE# 39 + C:4957H LINE# 40 + C:495EH LINE# 41 + C:498EH LINE# 44 + C:498EH LINE# 45 + C:4990H LINE# 46 + C:4995H LINE# 47 + C:4996H LINE# 49 + C:4996H LINE# 50 + C:49E0H LINE# 51 + C:49E0H LINE# 52 + C:49E3H LINE# 53 + C:49E3H LINE# 54 + C:49E9H LINE# 55 + C:49E9H LINE# 56 + C:4A05H LINE# 57 + C:4A05H LINE# 58 + C:4A1BH LINE# 59 + C:4A1BH LINE# 60 + C:4A60H LINE# 61 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 49 + + + C:4A60H LINE# 62 + C:4A7BH LINE# 63 + C:4A7BH LINE# 64 + C:4A7EH LINE# 65 + C:4A80H LINE# 66 + C:4A80H LINE# 67 + C:4A81H LINE# 69 + C:4A81H LINE# 70 + C:4A83H LINE# 71 + C:4A88H LINE# 72 + C:4A88H LINE# 73 + C:4A88H LINE# 74 + C:4A88H LINE# 75 + C:4A88H LINE# 76 + ------- ENDPROC BALTURNONCHECK + ------- PROC CTOCHECKVOL + ------- DO + B:0029H.5 SYMBOL bResult + ------- ENDDO + C:7959H LINE# 87 + C:7959H LINE# 88 + C:7959H LINE# 89 + C:795BH LINE# 91 + C:795EH LINE# 92 + C:795EH LINE# 93 + C:7961H LINE# 94 + C:7961H LINE# 95 + C:7964H LINE# 96 + C:7964H LINE# 97 + C:7973H LINE# 98 + C:7973H LINE# 99 + C:7975H LINE# 100 + C:7980H LINE# 101 + C:7980H LINE# 102 + C:7982H LINE# 103 + C:7982H LINE# 104 + C:7984H LINE# 106 + C:7984H LINE# 107 + C:7986H LINE# 108 + C:798BH LINE# 109 + C:798BH LINE# 110 + C:798BH LINE# 111 + C:798BH LINE# 128 + C:798BH LINE# 130 + C:798DH LINE# 131 + ------- ENDPROC CTOCHECKVOL + ------- PROC BALPROCESS + ------- DO + X:02B7H SYMBOL BalChTemp + ------- ENDDO + C:5798H LINE# 144 + C:5798H LINE# 145 + C:5798H LINE# 150 + C:57B6H LINE# 151 + C:57B6H LINE# 152 + C:57B8H LINE# 153 + C:57B8H LINE# 155 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 50 + + + C:57D0H LINE# 156 + C:57D0H LINE# 157 + C:57D0H LINE# 158 + C:57D6H LINE# 159 + C:57D6H LINE# 160 + C:57D9H LINE# 161 + C:57D9H LINE# 162 + C:57ECH LINE# 163 + C:57EEH LINE# 165 + C:57EEH LINE# 166 + C:5801H LINE# 167 + C:5801H LINE# 168 + C:580CH LINE# 169 + C:5812H LINE# 170 + C:5814H LINE# 171 + C:5814H LINE# 172 + C:5815H LINE# 174 + C:5815H LINE# 175 + C:581BH LINE# 176 + C:581CH LINE# 178 + C:581CH LINE# 179 + C:5821H LINE# 180 + C:5821H LINE# 181 + C:5827H LINE# 182 + C:582DH LINE# 183 + C:582FH LINE# 184 + C:582FH LINE# 185 + C:5830H LINE# 187 + C:5830H LINE# 188 + C:5835H LINE# 189 + C:5835H LINE# 190 + C:583BH LINE# 191 + C:583CH LINE# 193 + C:583CH LINE# 194 + C:5842H LINE# 195 + C:5844H LINE# 196 + C:5844H LINE# 197 + C:5845H LINE# 199 + C:5845H LINE# 200 + C:584BH LINE# 201 + C:584DH LINE# 202 + C:584FH LINE# 203 + C:5851H LINE# 204 + C:5851H LINE# 205 + C:5851H LINE# 206 + ------- ENDPROC BALPROCESS + ------- PROC CTOTURNONCHECK + C:7BE1H LINE# 215 + C:7BE1H LINE# 216 + C:7BE1H LINE# 220 + C:7BE7H LINE# 222 + C:7BE7H LINE# 223 + C:7BF2H LINE# 224 + C:7BF2H LINE# 225 + C:7BF5H LINE# 226 + C:7BF8H LINE# 227 + C:7BF8H LINE# 228 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 51 + + + C:7BFAH LINE# 229 + C:7BFCH LINE# 230 + C:7C06H LINE# 231 + C:7C06H LINE# 232 + C:7C06H LINE# 233 + C:7C06H LINE# 234 + ------- ENDPROC CTOTURNONCHECK + ------- PROC BALANCEPROCESS + C:7F77H LINE# 242 + C:7F77H LINE# 243 + C:7F77H LINE# 244 + C:7F7AH LINE# 246 + C:7F7DH LINE# 248 + C:7F80H LINE# 249 + ------- ENDPROC BALANCEPROCESS + ------- ENDMOD BALANCE + + ------- MODULE CALCULATE + C:0000H SYMBOL _ICE_DUMMY_ + C:5852H PUBLIC OffsetCalculate + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:380CH PUBLIC _CalcuTemp + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:79F8H PUBLIC siCurTempOffset + C:40EFH PUBLIC AfeCalcuCurr + C:4BCBH PUBLIC AfeCalcuVol + C:7389H PUBLIC AfeGetTempe + X:05F6H PUBLIC ucChgingCheckCnt + C:7E00H PUBLIC AFEInfoProcess + X:05F7H PUBLIC ucDsgingCheckCnt + B:00A8H.4 PUBLIC ES0 + C:71D2H PUBLIC AfeGetVol + C:4F22H PUBLIC AfeCalcuTempe + ------- PROC _CALCUTEMP + D:0082H SYMBOL getdata + ------- DO + X:02B7H SYMBOL i + X:02B8H SYMBOL Temperature + X:02BAH SYMBOL Tempcalcu + ------- ENDDO + C:380CH LINE# 22 + C:3810H LINE# 23 + C:3810H LINE# 31 + C:383EH LINE# 32 + C:3850H LINE# 33 + C:3850H LINE# 34 + C:386DH LINE# 35 + C:386DH LINE# 38 + C:3886H LINE# 39 + C:3886H LINE# 40 + C:3890H LINE# 41 + C:3893H LINE# 42 + C:38ACH LINE# 43 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 52 + + + C:38ACH LINE# 44 + C:38B6H LINE# 45 + C:38B9H LINE# 47 + C:38B9H LINE# 48 + C:38C1H LINE# 49 + C:38E0H LINE# 50 + C:38E0H LINE# 51 + C:38F3H LINE# 52 + C:38F3H LINE# 53 + C:3913H LINE# 54 + C:3913H LINE# 55 + C:3913H LINE# 56 + C:3913H LINE# 57 + C:391BH LINE# 58 + C:391BH LINE# 60 + C:391BH LINE# 61 + C:392EH LINE# 62 + C:392EH LINE# 63 + C:394EH LINE# 64 + C:394EH LINE# 65 + C:394EH LINE# 66 + C:394EH LINE# 67 + C:3956H LINE# 68 + C:395CH LINE# 69 + C:395CH LINE# 70 + C:3964H LINE# 72 + C:39F3H LINE# 73 + C:39F3H LINE# 74 + C:39FBH LINE# 75 + ------- ENDPROC _CALCUTEMP + ------- PROC AFEGETVOL + ------- DO + X:02C0H SYMBOL i + B:0029H.5 SYMBOL Result + ------- ENDDO + C:71D2H LINE# 84 + C:71D2H LINE# 85 + C:71D2H LINE# 87 + C:71D4H LINE# 89 + C:71F1H LINE# 90 + C:71F1H LINE# 91 + C:720CH LINE# 92 + C:720CH LINE# 93 + C:720EH LINE# 94 + C:7211H LINE# 95 + C:7211H LINE# 96 + C:7219H LINE# 98 + C:721BH LINE# 99 + ------- ENDPROC AFEGETVOL + ------- PROC AFEGETTEMPE + ------- DO + B:0029H.5 SYMBOL Result + ------- ENDDO + C:7389H LINE# 101 + C:7389H LINE# 102 + C:7389H LINE# 103 + C:738BH LINE# 105 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 53 + + + C:7398H LINE# 106 + C:7398H LINE# 107 + C:739AH LINE# 108 + C:739AH LINE# 109 + C:73A7H LINE# 110 + C:73A7H LINE# 111 + C:73A9H LINE# 112 + C:73A9H LINE# 114 + C:73B6H LINE# 115 + C:73B6H LINE# 116 + C:73B8H LINE# 117 + C:73B8H LINE# 118 + C:73BFH LINE# 119 + C:73BFH LINE# 120 + C:73CCH LINE# 121 + C:73CCH LINE# 122 + C:73CEH LINE# 123 + C:73CEH LINE# 124 + C:73CEH LINE# 126 + C:73D0H LINE# 127 + ------- ENDPROC AFEGETTEMPE + ------- PROC AFECALCUTEMPE + ------- DO + D:0006H SYMBOL TempeData + ------- ENDDO + C:4F22H LINE# 136 + C:4F22H LINE# 137 + C:4F22H LINE# 140 + C:4F2AH LINE# 141 + C:4F2AH LINE# 142 + C:4F41H LINE# 144 + C:4F43H LINE# 152 + C:4F4AH LINE# 154 + C:4F4CH LINE# 162 + C:4F6BH LINE# 164 + C:4F6DH LINE# 172 + C:4F74H LINE# 175 + C:4F76H LINE# 184 + C:4F7DH LINE# 185 + C:4F7DH LINE# 186 + C:4F9CH LINE# 188 + C:4F9EH LINE# 196 + C:4FA5H LINE# 198 + C:4FA7H LINE# 206 + C:4FA7H LINE# 208 + C:4FB7H LINE# 209 + C:4FBFH LINE# 210 + C:4FC2H LINE# 211 + C:4FC2H LINE# 212 + C:4FD9H LINE# 214 + C:4FDBH LINE# 222 + C:4FE2H LINE# 224 + C:4FE4H LINE# 233 + C:4FF1H LINE# 234 + C:4FF1H LINE# 235 + C:4FF6H LINE# 236 + C:4FF7H LINE# 238 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 54 + + + C:4FF7H LINE# 239 + C:4FFFH LINE# 240 + C:4FFFH LINE# 241 + C:4FFFH LINE# 242 + C:4FFFH LINE# 243 + ------- ENDPROC AFECALCUTEMPE + ------- PROC AFECALCUVOL + ------- DO + X:02B7H SYMBOL i + X:02B8H SYMBOL TempPackVol + X:02BCH SYMBOL TempCellVol + ------- ENDDO + C:4BCBH LINE# 253 + C:4BCBH LINE# 254 + C:4BCBH LINE# 256 + C:4BDFH LINE# 257 + C:4BE6H LINE# 258 + C:4BF0H LINE# 260 + C:4BF8H LINE# 261 + C:4BF8H LINE# 262 + C:4C19H LINE# 263 + C:4C19H LINE# 264 + C:4C50H LINE# 266 + C:4C67H LINE# 267 + C:4C67H LINE# 268 + C:4C75H LINE# 269 + C:4C75H LINE# 270 + C:4C8CH LINE# 271 + C:4C8CH LINE# 272 + C:4C9AH LINE# 273 + C:4C9AH LINE# 275 + C:4C9DH LINE# 276 + C:4C9DH LINE# 278 + C:4C9FH LINE# 286 + C:4CB9H LINE# 288 + C:4CBBH LINE# 296 + C:4CD0H LINE# 297 + C:4CD0H LINE# 298 + C:4CD9H LINE# 300 + C:4CDCH LINE# 301 + C:4CDCH LINE# 302 + C:4CE6H LINE# 303 + C:4CF0H LINE# 306 + C:4CF2H LINE# 314 + C:4D00H LINE# 316 + C:4D02H LINE# 324 + C:4D02H LINE# 325 + C:4D02H LINE# 326 + ------- ENDPROC AFECALCUVOL + ------- PROC OFFSETCALCULATE + ------- DO + X:02BCH SYMBOL siCadcTempOffset + X:02BEH SYMBOL i + ------- ENDDO + C:5852H LINE# 347 + C:5852H LINE# 348 + C:5852H LINE# 349 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 55 + + + C:5859H LINE# 352 + C:5868H LINE# 353 + C:5868H LINE# 354 + C:58D4H LINE# 355 + C:58D4H LINE# 356 + C:58F1H LINE# 357 + C:58F3H LINE# 358 + C:58F3H LINE# 359 + C:58FCH LINE# 360 + C:5904H LINE# 361 + ------- ENDPROC OFFSETCALCULATE + ------- PROC AFECALCUCURR + ------- DO + X:02B7H SYMBOL i + X:02B8H SYMBOL Tempdata + ------- ENDDO + C:40EFH LINE# 369 + C:40EFH LINE# 370 + C:40EFH LINE# 372 + C:40F9H LINE# 374 + C:4104H LINE# 376 + C:4110H LINE# 377 + C:4110H LINE# 378 + C:4119H LINE# 379 + C:4119H LINE# 380 + C:4168H LINE# 382 + C:4182H LINE# 383 + C:418DH LINE# 384 + C:418DH LINE# 385 + C:418FH LINE# 386 + C:418FH LINE# 387 + C:419EH LINE# 388 + C:419EH LINE# 389 + C:41BCH LINE# 390 + C:41C4H LINE# 391 + C:41D9H LINE# 393 + C:41DBH LINE# 394 + C:41DDH LINE# 395 + C:41FDH LINE# 396 + C:41FDH LINE# 397 + C:4208H LINE# 398 + C:4208H LINE# 399 + C:420BH LINE# 400 + C:420DH LINE# 402 + C:420FH LINE# 410 + C:421BH LINE# 412 + C:421DH LINE# 420 + C:421DH LINE# 421 + C:421EH LINE# 422 + C:4238H LINE# 423 + C:4238H LINE# 424 + C:4242H LINE# 425 + C:4242H LINE# 426 + C:4245H LINE# 427 + C:4247H LINE# 428 + C:4250H LINE# 430 + C:4252H LINE# 438 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 56 + + + C:425EH LINE# 440 + C:4260H LINE# 448 + C:4260H LINE# 449 + C:4261H LINE# 451 + C:4261H LINE# 453 + C:4263H LINE# 461 + C:426DH LINE# 463 + C:426FH LINE# 471 + C:426FH LINE# 472 + ------- ENDPROC AFECALCUCURR + ------- PROC AFEINFOPROCESS + C:7E00H LINE# 481 + C:7E00H LINE# 482 + C:7E00H LINE# 483 + C:7E03H LINE# 485 + C:7E05H LINE# 486 + C:7E08H LINE# 487 + C:7E0BH LINE# 489 + C:7E0EH LINE# 490 + C:7E0EH LINE# 491 + C:7E10H LINE# 492 + C:7E13H LINE# 493 + C:7E13H LINE# 494 + ------- ENDPROC AFEINFOPROCESS + ------- ENDMOD CALCULATE + + ------- MODULE CALIBRATE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:05D6H PUBLIC slExtCur + C:7F41H PUBLIC CaliCurZero + X:05DAH PUBLIC ucExtcaliSwitch1 + C:6643H PUBLIC CaliVoltage + C:7534H PUBLIC CaliTS1 + C:7579H PUBLIC CaliTS2 + X:05DBH PUBLIC uiExtTemp1 + X:05DDH PUBLIC uiExtTemp2 + C:6EC9H PUBLIC CaliProcess + C:7840H PUBLIC CaliCurrentGain + X:05DFH PUBLIC ulExtVPack + X:05E1H PUBLIC ucExtRTC + C:75BEH PUBLIC CaliRTCTime + B:002FH.4 PUBLIC bCaliFlg + ------- PROC CALIVOLTAGE + ------- DO + D:0007H SYMBOL i + X:02B7H SYMBOL VPackTemp + ------- ENDDO + C:6643H LINE# 26 + C:6643H LINE# 27 + C:6643H LINE# 29 + C:664AH LINE# 31 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 57 + + + C:6662H LINE# 32 + C:6662H LINE# 33 + C:667CH LINE# 34 + C:667FH LINE# 36 + C:66AFH LINE# 37 + ------- ENDPROC CALIVOLTAGE + ------- PROC CALICURRENTGAIN + ------- DO + D:0006H SYMBOL TempGain + ------- ENDDO + C:7840H LINE# 46 + C:7840H LINE# 47 + C:7840H LINE# 50 + C:786EH LINE# 51 + C:7872H LINE# 52 + C:7872H LINE# 53 + C:787AH LINE# 54 + C:787AH LINE# 55 + ------- ENDPROC CALICURRENTGAIN + ------- PROC CALICURZERO + C:7F41H LINE# 64 + C:7F41H LINE# 65 + C:7F41H LINE# 66 + C:7F50H LINE# 67 + ------- ENDPROC CALICURZERO + ------- PROC CALITS1 + ------- DO + D:0006H SYMBOL Tempe + ------- ENDDO + C:7534H LINE# 76 + C:7534H LINE# 77 + C:7534H LINE# 80 + C:754CH LINE# 81 + C:7570H LINE# 82 + C:7570H LINE# 83 + C:7578H LINE# 84 + C:7578H LINE# 85 + ------- ENDPROC CALITS1 + ------- PROC CALITS2 + ------- DO + D:0006H SYMBOL Tempe + ------- ENDDO + C:7579H LINE# 87 + C:7579H LINE# 88 + C:7579H LINE# 91 + C:7591H LINE# 92 + C:75B5H LINE# 93 + C:75B5H LINE# 94 + C:75BDH LINE# 95 + C:75BDH LINE# 96 + ------- ENDPROC CALITS2 + ------- PROC CALIRTCTIME + C:75BEH LINE# 106 + C:75BEH LINE# 107 + C:75BEH LINE# 108 + C:75C6H LINE# 109 + C:75CEH LINE# 110 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 58 + + + C:75D6H LINE# 111 + C:75DEH LINE# 112 + C:75E6H LINE# 113 + C:75EEH LINE# 114 + C:75F6H LINE# 116 + C:75FDH LINE# 118 + C:75FFH LINE# 119 + C:7601H LINE# 120 + ------- ENDPROC CALIRTCTIME + ------- PROC CALIPROCESS + C:6EC9H LINE# 131 + C:6EC9H LINE# 132 + C:6EC9H LINE# 133 + C:6ECCH LINE# 134 + C:6ECCH LINE# 135 + C:6ECEH LINE# 137 + C:6ED5H LINE# 138 + C:6ED5H LINE# 139 + C:6ED8H LINE# 140 + C:6ED8H LINE# 142 + C:6EDFH LINE# 143 + C:6EDFH LINE# 144 + C:6EE2H LINE# 145 + C:6EE2H LINE# 147 + C:6EE9H LINE# 148 + C:6EE9H LINE# 149 + C:6EECH LINE# 150 + C:6EECH LINE# 152 + C:6EF3H LINE# 153 + C:6EF3H LINE# 154 + C:6EF6H LINE# 155 + C:6EF6H LINE# 157 + C:6EFDH LINE# 158 + C:6EFDH LINE# 159 + C:6F00H LINE# 160 + C:6F00H LINE# 162 + C:6F07H LINE# 163 + C:6F07H LINE# 164 + C:6F0AH LINE# 165 + C:6F0AH LINE# 167 + C:6F0FH LINE# 168 + C:6F11H LINE# 169 + C:6F17H LINE# 170 + C:6F17H LINE# 171 + ------- ENDPROC CALIPROCESS + ------- ENDMOD CALIBRATE + + ------- MODULE CHARGERLOAD + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:05F8H PUBLIC ucChgerRCnt + B:002DH.2 PUBLIC bChgerChkingFlg + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 59 + + + C:72F8H PUBLIC ChgerCheck + X:05F9H PUBLIC ucLoadRCnt + B:002DH.3 PUBLIC bLoadChkingFlg + B:002DH.4 PUBLIC bChgerStartCheckFlg + C:7054H PUBLIC LoadCheck + B:002DH.5 PUBLIC bLoadStartCheckFlg + ------- PROC LOADCHECK + C:7054H LINE# 26 + C:7054H LINE# 27 + C:7054H LINE# 28 + C:7057H LINE# 29 + C:7057H LINE# 30 + C:7059H LINE# 31 + C:705BH LINE# 32 + C:7060H LINE# 33 + C:7063H LINE# 34 + C:7064H LINE# 35 + C:7067H LINE# 36 + C:7067H LINE# 37 + C:706AH LINE# 38 + C:706DH LINE# 39 + C:706DH LINE# 40 + C:7089H LINE# 41 + C:7089H LINE# 42 + C:708BH LINE# 43 + C:708DH LINE# 44 + C:7090H LINE# 45 + C:7093H LINE# 46 + C:7093H LINE# 47 + C:7095H LINE# 48 + C:7095H LINE# 49 + C:7097H LINE# 50 + C:7099H LINE# 51 + C:709CH LINE# 52 + C:709CH LINE# 53 + C:709EH LINE# 54 + C:70A1H LINE# 55 + C:70A1H LINE# 56 + C:70A1H LINE# 57 + C:70A1H LINE# 58 + C:70A1H LINE# 59 + ------- ENDPROC LOADCHECK + ------- PROC CHGERCHECK + C:72F8H LINE# 68 + C:72F8H LINE# 69 + C:72F8H LINE# 70 + C:72FBH LINE# 71 + C:72FBH LINE# 72 + C:72FDH LINE# 73 + C:72FFH LINE# 74 + C:7304H LINE# 75 + C:7307H LINE# 76 + C:7308H LINE# 77 + C:730BH LINE# 78 + C:730BH LINE# 79 + C:730EH LINE# 80 + C:7311H LINE# 81 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 60 + + + C:7311H LINE# 82 + C:732DH LINE# 83 + C:732DH LINE# 84 + C:732FH LINE# 85 + C:7331H LINE# 86 + C:7334H LINE# 87 + C:7337H LINE# 88 + C:7337H LINE# 89 + C:7339H LINE# 90 + C:733BH LINE# 91 + C:733EH LINE# 92 + C:733EH LINE# 93 + C:7340H LINE# 94 + C:7340H LINE# 95 + C:7340H LINE# 96 + C:7340H LINE# 97 + ------- ENDPROC CHGERCHECK + ------- ENDMOD CHARGERLOAD + + ------- MODULE EXTE2PROM + C:0000H SYMBOL _ICE_DUMMY_ + C:6787H PUBLIC Uart0RdE2PRom + C:64F6H PUBLIC Uart1RdE2PRom + D:0080H PUBLIC P0 + C:6565H PUBLIC Uart2RdE2PRom + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + C:3F3CH PUBLIC _E2PRomBKData + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:69E1H PUBLIC _E2PRomWrite + C:6393H PUBLIC E2PRomInit + C:7CEFH PUBLIC E2PRomTwiCheck + X:03DAH PUBLIC ucRTCBKTime1 + B:00A0H.4 PUBLIC REN1 + B:0090H.4 PUBLIC REN2 + X:03DBH PUBLIC uiRTCBKTime2 + C:7688H PUBLIC E2PRomBKBoot + B:0027H.0 PUBLIC bE2PErase + X:03DDH PUBLIC uiE2PDataAddr + B:0027H.1 PUBLIC bE2PRErr + B:0027H.2 PUBLIC bE2PProcessFlg + X:03DFH PUBLIC bUart0E2PRdData + X:03E0H PUBLIC bUart1E2PRdData + X:03E1H PUBLIC bUart2E2PRdData + I:001EH PUBLIC ucUpDataLimitTime + D:0099H PUBLIC SBUF + X:03E2H PUBLIC uiCHGValidTime + D:00B1H PUBLIC RSTSTAT + X:03E4H PUBLIC ucE2PTwiRWErrDelayCnt + D:0086H PUBLIC INSCON + B:0027H.3 PUBLIC bE2PTwiRWErrFlg + B:0027H.4 PUBLIC bE2PBKChgStart + X:03E5H PUBLIC ucRTCBuf + D:00A1H PUBLIC SBUF1 + B:0027H.5 PUBLIC bE2PBKRtc + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 61 + + + D:0091H PUBLIC SBUF2 + X:03ECH PUBLIC bUart0RTCRdTime + B:0027H.6 PUBLIC bE2PBKDsgEndValid + B:0098H.4 PUBLIC REN + X:03EDH PUBLIC bUart1RTCRdTime + C:50D7H PUBLIC E2PRomBKCheck + X:03EEH PUBLIC bUart2RTCRdTime + C:5905H PUBLIC E2PRomBKProcess + C:66B0H PUBLIC E2PRomErase + C:74A9H PUBLIC Uart0RdRTC + C:70EEH PUBLIC E2PRomBKRTC + C:713AH PUBLIC Uart1RdRTC + B:0027H.7 PUBLIC bE2PBKDsgEnd + C:7186H PUBLIC Uart2RdRTC + B:0028H.0 PUBLIC bChgToDsgFlg + B:0028H.1 PUBLIC bDsgToChgFlg + B:0028H.2 PUBLIC bE2PBKChgStop + C:6A40H PUBLIC _E2PRomRead + ------- PROC E2PROMTWICHECK + C:7CEFH LINE# 43 + C:7CEFH LINE# 44 + C:7CEFH LINE# 45 + C:7CF2H LINE# 46 + C:7CF2H LINE# 47 + C:7CF5H LINE# 48 + C:7CF5H LINE# 49 + C:7D00H LINE# 50 + C:7D00H LINE# 51 + C:7D02H LINE# 52 + C:7D05H LINE# 53 + C:7D05H LINE# 54 + C:7D06H LINE# 56 + C:7D06H LINE# 57 + C:7D0BH LINE# 58 + C:7D0BH LINE# 59 + C:7D0BH LINE# 60 + ------- ENDPROC E2PROMTWICHECK + ------- PROC _E2PROMWRITE + X:02E1H SYMBOL WrAddr + X:02E3H SYMBOL Length + X:02E4H SYMBOL WrBuf + ------- DO + B:0029H.5 SYMBOL Result + X:02E6H SYMBOL i + ------- ENDDO + C:69E1H LINE# 69 + C:69F2H LINE# 70 + C:69F2H LINE# 71 + C:69F4H LINE# 74 + C:69F7H LINE# 75 + C:69F7H LINE# 76 + C:69FAH LINE# 77 + C:69FAH LINE# 79 + C:6A23H LINE# 80 + C:6A23H LINE# 81 + C:6A25H LINE# 82 + C:6A27H LINE# 83 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 62 + + + C:6A27H LINE# 91 + C:6A2CH LINE# 92 + C:6A38H LINE# 93 + C:6A38H LINE# 94 + C:6A3DH LINE# 96 + C:6A3FH LINE# 97 + ------- ENDPROC _E2PROMWRITE + ------- PROC _E2PROMREAD + X:02C3H SYMBOL RdAddr + X:02C5H SYMBOL Length + X:02C6H SYMBOL RdBuf + ------- DO + B:0029H.6 SYMBOL Result + X:02C8H SYMBOL i + ------- ENDDO + C:6A40H LINE# 106 + C:6A51H LINE# 107 + C:6A51H LINE# 108 + C:6A53H LINE# 111 + C:6A56H LINE# 112 + C:6A56H LINE# 113 + C:6A59H LINE# 114 + C:6A59H LINE# 116 + C:6A82H LINE# 117 + C:6A82H LINE# 118 + C:6A84H LINE# 119 + C:6A86H LINE# 120 + C:6A86H LINE# 128 + C:6A8BH LINE# 129 + C:6A97H LINE# 130 + C:6A97H LINE# 131 + C:6A9CH LINE# 133 + C:6A9EH LINE# 134 + ------- ENDPROC _E2PROMREAD + ------- PROC E2PROMERASE + ------- DO + X:02B8H SYMBOL i + X:02BAH SYMBOL WrBuf + ------- ENDDO + C:66B0H LINE# 144 + C:66B0H LINE# 145 + C:66B0H LINE# 149 + C:66BBH LINE# 151 + C:66D9H LINE# 152 + C:66D9H LINE# 153 + C:66DCH LINE# 154 + C:66FBH LINE# 155 + C:6707H LINE# 157 + C:6714H LINE# 158 + C:671BH LINE# 159 + ------- ENDPROC E2PROMERASE + ------- PROC E2PROMINIT + ------- DO + B:0029H.5 SYMBOL Result + X:02B7H SYMBOL RdBuf + ------- ENDDO + C:6393H LINE# 168 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 63 + + + C:6393H LINE# 169 + C:6393H LINE# 170 + C:6395H LINE# 174 + C:63A4H LINE# 176 + C:63B2H LINE# 177 + C:63C0H LINE# 179 + C:63CCH LINE# 180 + C:63CCH LINE# 181 + C:63E1H LINE# 182 + C:63E3H LINE# 183 + C:63EFH LINE# 184 + C:63EFH LINE# 185 + C:6404H LINE# 186 + C:6406H LINE# 188 + C:6406H LINE# 189 + C:640DH LINE# 190 + C:640DH LINE# 192 + C:640FH LINE# 193 + ------- ENDPROC E2PROMINIT + ------- PROC E2PROMBKRTC + ------- DO + X:02B8H SYMBOL WrBuf + D:0007H SYMBOL i + X:02C1H SYMBOL checksum + ------- ENDDO + C:70EEH LINE# 202 + C:70EEH LINE# 203 + C:70EEH LINE# 205 + C:70F3H LINE# 207 + C:70FAH LINE# 208 + C:7107H LINE# 209 + C:7109H LINE# 210 + C:7109H LINE# 211 + C:711BH LINE# 212 + C:7120H LINE# 213 + C:7128H LINE# 214 + C:712CH LINE# 216 + C:7139H LINE# 217 + ------- ENDPROC E2PROMBKRTC + ------- PROC E2PROMBKBOOT + ------- DO + X:02D9H SYMBOL WrBuf + ------- ENDDO + C:7688H LINE# 226 + C:7688H LINE# 227 + C:7688H LINE# 230 + C:7695H LINE# 231 + C:769AH LINE# 232 + C:76A3H LINE# 234 + C:76ABH LINE# 235 + C:76B3H LINE# 236 + C:76BBH LINE# 238 + C:76C8H LINE# 239 + ------- ENDPROC E2PROMBKBOOT + ------- PROC _E2PROMBKDATA + X:02B8H SYMBOL BKType + ------- DO + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 64 + + + X:02B9H SYMBOL WrBuf + ------- ENDDO + C:3F3CH LINE# 248 + C:3F41H LINE# 249 + C:3F41H LINE# 252 + C:3F45H LINE# 253 + C:3F45H LINE# 254 + C:3F52H LINE# 255 + C:3F5DH LINE# 256 + C:3F5FH LINE# 258 + C:3F5FH LINE# 259 + C:3F66H LINE# 260 + C:3F73H LINE# 261 + C:3F7EH LINE# 262 + C:3F7EH LINE# 264 + C:3F8BH LINE# 265 + C:3F8EH LINE# 266 + C:3F9BH LINE# 267 + C:3F9EH LINE# 268 + C:3FAEH LINE# 269 + C:3FBEH LINE# 270 + C:3FCEH LINE# 271 + C:3FD9H LINE# 272 + C:3FE9H LINE# 273 + C:3FF9H LINE# 274 + C:4009H LINE# 275 + C:4014H LINE# 276 + C:402BH LINE# 277 + C:403BH LINE# 278 + C:4048H LINE# 279 + C:404BH LINE# 280 + C:405BH LINE# 281 + C:406BH LINE# 282 + C:407BH LINE# 283 + C:4086H LINE# 284 + C:4093H LINE# 285 + C:4096H LINE# 286 + C:40A3H LINE# 287 + C:40A6H LINE# 288 + C:40AEH LINE# 289 + C:40B2H LINE# 291 + C:40C3H LINE# 293 + C:40CDH LINE# 294 + C:40E4H LINE# 295 + C:40E4H LINE# 296 + C:40EBH LINE# 297 + C:40EBH LINE# 299 + C:40EEH LINE# 300 + ------- ENDPROC _E2PROMBKDATA + ------- PROC UART0RDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:6787H LINE# 309 + C:6787H LINE# 310 + C:6787H LINE# 313 + C:67B2H LINE# 314 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 65 + + + C:67BEH LINE# 316 + C:67DDH LINE# 317 + C:67EFH LINE# 318 + ------- ENDPROC UART0RDE2PROM + ------- PROC UART1RDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:64F6H LINE# 326 + C:64F6H LINE# 327 + C:64F6H LINE# 330 + C:6521H LINE# 331 + C:652DH LINE# 333 + C:654CH LINE# 334 + C:6564H LINE# 335 + ------- ENDPROC UART1RDE2PROM + ------- PROC UART2RDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:6565H LINE# 343 + C:6565H LINE# 344 + C:6565H LINE# 347 + C:6590H LINE# 348 + C:659CH LINE# 350 + C:65BBH LINE# 351 + C:65D3H LINE# 352 + ------- ENDPROC UART2RDE2PROM + ------- PROC UART0RDRTC + C:74A9H LINE# 361 + C:74A9H LINE# 362 + C:74A9H LINE# 363 + C:74B0H LINE# 364 + C:74BDH LINE# 366 + C:74DCH LINE# 367 + C:74EEH LINE# 368 + ------- ENDPROC UART0RDRTC + ------- PROC UART1RDRTC + C:713AH LINE# 377 + C:713AH LINE# 378 + C:713AH LINE# 379 + C:7141H LINE# 380 + C:714EH LINE# 382 + C:716DH LINE# 383 + C:7185H LINE# 384 + ------- ENDPROC UART1RDRTC + ------- PROC UART2RDRTC + C:7186H LINE# 392 + C:7186H LINE# 393 + C:7186H LINE# 394 + C:718DH LINE# 395 + C:719AH LINE# 397 + C:71B9H LINE# 398 + C:71D1H LINE# 399 + ------- ENDPROC UART2RDRTC + ------- PROC E2PROMBKPROCESS + ------- DO + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 66 + + + X:02B7H SYMBOL BKType + ------- ENDDO + C:5905H LINE# 407 + C:5905H LINE# 408 + C:5905H LINE# 411 + C:5911H LINE# 412 + C:5911H LINE# 413 + C:5913H LINE# 417 + C:5916H LINE# 418 + C:5916H LINE# 419 + C:5918H LINE# 420 + C:591BH LINE# 421 + C:591BH LINE# 423 + C:592AH LINE# 424 + C:592AH LINE# 425 + C:592DH LINE# 426 + C:592DH LINE# 427 + C:5932H LINE# 428 + C:5935H LINE# 429 + C:5935H LINE# 430 + C:593BH LINE# 431 + C:593BH LINE# 432 + C:593DH LINE# 433 + C:5940H LINE# 434 + C:5940H LINE# 435 + C:5946H LINE# 436 + C:5946H LINE# 437 + C:5948H LINE# 438 + C:594BH LINE# 439 + C:594BH LINE# 441 + C:594BH LINE# 443 + C:595AH LINE# 444 + C:595AH LINE# 445 + C:595DH LINE# 446 + C:595DH LINE# 447 + C:5962H LINE# 448 + C:5965H LINE# 449 + C:5965H LINE# 450 + C:596BH LINE# 451 + C:596BH LINE# 452 + C:596DH LINE# 453 + C:5970H LINE# 454 + C:5970H LINE# 455 + C:5976H LINE# 456 + C:5976H LINE# 457 + C:5978H LINE# 458 + C:597BH LINE# 459 + C:597BH LINE# 460 + C:597BH LINE# 462 + C:597EH LINE# 463 + C:597EH LINE# 464 + C:5980H LINE# 465 + C:5983H LINE# 466 + C:5983H LINE# 468 + C:5986H LINE# 469 + C:5986H LINE# 470 + C:5988H LINE# 471 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 67 + + + C:598EH LINE# 472 + C:5992H LINE# 473 + C:5992H LINE# 475 + C:5995H LINE# 476 + C:5995H LINE# 477 + C:5997H LINE# 478 + C:599DH LINE# 479 + C:59A1H LINE# 480 + C:59A1H LINE# 482 + C:59A4H LINE# 483 + C:59A4H LINE# 484 + C:59A6H LINE# 485 + C:59ACH LINE# 486 + C:59B0H LINE# 487 + C:59B0H LINE# 488 + C:59B0H LINE# 489 + ------- ENDPROC E2PROMBKPROCESS + ------- PROC E2PROMBKCHECK + C:50D7H LINE# 498 + C:50D7H LINE# 499 + C:50D7H LINE# 500 + C:50DDH LINE# 501 + C:50DDH LINE# 505 + C:50ECH LINE# 506 + C:50ECH LINE# 507 + C:50EEH LINE# 508 + C:50F5H LINE# 509 + C:50F5H LINE# 511 + C:510AH LINE# 512 + C:510AH LINE# 513 + C:5111H LINE# 514 + C:5113H LINE# 515 + C:5115H LINE# 516 + C:5115H LINE# 518 + C:5118H LINE# 519 + C:5118H LINE# 520 + C:511AH LINE# 521 + C:511DH LINE# 522 + C:511DH LINE# 523 + C:511FH LINE# 524 + C:5121H LINE# 525 + C:5123H LINE# 526 + C:5123H LINE# 527 + C:5129H LINE# 528 + C:5129H LINE# 529 + C:512BH LINE# 530 + C:512DH LINE# 531 + C:512FH LINE# 532 + C:5131H LINE# 533 + C:5134H LINE# 534 + C:5134H LINE# 535 + C:5136H LINE# 536 + C:5136H LINE# 537 + C:5136H LINE# 539 + C:5153H LINE# 540 + C:5153H LINE# 541 + C:515DH LINE# 542 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 68 + + + C:515DH LINE# 543 + C:5164H LINE# 544 + C:5171H LINE# 545 + C:5171H LINE# 547 + C:5192H LINE# 548 + C:5192H LINE# 549 + C:5199H LINE# 550 + C:519BH LINE# 551 + C:519DH LINE# 552 + C:519FH LINE# 553 + C:51A1H LINE# 554 + C:51A1H LINE# 555 + C:51A2H LINE# 557 + C:51A2H LINE# 558 + C:51A9H LINE# 559 + C:51A9H LINE# 560 + C:51A9H LINE# 561 + ------- ENDPROC E2PROMBKCHECK + ------- ENDMOD EXTE2PROM + + ------- MODULE INTERRUPT + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:1003H PUBLIC InterruptTimer3 + D:0086H PUBLIC INSCON + B:0088H.7 PUBLIC TF3 + B:00D8H.0 PUBLIC IF40 + C:65D4H PUBLIC InterruptINT4 + B:00D8H.1 PUBLIC IF41 + B:00D8H.2 PUBLIC IF42 + B:00D8H.3 PUBLIC IF43 + B:00D8H.4 PUBLIC IF44 + B:00D8H.5 PUBLIC IF45 + B:00D8H.6 PUBLIC IF46 + B:00D8H.7 PUBLIC IF47 + ------- PROC INTERRUPTINT4 + C:65D4H LINE# 18 + C:65E1H LINE# 20 + C:65E3H LINE# 21 + C:65E6H LINE# 23 + C:65E9H LINE# 24 + C:65E9H LINE# 25 + C:65EBH LINE# 26 + C:65F0H LINE# 27 + C:65F0H LINE# 28 + C:65F3H LINE# 29 + C:65F3H LINE# 30 + C:65F5H LINE# 31 + C:65FAH LINE# 32 + C:65FAH LINE# 33 + C:65FDH LINE# 34 + C:65FDH LINE# 35 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 69 + + + C:65FFH LINE# 36 + C:6604H LINE# 37 + C:6604H LINE# 38 + C:6607H LINE# 39 + C:6607H LINE# 40 + C:6609H LINE# 41 + C:660EH LINE# 42 + C:660EH LINE# 43 + C:6611H LINE# 44 + C:6611H LINE# 45 + C:6613H LINE# 46 + C:6618H LINE# 47 + C:6618H LINE# 48 + C:661BH LINE# 49 + C:661BH LINE# 50 + C:661DH LINE# 51 + C:6622H LINE# 52 + C:6622H LINE# 53 + C:6625H LINE# 54 + C:6625H LINE# 55 + C:6627H LINE# 56 + C:662CH LINE# 57 + C:662CH LINE# 58 + C:662FH LINE# 59 + C:662FH LINE# 60 + C:6631H LINE# 61 + C:6636H LINE# 62 + C:6636H LINE# 64 + C:6638H LINE# 65 + ------- ENDPROC INTERRUPTINT4 + ------- PROC INTERRUPTTIMER3 + C:1003H LINE# 74 + C:100BH LINE# 76 + C:100DH LINE# 78 + C:1010H LINE# 79 + C:1012H LINE# 80 + C:1015H LINE# 82 + C:1018H LINE# 84 + C:101AH LINE# 85 + ------- ENDPROC INTERRUPTTIMER3 + ------- ENDMOD INTERRUPT + + ------- MODULE KEYSCAN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0008H PUBLIC ucKeyValue + D:0080H PUBLIC P5 + D:0009H PUBLIC ucKeyValueBK + B:00B0H.0 PUBLIC P3_0 + B:00A0H.7 PUBLIC P2_7 + D:000AH PUBLIC uiKeyValidCnt + D:000CH PUBLIC ucKeyOldValue + B:002FH.5 PUBLIC bKeyFlg + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 70 + + + C:5BAEH PUBLIC KeyScan + D:000DH PUBLIC uiKeyInvalidCnt + ------- PROC KEYSCAN + ------- DO + C:5C43H SYMBOL scanend + ------- ENDDO + C:5BAEH LINE# 33 + C:5BAEH LINE# 34 + C:5BAEH LINE# 35 + C:5BB4H LINE# 36 + C:5BB4H LINE# 37 + C:5BB7H LINE# 46 + C:5BBAH LINE# 47 + C:5BBAH LINE# 48 + C:5BBDH LINE# 49 + C:5BBFH LINE# 50 + C:5BC2H LINE# 51 + C:5BC2H LINE# 52 + C:5BC5H LINE# 53 + C:5BC5H LINE# 69 + C:5BCBH LINE# 70 + C:5BCBH LINE# 71 + C:5BD3H LINE# 72 + C:5BDEH LINE# 73 + C:5BDEH LINE# 74 + C:5BE8H LINE# 75 + C:5BE8H LINE# 76 + C:5BF2H LINE# 77 + C:5BF2H LINE# 78 + C:5BF8H LINE# 79 + C:5BFAH LINE# 81 + C:5BFAH LINE# 82 + C:5BFDH LINE# 83 + C:5BFDH LINE# 84 + C:5BFFH LINE# 85 + C:5C01H LINE# 86 + C:5C01H LINE# 91 + C:5C01H LINE# 93 + C:5C01H LINE# 94 + C:5C03H LINE# 95 + C:5C03H LINE# 96 + C:5C03H LINE# 98 + C:5C03H LINE# 99 + C:5C09H LINE# 100 + C:5C09H LINE# 101 + C:5C0EH LINE# 102 + C:5C16H LINE# 103 + C:5C1EH LINE# 104 + C:5C1EH LINE# 105 + C:5C24H LINE# 106 + C:5C26H LINE# 107 + C:5C27H LINE# 108 + C:5C31H LINE# 109 + C:5C31H LINE# 110 + C:5C37H LINE# 111 + C:5C3DH LINE# 112 + C:5C3FH LINE# 113 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 71 + + + C:5C3FH LINE# 114 + C:5C40H LINE# 116 + C:5C40H LINE# 117 + C:5C43H LINE# 118 + C:5C43H LINE# 119 + C:5C48H LINE# 120 + C:5C4CH LINE# 121 + C:5C4FH LINE# 122 + C:5C4FH LINE# 123 + C:5C4FH LINE# 124 + C:5C4FH LINE# 125 + ------- ENDPROC KEYSCAN + ------- ENDMOD KEYSCAN + + ------- MODULE MCUFLASH + C:0000H SYMBOL _ICE_DUMMY_ + D:00F3H PUBLIC IB_CON2 + D:0080H PUBLIC P0 + D:00F4H PUBLIC IB_CON3 + D:0090H PUBLIC P1 + D:00F5H PUBLIC IB_CON4 + D:00A0H PUBLIC P2 + D:00F6H PUBLIC IB_CON5 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + X:05FAH PUBLIC bMcuFlashWrWaitCnt + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00FCH PUBLIC IB_DATA + C:7B6DH PUBLIC _McuFlashCheckFlg + C:6A9FH PUBLIC _McuFlashRead + C:798EH PUBLIC _McuFlashWrOneByte + B:002EH.1 PUBLIC bMcuFlashErr + C:5EC5H PUBLIC _McuFlashWrite + X:05FBH PUBLIC ucMcuFlashWrValid + D:00FBH PUBLIC IB_OFFSET + D:00B1H PUBLIC RSTSTAT + D:00A7H PUBLIC FLASHCON + C:6077H PUBLIC _McuFlashWrSector + C:7DD7H PUBLIC McuFlashWrWaitCheck + B:002EH.2 PUBLIC bMcuFlashWrFlg + C:7C07H PUBLIC _McuFlashBlankCheck + C:6C6DH PUBLIC _McuFlashDataCheck + D:00F7H PUBLIC XPAGE + B:002EH.3 PUBLIC bMcuFlashWrWaitFlg + C:526EH PUBLIC McuFlashProcess + D:00F2H PUBLIC IB_CON1 + ------- PROC _MCUFLASHWRONEBYTE + D:0002H SYMBOL McuFlashAddr + D:0005H SYMBOL WrData + C:798EH LINE# 24 + C:7992H LINE# 25 + C:7992H LINE# 26 + C:7994H LINE# 27 + C:7997H LINE# 29 + C:799AH LINE# 30 + C:799EH LINE# 31 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 72 + + + C:79A2H LINE# 33 + C:79A5H LINE# 34 + C:79A8H LINE# 35 + C:79ABH LINE# 36 + C:79AEH LINE# 37 + C:79B5H LINE# 38 + C:79B5H LINE# 39 + C:79B8H LINE# 40 + C:79B9H LINE# 41 + C:79BAH LINE# 42 + C:79BBH LINE# 43 + C:79BCH LINE# 44 + C:79BDH LINE# 45 + C:79BDH LINE# 47 + C:79C0H LINE# 48 + C:79C2H LINE# 49 + ------- ENDPROC _MCUFLASHWRONEBYTE + ------- PROC _MCUFLASHBLANKCHECK + D:0006H SYMBOL McuFlashAddr + ------- DO + B:002AH.0 SYMBOL Result + D:0004H SYMBOL i + ------- ENDDO + C:7C07H LINE# 58 + C:7C07H LINE# 59 + C:7C07H LINE# 60 + C:7C09H LINE# 63 + C:7C0CH LINE# 64 + C:7C0CH LINE# 65 + C:7C19H LINE# 66 + C:7C19H LINE# 67 + C:7C1BH LINE# 68 + C:7C1DH LINE# 69 + C:7C1DH LINE# 70 + C:7C2AH LINE# 72 + C:7C2CH LINE# 73 + ------- ENDPROC _MCUFLASHBLANKCHECK + ------- PROC _MCUFLASHDATACHECK + X:02BDH SYMBOL McuFlashAddr + D:0004H SYMBOL XramAddr + ------- DO + B:002AH.0 SYMBOL Result + D:0006H SYMBOL ptr + X:02BFH SYMBOL i + ------- ENDDO + C:6C6DH LINE# 82 + C:6C75H LINE# 83 + C:6C75H LINE# 84 + C:6C77H LINE# 85 + C:6C7BH LINE# 88 + C:6C8EH LINE# 89 + C:6C8EH LINE# 90 + C:6CB4H LINE# 91 + C:6CB4H LINE# 92 + C:6CB6H LINE# 93 + C:6CB8H LINE# 94 + C:6CB8H LINE# 95 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 73 + + + C:6CC4H LINE# 97 + C:6CC6H LINE# 98 + ------- ENDPROC _MCUFLASHDATACHECK + ------- PROC _MCUFLASHWRSECTOR + X:02BDH SYMBOL McuFlashAddr + D:0004H SYMBOL XramAddr + ------- DO + B:002AH.0 SYMBOL Result + D:0004H SYMBOL i + X:02BFH SYMBOL ptr + ------- ENDDO + C:6077H LINE# 107 + C:607FH LINE# 108 + C:607FH LINE# 109 + C:6081H LINE# 111 + C:6089H LINE# 113 + C:608CH LINE# 114 + C:608CH LINE# 115 + C:6097H LINE# 116 + C:609DH LINE# 117 + C:60ACH LINE# 118 + C:60AFH LINE# 119 + C:60B2H LINE# 120 + C:60B2H LINE# 121 + C:60B5H LINE# 122 + C:60B9H LINE# 123 + C:60B9H LINE# 124 + C:60BCH LINE# 125 + C:60C4H LINE# 126 + C:60C4H LINE# 127 + C:60C7H LINE# 128 + C:60D7H LINE# 129 + C:60D7H LINE# 130 + C:60DAH LINE# 131 + C:60DBH LINE# 132 + C:60DCH LINE# 133 + C:60DDH LINE# 134 + C:60DEH LINE# 135 + C:60DFH LINE# 136 + C:60E1H LINE# 137 + C:60E3H LINE# 139 + C:60E3H LINE# 140 + C:60E5H LINE# 141 + C:60E7H LINE# 142 + C:60E7H LINE# 143 + C:60E7H LINE# 145 + C:60E7H LINE# 146 + C:60E9H LINE# 147 + C:60EBH LINE# 148 + C:60EBH LINE# 149 + C:60EBH LINE# 151 + C:60EBH LINE# 152 + C:60EDH LINE# 153 + C:60EFH LINE# 154 + C:60EFH LINE# 155 + C:60EFH LINE# 157 + C:60EFH LINE# 158 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 74 + + + C:60F1H LINE# 159 + C:60F3H LINE# 160 + C:60F3H LINE# 161 + C:6100H LINE# 163 + C:6102H LINE# 164 + ------- ENDPROC _MCUFLASHWRSECTOR + ------- PROC _MCUFLASHWRITE + X:02B9H SYMBOL McuFlashAddr + X:02BBH SYMBOL XramAddr + ------- DO + B:0029H.7 SYMBOL Result + ------- ENDDO + C:5EC5H LINE# 177 + C:5ED3H LINE# 178 + C:5ED3H LINE# 179 + C:5ED5H LINE# 181 + C:5ED8H LINE# 182 + C:5EDAH LINE# 183 + C:5EDDH LINE# 185 + C:5EE6H LINE# 186 + C:5EE9H LINE# 187 + C:5EECH LINE# 188 + C:5EECH LINE# 189 + C:5EEFH LINE# 190 + C:5EF3H LINE# 191 + C:5EF3H LINE# 192 + C:5EF6H LINE# 193 + C:5EFEH LINE# 194 + C:5EFEH LINE# 195 + C:5F01H LINE# 196 + C:5F0AH LINE# 197 + C:5F0AH LINE# 198 + C:5F0DH LINE# 199 + C:5F0EH LINE# 200 + C:5F0FH LINE# 201 + C:5F10H LINE# 202 + C:5F11H LINE# 203 + C:5F12H LINE# 205 + C:5F1FH LINE# 206 + C:5F1FH LINE# 207 + C:5F32H LINE# 208 + C:5F32H LINE# 209 + C:5F45H LINE# 210 + C:5F45H LINE# 211 + C:5F47H LINE# 212 + C:5F47H LINE# 213 + C:5F47H LINE# 214 + C:5F47H LINE# 215 + C:5F47H LINE# 216 + C:5F47H LINE# 217 + C:5F47H LINE# 218 + C:5F47H LINE# 220 + C:5F4AH LINE# 221 + C:5F4CH LINE# 222 + C:5F4EH LINE# 223 + C:5F50H LINE# 224 + C:5F52H LINE# 226 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 75 + + + C:5F55H LINE# 227 + C:5F57H LINE# 228 + C:5F59H LINE# 230 + C:5F5BH LINE# 231 + ------- ENDPROC _MCUFLASHWRITE + ------- PROC MCUFLASHPROCESS + ------- DO + B:0029H.5 SYMBOL McuFlashBk1WrFailFlg + B:0029H.6 SYMBOL McuFlashBk2WrFailFlg + X:02B7H SYMBOL VoltageMin + ------- ENDDO + C:526EH LINE# 244 + C:526EH LINE# 245 + C:526EH LINE# 246 + C:5272H LINE# 249 + C:5278H LINE# 250 + C:5278H LINE# 251 + C:527AH LINE# 253 + C:5280H LINE# 254 + C:5287H LINE# 255 + C:5287H LINE# 256 + C:5291H LINE# 257 + C:5293H LINE# 259 + C:5293H LINE# 260 + C:529DH LINE# 261 + C:529DH LINE# 263 + C:52C0H LINE# 264 + C:52C0H LINE# 265 + C:52C9H LINE# 266 + C:52C9H LINE# 267 + C:52D3H LINE# 268 + C:52D3H LINE# 269 + C:52D5H LINE# 270 + C:52DDH LINE# 271 + C:52E5H LINE# 272 + C:52ECH LINE# 273 + C:52ECH LINE# 274 + C:52ECH LINE# 276 + C:52F7H LINE# 277 + C:52F7H LINE# 278 + C:5302H LINE# 279 + C:5302H LINE# 280 + C:5304H LINE# 281 + C:530CH LINE# 282 + C:5314H LINE# 283 + C:531BH LINE# 284 + C:531BH LINE# 285 + C:531BH LINE# 286 + C:531DH LINE# 288 + C:531DH LINE# 289 + C:531FH LINE# 290 + C:5321H LINE# 291 + C:5321H LINE# 292 + C:5326H LINE# 294 + C:532CH LINE# 295 + C:532CH LINE# 296 + C:532EH LINE# 297 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 76 + + + C:532EH LINE# 298 + C:532EH LINE# 299 + ------- ENDPROC MCUFLASHPROCESS + ------- PROC _MCUFLASHREAD + X:02B7H SYMBOL SourceAddr + D:0004H SYMBOL TargetAddr + X:02B9H SYMBOL Length + ------- DO + D:0006H SYMBOL i + B:0029H.5 SYMBOL Result + D:0015H SYMBOL TargetAddr1 + ------- ENDDO + C:6A9FH LINE# 308 + C:6AADH LINE# 309 + C:6AADH LINE# 311 + C:6AAFH LINE# 312 + C:6AB7H LINE# 314 + C:6AB9H LINE# 315 + C:6ABCH LINE# 316 + C:6ABFH LINE# 317 + C:6ACFH LINE# 318 + C:6ACFH LINE# 319 + C:6AE7H LINE# 320 + C:6AEFH LINE# 321 + C:6AF6H LINE# 322 + C:6AF9H LINE# 323 + C:6AFBH LINE# 325 + C:6AFDH LINE# 326 + ------- ENDPROC _MCUFLASHREAD + ------- PROC MCUFLASHWRWAITCHECK + C:7DD7H LINE# 335 + C:7DD7H LINE# 336 + C:7DD7H LINE# 337 + C:7DDAH LINE# 338 + C:7DDAH LINE# 339 + C:7DE5H LINE# 340 + C:7DE5H LINE# 341 + C:7DE7H LINE# 342 + C:7DE9H LINE# 343 + C:7DEBH LINE# 344 + C:7DEBH LINE# 345 + C:7DEBH LINE# 346 + ------- ENDPROC MCUFLASHWRWAITCHECK + ------- PROC _MCUFLASHCHECKFLG + D:0006H SYMBOL McuFlashAddr + ------- DO + B:0029H.5 SYMBOL Result + ------- ENDDO + C:7B6DH LINE# 355 + C:7B6DH LINE# 356 + C:7B6DH LINE# 357 + C:7B6FH LINE# 359 + C:7B72H LINE# 360 + C:7B8CH LINE# 361 + C:7B8CH LINE# 362 + C:7B8EH LINE# 363 + C:7B8EH LINE# 364 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 77 + + + C:7B91H LINE# 366 + C:7B93H LINE# 367 + ------- ENDPROC _MCUFLASHCHECKFLG + ------- ENDMOD MCUFLASH + + ------- MODULE MCULIB + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + C:73D1H PUBLIC _Delay1ms + D:009DH PUBLIC SBRTH + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00C7H PUBLIC PWM0CON + D:00B6H PUBLIC PWM1CON + D:00B7H PUBLIC PWM2CON + D:009CH PUBLIC SBRTL + C:7A8FH PUBLIC _McuTimer3Set + D:00A8H PUBLIC IEN0 + D:00A9H PUBLIC IEN1 + D:00E8H PUBLIC EXF0 + D:008EH PUBLIC SUSLO + C:7A2CH PUBLIC _MemoryCopy + C:7B43H PUBLIC _MemorySet + D:0087H PUBLIC PCON + D:00CFH PUBLIC PWM0DH + D:00A5H PUBLIC PWM1DH + D:00BFH PUBLIC PWM2DH + D:0098H PUBLIC SCON + D:0088H PUBLIC TCON + D:00CEH PUBLIC PWM0DL + D:00A4H PUBLIC PWM1DL + D:00BEH PUBLIC PWM2DL + D:00B2H PUBLIC CLKCON + D:00CDH PUBLIC PWM0PH + D:00AFH PUBLIC PWM1PH + D:00BDH PUBLIC PWM2PH + D:00CCH PUBLIC PWM0PL + D:00AEH PUBLIC PWM1PL + C:7F5FH PUBLIC McuIntoIdle + C:7C51H PUBLIC _McuClockSet + D:00BCH PUBLIC PWM2PL + D:0086H PUBLIC INSCON + D:008DH PUBLIC TH3 + D:008CH PUBLIC TL3 + C:7F6BH PUBLIC McuIntoPD + B:0088H.2 PUBLIC TR3 + C:6856H PUBLIC RamCheckProcess + D:0088H PUBLIC T3CON + C:7AECH PUBLIC SystemResetProcess + C:6210H PUBLIC _McuPWM0Set + C:6291H PUBLIC _McuPWM1Set + C:6312H PUBLIC _McuPWM2Set + ------- PROC _MCUTIMER3SET + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 78 + + + X:02B7H SYMBOL ClkSource + D:0004H SYMBOL XmS + ------- DO + D:0006H SYMBOL TempVal + ------- ENDDO + C:7A8FH LINE# 20 + C:7A94H LINE# 21 + C:7A94H LINE# 24 + C:7A97H LINE# 67 + C:7A9AH LINE# 68 + C:7AB5H LINE# 70 + C:7AB7H LINE# 71 + C:7AB9H LINE# 72 + C:7ABBH LINE# 74 + C:7ABEH LINE# 75 + ------- ENDPROC _MCUTIMER3SET + ------- PROC _MCUCLOCKSET + X:02B7H SYMBOL SysClock + ------- DO + D:0007H SYMBOL ea + ------- ENDDO + C:7C51H LINE# 84 + C:7C56H LINE# 85 + C:7C56H LINE# 88 + C:7C5BH LINE# 89 + C:7C5DH LINE# 91 + C:7C60H LINE# 93 + C:7C61H LINE# 94 + C:7C62H LINE# 95 + C:7C63H LINE# 96 + C:7C64H LINE# 97 + C:7C65H LINE# 98 + C:7C66H LINE# 99 + C:7C67H LINE# 100 + C:7C68H LINE# 102 + C:7C6BH LINE# 104 + C:7C6EH LINE# 106 + C:7C72H LINE# 107 + ------- ENDPROC _MCUCLOCKSET + ------- PROC _MCUPWM0SET + X:05E8H SYMBOL PwmFreq + X:05EAH SYMBOL DutyRatio + C:6210H LINE# 116 + C:621BH LINE# 117 + C:621BH LINE# 118 + C:621EH LINE# 119 + C:6238H LINE# 120 + C:6257H LINE# 121 + C:6275H LINE# 122 + C:6290H LINE# 123 + ------- ENDPROC _MCUPWM0SET + ------- PROC _MCUPWM1SET + X:05EBH SYMBOL PwmFreq + X:05EDH SYMBOL DutyRatio + C:6291H LINE# 125 + C:629CH LINE# 126 + C:629CH LINE# 127 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 79 + + + C:629FH LINE# 128 + C:62B9H LINE# 129 + C:62D8H LINE# 130 + C:62F6H LINE# 131 + C:6311H LINE# 132 + ------- ENDPROC _MCUPWM1SET + ------- PROC _MCUPWM2SET + X:02BCH SYMBOL PwmFreq + X:02BEH SYMBOL DutyRatio + C:6312H LINE# 134 + C:631DH LINE# 135 + C:631DH LINE# 136 + C:6320H LINE# 137 + C:633AH LINE# 138 + C:6359H LINE# 139 + C:6377H LINE# 140 + C:6392H LINE# 141 + ------- ENDPROC _MCUPWM2SET + ------- PROC _DELAY1MS + D:0007H SYMBOL Xms + ------- DO + D:0006H SYMBOL i + D:0002H SYMBOL j + D:0004H SYMBOL Tcnt + ------- ENDDO + C:73D1H LINE# 154 + C:73D1H LINE# 155 + C:73D1H LINE# 159 + C:73D7H LINE# 160 + C:73D7H LINE# 161 + C:73DBH LINE# 162 + C:73DDH LINE# 163 + C:73E5H LINE# 164 + C:73E5H LINE# 165 + C:73E9H LINE# 166 + C:73EBH LINE# 167 + C:73F3H LINE# 168 + C:73F3H LINE# 169 + C:73F7H LINE# 170 + C:73F9H LINE# 172 + C:73F9H LINE# 173 + C:73FDH LINE# 174 + C:73FDH LINE# 177 + C:7404H LINE# 178 + C:7404H LINE# 179 + C:740EH LINE# 180 + C:740EH LINE# 181 + C:7415H LINE# 182 + C:7418H LINE# 183 + ------- ENDPROC _DELAY1MS + ------- PROC RAMCHECKPROCESS + C:6856H LINE# 220 + C:6856H LINE# 221 + C:6856H LINE# 222 + C:68B8H LINE# 234 + C:68B8H LINE# 235 + C:68BAH LINE# 236 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 80 + + + C:68BAH LINE# 238 + C:68BAH LINE# 239 + C:68BBH LINE# 240 + C:68BBH LINE# 241 + ------- ENDPROC RAMCHECKPROCESS + ------- PROC _MEMORYSET + X:02C3H SYMBOL pt + D:0005H SYMBOL setval + D:0003H SYMBOL length + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:7B43H LINE# 252 + C:7B4BH LINE# 253 + C:7B4BH LINE# 255 + C:7B52H LINE# 256 + C:7B52H LINE# 257 + C:7B5FH LINE# 258 + C:7B69H LINE# 259 + C:7B6CH LINE# 260 + ------- ENDPROC _MEMORYSET + ------- PROC _MEMORYCOPY + X:02D9H SYMBOL source + D:0004H SYMBOL target + D:0003H SYMBOL length + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:7A2CH LINE# 271 + C:7A34H LINE# 272 + C:7A34H LINE# 274 + C:7A3BH LINE# 275 + C:7A3BH LINE# 276 + C:7A4CH LINE# 277 + C:7A51H LINE# 278 + C:7A5BH LINE# 279 + C:7A5EH LINE# 280 + ------- ENDPROC _MEMORYCOPY + ------- PROC MCUINTOIDLE + C:7F5FH LINE# 289 + C:7F5FH LINE# 290 + C:7F5FH LINE# 291 + C:7F62H LINE# 292 + C:7F65H LINE# 293 + C:7F66H LINE# 294 + C:7F67H LINE# 295 + C:7F68H LINE# 296 + C:7F69H LINE# 297 + C:7F6AH LINE# 298 + ------- ENDPROC MCUINTOIDLE + ------- PROC MCUINTOPD + C:7F6BH LINE# 300 + C:7F6BH LINE# 301 + C:7F6BH LINE# 302 + C:7F6EH LINE# 303 + C:7F71H LINE# 304 + C:7F72H LINE# 305 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 81 + + + C:7F73H LINE# 306 + C:7F74H LINE# 307 + C:7F75H LINE# 308 + C:7F76H LINE# 309 + ------- ENDPROC MCUINTOPD + ------- PROC SYSTEMRESETPROCESS + C:7AECH LINE# 318 + C:7AECH LINE# 319 + C:7AECH LINE# 320 + C:7B03H LINE# 322 + C:7B03H LINE# 323 + C:7B05H LINE# 324 + C:7B08H LINE# 325 + C:7B0AH LINE# 326 + C:7B0CH LINE# 327 + C:7B0EH LINE# 329 + C:7B10H LINE# 330 + C:7B12H LINE# 331 + C:7B14H LINE# 333 + C:7B17H LINE# 334 + C:7B17H LINE# 335 + ------- ENDPROC SYSTEMRESETPROCESS + ------- ENDMOD MCULIB + + ------- MODULE MOSCTRL + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:721CH PUBLIC MosStatusCheck + C:7ABFH PUBLIC MosCtrl + B:002EH.6 PUBLIC bCHGMOSBk + B:002EH.7 PUBLIC bDSGMOSBk + ------- PROC MOSSTATUSCHECK + C:721CH LINE# 20 + C:721CH LINE# 21 + C:721CH LINE# 22 + C:721EH LINE# 23 + C:7220H LINE# 25 + C:7226H LINE# 26 + C:7226H LINE# 27 + C:7228H LINE# 28 + C:7228H LINE# 30 + C:723AH LINE# 31 + C:723AH LINE# 32 + C:723CH LINE# 33 + C:723CH LINE# 35 + C:723FH LINE# 36 + C:723FH LINE# 37 + C:724BH LINE# 38 + C:724BH LINE# 39 + C:724DH LINE# 40 + C:724DH LINE# 41 + C:724DH LINE# 43 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 82 + + + C:7250H LINE# 44 + C:7250H LINE# 45 + C:7253H LINE# 46 + C:7253H LINE# 47 + C:7255H LINE# 48 + C:7255H LINE# 49 + C:7255H LINE# 51 + C:725EH LINE# 52 + C:725EH LINE# 53 + C:7260H LINE# 54 + C:7260H LINE# 56 + C:7263H LINE# 57 + C:7263H LINE# 58 + C:7265H LINE# 59 + C:7265H LINE# 60 + ------- ENDPROC MOSSTATUSCHECK + ------- PROC MOSCTRL + C:7ABFH LINE# 70 + C:7ABFH LINE# 71 + C:7ABFH LINE# 72 + C:7AC2H LINE# 74 + C:7AD2H LINE# 75 + C:7AD2H LINE# 76 + C:7AD6H LINE# 77 + C:7ADAH LINE# 79 + C:7AEBH LINE# 80 + C:7AEBH LINE# 81 + ------- ENDPROC MOSCTRL + ------- ENDMOD MOSCTRL + + ------- MODULE PORSELFTEST + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + C:6F18H PUBLIC PorProtectOTC + D:0090H PUBLIC P1 + C:6FB6H PUBLIC PorProtectOTD + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:6F67H PUBLIC PorProtectUTC + C:7005H PUBLIC PorProtectUTD + C:7419H PUBLIC PorProtectOV + C:7461H PUBLIC PorProtectUV + X:053FH PUBLIC ucPorSelfTestDelayCnt + B:002FH.6 PUBLIC bPorSelfTestFlg + C:787BH PUBLIC PorSelfTest + ------- PROC PORPROTECTOV + C:7419H LINE# 20 + C:7419H LINE# 21 + C:7419H LINE# 22 + C:741CH LINE# 23 + C:741CH LINE# 24 + C:742BH LINE# 25 + C:742BH LINE# 26 + C:7440H LINE# 27 + C:7440H LINE# 28 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 83 + + + C:7442H LINE# 29 + C:7449H LINE# 30 + C:7449H LINE# 31 + C:744AH LINE# 32 + C:7459H LINE# 33 + C:7459H LINE# 34 + C:7460H LINE# 35 + C:7460H LINE# 36 + C:7460H LINE# 37 + ------- ENDPROC PORPROTECTOV + ------- PROC PORPROTECTUV + C:7461H LINE# 46 + C:7461H LINE# 47 + C:7461H LINE# 48 + C:7464H LINE# 49 + C:7464H LINE# 50 + C:7473H LINE# 51 + C:7473H LINE# 52 + C:7488H LINE# 53 + C:7488H LINE# 54 + C:748AH LINE# 55 + C:7491H LINE# 56 + C:7491H LINE# 57 + C:7492H LINE# 58 + C:74A1H LINE# 59 + C:74A1H LINE# 60 + C:74A8H LINE# 61 + C:74A8H LINE# 62 + C:74A8H LINE# 63 + ------- ENDPROC PORPROTECTUV + ------- PROC PORPROTECTOTC + C:6F18H LINE# 72 + C:6F18H LINE# 73 + C:6F18H LINE# 74 + C:6F1BH LINE# 75 + C:6F1BH LINE# 76 + C:6F31H LINE# 77 + C:6F31H LINE# 78 + C:6F46H LINE# 79 + C:6F46H LINE# 80 + C:6F48H LINE# 81 + C:6F4FH LINE# 82 + C:6F4FH LINE# 83 + C:6F50H LINE# 84 + C:6F5FH LINE# 85 + C:6F5FH LINE# 86 + C:6F66H LINE# 87 + C:6F66H LINE# 88 + C:6F66H LINE# 89 + ------- ENDPROC PORPROTECTOTC + ------- PROC PORPROTECTUTC + C:6F67H LINE# 98 + C:6F67H LINE# 99 + C:6F67H LINE# 100 + C:6F6AH LINE# 101 + C:6F6AH LINE# 102 + C:6F80H LINE# 103 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 84 + + + C:6F80H LINE# 104 + C:6F95H LINE# 105 + C:6F95H LINE# 106 + C:6F97H LINE# 107 + C:6F9EH LINE# 108 + C:6F9EH LINE# 109 + C:6F9FH LINE# 110 + C:6FAEH LINE# 111 + C:6FAEH LINE# 112 + C:6FB5H LINE# 113 + C:6FB5H LINE# 114 + C:6FB5H LINE# 115 + ------- ENDPROC PORPROTECTUTC + ------- PROC PORPROTECTOTD + C:6FB6H LINE# 124 + C:6FB6H LINE# 125 + C:6FB6H LINE# 126 + C:6FB9H LINE# 127 + C:6FB9H LINE# 128 + C:6FCFH LINE# 129 + C:6FCFH LINE# 130 + C:6FE4H LINE# 131 + C:6FE4H LINE# 132 + C:6FE6H LINE# 133 + C:6FEDH LINE# 134 + C:6FEDH LINE# 135 + C:6FEEH LINE# 136 + C:6FFDH LINE# 137 + C:6FFDH LINE# 138 + C:7004H LINE# 139 + C:7004H LINE# 140 + C:7004H LINE# 141 + ------- ENDPROC PORPROTECTOTD + ------- PROC PORPROTECTUTD + C:7005H LINE# 150 + C:7005H LINE# 151 + C:7005H LINE# 152 + C:7008H LINE# 153 + C:7008H LINE# 154 + C:701EH LINE# 155 + C:701EH LINE# 156 + C:7033H LINE# 157 + C:7033H LINE# 158 + C:7035H LINE# 159 + C:703CH LINE# 160 + C:703CH LINE# 161 + C:703DH LINE# 162 + C:704CH LINE# 163 + C:704CH LINE# 164 + C:7053H LINE# 165 + C:7053H LINE# 166 + C:7053H LINE# 167 + ------- ENDPROC PORPROTECTUTD + ------- PROC PORSELFTEST + C:787BH LINE# 176 + C:787BH LINE# 177 + C:787BH LINE# 178 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 85 + + + C:787EH LINE# 179 + C:787EH LINE# 180 + C:7881H LINE# 181 + C:7884H LINE# 182 + C:7887H LINE# 183 + C:788AH LINE# 185 + C:788DH LINE# 186 + C:7890H LINE# 187 + C:7893H LINE# 188 + C:7896H LINE# 190 + C:78A1H LINE# 191 + C:78A1H LINE# 192 + C:78A3H LINE# 193 + C:78AFH LINE# 194 + C:78AFH LINE# 195 + C:78B1H LINE# 196 + C:78B2H LINE# 198 + C:78B2H LINE# 199 + C:78B5H LINE# 200 + C:78B5H LINE# 201 + C:78B5H LINE# 202 + C:78B5H LINE# 203 + ------- ENDPROC PORSELFTEST + ------- ENDMOD PORSELFTEST + + ------- MODULE PROTECT + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:03B8H PUBLIC uiOCD1DelayCnt + D:00A0H PUBLIC P2 + X:03BAH PUBLIC uiOCD2DelayCnt + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:51AAH PUBLIC ProtectOV + C:53ECH PUBLIC ProtectUV + B:002FH.0 PUBLIC bOVLock + B:002FH.1 PUBLIC bUVLock + X:03BCH PUBLIC uiOVDelayCnt + X:03BEH PUBLIC uiUVDelayCnt + X:03C0H PUBLIC uiOTCRDelayCnt + X:03C2H PUBLIC uiOTDRDelayCnt + X:03C4H PUBLIC uiUTCRDelayCnt + X:03C6H PUBLIC uiUTDRDelayCnt + C:6CC7H PUBLIC ProtectOCC + C:7C93H PUBLIC ProtectProcess + C:54A8H PUBLIC ProtectOTC + C:5620H PUBLIC ProtectOTD + X:03C8H PUBLIC uiOCCRcnt + X:03CAH PUBLIC uiOCCDelayCnt + X:03CCH PUBLIC uiOCDRcnt + C:5564H PUBLIC ProtectUTC + C:56DCH PUBLIC ProtectUTD + C:6410H PUBLIC ProtectOCRecover + X:03CEH PUBLIC uiOTCDelayCnt + X:03D0H PUBLIC uiOTDDelayCnt + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 86 + + + X:03D2H PUBLIC uiUTCDelayCnt + X:03D4H PUBLIC uiUTDDelayCnt + C:6D20H PUBLIC ProtectOCD1 + C:6D79H PUBLIC ProtectOCD2 + X:03D6H PUBLIC uiOVRDelayCnt + X:03D8H PUBLIC uiUVRDelayCnt + ------- PROC PROTECTOV + C:51AAH LINE# 39 + C:51AAH LINE# 40 + C:51AAH LINE# 41 + C:51B0H LINE# 42 + C:51B0H LINE# 43 + C:51BFH LINE# 44 + C:51BFH LINE# 45 + C:51E0H LINE# 46 + C:51E0H LINE# 47 + C:51E2H LINE# 48 + C:51E4H LINE# 49 + C:51EBH LINE# 50 + C:51F1H LINE# 51 + C:51F1H LINE# 52 + C:51F2H LINE# 53 + C:5201H LINE# 54 + C:5201H LINE# 55 + C:5208H LINE# 56 + C:5208H LINE# 57 + C:5209H LINE# 58 + C:520CH LINE# 59 + C:520CH LINE# 60 + C:521BH LINE# 61 + C:521BH LINE# 62 + C:5239H LINE# 63 + C:5239H LINE# 64 + C:523CH LINE# 65 + C:523CH LINE# 66 + C:523EH LINE# 67 + C:5240H LINE# 68 + C:5242H LINE# 70 + C:5242H LINE# 71 + C:5244H LINE# 72 + C:5246H LINE# 73 + C:5249H LINE# 74 + C:5249H LINE# 75 + C:5250H LINE# 76 + C:5256H LINE# 77 + C:5256H LINE# 78 + C:5257H LINE# 79 + C:5266H LINE# 80 + C:5266H LINE# 81 + C:526DH LINE# 82 + C:526DH LINE# 83 + C:526DH LINE# 84 + ------- ENDPROC PROTECTOV + ------- PROC PROTECTUV + C:53ECH LINE# 92 + C:53ECH LINE# 93 + C:53ECH LINE# 94 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 87 + + + C:53EFH LINE# 95 + C:53EFH LINE# 96 + C:53FEH LINE# 97 + C:53FEH LINE# 98 + C:541FH LINE# 99 + C:541FH LINE# 100 + C:5421H LINE# 101 + C:5423H LINE# 102 + C:542AH LINE# 103 + C:5430H LINE# 104 + C:5430H LINE# 105 + C:5431H LINE# 106 + C:5440H LINE# 107 + C:5440H LINE# 108 + C:5447H LINE# 109 + C:5447H LINE# 110 + C:5448H LINE# 111 + C:544BH LINE# 112 + C:544BH LINE# 113 + C:545AH LINE# 114 + C:545AH LINE# 115 + C:5478H LINE# 116 + C:5478H LINE# 117 + C:547BH LINE# 118 + C:547BH LINE# 119 + C:547DH LINE# 120 + C:547FH LINE# 121 + C:5481H LINE# 123 + C:5481H LINE# 124 + C:5483H LINE# 125 + C:5483H LINE# 126 + C:548AH LINE# 127 + C:5490H LINE# 128 + C:5490H LINE# 129 + C:5491H LINE# 130 + C:54A0H LINE# 131 + C:54A0H LINE# 132 + C:54A7H LINE# 133 + C:54A7H LINE# 134 + C:54A7H LINE# 135 + ------- ENDPROC PROTECTUV + ------- PROC PROTECTOTC + C:54A8H LINE# 143 + C:54A8H LINE# 144 + C:54A8H LINE# 145 + C:54ABH LINE# 146 + C:54ABH LINE# 147 + C:54C1H LINE# 148 + C:54C1H LINE# 149 + C:54E2H LINE# 150 + C:54E2H LINE# 151 + C:54E4H LINE# 152 + C:54EBH LINE# 153 + C:54F1H LINE# 154 + C:54F1H LINE# 155 + C:54F2H LINE# 156 + C:5501H LINE# 157 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 88 + + + C:5501H LINE# 158 + C:5508H LINE# 159 + C:5508H LINE# 160 + C:5509H LINE# 162 + C:5509H LINE# 163 + C:551FH LINE# 164 + C:551FH LINE# 165 + C:553DH LINE# 166 + C:553DH LINE# 167 + C:553FH LINE# 168 + C:5546H LINE# 169 + C:554CH LINE# 170 + C:554CH LINE# 171 + C:554DH LINE# 172 + C:555CH LINE# 173 + C:555CH LINE# 174 + C:5563H LINE# 175 + C:5563H LINE# 176 + C:5563H LINE# 177 + ------- ENDPROC PROTECTOTC + ------- PROC PROTECTUTC + C:5564H LINE# 186 + C:5564H LINE# 187 + C:5564H LINE# 188 + C:5567H LINE# 189 + C:5567H LINE# 190 + C:557DH LINE# 191 + C:557DH LINE# 192 + C:559EH LINE# 193 + C:559EH LINE# 194 + C:55A0H LINE# 195 + C:55A7H LINE# 196 + C:55ADH LINE# 197 + C:55ADH LINE# 198 + C:55AEH LINE# 199 + C:55BDH LINE# 200 + C:55BDH LINE# 201 + C:55C4H LINE# 202 + C:55C4H LINE# 203 + C:55C5H LINE# 205 + C:55C5H LINE# 206 + C:55DBH LINE# 207 + C:55DBH LINE# 208 + C:55F9H LINE# 209 + C:55F9H LINE# 210 + C:55FBH LINE# 211 + C:5602H LINE# 212 + C:5608H LINE# 213 + C:5608H LINE# 214 + C:5609H LINE# 215 + C:5618H LINE# 216 + C:5618H LINE# 217 + C:561FH LINE# 218 + C:561FH LINE# 219 + C:561FH LINE# 220 + ------- ENDPROC PROTECTUTC + ------- PROC PROTECTOTD + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 89 + + + C:5620H LINE# 229 + C:5620H LINE# 230 + C:5620H LINE# 231 + C:5623H LINE# 232 + C:5623H LINE# 233 + C:5639H LINE# 234 + C:5639H LINE# 235 + C:565AH LINE# 236 + C:565AH LINE# 237 + C:565CH LINE# 238 + C:5663H LINE# 239 + C:5669H LINE# 240 + C:5669H LINE# 241 + C:566AH LINE# 242 + C:5679H LINE# 243 + C:5679H LINE# 244 + C:5680H LINE# 245 + C:5680H LINE# 246 + C:5681H LINE# 248 + C:5681H LINE# 249 + C:5697H LINE# 250 + C:5697H LINE# 251 + C:56B5H LINE# 252 + C:56B5H LINE# 253 + C:56B7H LINE# 254 + C:56BEH LINE# 255 + C:56C4H LINE# 256 + C:56C4H LINE# 257 + C:56C5H LINE# 258 + C:56D4H LINE# 259 + C:56D4H LINE# 260 + C:56DBH LINE# 261 + C:56DBH LINE# 262 + C:56DBH LINE# 263 + ------- ENDPROC PROTECTOTD + ------- PROC PROTECTUTD + C:56DCH LINE# 272 + C:56DCH LINE# 273 + C:56DCH LINE# 274 + C:56DFH LINE# 275 + C:56DFH LINE# 276 + C:56F5H LINE# 277 + C:56F5H LINE# 278 + C:5716H LINE# 279 + C:5716H LINE# 280 + C:5718H LINE# 281 + C:571FH LINE# 282 + C:5725H LINE# 283 + C:5725H LINE# 284 + C:5726H LINE# 285 + C:5735H LINE# 286 + C:5735H LINE# 287 + C:573CH LINE# 288 + C:573CH LINE# 289 + C:573DH LINE# 291 + C:573DH LINE# 292 + C:5753H LINE# 293 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 90 + + + C:5753H LINE# 294 + C:5771H LINE# 295 + C:5771H LINE# 296 + C:5773H LINE# 297 + C:577AH LINE# 298 + C:5780H LINE# 299 + C:5780H LINE# 300 + C:5781H LINE# 301 + C:5790H LINE# 302 + C:5790H LINE# 303 + C:5797H LINE# 304 + C:5797H LINE# 305 + C:5797H LINE# 306 + ------- ENDPROC PROTECTUTD + ------- PROC PROTECTOCC + C:6CC7H LINE# 316 + C:6CC7H LINE# 317 + C:6CC7H LINE# 318 + C:6CCAH LINE# 319 + C:6CCAH LINE# 320 + C:6CDCH LINE# 321 + C:6CDCH LINE# 322 + C:6CFAH LINE# 323 + C:6CFAH LINE# 324 + C:6CFCH LINE# 325 + C:6CFEH LINE# 326 + C:6D05H LINE# 327 + C:6D05H LINE# 328 + C:6D06H LINE# 329 + C:6D09H LINE# 330 + C:6D09H LINE# 331 + C:6D18H LINE# 332 + C:6D18H LINE# 333 + C:6D1FH LINE# 334 + C:6D1FH LINE# 335 + C:6D1FH LINE# 336 + C:6D1FH LINE# 337 + ------- ENDPROC PROTECTOCC + ------- PROC PROTECTOCD1 + C:6D20H LINE# 346 + C:6D20H LINE# 347 + C:6D20H LINE# 348 + C:6D23H LINE# 349 + C:6D23H LINE# 350 + C:6D35H LINE# 351 + C:6D35H LINE# 352 + C:6D53H LINE# 353 + C:6D53H LINE# 354 + C:6D5AH LINE# 355 + C:6D5CH LINE# 356 + C:6D5EH LINE# 357 + C:6D5EH LINE# 358 + C:6D5FH LINE# 359 + C:6D62H LINE# 360 + C:6D62H LINE# 361 + C:6D71H LINE# 362 + C:6D71H LINE# 363 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 91 + + + C:6D78H LINE# 364 + C:6D78H LINE# 365 + C:6D78H LINE# 366 + C:6D78H LINE# 367 + ------- ENDPROC PROTECTOCD1 + ------- PROC PROTECTOCD2 + C:6D79H LINE# 376 + C:6D79H LINE# 377 + C:6D79H LINE# 378 + C:6D7CH LINE# 379 + C:6D7CH LINE# 380 + C:6D8EH LINE# 381 + C:6D8EH LINE# 382 + C:6DACH LINE# 383 + C:6DACH LINE# 384 + C:6DB3H LINE# 385 + C:6DB5H LINE# 386 + C:6DB7H LINE# 387 + C:6DB7H LINE# 388 + C:6DB8H LINE# 389 + C:6DBBH LINE# 390 + C:6DBBH LINE# 391 + C:6DCAH LINE# 392 + C:6DCAH LINE# 393 + C:6DD1H LINE# 394 + C:6DD1H LINE# 395 + C:6DD1H LINE# 396 + C:6DD1H LINE# 397 + ------- ENDPROC PROTECTOCD2 + ------- PROC PROTECTPROCESS + C:7C93H LINE# 406 + C:7C93H LINE# 407 + C:7C93H LINE# 408 + C:7C96H LINE# 409 + C:7C96H LINE# 410 + C:7C99H LINE# 411 + C:7C9CH LINE# 413 + C:7C9FH LINE# 414 + C:7CA2H LINE# 415 + C:7CA5H LINE# 416 + C:7CA8H LINE# 418 + C:7CABH LINE# 419 + C:7CAEH LINE# 420 + C:7CB1H LINE# 421 + C:7CB1H LINE# 422 + ------- ENDPROC PROTECTPROCESS + ------- PROC PROTECTOCRECOVER + C:6410H LINE# 431 + C:6410H LINE# 432 + C:6410H LINE# 433 + C:6413H LINE# 434 + C:6413H LINE# 435 + C:641CH LINE# 436 + C:641CH LINE# 437 + C:643AH LINE# 438 + C:643AH LINE# 439 + C:643FH LINE# 440 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 92 + + + C:6445H LINE# 441 + C:6447H LINE# 442 + C:6449H LINE# 443 + C:644BH LINE# 444 + C:644DH LINE# 445 + C:6450H LINE# 446 + C:6450H LINE# 447 + C:6452H LINE# 448 + C:6455H LINE# 449 + C:6455H LINE# 450 + C:6455H LINE# 451 + C:6455H LINE# 453 + C:6458H LINE# 454 + C:6458H LINE# 455 + C:6476H LINE# 456 + C:6476H LINE# 457 + C:647DH LINE# 458 + C:647FH LINE# 459 + C:6483H LINE# 460 + C:6485H LINE# 461 + C:6485H LINE# 462 + C:6485H LINE# 463 + C:6485H LINE# 464 + ------- ENDPROC PROTECTOCRECOVER + ------- ENDMOD PROTECT + + ------- MODULE RTC + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + C:7D0CH PUBLIC RTCTwiCheck + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:5FEAH PUBLIC _RTCInitTime + B:002FH.2 PUBLIC bRTCTwiRWErr + C:6C12H PUBLIC _RTCRead + C:5D92H PUBLIC _RTCModifyTime + X:0496H PUBLIC ucRTCTwiRWErrDelayCnt + X:0497H PUBLIC RTC + B:002FH.3 PUBLIC bRTCErr + C:6BB7H PUBLIC _RTCWrite + C:3BC1H PUBLIC _RTCReadTime + ------- PROC RTCTWICHECK + C:7D0CH LINE# 23 + C:7D0CH LINE# 24 + C:7D0CH LINE# 25 + C:7D0FH LINE# 26 + C:7D0FH LINE# 27 + C:7D12H LINE# 28 + C:7D12H LINE# 29 + C:7D1DH LINE# 30 + C:7D1DH LINE# 31 + C:7D1FH LINE# 32 + C:7D22H LINE# 33 + C:7D22H LINE# 34 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 93 + + + C:7D23H LINE# 36 + C:7D23H LINE# 37 + C:7D28H LINE# 38 + C:7D28H LINE# 39 + C:7D28H LINE# 40 + ------- ENDPROC RTCTWICHECK + ------- PROC _RTCWRITE + X:02EEH SYMBOL WrAddr + X:02EFH SYMBOL Length + X:02F0H SYMBOL WrBuf + ------- DO + B:002AH.0 SYMBOL Result + X:02F2H SYMBOL i + ------- ENDDO + C:6BB7H LINE# 49 + C:6BC5H LINE# 50 + C:6BC5H LINE# 51 + C:6BC7H LINE# 54 + C:6BCAH LINE# 55 + C:6BCAH LINE# 56 + C:6BCDH LINE# 57 + C:6BCDH LINE# 59 + C:6BF5H LINE# 60 + C:6BF5H LINE# 61 + C:6BF7H LINE# 62 + C:6BF9H LINE# 63 + C:6BF9H LINE# 71 + C:6BFEH LINE# 72 + C:6C0AH LINE# 73 + C:6C0AH LINE# 74 + C:6C0FH LINE# 76 + C:6C11H LINE# 77 + ------- ENDPROC _RTCWRITE + ------- PROC _RTCREAD + X:02E4H SYMBOL RdAddr + X:02E5H SYMBOL Length + X:02E6H SYMBOL RdBuf + ------- DO + B:0029H.7 SYMBOL Result + X:02E8H SYMBOL i + ------- ENDDO + C:6C12H LINE# 86 + C:6C20H LINE# 87 + C:6C20H LINE# 88 + C:6C22H LINE# 91 + C:6C25H LINE# 92 + C:6C25H LINE# 93 + C:6C28H LINE# 94 + C:6C28H LINE# 96 + C:6C50H LINE# 97 + C:6C50H LINE# 98 + C:6C52H LINE# 99 + C:6C54H LINE# 100 + C:6C54H LINE# 108 + C:6C59H LINE# 109 + C:6C65H LINE# 110 + C:6C65H LINE# 111 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 94 + + + C:6C6AH LINE# 113 + C:6C6CH LINE# 114 + ------- ENDPROC _RTCREAD + ------- PROC _RTCREADTIME + X:02D9H SYMBOL RtcRdVal + ------- DO + X:02DBH SYMBOL rtcbuf + B:0029H.6 SYMBOL Result + ------- ENDDO + C:3BC1H LINE# 122 + C:3BC9H LINE# 123 + C:3BC9H LINE# 125 + C:3BCBH LINE# 127 + C:3BDBH LINE# 128 + C:3BDBH LINE# 129 + C:3BE5H LINE# 130 + C:3BE5H LINE# 131 + C:3C92H LINE# 139 + C:3C92H LINE# 140 + C:3CA3H LINE# 141 + C:3CADH LINE# 142 + C:3CBEH LINE# 143 + C:3CCAH LINE# 144 + C:3CDDH LINE# 145 + C:3CEBH LINE# 146 + C:3CFEH LINE# 148 + C:3D07H LINE# 149 + C:3D09H LINE# 151 + C:3D09H LINE# 152 + C:3D1CH LINE# 153 + C:3D26H LINE# 154 + C:3D33H LINE# 155 + C:3D3FH LINE# 156 + C:3D4FH LINE# 157 + C:3D5FH LINE# 158 + C:3D6FH LINE# 160 + C:3D71H LINE# 161 + C:3D71H LINE# 162 + C:3D73H LINE# 164 + C:3D73H LINE# 165 + C:3D80H LINE# 166 + C:3D80H LINE# 167 + C:3D80H LINE# 169 + C:3D82H LINE# 170 + ------- ENDPROC _RTCREADTIME + ------- PROC _RTCMODIFYTIME + X:02E4H SYMBOL RtcMdyVal + ------- DO + B:0029H.7 SYMBOL Result + X:02E6H SYMBOL rtcdata + X:02E7H SYMBOL rtctemp + ------- ENDDO + C:5D92H LINE# 179 + C:5D9AH LINE# 180 + C:5D9AH LINE# 181 + C:5D9CH LINE# 185 + C:5DA0H LINE# 186 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 95 + + + C:5DADH LINE# 188 + C:5DBEH LINE# 189 + C:5DC8H LINE# 190 + C:5DDDH LINE# 191 + C:5DE9H LINE# 192 + C:5DFDH LINE# 193 + C:5E0BH LINE# 194 + C:5E1EH LINE# 196 + C:5E2BH LINE# 198 + C:5E2DH LINE# 199 + ------- ENDPROC _RTCMODIFYTIME + ------- PROC _RTCINITTIME + X:02B7H SYMBOL RtcInitVal + ------- DO + B:0029H.5 SYMBOL Result + X:02B9H SYMBOL rtcbuf + D:0007H SYMBOL i + X:02C2H SYMBOL checksum + ------- ENDDO + C:5FEAH LINE# 208 + C:5FF2H LINE# 209 + C:5FF2H LINE# 210 + C:5FF4H LINE# 213 + C:5FF9H LINE# 215 + C:6003H LINE# 217 + C:6010H LINE# 218 + C:6012H LINE# 219 + C:6012H LINE# 220 + C:6024H LINE# 221 + C:6029H LINE# 223 + C:603BH LINE# 224 + C:603BH LINE# 225 + C:6040H LINE# 226 + C:6042H LINE# 227 + C:6046H LINE# 228 + C:604AH LINE# 229 + C:604EH LINE# 230 + C:6052H LINE# 231 + C:6056H LINE# 232 + C:6056H LINE# 234 + C:6067H LINE# 235 + C:6074H LINE# 237 + C:6076H LINE# 238 + ------- ENDPROC _RTCINITTIME + ------- ENDMOD RTC + + ------- MODULE TWI + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + D:008AH PUBLIC TWIBR + D:00C6H PUBLIC TWICR + D:0089H PUBLIC TWTFREE + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 96 + + + C:3D83H PUBLIC _TwiRead + D:00B1H PUBLIC RSTSTAT + C:7D46H PUBLIC _CRC8cal + D:00E6H PUBLIC TWITOUT + C:47FEH PUBLIC _TwiWrite + C:7DABH PUBLIC TwiInit + D:008DH PUBLIC TWIDAT + D:00C8H PUBLIC TWICON + D:00D1H PUBLIC TWISTA + C:7B94H PUBLIC _TWICheckStatus + C:4E22H PUBLIC CRC8Table + ------- PROC _CRC8CAL + D:0001H SYMBOL p + D:0005H SYMBOL counter + ------- DO + D:0007H SYMBOL crc8 + ------- ENDDO + C:7D46H LINE# 38 + C:7D46H LINE# 39 + C:7D46H LINE# 40 + C:7D48H LINE# 42 + C:7D4EH LINE# 43 + C:7D4EH LINE# 44 + C:7D57H LINE# 45 + C:7D5EH LINE# 46 + C:7D61H LINE# 47 + C:7D61H LINE# 48 + ------- ENDPROC _CRC8CAL + ------- PROC _TWICHECKSTATUS + D:0007H SYMBOL Status + ------- DO + B:002AH.2 SYMBOL Result + D:0004H SYMBOL timeoutcount + ------- ENDDO + C:7B94H LINE# 59 + C:7B94H LINE# 60 + C:7B94H LINE# 61 + C:7B96H LINE# 62 + C:7B9AH LINE# 64 + C:7B9FH LINE# 65 + C:7B9FH LINE# 66 + C:7BA2H LINE# 67 + C:7BA6H LINE# 68 + C:7BA6H LINE# 69 + C:7BABH LINE# 70 + C:7BADH LINE# 72 + C:7BADH LINE# 73 + C:7BADH LINE# 74 + C:7BADH LINE# 75 + C:7BAFH LINE# 76 + C:7BB6H LINE# 77 + C:7BB6H LINE# 78 + C:7BB8H LINE# 79 + C:7BB8H LINE# 81 + C:7BBAH LINE# 82 + ------- ENDPROC _TWICHECKSTATUS + ------- PROC _TWIWRITE + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 97 + + + X:02F3H SYMBOL SlaveID + X:02F4H SYMBOL WrAddr + X:02F6H SYMBOL AddrType + X:02F7H SYMBOL Length + X:02F8H SYMBOL CrcFlg + X:02F9H SYMBOL WrBuf + ------- DO + D:0006H SYMBOL i + X:02FBH SYMBOL TempBuf + B:002AH.1 SYMBOL Result + X:02FFH SYMBOL timeoutcount + C:491FH SYMBOL WrErr + ------- ENDDO + C:47FEH LINE# 98 + C:480EH LINE# 99 + C:480EH LINE# 102 + C:4810H LINE# 103 + C:481AH LINE# 105 + C:481FH LINE# 106 + C:4822H LINE# 107 + C:4832H LINE# 108 + C:4842H LINE# 110 + C:484EH LINE# 111 + C:484EH LINE# 112 + C:4857H LINE# 113 + C:485AH LINE# 114 + C:4868H LINE# 115 + C:4868H LINE# 116 + C:486AH LINE# 117 + C:486DH LINE# 118 + C:486DH LINE# 120 + C:4873H LINE# 121 + C:4876H LINE# 122 + C:487DH LINE# 123 + C:487DH LINE# 124 + C:487FH LINE# 125 + C:4882H LINE# 126 + C:4882H LINE# 128 + C:4889H LINE# 129 + C:4889H LINE# 130 + C:488FH LINE# 131 + C:4892H LINE# 132 + C:4899H LINE# 133 + C:4899H LINE# 134 + C:489BH LINE# 135 + C:489EH LINE# 136 + C:489EH LINE# 137 + C:489EH LINE# 139 + C:48A6H LINE# 140 + C:48A9H LINE# 141 + C:48B0H LINE# 142 + C:48B0H LINE# 143 + C:48B2H LINE# 144 + C:48B4H LINE# 145 + C:48B4H LINE# 147 + C:48BCH LINE# 148 + C:48BCH LINE# 149 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 98 + + + C:48C8H LINE# 150 + C:48CBH LINE# 151 + C:48D2H LINE# 152 + C:48D2H LINE# 153 + C:48D4H LINE# 154 + C:48D6H LINE# 155 + C:48D6H LINE# 157 + C:48DCH LINE# 158 + C:48DFH LINE# 159 + C:48E6H LINE# 160 + C:48E6H LINE# 161 + C:48E8H LINE# 162 + C:48EAH LINE# 163 + C:48EAH LINE# 164 + C:48EAH LINE# 166 + C:48EAH LINE# 167 + C:48F6H LINE# 168 + C:48F6H LINE# 169 + C:4904H LINE# 170 + C:4907H LINE# 171 + C:490EH LINE# 172 + C:490EH LINE# 173 + C:4910H LINE# 174 + C:4912H LINE# 175 + C:4912H LINE# 176 + C:491CH LINE# 177 + C:491FH LINE# 178 + C:491FH LINE# 179 + C:491FH LINE# 180 + C:4922H LINE# 181 + C:4927H LINE# 182 + C:4927H LINE# 183 + C:492AH LINE# 184 + C:4934H LINE# 185 + C:4934H LINE# 186 + C:493EH LINE# 187 + C:4940H LINE# 189 + C:4940H LINE# 190 + C:4940H LINE# 191 + C:4940H LINE# 192 + C:4942H LINE# 193 + C:4942H LINE# 195 + C:4944H LINE# 196 + ------- ENDPROC _TWIWRITE + ------- PROC _TWIREAD + D:0002H SYMBOL SlaveID + X:02EAH SYMBOL RdAddr + D:0003H SYMBOL AddrType + X:02EDH SYMBOL Length + X:02EEH SYMBOL CrcFlg + X:02EFH SYMBOL RdBuf + ------- DO + B:002AH.0 SYMBOL Result + X:02F1H SYMBOL i + X:02F2H SYMBOL TempBuf + X:0320H SYMBOL RdCrc + X:0321H SYMBOL timeoutcount + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 99 + + + C:3F16H SYMBOL RdErr + ------- ENDDO + C:3D83H LINE# 210 + C:3D8DH LINE# 211 + C:3D8DH LINE# 212 + C:3D8FH LINE# 215 + C:3D94H LINE# 216 + C:3D9CH LINE# 218 + C:3DA1H LINE# 219 + C:3DA4H LINE# 221 + C:3DA9H LINE# 223 + C:3DB5H LINE# 224 + C:3DB5H LINE# 225 + C:3DBEH LINE# 226 + C:3DC1H LINE# 227 + C:3DCFH LINE# 228 + C:3DCFH LINE# 229 + C:3DD1H LINE# 230 + C:3DD4H LINE# 231 + C:3DD4H LINE# 233 + C:3DD6H LINE# 234 + C:3DD9H LINE# 235 + C:3DE0H LINE# 236 + C:3DE0H LINE# 237 + C:3DE2H LINE# 238 + C:3DE5H LINE# 239 + C:3DE5H LINE# 241 + C:3DE9H LINE# 242 + C:3DE9H LINE# 243 + C:3DEFH LINE# 244 + C:3DF2H LINE# 245 + C:3DF9H LINE# 246 + C:3DF9H LINE# 247 + C:3DFBH LINE# 248 + C:3DFEH LINE# 249 + C:3DFEH LINE# 250 + C:3DFEH LINE# 252 + C:3E06H LINE# 253 + C:3E09H LINE# 254 + C:3E10H LINE# 255 + C:3E10H LINE# 256 + C:3E12H LINE# 257 + C:3E15H LINE# 258 + C:3E15H LINE# 271 + C:3E18H LINE# 272 + C:3E26H LINE# 273 + C:3E26H LINE# 274 + C:3E28H LINE# 275 + C:3E2BH LINE# 276 + C:3E2BH LINE# 278 + C:3E30H LINE# 279 + C:3E33H LINE# 280 + C:3E3AH LINE# 281 + C:3E3AH LINE# 282 + C:3E3CH LINE# 283 + C:3E3FH LINE# 284 + C:3E3FH LINE# 286 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 100 + + + C:3E52H LINE# 287 + C:3E52H LINE# 288 + C:3E58H LINE# 289 + C:3E58H LINE# 290 + C:3E5DH LINE# 291 + C:3E5DH LINE# 292 + C:3E60H LINE# 293 + C:3E65H LINE# 294 + C:3E67H LINE# 296 + C:3E67H LINE# 297 + C:3E6AH LINE# 298 + C:3E6FH LINE# 299 + C:3E6FH LINE# 300 + C:3E7DH LINE# 301 + C:3E87H LINE# 302 + C:3E89H LINE# 304 + C:3E89H LINE# 305 + C:3E8CH LINE# 306 + C:3E91H LINE# 307 + C:3EA1H LINE# 308 + C:3EA1H LINE# 309 + C:3EA9H LINE# 311 + C:3EB1H LINE# 312 + C:3EB1H LINE# 313 + C:3EB4H LINE# 314 + C:3EB9H LINE# 315 + C:3EBFH LINE# 316 + C:3ED6H LINE# 317 + C:3ED6H LINE# 318 + C:3EE9H LINE# 319 + C:3EE9H LINE# 320 + C:3F02H LINE# 321 + C:3F0CH LINE# 322 + C:3F14H LINE# 323 + C:3F14H LINE# 325 + C:3F14H LINE# 326 + C:3F16H LINE# 327 + C:3F16H LINE# 328 + C:3F16H LINE# 329 + C:3F16H LINE# 330 + C:3F16H LINE# 331 + C:3F19H LINE# 332 + C:3F1EH LINE# 333 + C:3F1EH LINE# 334 + C:3F21H LINE# 335 + C:3F2BH LINE# 336 + C:3F2BH LINE# 337 + C:3F35H LINE# 338 + C:3F37H LINE# 340 + C:3F37H LINE# 341 + C:3F37H LINE# 342 + C:3F37H LINE# 343 + C:3F39H LINE# 344 + C:3F39H LINE# 346 + C:3F3BH LINE# 347 + ------- ENDPROC _TWIREAD + ------- PROC TWIINIT + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 101 + + + C:7DABH LINE# 367 + C:7DABH LINE# 368 + C:7DABH LINE# 369 + C:7DAEH LINE# 370 + C:7DB1H LINE# 371 + C:7DB3H LINE# 372 + C:7DB6H LINE# 373 + C:7DB9H LINE# 397 + C:7DBCH LINE# 398 + C:7DBFH LINE# 399 + C:7DC1H LINE# 400 + ------- ENDPROC TWIINIT + ------- ENDMOD TWI + + ------- MODULE UART + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C4H PUBLIC UART0CR + D:00C0H PUBLIC P4 + C:6980H PUBLIC UART0Init + D:009DH PUBLIC SBRTH + D:0080H PUBLIC P5 + D:009CH PUBLIC SBRTL + B:0098H.0 PUBLIC RI + B:0098H.1 PUBLIC TI + D:0099H PUBLIC SBUF + D:0087H PUBLIC PCON + D:0098H PUBLIC SCON + C:7CB2H PUBLIC InterruptUART0 + D:0086H PUBLIC INSCON + D:009BH PUBLIC SADEN + D:009AH PUBLIC SADDR + D:009EH PUBLIC SFINE + ------- PROC UART0INIT + ------- DO + X:02B7H SYMBOL TempVal + ------- ENDDO + C:6980H LINE# 19 + C:6980H LINE# 20 + C:6980H LINE# 22 + C:6983H LINE# 84 + C:6983H LINE# 86 + C:6986H LINE# 87 + C:6989H LINE# 92 + C:6993H LINE# 93 + C:6999H LINE# 94 + C:699CH LINE# 95 + C:69D7H LINE# 97 + C:69DAH LINE# 98 + C:69DDH LINE# 99 + C:69E0H LINE# 100 + C:69E0H LINE# 101 + ------- ENDPROC UART0INIT + ------- PROC INTERRUPTUART0 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 102 + + + ------- DO + X:02B6H SYMBOL RxData + ------- ENDDO + C:7CB2H LINE# 110 + C:7CB8H LINE# 114 + C:7CBAH LINE# 115 + C:7CBDH LINE# 117 + C:7CC0H LINE# 118 + C:7CC0H LINE# 119 + C:7CC2H LINE# 120 + C:7CC8H LINE# 122 + C:7CC8H LINE# 124 + C:7CC8H LINE# 125 + C:7CC8H LINE# 129 + C:7CC8H LINE# 131 + C:7CCAH LINE# 132 + ------- ENDPROC INTERRUPTUART0 + ------- ENDMOD UART + + ------- MODULE THERMISTOR + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:4A89H PUBLIC NTC103AT + ------- ENDMOD THERMISTOR + + ------- MODULE TWIIO + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + ------- ENDMOD TWIIO + + ------- MODULE ?C_STARTUP + C:7C73H SEGMENT ?C_C51STARTUP + C:1000H PUBLIC ?C_STARTUP + N:00B2H SYMBOL CLKCON + D:0083H SYMBOL DPH + D:0082H SYMBOL DPL + C:7C79H SYMBOL FOR_EACH_IDATA + C:7C83H SYMBOL FOR_EACH_XDATA + D:0081H SYMBOL SP + C:7C73H SYMBOL STARTUP1 + C:1000H LINE# 12 + C:7C73H LINE# 18 + C:7C76H LINE# 19 + C:7C77H LINE# 22 + C:7C79H LINE# 24 + C:7C7BH LINE# 25 + C:7C7CH LINE# 26 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 103 + + + C:7C7FH LINE# 28 + C:7C80H LINE# 29 + C:7C83H LINE# 31 + C:7C84H LINE# 32 + C:7C85H LINE# 33 + C:7C87H LINE# 34 + C:7C89H LINE# 35 + C:7C8CH LINE# 36 + C:7C8FH LINE# 37 + C:7C90H LINE# 38 + ------- ENDMOD ?C_STARTUP + + ------- MODULE GASGAUGEINTER_V4_13 + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:0323H PUBLIC E2uiDsgCorrectVol + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + X:0325H PUBLIC Info_uiRSOC + X:0327H PUBLIC E2ulIdleSocTimes + X:032BH PUBLIC Info_uiRsocCnt + X:032DH PUBLIC E2ulChgerEndVol + X:0331H PUBLIC E2ucChgCurRatio + X:0332H PUBLIC Info_uiSocDecTime + X:0334H PUBLIC Info_ulTempDsgFcc + X:0338H PUBLIC E2ui_CYCLECOUNTA_B + X:033AH PUBLIC E2ui_CYCLECOUNTB_B + X:033CH PUBLIC E2uiTempFCC_K1 + X:033EH PUBLIC E2uiTempFCC_K2 + X:0340H PUBLIC E2uiChgEndTemp + X:0342H PUBLIC E2ucFccUpdatePercent + X:0343H PUBLIC Info_ulFCC + X:0347H PUBLIC E2ui_CYCLECOUNTA_K + X:0349H PUBLIC E2ui_CYCLECOUNTB_K + X:034BH PUBLIC E2ucChgCorrectSOC + X:034CH PUBLIC E2ucInitSocDif + X:034DH PUBLIC Info_ulVoltage + X:0351H PUBLIC E2uiDsgEndTemp + X:0353H PUBLIC E2ulLoadEndVol + X:0357H PUBLIC E2ucDsgCorrectSOC + X:0358H PUBLIC Info_ulDfilterRC + X:035CH PUBLIC E2uiUpdateCycleCount + X:035EH PUBLIC E2ucDsgVolDet + D:001AH PUBLIC uiCellVminG + X:035FH PUBLIC slAdcCur2 + D:001CH PUBLIC uiCellVmaxG + X:0363H PUBLIC E2ucChgerEndDelay + X:0364H PUBLIC Info_uiCycleCount + X:0366H PUBLIC E2slDsgAdjMaxCurr + X:036AH PUBLIC E2ucDsgAdjLowFlg + X:036BH PUBLIC E2ucInitUpSoc + X:036CH PUBLIC E2uiDsgAdjLowTemp + X:036EH PUBLIC E2ucChgChangeSocRatio + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 104 + + + X:036FH PUBLIC E2ucDsgAdjLowSoc + X:0370H PUBLIC E2uiTempFCC_B + X:0372H PUBLIC siCurCompens + X:0374H PUBLIC Info_uiTemp + X:0376H PUBLIC Info_ulRC + X:037AH PUBLIC E2ucChgChangeSocDif + C:39FCH PUBLIC GasGaugeVarIn + X:037BH PUBLIC Info_slCurr + C:6E78H PUBLIC GasGaugeVarOut + X:037FH PUBLIC E2uiChgCorrectVol + X:0381H PUBLIC E2ui_CYCLECOUNTA + X:0383H PUBLIC E2ui_CYCLECOUNTB + X:0385H PUBLIC E2ui_CYCLECOUNTC + X:0387H PUBLIC E2ucChgAdjRatio + X:0388H PUBLIC E2ucChg100Ratio + X:0389H PUBLIC E2ucFullDsgDelay + ------- PROC GASGAUGEVARIN + ------- DO + B:0029H.5 SYMBOL eabak + ------- ENDDO + C:39FCH LINE# 114 + C:39FCH LINE# 115 + C:39FCH LINE# 118 + C:3A00H LINE# 119 + C:3A02H LINE# 120 + C:3A11H LINE# 121 + C:3A1DH LINE# 122 + C:3A29H LINE# 123 + C:3A38H LINE# 124 + C:3A44H LINE# 125 + C:3A53H LINE# 126 + C:3A64H LINE# 127 + C:3A6AH LINE# 128 + C:3A70H LINE# 130 + C:3A7AH LINE# 131 + C:3A81H LINE# 133 + C:3A85H LINE# 135 + C:3A8BH LINE# 136 + C:3A91H LINE# 137 + C:3A99H LINE# 138 + C:3AA3H LINE# 139 + C:3AA8H LINE# 140 + C:3AADH LINE# 141 + C:3AB3H LINE# 142 + C:3ABDH LINE# 143 + C:3AC4H LINE# 144 + C:3ACEH LINE# 145 + C:3AD4H LINE# 146 + C:3AE8H LINE# 147 + C:3AEEH LINE# 148 + C:3AF4H LINE# 150 + C:3B03H LINE# 151 + C:3B09H LINE# 152 + C:3B21H LINE# 153 + C:3B35H LINE# 154 + C:3B3BH LINE# 155 + C:3B41H LINE# 157 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 105 + + + C:3B47H LINE# 158 + C:3B4DH LINE# 159 + C:3B53H LINE# 161 + C:3B5DH LINE# 163 + C:3B63H LINE# 164 + C:3B6DH LINE# 165 + C:3B77H LINE# 167 + C:3B80H LINE# 168 + C:3B89H LINE# 169 + C:3B92H LINE# 170 + C:3B9BH LINE# 171 + C:3BA4H LINE# 172 + C:3BADH LINE# 173 + C:3BB7H LINE# 174 + C:3BC0H LINE# 203 + ------- ENDPROC GASGAUGEVARIN + ------- PROC GASGAUGEVAROUT + ------- DO + B:0029H.5 SYMBOL eabak + ------- ENDDO + C:6E78H LINE# 211 + C:6E78H LINE# 212 + C:6E78H LINE# 215 + C:6E7CH LINE# 216 + C:6E7EH LINE# 217 + C:6E8DH LINE# 218 + C:6E99H LINE# 219 + C:6EA5H LINE# 220 + C:6EB4H LINE# 221 + C:6EB8H LINE# 222 + C:6EBCH LINE# 223 + C:6EC4H LINE# 224 + C:6EC8H LINE# 252 + ------- ENDPROC GASGAUGEVAROUT + ------- ENDMOD GASGAUGEINTER_V4_13 + + ------- MODULE BOOTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + C:7D29H PUBLIC ISPProcess + ------- PROC ISPPROCESS + C:7D29H LINE# 17 + C:7D29H LINE# 18 + C:7D29H LINE# 19 + C:7D35H LINE# 20 + C:7D35H LINE# 21 + C:7D37H LINE# 22 + C:7D39H LINE# 23 + C:7D3BH LINE# 24 + C:7D3DH LINE# 25 + C:7D3FH LINE# 26 + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 106 + + + C:7D42H LINE# 27 + C:7D45H LINE# 28 + C:7D45H LINE# 29 + ------- ENDPROC ISPPROCESS + ------- ENDMOD BOOTAPP + + ------- MODULE BOOTIAP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:0000H PUBLIC g_loadercode + ------- ENDMOD BOOTIAP + + ------- MODULE ?C?FPADD + C:1C81H PUBLIC ?C?FPADD + C:1C7DH PUBLIC ?C?FPSUB + ------- ENDMOD ?C?FPADD + + ------- MODULE ?C?FPMUL + C:1D72H PUBLIC ?C?FPMUL + ------- ENDMOD ?C?FPMUL + + ------- MODULE ?C?FPDIV + C:1E7BH PUBLIC ?C?FPDIV + ------- ENDMOD ?C?FPDIV + + ------- MODULE ?C?FCAST + C:1F22H PUBLIC ?C?FCASTC + C:1F1DH PUBLIC ?C?FCASTI + C:1F18H PUBLIC ?C?FCASTL + ------- ENDMOD ?C?FCAST + + ------- MODULE ?C?CASTF + C:1F56H PUBLIC ?C?CASTF + ------- ENDMOD ?C?CASTF + + ------- MODULE PRINTF + X:02B7H PUBLIC ?_PRINTF?BYTE + X:02B7H PUBLIC ?_SPRINTF?BYTE + C:2C8EH PUBLIC _PRINTF + C:2C88H PUBLIC _SPRINTF + ------- ENDMOD PRINTF + + ------- MODULE ?C?FPROUND + C:1FD7H PUBLIC ?C?FPROUND + ------- ENDMOD ?C?FPROUND + + ------- MODULE ?C?FPCONVERT + C:2014H PUBLIC ?C?FPCONVERT + ------- ENDMOD ?C?FPCONVERT + + ------- MODULE ?C?FTNPWR + C:2149H PUBLIC ?C?FTNPWR + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 107 + + + ------- ENDMOD ?C?FTNPWR + + ------- MODULE ?C?CLDPTR + C:2189H PUBLIC ?C?CLDPTR + ------- ENDMOD ?C?CLDPTR + + ------- MODULE ?C?CLDOPTR + C:21A2H PUBLIC ?C?CLDOPTR + ------- ENDMOD ?C?CLDOPTR + + ------- MODULE ?C?CSTPTR + C:21CFH PUBLIC ?C?CSTPTR + ------- ENDMOD ?C?CSTPTR + + ------- MODULE ?C?IMUL + C:21E1H PUBLIC ?C?IMUL + ------- ENDMOD ?C?IMUL + + ------- MODULE ?C?UIDIV + C:21F3H PUBLIC ?C?UIDIV + ------- ENDMOD ?C?UIDIV + + ------- MODULE ?C?IILDX + C:2248H PUBLIC ?C?IILDX + ------- ENDMOD ?C?IILDX + + ------- MODULE ?C?LADD + C:225EH PUBLIC ?C?LADD + ------- ENDMOD ?C?LADD + + ------- MODULE ?C?LSUB + C:226BH PUBLIC ?C?LSUB + ------- ENDMOD ?C?LSUB + + ------- MODULE ?C?LMUL + C:2279H PUBLIC ?C?LMUL + ------- ENDMOD ?C?LMUL + + ------- MODULE ?C?ULDIV + C:2304H PUBLIC ?C?ULDIV + ------- ENDMOD ?C?ULDIV + + ------- MODULE ?C?SLDIV + C:7602H PUBLIC ?C?SLDIV + ------- ENDMOD ?C?SLDIV + + ------- MODULE ?C?LOR + C:2396H PUBLIC ?C?LOR + ------- ENDMOD ?C?LOR + + ------- MODULE ?C?LNEG + C:23A3H PUBLIC ?C?LNEG + ------- ENDMOD ?C?LNEG + + ------- MODULE ?C?SLCMP + C:23B1H PUBLIC ?C?SLCMP + ------- ENDMOD ?C?SLCMP + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 108 + + + + ------- MODULE ?C?ULCMP + C:23C7H PUBLIC ?C?ULCMP + ------- ENDMOD ?C?ULCMP + + ------- MODULE ?C?ULSHR + C:23D8H PUBLIC ?C?ULSHR + ------- ENDMOD ?C?ULSHR + + ------- MODULE ?C?SLSHR + C:23EBH PUBLIC ?C?SLSHR + ------- ENDMOD ?C?SLSHR + + ------- MODULE ?C?LSHL + C:23FFH PUBLIC ?C?LSHL + ------- ENDMOD ?C?LSHL + + ------- MODULE ?C?LLDIDATA + C:2412H PUBLIC ?C?LLDIDATA + ------- ENDMOD ?C?LLDIDATA + + ------- MODULE ?C?LLDXDATA + C:241EH PUBLIC ?C?LLDXDATA + ------- ENDMOD ?C?LLDXDATA + + ------- MODULE ?C?LLDIDATA0 + C:242AH PUBLIC ?C?LLDIDATA0 + ------- ENDMOD ?C?LLDIDATA0 + + ------- MODULE ?C?LLDXDATA0 + C:2437H PUBLIC ?C?LLDXDATA0 + ------- ENDMOD ?C?LLDXDATA0 + + ------- MODULE ?C?LILDXDATA + C:244CH PUBLIC ?C?LILDXDATA + C:2443H PUBLIC ?C?LILDXDATA1 + C:2445H PUBLIC ?C?LILDXDATA8 + ------- ENDMOD ?C?LILDXDATA + + ------- MODULE ?C?LSTIDATA + C:2478H PUBLIC ?C?LSTIDATA + ------- ENDMOD ?C?LSTIDATA + + ------- MODULE ?C?LSTXDATA + C:2484H PUBLIC ?C?LSTXDATA + ------- ENDMOD ?C?LSTXDATA + + ------- MODULE ?C?LSTKIDATA + C:2490H PUBLIC ?C?LSTKIDATA + ------- ENDMOD ?C?LSTKIDATA + + ------- MODULE ?C?LSTKXDATA + C:24A9H PUBLIC ?C?LSTKXDATA + ------- ENDMOD ?C?LSTKXDATA + + ------- MODULE ?C?OFFXADD + C:24DAH PUBLIC ?C?OFFXADD + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 109 + + + ------- ENDMOD ?C?OFFXADD + + ------- MODULE ?C?PLDIXDATA + C:24E6H PUBLIC ?C?PLDIXDATA + ------- ENDMOD ?C?PLDIXDATA + + ------- MODULE ?C?PSTXDATA + C:24FDH PUBLIC ?C?PSTXDATA + ------- ENDMOD ?C?PSTXDATA + + ------- MODULE ?C?CCASE + C:2506H PUBLIC ?C?CCASE + ------- ENDMOD ?C?CCASE + + ------- MODULE ?C?LIMUL + C:252CH PUBLIC ?C?LIMUL + ------- ENDMOD ?C?LIMUL + + + +FUNCTION REGISTER MASKS + + +FUNCTION . . . . . . . . . REG MASK +----------------------------------- + +AFEADCDIS. . . . . . . . . @0xf7ff +AFEADCEN . . . . . . . . . @0xf7ff +AFECADCDIS . . . . . . . . @0xf7ff +AFECADCEN. . . . . . . . . @0xf7ff +AFECHGERCHECKDIS . . . . . @0xf7ff +AFECHGERCHECKEN. . . . . . @0xf7ff +AFECLRFLG. . . . . . . . . @0xf7ff +AFEENTERPD . . . . . . . . @0xf7ff +AFEGETTEMPE. . . . . . . . @0xf7ff +AFEGETVOL. . . . . . . . . @0xf7ff +AFEINIT. . . . . . . . . . @0xf7ff +AFELOADCHECKDIS. . . . . . @0xf7ff +AFELOADCHECKEN . . . . . . @0xf7ff +AFERAMCHECK. . . . . . . . @0xf7ff +AFERDFLG . . . . . . . . . @0xf7ff +AFERDSTATUS. . . . . . . . @0xf7ff +AFETEMPADCDIS. . . . . . . @0xf7ff +AFETEMPADCEN . . . . . . . @0xf7ff +AFETWICHECK. . . . . . . . @0xf300 +AFEWDTDIS. . . . . . . . . @0xf7ff +AFEWDTEN . . . . . . . . . @0xf7ff +BALPROCESS . . . . . . . . @0xf7ff +CALICURZERO. . . . . . . . @0xe301 +CALIRTCTIME. . . . . . . . @0xf7ff +CHGERCHECK . . . . . . . . @0xf7ff +CTOCHECKVOL. . . . . . . . @0xf300 +CTOTURNONCHECK . . . . . . @0xf300 +E2PROMBKBOOT . . . . . . . @0xf7ff +E2PROMINIT . . . . . . . . @0xf7ff +E2PROMTWICHECK . . . . . . @0xf300 +GASGAUGEVARIN. . . . . . . @0xffbf + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 110 + + +GASGAUGEVAROUT . . . . . . @0xff8f +INITGPIO . . . . . . . . . @0xc000 +INITIRQ. . . . . . . . . . @0xe000 +INITVAR. . . . . . . . . . @0xf797 +INTERRUPTINT4. . . . . . . @0xf301 +INTERRUPTTIMER3. . . . . . @0xf300 +INTERRUPTTIMER3APP . . . . @0xf300 +INTERRUPTUART0 . . . . . . @0xe300 +INTERRUPTUART0APPTX. . . . @0xf38f +KEYSCAN. . . . . . . . . . @0xf000 +LEDAUTOOFF . . . . . . . . @0xf300 +LEDDISPLAY . . . . . . . . @0xf303 +LOADCHECK. . . . . . . . . @0xf7ff +LOWPOWERCHECK. . . . . . . @0xf301 +LOWPOWERPROCESS. . . . . . @0xf7ff +MCUFLASHPROCESS. . . . . . @0xf7bf +MCUFLASHWRWAITCHECK. . . . @0xf300 +MCUINTOIDLE. . . . . . . . @0xc000 +MCUINTOPD. . . . . . . . . @0xc000 +MOSCTRL. . . . . . . . . . @0xf7ff +MOSSTATUSCHECK . . . . . . @0xc000 +PORPROTECTOTC. . . . . . . @0xf78f +PORPROTECTOTD. . . . . . . @0xf78f +PORPROTECTOV . . . . . . . @0xf782 +PORPROTECTUTC. . . . . . . @0xf78f +PORPROTECTUTD. . . . . . . @0xf78f +PORPROTECTUV . . . . . . . @0xf782 +PROTECTOCRECOVER . . . . . @0xf7ff +PROTECTOTC . . . . . . . . @0xf7af +PROTECTOTD . . . . . . . . @0xf7af +PROTECTOV. . . . . . . . . @0xf7ff +PROTECTUTC . . . . . . . . @0xf7af +PROTECTUTD . . . . . . . . @0xf7af +PROTECTUV. . . . . . . . . @0xf78b +RAMCHECKPROCESS. . . . . . @0xf300 +RTCTWICHECK. . . . . . . . @0xf300 +SYSPARAINIT. . . . . . . . @0xffbf +SYSTEMINTOPD . . . . . . . @0xf7ff +SYSTEMINTOSLEEP. . . . . . @0xf7ff +TWIINIT. . . . . . . . . . @0xe000 +UART0CALICUROFFSET . . . . @0xf375 +UART0CALIRTC . . . . . . . @0xf377 +UART0CALITS1 . . . . . . . @0xf377 +UART0CALITS2 . . . . . . . @0xf377 +UART0CALIVOLTAGE . . . . . @0xf377 +UART0CHECK . . . . . . . . @0xf300 +UART0HANDSHAKE . . . . . . @0xe300 +UART0IAPCHECKHANDSHAKE . . @0xf7bf +UART0RDCMDPROCESS. . . . . @0xf3ff +UART0RDE2PROM. . . . . . . @0xf7ff +UART0READSUBCLASSID. . . . @0xf375 +UART0WRITEMANUFACTURE. . . @0xf375 +UART1RDE2PROM. . . . . . . @0xf7ff +UART2RDE2PROM. . . . . . . @0xf7ff +WAKEUPPROCESS. . . . . . . @0xf7ff +_AFEALARMDIS . . . . . . . @0xf7ff +_AFEALARMEN. . . . . . . . @0xf7ff + BL51 BANKED LINKER/LOCATER V6.22 02/06/2025 15:28:46 PAGE 111 + + +_AFEBALCTL . . . . . . . . @0xf7ff +_AFEMOSCTL . . . . . . . . @0xf7ff +_AFEREADREG. . . . . . . . @0xf7ff +_AFEWRITEREG . . . . . . . @0xf7ff +_CRC8CAL . . . . . . . . . @0xf365 +_DELAY1MS. . . . . . . . . @0xf03e +_E2PROMREAD. . . . . . . . @0xf7ff +_E2PROMWRITE . . . . . . . @0xf7ff +_GETCYCLEGAIN. . . . . . . @0xf7cf +_INTERRUPTINT4APP. . . . . @0xf301 +_LEDGETDISNUM. . . . . . . @0xf001 +_MCUCLOCKSET . . . . . . . @0xf301 +_MCUFLASHBLANKCHECK. . . . @0xf31c +_MCUFLASHCHECKFLG. . . . . @0xf303 +_MCUFLASHDATACHECK . . . . @0xf7af +_MCUFLASHREAD. . . . . . . @0xf307 +_MCUFLASHWRITE . . . . . . @0xf7bf +_MCUFLASHWRONEBYTE . . . . @0xf035 +_MCUFLASHWRSECTOR. . . . . @0xf33f +_MEMORYCOPY. . . . . . . . @0xf78d +_MEMORYSET . . . . . . . . @0xf781 +_PUTCHAR . . . . . . . . . @0xc000 +_RTCMODIFYTIME . . . . . . @0xf7ff +_RTCREAD . . . . . . . . . @0xf7ff +_RTCWRITE. . . . . . . . . @0xf7ff +_TWICHECKSTATUS. . . . . . @0xf00c +_TWIREAD . . . . . . . . . @0xf7ff +_TWIWRITE. . . . . . . . . @0xf7ff +_UART0READINFO . . . . . . @0xf37f +_UART0WRITEINFO. . . . . . @0xf7ff + +*** WARNING L15: MULTIPLE CALL TO SEGMENT + SEGMENT: ?PR?_MCUCLOCKSET?MCULIB + CALLER1: ?PR?INTERRUPTINT4?INTERRUPT + CALLER2: ?C_C51STARTUP + +Program Size: data=154.7 xdata=1534 code=32641 +LINK/LOCATE RUN COMPLETE. 1 WARNING(S), 0 ERROR(S) diff --git a/output/MCUCore_Load.plg b/output/MCUCore_Load.plg new file mode 100644 index 0000000..3a4c682 --- /dev/null +++ b/output/MCUCore_Load.plg @@ -0,0 +1,9 @@ + + +
+

礦ision Build Log

+

Project:

+E:\Y\keil\ZDBMS\SH39F003&F004_DemoCode_V2.15\MCUCore.uvproj +Project File Date: 01/23/2025 + +

Output:

diff --git a/output/Main.lst b/output/Main.lst new file mode 100644 index 0000000..7ccd90e --- /dev/null +++ b/output/Main.lst @@ -0,0 +1,167 @@ +C51 COMPILER V9.01 MAIN 02/06/2025 15:28:44 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE MAIN +OBJECT MODULE PLACED IN .\output\Main.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_app\Main.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load.O + -RC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_ + -classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Main.lst) OBJECT(.\output\Main.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 #include "stdio.h" + 11 + 12 // 发送字符串 + 13 char putchar(char c) + 14 { + 15 1 REN = 0; // 开启发送 + 16 1 IO_485_DE = 1; // 开启485发送 + 17 1 SBUF = c; // 发 + 18 1 while(!TI); + 19 1 IO_485_DE = 0; // 关闭485发送 + 20 1 TI = 0; + 21 1 return c; + 22 1 } + 23 + 24 /************************************************************************************************* + 25 * 函数名: main + 26 * 参 数: 无 + 27 * 返回值: 无 + 28 * 描 述: 主函数,当初始化结束后,程序会在While(1)中死循环 + 29 1.可通过定时器来触发各个功能模块的执行 + 30 2.可通过其他中断源来触发对应模块的执行 + 31 *************************************************************************************************/ + 32 void main(void) + 33 { + 34 1 Initial(); //初始化系统 + 35 1 + 36 1 printf("SystemClock: 8MHz"); + 37 1 + 38 1 while(1) + 39 1 { + 40 2 //KeyProcess(); //按键处理 + 41 2 + 42 2 if(bTimer50msFlg) //50mS处理和AFE相关的数据采集、计算、保护等 + 43 2 { + 44 3 McuWDTClear(); //定时清狗 + 45 3 + 46 3 bTimer50msFlg = 0; + 47 3 AFEInfoProcess(); //获取AFE信息,计算电压、温度、电流 + 48 3 + 49 3 BalanceProcess(); //平衡及断线处理 + 50 3 + 51 3 ProtectProcess(); //电压、电流、温度保护 + 52 3 + 53 3 PorSelfTest(); //第一次上电保护检测(延时较短,暂定50mS一次检测) + C51 COMPILER V9.01 MAIN 02/06/2025 15:28:44 PAGE 2 + + 54 3 + 55 3 LoadCheck(); //检测负载是否释放 + 56 3 + 57 3 ChgerCheck(); //检测充电器是否释放 + 58 3 + 59 3 MosCtrl(); //MOS状态检测及控制 + 60 3 + 61 3 ProtectOCRecover(); //过流保护自恢复 + 62 3 + 63 3 //LedDisplay(); //LED显示 + 64 3 + 65 3 #if (UART0_DEFINE != 0) + 66 3 Uart0Check(); //检查UART0是否正常,如果不正常,则复位指针向量 + 67 3 #endif + 68 3 + 69 3 #if (UART1_DEFINE != 0) + Uart1Check(); //检查UART1是否正常,如果不正常,则复位指针向量 + #endif + 72 3 + 73 3 #if (UART2_DEFINE != 0) + Uart2Check(); //检查UART2是否正常,如果不正常,则复位指针向量 + #endif + 76 3 } + 77 2 + 78 2 if(bTimer1sFlg) //1s定时周期 + 79 2 { + 80 3 IO_LED = ~IO_LED; //LED + 81 3 + 82 3 printf("\r\n"); + 83 3 printf("BAT0:%.2f mV\r\n", AFE.uiCell[0]*1.0*CALIVOL/E2uiVPackGain); + 84 3 printf("BAT1:%.2f mV\r\n", AFE.uiCell[1]*1.0*CALIVOL/E2uiVPackGain); + 85 3 printf("BAT2:%.2f mV\r\n", AFE.uiCell[2]*1.0*CALIVOL/E2uiVPackGain); + 86 3 printf("BAT3:%.2f mV\r\n", AFE.uiCell[3]*1.0*CALIVOL/E2uiVPackGain); + 87 3 printf("BAT4:%.2f mV\r\n", AFE.uiCell[4]*1.0*CALIVOL/E2uiVPackGain); + 88 3 printf("TOTAL:%.2f mV\r\n",(AFE.uiCell[1]+AFE.uiCell[2]+AFE.uiCell[3]+AFE.uiCell[4])*1.0*CALIVOL/E2uiVP + -ackGain); + 89 3 printf("\r\n"); + 90 3 printf("TEMP0:%.2f C\r\n", AFE.uiICTempe[0]*17.0/100.0-270); + 91 3 // printf("TEMP1:%.2f C\r\n", (CalcuTemp(AFE.uiTS[0]) + E2siTS0Offset)*1.0); + 92 3 printf("TEMP1.0:%.2f C\r\n", AFE.uiTS[0]*1.0); + 93 3 printf("TEMP1.1:%.2f C\r\n", AFE.uiTS[1]*1.0); + 94 3 + 95 3 bTimer1sFlg = 0; + 96 3 GasGaugeManage(); //Calculate the battery charge and discharge capacity + 97 3 + 98 3 AFERamCheck(); //检测AFE寄存器是否误写 + 99 3 + 100 3 AFETwiCheck(); //检测AFE有无连续5S通讯错误 + 101 3 E2PRomTwiCheck(); //检测EEPROM有无连续5S通讯错误 + 102 3 RTCTwiCheck(); //检测RTC有无连续5S通讯错误 + 103 3 + 104 3 if(!RamCheckProcess()) //检测参数变量区是否误写 + 105 3 { + 106 4 SysParaInit(); + 107 4 } + 108 3 + 109 3 McuFlashWrWaitCheck(); //检测是否需要更新参数到MCU Flash + 110 3 + 111 3 E2PRomBKCheck(); //备份EEPROM + 112 3 + 113 3 //LowPowerCheck(); //低功耗检测 + 114 3 + C51 COMPILER V9.01 MAIN 02/06/2025 15:28:44 PAGE 3 + + 115 3 + 116 3 } + 117 2 + 118 2 SystemResetProcess(); //系统复位 + 119 2 + 120 2 ISPProcess(); //在线升级代码 + 121 2 + 122 2 CaliProcess(); //校准 + 123 2 + 124 2 McuFlashProcess(); //备份参数到MCU Flash区 + 125 2 + 126 2 E2PRomBKProcess(); //外挂EEPROM备份 + 127 2 + 128 2 //LowPowerProcess(); //低功耗处理 + 129 2 + 130 2 Info.uiPackStatus = uiPackStatus; //更新PACK和Battery的信息,可通过UART反馈给主机 + 131 2 Info.uiBatStatus = uiBatStatus; + 132 2 + 133 2 } + 134 1 } + 135 + 136 + 137 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 764 ---- + CONSTANT SIZE = 161 ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Main.obj b/output/Main.obj new file mode 100644 index 0000000..99838b0 Binary files /dev/null and b/output/Main.obj differ diff --git a/output/McuFlash.lst b/output/McuFlash.lst new file mode 100644 index 0000000..51d8254 --- /dev/null +++ b/output/McuFlash.lst @@ -0,0 +1,407 @@ +C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE MCUFLASH +OBJECT MODULE PLACED IN .\output\McuFlash.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\McuFlash.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Lo + -ad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\c + -ode_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\McuFlash.lst) OBJECT(.\output\M + -cuFlash.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 BOOL bMcuFlashWrWaitFlg; + 13 BOOL bMcuFlashWrFlg; + 14 BOOL bMcuFlashErr; + 15 U8 xdata ucMcuFlashWrValid; + 16 U8 xdata bMcuFlashWrWaitCnt; + 17 + 18 /************************************************************************************************* + 19 * 函数名: McuFlashWrOneByte + 20 * 参 数: McuFlashAddr:起始地址;WrData:写入的注释 + 21 * 返回值: 无 + 22 * 描 述: 写1个字节 + 23 *************************************************************************************************/ + 24 void McuFlashWrOneByte(U16 McuFlashAddr, U8 WrData) + 25 { + 26 1 IrqDis(); + 27 1 McuFlashEn(); + 28 1 + 29 1 XPAGE = McuFlashAddr>>8; + 30 1 IB_OFFSET = McuFlashAddr % 256; + 31 1 IB_DATA = WrData; + 32 1 + 33 1 IB_CON1 = 0x6E; + 34 1 IB_CON2 = 0x05; + 35 1 IB_CON3 = 0x0A; + 36 1 IB_CON4 = 0x09; + 37 1 if(XPAGE == (McuFlashAddr>>8)) + 38 1 { + 39 2 IB_CON5 = 0x06; + 40 2 _nop_(); + 41 2 _nop_(); + 42 2 _nop_(); + 43 2 _nop_(); + 44 2 _nop_(); + 45 2 } + 46 1 + 47 1 McuFlashDis(); + 48 1 IrqEn(); + 49 1 } + 50 + 51 + 52 /************************************************************************************************* + C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 2 + + 53 * 函数名: McuFlashBlankCheck + 54 * 参 数: McuFlashAddr:起始地址 + 55 * 返回值: 0:非全0,Erase失败;1:全0,Erase成功 + 56 * 描 述: 当Erase完1个Sector,需检查是否全为0 + 57 *************************************************************************************************/ + 58 BOOL McuFlashBlankCheck(U16 McuFlashAddr) + 59 { + 60 1 BOOL Result = 1; + 61 1 U16 i; + 62 1 + 63 1 for(i=0; i>8; + 117 2 IB_DATA = *(ptr+i); + 118 2 IB_CON1 = 0x6E; + 119 2 if(!EA) + 120 2 { + 121 3 IB_CON2 = 0x05; + 122 3 if(FLASHCON) + 123 3 { + 124 4 IB_CON3 = 0x0A; + 125 4 if(ucMcuFlashWrValid == 0x55) + 126 4 { + 127 5 IB_CON4 = 0x09; + 128 5 if(XPAGE == ((McuFlashAddr+i)>>8)) + 129 5 { + 130 6 IB_CON5 = 0x06; + 131 6 _nop_(); + 132 6 _nop_(); + 133 6 _nop_(); + 134 6 _nop_(); + 135 6 _nop_(); + 136 6 Result = 1; + 137 6 } + 138 5 else + 139 5 { + 140 6 Result = 0; + 141 6 break; + 142 6 } + 143 5 } + 144 4 else + 145 4 { + 146 5 Result = 0; + 147 5 break; + 148 5 } + 149 4 } + 150 3 else + 151 3 { + 152 4 Result = 0; + 153 4 break; + 154 4 } + 155 3 } + 156 2 else + 157 2 { + 158 3 Result = 0; + 159 3 break; + 160 3 } + 161 2 } + 162 1 + 163 1 return Result; + 164 1 } + 165 + 166 + 167 /************************************************************************************************* + 168 * 函数名: McuFlashWrite + 169 * 参 数: McuFlashAddr:写入的地址,长度固定为1个Sector + 170 * 返回值: 0:写入失败;1:写入成功 + 171 * 描 述: 写MCU Flash的1个Sector: + 172 1.Erase Sector + 173 2.检查当前Sector是否全为0 + 174 3.将XRAM数据写入 + 175 4.校验XRAM和MCU Flash区数据是否一致 + 176 *************************************************************************************************/ + C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 4 + + 177 BOOL McuFlashWrite(U16 McuFlashAddr, U16 XramAddr) + 178 { + 179 1 BOOL Result = 0; + 180 1 + 181 1 McuWDTClear(); //清看门狗 + 182 1 IrqDis(); //关闭中断源 + 183 1 McuFlashEn(); + 184 1 + 185 1 XPAGE = McuFlashAddr >> 8; + 186 1 IB_CON1 = 0xE6; + 187 1 if(!EA) + 188 1 { + 189 2 IB_CON2 = 0x05; + 190 2 if(FLASHCON) + 191 2 { + 192 3 IB_CON3 = 0x0A; + 193 3 if(ucMcuFlashWrValid == 0x55) + 194 3 { + 195 4 IB_CON4 = 0x09; + 196 4 if(XPAGE == (McuFlashAddr >> 8)) + 197 4 { + 198 5 IB_CON5 = 0x06; + 199 5 _nop_(); + 200 5 _nop_(); + 201 5 _nop_(); + 202 5 _nop_(); + 203 5 _nop_(); + 204 5 + 205 5 if(McuFlashBlankCheck(McuFlashAddr)) //查空 + 206 5 { + 207 6 if(McuFlashWrSector(McuFlashAddr, XramAddr)) //写入 + 208 6 { + 209 7 if(McuFlashDataCheck(McuFlashAddr, XramAddr)) //校验 + 210 7 { + 211 8 Result = 1; + 212 8 } + 213 7 } + 214 6 } + 215 5 } + 216 4 } + 217 3 } + 218 2 } + 219 1 + 220 1 IB_CON1 = 0; + 221 1 IB_CON2 = 0; + 222 1 IB_CON3 = 0; + 223 1 IB_CON4 = 0; + 224 1 IB_CON5 = 0; + 225 1 + 226 1 McuFlashDis(); + 227 1 XPAGE = 0x00; + 228 1 IrqEn(); + 229 1 + 230 1 return Result; + 231 1 } + 232 + 233 + 234 + 235 + 236 + 237 + 238 /************************************************************************************************* + C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 5 + + 239 * 函数名: McuFlashProcess + 240 * 参 数: 无 + 241 * 返回值: 无 + 242 * 描 述: 写MCU Flash,同时更新备份1区和2区 + 243 *************************************************************************************************/ + 244 void McuFlashProcess(void) + 245 { + 246 1 BOOL McuFlashBk1WrFailFlg = 0, McuFlashBk2WrFailFlg = 0; + 247 1 U16 VoltageMin; + 248 1 + 249 1 if(bMcuFlashWrFlg) + 250 1 { + 251 2 bMcuFlashWrFlg = 0; + 252 2 + 253 2 ucMcuFlashWrValid = 0x55; //防误写检验标志 + 254 2 if(ucCellNum > 5) //6~10串应用,需要总电压超过10V + 255 2 { + 256 3 VoltageMin = 10000; + 257 3 } + 258 2 else //3~5串应用,需要总电压超过5V + 259 2 { + 260 3 VoltageMin = 5000; + 261 3 } + 262 2 + 263 2 if((Info.ulVoltage>=VoltageMin) && (E2uiCheckFlag==0x5AA5)) + 264 2 { + 265 3 if(!McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR)) //连续写两次,如果都错误则置位错误标志 + 266 3 { + 267 4 if(!McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR)) + 268 4 { + 269 5 McuFlashBk1WrFailFlg = 1; + 270 5 E2uiCheckFlag = 0xFFFF; + 271 5 McuFlashWrOneByte(MCUFLASH_BK1_ADDR+510,0xFF); + 272 5 McuFlashWrOneByte(MCUFLASH_BK1_ADDR+511,0xFF); + 273 5 } + 274 4 } + 275 3 + 276 3 if(!McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR)) + 277 3 { + 278 4 if(!McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR)) + 279 4 { + 280 5 McuFlashBk2WrFailFlg = 1; + 281 5 E2uiCheckFlag = 0xFFFF; + 282 5 McuFlashWrOneByte(MCUFLASH_BK2_ADDR+510,0xFF); + 283 5 McuFlashWrOneByte(MCUFLASH_BK2_ADDR+511,0xFF); + 284 5 } + 285 4 } + 286 3 } + 287 2 else + 288 2 { + 289 3 McuFlashBk1WrFailFlg = 1; + 290 3 McuFlashBk2WrFailFlg = 1; + 291 3 } + 292 2 ucMcuFlashWrValid = 0x00; + 293 2 + 294 2 if(McuFlashBk1WrFailFlg && McuFlashBk2WrFailFlg) //如果Flash两个区都操作错误,则置位Flash错误标志 + 295 2 { + 296 3 bMcuFlashErr = 1; + 297 3 } + 298 2 } + 299 1 } + 300 + C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 6 + + 301 + 302 /************************************************************************************************* + 303 * 函数名: McuFlashRead + 304 * 参 数: SourceAddr:源地址;TargetAddr:目标地址;Length:数据长度 + 305 * 返回值: 0:数据正确;1:数据错误 + 306 * 描 述: 判断MCU Flash参数区的最后一个字节是否为0x5AA5,检查数据区是否被破坏 + 307 *************************************************************************************************/ + 308 BOOL McuFlashRead(U16 SourceAddr, U8 xdata *TargetAddr, U16 Length) + 309 { + 310 1 U16 i; + 311 1 BOOL Result = 1; + 312 1 U8 xdata *data TargetAddr1 = TargetAddr; //*后面的data关键字的作用,是把指针TargetAddr1 + -定义在data区中 + 313 1 + 314 1 IrqDis(); + 315 1 McuFlashEn(); + 316 1 McuWDTClear(); + 317 1 for(i=0; i= MCU_FLASH_WATI_DELAY) + 340 2 { + 341 3 bMcuFlashWrWaitFlg = 0; + 342 3 bMcuFlashWrWaitCnt = 0; + 343 3 bMcuFlashWrFlg = 1; + 344 3 } + 345 2 } + 346 1 } + 347 + 348 + 349 /************************************************************************************************* + 350 * 函数名: McuFlashCheckFlg + 351 * 参 数: McuFlashAddr:MCU Flash区的地址 + 352 * 返回值: 0:数据正确;1:数据错误 + 353 * 描 述: 判断MCU Flash参数区的最后一个字节是否为0x5AA5,检查数据区是否被破坏 + 354 *************************************************************************************************/ + 355 BOOL McuFlashCheckFlg(U16 McuFlashAddr) + 356 { + 357 1 BOOL Result = 0; + 358 1 + 359 1 McuFlashEn(); + 360 1 if(CWORD[McuFlashAddr/2] == 0x5AA5) + 361 1 { + C51 COMPILER V9.01 MCUFLASH 02/06/2025 15:28:45 PAGE 7 + + 362 2 Result = 1; + 363 2 } + 364 1 McuFlashDis(); + 365 1 + 366 1 return Result; + 367 1 } + 368 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 820 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 2 18 + PDATA SIZE = ---- ---- + DATA SIZE = ---- 2 + IDATA SIZE = ---- ---- + BIT SIZE = 3 8 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/McuFlash.obj b/output/McuFlash.obj new file mode 100644 index 0000000..652db2a Binary files /dev/null and b/output/McuFlash.obj differ diff --git a/output/McuFlash_IAP b/output/McuFlash_IAP new file mode 100644 index 0000000..e803f6b Binary files /dev/null and b/output/McuFlash_IAP differ diff --git a/output/McuFlash_IAP.ORC b/output/McuFlash_IAP.ORC new file mode 100644 index 0000000..fd17411 --- /dev/null +++ b/output/McuFlash_IAP.ORC @@ -0,0 +1,112 @@ +F7FF AFEADCDIS +F7FF AFEADCEN +F7FF AFECADCDIS +F7FF AFECADCEN +F7FF AFECHGERCHECKDIS +F7FF AFECHGERCHECKEN +F7FF AFECLRFLG +F7FF AFEENTERPD +F7FF AFEGETTEMPE +F7FF AFEGETVOL +F7FF AFEINIT +F7FF AFELOADCHECKDIS +F7FF AFELOADCHECKEN +F7FF AFERAMCHECK +F7FF AFERDFLG +F7FF AFERDSTATUS +F7FF AFETEMPADCDIS +F7FF AFETEMPADCEN +F300 AFETWICHECK +F7FF AFEWDTDIS +F7FF AFEWDTEN +F7FF BALPROCESS +E301 CALICURZERO +F7FF CALIRTCTIME +F7FF CHGERCHECK +F383 CLRRAM +F300 CTOCHECKVOL +F300 CTOTURNONCHECK +F7FF E2PROMBKBOOT +F7FF E2PROMINIT +F300 E2PROMTWICHECK +F7BF IAPCHECKHANDSHAKE +8000 INITGPIO +E000 INITIRQ +F797 INITVAR +F003 INTERRUPTINT4 +F300 INTERRUPTTIMER3 +F300 INTERRUPTTIMER3APP +F38F INTERRUPTUARTAPPTX +F000 KEYSCAN +F300 LEDAUTOOFF +F303 LEDDISPLAY +F7FF LOADCHECK +F301 LOWPOWERCHECK +F7FF LOWPOWERPROCESS +F7BF MCUFLASHPROCESS +F300 MCUFLASHWRWAITCHECK +C000 MCUINTOIDLE +C000 MCUINTOPD +F7FF MOSCTRL +C000 MOSSTATUSCHECK +F78F PORPROTECTOTC +F78F PORPROTECTOTD +F782 PORPROTECTOV +F78F PORPROTECTUTC +F78F PORPROTECTUTD +F782 PORPROTECTUV +F7FF PROTECTOCRECOVER +F7AF PROTECTOTC +F7AF PROTECTOTD +F78B PROTECTOV +F7AF PROTECTUTC +F7AF PROTECTUTD +F78B PROTECTUV +F300 RAMCHECKPROCESS +F375 READSUBCLASSID +F300 RTCTWICHECK +FFBF SYSPARAINIT +F7FF SYSTEMINTOPD +F7FF SYSTEMINTOSLEEP +F375 UARTCALICUROFFSET +F377 UARTCALIRTC +F377 UARTCALITS1 +F377 UARTCALITS2 +F377 UARTCALIVOLTAGE +F300 UARTCHECK +E300 UARTHANDSHAKE +F3FF UARTRDCMDPROCESS +F7FF UARTRDE2PROM +F7FF WAKEUPPROCESS +F375 WRITEMANUFACTURE +F7FF _AFEALARMDIS +F7FF _AFEALARMEN +F7FF _AFEBALCTL +F7FF _AFEMOSCTL +F7FF _AFEREADREG +F7FF _AFEWRITEREG +F365 _CRC8CAL +F03E _DELAY1MS +F7FF _E2PROMREAD +F7FF _E2PROMWRITE +F003 _INTERRUPTINT4APP +F001 _LEDGETDISNUM +F003 _MCUCLOCKSET +F31C _MCUFLASHBLANKCHECK +F303 _MCUFLASHCHECKFLG +F7AF _MCUFLASHDATACHECK +F307 _MCUFLASHREAD +F7BF _MCUFLASHWRITE +F035 _MCUFLASHWRONEBYTE +F33F _MCUFLASHWRSECTOR +F78D _MEMORYCOPY +F781 _MEMORYSET +F7FF _RTCMODIFYTIME +F7FF _RTCREAD +F7FF _RTCWRITE +F00C _TWICHECKSTATUS +F48F _TWIINIT +F7FF _TWIREAD +F7FF _TWIWRITE +F37F _UARTREADINFO +F7FF _UARTWRITEINFO diff --git a/output/McuFlash_IAP.build_log.htm b/output/McuFlash_IAP.build_log.htm new file mode 100644 index 0000000..03ed719 --- /dev/null +++ b/output/McuFlash_IAP.build_log.htm @@ -0,0 +1,65 @@ + + +
+

礦ision Build Log

+

Tool Versions:

+IDE-Version: μVision V5.22.0.0 +Copyright (C) 2016 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: andy Microsoft, Microsoft, LIC=AT28G-VMFRM-7EZHC-7ARCJ-EDBAB-G6KE1 + +Tool Versions: +Toolchain: PK51 Prof. Developers Kit Version: 9.00 +Toolchain Path: C:\Keil_v5\C51\BIN +C Compiler: C51.exe V9.00 +Assembler: A51.exe V8.01 +Linker/Locator: BL51.exe V6.22 +Library Manager: LIB51.exe V4.24 +Hex Converter: OH51.exe V2.6 +CPU DLL: S8051.DLL V3.72 +Dialog DLL: DP51.DLL V2.59 +Target DLL: SH51A.dll V1.0.0.0 +Dialog DLL: TP51.DLL V2.58 + +

Project:

+E:\BP-Project\0-SVN\bp-protect\bp-protect-sw-development\SH39F004\Demo Code\SH39F003&F004_DemoCode_V2.11\MCUCore.uvproj +Project File Date: 12/14/2021 + +

Output:

+Build target 'McuFlalsh_IAP' +compiling Main.c... +compiling Initial.c... +compiling InterruptApp.c... +compiling Led.c... +compiling KeyApp.c... +compiling LowPower.c... +compiling UartApp.c... +compiling Memory.c... +compiling AFE.c... +compiling Balance.c... +compiling Calculate.c... +compiling Calibrate.c... +compiling ChargerLoad.c... +compiling ExtE2PRom.c... +compiling Interrupt.c... +compiling KeyScan.c... +compiling McuFlash.c... +compiling McuLib.c... +compiling MosCtrl.c... +compiling PorSelfTest.c... +compiling Protect.c... +compiling RTC.c... +compiling TWI.c... +compiling Uart.c... +compiling Thermistor.c... +assembling STARTUP.A51... +compiling GasGauge.c... +compiling BootApp.c... +compiling DataFlash.c... +linking... +Program Size: data=143.6 xdata=1080 code=23457 +creating hex file from ".\output\McuFlash_IAP"... +".\output\McuFlash_IAP" - 0 Error(s), 0 Warning(s). +Build Time Elapsed: 00:00:09 +
+ + diff --git a/output/McuFlash_IAP.hex b/output/McuFlash_IAP.hex new file mode 100644 index 0000000..d631f03 --- /dev/null +++ b/output/McuFlash_IAP.hex @@ -0,0 +1,1637 @@ +:104EEB001256A253B1F8126319306720C2671266CB +:104EFB00061267941264EC1260C91259CA125E4B07 +:104F0B00126349124F631244281265F2306622C2B3 +:104F1B0066121FE912537812657F126529126546D6 +:104F2B001251F540031246C91265DD123B50124A6D +:104F3B00DE12646012672512583F123C2312564C46 +:104F4B00126053900206E524F0A3E525F0A3E522B9 +:084F5B00F0A3E523F0808C2295 +:105F16009003867401F07E027F3C7B40E4FD1263B1 +:105F2600767E027F0A7B14E4126376900224740A5A +:105F3600F0A374ABF0A3740AF0A374ABF0C22CC246 +:105F46002D9003A07402F0D22ED27590027C74506C +:025F5600F02237 +:1046C9007FFE7E011263A0501F7B007A02E4FDFC8D +:1046D900FFFE1253197FFE7E031263A0402CE4FDF6 +:1046E900FF7E0212489D80227FFE7E031263A05046 +:1046F900167B007A02E4FDFCFF7E02125319E4FDE9 +:10470900FFFE12489D8003D26822900000E0F52048 +:10471900A3E0F521900238E520F0A3E521F090000F +:10472900B61215FD90022C1216159000CAE0FFA3CF +:10473900E0900236CFF0A3EFF0E52154072403F50A +:104749001364056005E513B40A04E4F51422E513BE +:1047590064046005E513B409047514012275140293 +:01476900222D +:10650B00C2AFD2ACC086758640C28FD086D2AD43A7 +:0E651B00BA6043E840E4F5D843A908D2AF22A5 +:10102E007580F875E18F75E9C875908075E27F75EA +:10103E00EA8075A0E075E33F75EBC075B01975E4F5 +:05104E00E675EC19221B +:1056A200E4FF12579D12102E1262B31246C9125F06 +:1056B200167D057C007F441236F17F807E251249DB +:1056C200347F641261047D647FA07E0F124D7412D8 +:1056D2004BEC12675C4002D24C1260173007121278 +:1056E2004DF54002D23A7E037F781249C54002D27C +:0556F2007212650B229D +:10648500EFB4200E205503305819E4FF12579DD262 +:106495005722EFB4400D205503305807E4FF12573B +:0464A5009DD257220B +:1064A900D265900399E004F0C3940A4004E4F0D261 +:1064B90067900398E004F0C394C84004E4F0D266FE +:0464C900124627222E +:105F9900D3EF9450EE940040037F0522D3EF943C55 +:105FA900EE940040037F0422D3EF9428EE9400403E +:105FB900037F0322D3EF9414EE940040037F02225F +:0F5FC900D3EF9400EE940040037F01227F00226B +:10662E00306B0F90038EE004F0C394644004E4F0EA +:03663E00C26B220A +:10442800302A1490038CE004F0C3940A400BE4F0A3 +:10443800A2B5B392B58002C2B5306C1490038DE07A +:1044480004F0C39405400BE4F0A2A0B392A080024C +:10445800C2A0306B67900234E0FEA3E0FF125F99C0 +:10446800EF700D206C02C2A0C2A1C2A2C2A3C2A456 +:10447800EFB40107206C52D2A0804EEFB40209209D +:104488006C02D2A0D2A18041EFB4030B206C02D2FF +:10449800A0D2A1D2A28032EFB4040D206C02D2A027 +:1044A800D2A1D2A2D2A38021EF6405701C206C0295 +:1044B800D2A0D2A1D2A2D2A3D2A4800D206C02C2D3 +:0C44C800A0C2A1C2A2C2A3C2A412662E10 +:0144D40022C5 +:1053D500C22CC22DC22E9003A0E0701804F0D22D6D +:1053E50090008AE0FEA3E0FF90008DE0FD124D7471 +:1053F50043B701229003A0E0B401167402F0D22E47 +:1054050090008AE0FEA3E0FF7D64124D7443B7016E +:1054150022E49003A0F0D22C90008AE0FEA3E0FFE6 +:0C54250090008CE0FD124D7443B7012292 +:1063190030742CC274E50824FE600F24F160161451 +:106329006010241170191253D522D26BE490038E98 +:10633900F022D25522B26C306C03C28322D283225E +:10613D00305734C257305824E4FF12579DD2AFC2A6 +:10614D0058E490038FF07F01125C1AD2ACD2ADD21D +:10615D00CE7F701265B11266FF12668DE490038FCB +:08616D00F0A3F0900380F02282 +:1064CD0053B1F8C2AF206C02C2A0C2A1C2A2C2A336 +:0F64DD00C2A4D283E4FF1265C81263EE80E222EC +:105ED300206C02C2A0C2A1C2A2C2A3C2A4D283C226 +:105EE3006C1266A01267127F7012674AC2CE53B754 +:105EF3007E302904D2A58002C2A57F01125C1AC29A +:105F0300AFC2ACC2ADE4F5D87F8012579DD2AF12B9 +:035F13006788227A +:104ADE00305608305B05C256D2552230161490005F +:104AEE002AE0FF900390E004F0C39F406AEFF0D2FB +:104AFE005522206B5B202A50202B4D30191490002C +:104B0E002AE0FF900390E004F0C39F404AEFF0D2FA +:104B1E005522E4900390F0A21272107218721A725B +:104B2E001172137219721B721C7215726C401390F3 +:104B3E00002AE0FF90038FE004F09F401AEFF0D2BE +:104B4E005822E490038FF022E490038FF0A3F0221A +:084B5E00E490038FF0A3F022A4 +:10605300205826205523C2AFA273727472697257F7 +:10606300725C72677266400D900391E06412600582 +:10607300D2AF12677CD2AF800E3055051264CD804B +:0B60830006305803125ED312613D226C +:105B8A0000000030006200750000008A008F009A51 +:105B9A0000A300AB00CD00D100FE00000000000011 +:105BAA00000000000020005000820095000000AABA +:105BBA0000AF00BA00C300CB00ED00F1011E0000E7 +:085BCA000000000000000000D3 +:10673800900A02E07006C29C75995A22C29C75990B +:02674800FF222E +:084B66009002B7EEF0A3EFF09E +:104B6E007B017A0A7900900A02E02403FD12656344 +:104B7E00900A02E02403F582E4340AF583E06F70B4 +:104B8E0057FF900A02E0FEEFC39E502953B1F8740E +:104B9E00032FF582E4340AF583E0FE9002B7E0FCC1 +:104BAE00A3E0F5828C83EEF09002B7E475F001126B +:104BBE0014330F80CDE4900068F0A3F0A3F0A3F0BF +:104BCE00A3F0A3F090007BF0A3F0A3F0D26A9003C1 +:0D4BDE009EF0C29C75995A22C29C7599FFE9 +:014BEB0022A7 +:104E7200900A02E0D3948C4002E4F0E4900068F0DF +:104E8200A3F0A3F0A3F0A3F0A3F090007BF0A3F0B3 +:104E9200A3F0FD900A02E0FCEDC39C501D53B1F853 +:104EA2008F828E83E0FB74032DF582E4340AF5834E +:104EB200EBF00FBF00010E0D80D97B017A0A790059 +:104EC200EC2403FD126563900A02E02403F582E4F8 +:104ED200340AF583EFF0C29C900383E02400F5824C +:084EE200E4340AF583E0F599C0 +:014EEA0022A5 +:105D38007B017A0A7900900A02E02403FD12656368 +:105D4800900A02E02403F582E4340AF583E0B507FB +:105D58001E900A04E0FFB441089003917412F08089 +:105D680006EFB40502D256C25BC29C75995A22C28C +:055D78009C7599FF225B +:106175007B017A0A7900900A02E02403FD12656327 +:10618500900A02E02403F582E4340AF583E0B507BA +:1061950010900A03E0900381F0C25BC29C75995A86 +:0761A50022C29C7599FF2244 +:1031DC00900A01E0FF12165E3230013230023230BA +:1031EC0003323004323005323006323007323008C8 +:1031FC0032300932300A32410B32510C32590D3215 +:10320C00610E32690F3249103271113279123281EA +:10321C001332891432911532991632A11732A9182A +:10322C00000032B1EF25E02408F582E43402AF82CD +:10323C00FE124E72227E027F1E124E72227E027F80 +:10324C0020124E72227E027F24124E72227E027F48 +:10325C0026124E72227E027F28124E72227E027F2E +:10326C002A124E72227E027F2C124E72227E027F16 +:10327C0030124E72227E027F34124E72227E027FF8 +:10328C0036124E72227E027F06124E72227E027F10 +:10329C0008124E72227E027F38124E72227E027FFC +:1032AC003A124E7222900A02E0C394804005D23B3F +:1032BC00D23D22900A01E0B4780C900381E0B40C6A +:1032CC0005D23BD23822900A01E0B47822900381D7 +:1032DC00E025E0248AF582E4345BF583E493FE7404 +:1032EC000193FF9002B5EEF0A3EFF0124E72229014 +:1032FC000A01E0B47921900381E025E024AEF58247 +:10330C00E4345BF583E493FE740193FF9002B5EE15 +:07331C00F0A3EFF0124E7266 +:013323002287 +:10574B007B017A0A7900900A02E02403FD1265635B +:10575B00900A02E02403F582E4340AF583E06F70CB +:10576B002B900A03E0FEA3E0FDEEEDFF900350EE5D +:10577B00F0A3EFF04E7006C29C7599FF22D2739086 +:10578B00034BE04401F0C29C75995A22C29C759957 +:02579B00FF22EB +:103CE4007B017A0A7900900A02E02403FD126563DD +:103CF400900A02E02403F582E4340AF583E06F605D +:103D040003023D9B900A04E0FFE4FCFDFE781012E0 +:103D140015EAC004C005C006C007900A03E0FFE42A +:103D2400FCFDFE78181215EAD003D002D001D000B1 +:103D3400121581C004C005C006C007900A05E0FF43 +:103D4400E4FCFDFE78081215EAD003D002D001D0BD +:103D540000121581A804A905AA06AB07A3E0FFE495 +:103D6400FCFDFE1215819003471216159002A1E086 +:103D74007002A3E0600C9003471215FDEC4D4E4F0A +:103D84007006C29C7599FF22D27390034BE04410D5 +:0D3D9400F0C29C75995A22C29C7599FF22BD +:1061AC007B017A0A7900900A02E02403FD126563F0 +:1061BC00900A02E02403F582E4340AF583E0B50783 +:1061CC000FD27390034BE04420F0C29C75995A2275 +:0661DC00C29C7599FF2230 +:105AF8007B017A0A7900900A02E02403FD126563AB +:105B0800900A02E02403F582E4340AF583E06F701A +:105B180022D273900A03E0FEA3E0FDEEEDFF9003AE +:105B28004CEEF0A3EFF090034BE04404F0C29C75F8 +:095B3800995A22C29C7599FF22C2 +:105B41007B017A0A7900900A02E02403FD12656361 +:105B5100900A02E02403F582E4340AF583E06F70D1 +:105B610022D273900A03E0FEA3E0FDEEEDFF900365 +:105B71004EEEF0A3EFF090034BE04408F0C29C75A9 +:095B8100995A22C29C7599FF2279 +:1056F7007B017A0A7900900A02E02403FD126563B0 +:10570700900A02E02403F582E4340AF583E06F701F +:105717002DFF74032FF582E4340AF583E0FE7452FB +:105727002FF582E43403F583EEF00FEFB407E3D2ED +:105737007390034BE04480F0C29C75995A22C29C37 +:035747007599FF52 +:01574A00223C +:10458000900A01E012165E45AC1845B07745CC782C +:1045900045EE7945B8A045C0A145C4A245B4A345A0 +:1045A000BCA445C8AF4610B000004626125D3822B4 +:1045B00012617522123CE42212574B221261AC2286 +:1045C000125AF822125B41221256F722900381E020 +:1045D00025E0248AF582E4345BF583E493FE7401DC +:1045E00093FF9002B5EEF0A3EFF0124B662290031A +:1045F00081E025E024AEF582E4345BF583E493FEAC +:10460000740193FF9002B5EEF0A3EFF0124B662217 +:10461000900A03E0B4550AD23BD239C29C75995A2C +:0646200022C29C7599FF07 +:014626002271 +:10307500E49002B5F0A3F0900383E0FFB4021A9048 +:103085000A01E064A56006E4900383F022E490035E +:1030950084F0A3F0900382F022900A02E0FD7C0008 +:1030A5002409FBEC33FA7E00C3EF9BEA6480F874D5 +:1030B5008098505FED2407FDEC33FCD3EF9DEC6465 +:1030C50080F87480985018900383E024FFF582E41B +:1030D5003409F583E0FF900384EE8FF012143390EA +:1030E5000383E0FFB40511900A04E064077003024E +:1030F50031DBE4900383F022EF640660030231DBE9 +:10310500900A05E0640670030231DB900382E04417 +:1031150020F022E4900383F0900A02E0FD2408F5F4 +:1031250082E4340AF583E0FE74072DF582E4340A5F +:10313500F583E07C002400FFEC3EFE900384E06E06 +:103145007003A3E06F6007900382E04480F0900372 +:1031550082E0FF6006900A06F08007D25CE4900AE0 +:1031650006F0E4900A02F0900A05740BF0900A0349 +:10317500E0FFA3E0900A03F0A3EFF07F02900A02BC +:10318500E0FE2407FDE433FCEFC39DEC6480F87496 +:103195008098501874002FF582E4340AF583E0FD19 +:1031A5009002B5E48DF01214330F80D19002B5E092 +:1031B500FCA3E0FF74072EF582E4340AF583EFF0F3 +:1031C500ECFF900A02E02408F582E4340AF583EF67 +:0631D500F0C29C75995A3E +:0131DB0022D1 +:10480600900383E02400F582E4340AF583EFF09008 +:104816000383E004F0E0C3948C4002E4F090038349 +:10482600E064017027900A00E0FF54FEB59A10EF8D +:1048360020E006D259C25A8013D25AC259800D902E +:104846000A00E0645A6005E4900383F030590D9045 +:104856000383E0640370301231DC802B305A2590DC +:104866000A02E02403FFE433FE900383E0D39FEEC5 +:104876006480F8748098400F124580C25AE4900311 +:1048860083F08003123075C25BE490038FF09003CF +:0748960090F0900380F02276 +:1044D500900A00E0B45A06A3E064A56003305C448A +:1044E500900A02E02408FFE433FE900383E0C39FB3 +:1044F500EE6480F87480984014D29CE4F0C2599020 +:104505000A00F0A3F0A3F0A3F0D25B8060900383D0 +:10451500E004F0C29CE02400F582E4340AF583E06F +:10452500F5998049900383E0FF6016900A02E02424 +:1045350003FDE433FCC3EF9DEC6480F87480984080 +:1045450017D29CE4900383F0C259900A00F0A3F0BF +:10455500A3F0A3F0D25B8015900383E004F0C29C26 +:10456500E02400F582E4340AF583E0F599E490034C +:0B4575008FF0900390F0900380F02284 +:1065F200900380E004F0C394044008E4F090038325 +:04660200F0D29C2214 +:10657F00304E119002B1E004F0C39405400BD24CA1 +:0A658F007405F022E49002B1F0223E +:0E4376009002BDEFF0A3EDF0A3EAF0A3EBF090 +:10438400C246E4A3F0304C03024420A3F09002BEE2 +:10439400E0FF9002C2E0C39F40030244209002C1A8 +:1043A400E0FF04F0EFC3940550429002BDE0FD7CB1 +:1043B400009002F97401F0A3F09002BFE0FFA3E0C3 +:1043C4009002FBCFF0A3EFF0E4FB7F36123324928C +:1043D40046304604801680C5E4F5C87F01125C1A95 +:1043E4007F641261047F01125C1A80B19002C1E003 +:1043F400C39405400480258015E49002C1F0900226 +:10440400BDE004F09002BFE475F0011214337F01A3 +:10441400125C1A9002C2E004F0024391A246B392E5 +:034424004EA2465F +:014427002272 +:0E4FD9009002C3EFF0A3EDF0A3EAF0A3EBF01B +:104FE700C246E4A3F0204C519002C7E0FF04F0EF63 +:104FF700C3940550449002C3E0FD7C00A3E09002F7 +:10500700EFF0A37401F09002C5E0FFA3E09002F176 +:10501700CFF0A3EFF0E4FB7F361229B0924630467B +:1050270004801680C3E4F5C87F01125C1A7F6412FE +:1050370061047F01125C1A80AFA246B3924EA2466A +:015047002246 +:106017007A027BA37D02E4FF124FD9502E9002A390 +:10602700E07004A3E060249002A7E04480F07A02C5 +:106037007BA77D017F041243769002A7E0547FF08F +:0C6047007A027BA77D017F0412437622C1 +:104BEC00E49002A6F0A37450F0E4A3F0A374F8F0E0 +:104BFC00E4A3F0A3F0A37470F0A37401F0A3740306 +:104C0C00F0A374FFF0E4A3F03000199002A7E04485 +:104C1C0008F09002ACE0FF9000CDE0540FFEEF4E98 +:104C2C009002ACF030013E9002A7E04404F09002F8 +:104C3C00ADE0FF9000CDE054F0FEEF4E9002ADF0F1 +:104C4C009000CEE0FEA3E0FF7C007D32121684E4DF +:104C5C007B257A01F9F81214EFAD07AC06EC900243 +:054C6C00AEF0A3EFF023 +:014C71002220 +:0F675C007A027BA67D0B7F031243769245A245FE +:01676B00220B +:106280007A027BA37D02E4FF124FD950259002A42D +:10629000E0FF30E102D24BEF30E002D24D9002A39A +:1062A000E030E304D215D2609002A4E030E20312A1 +:0362B000675C2206 +:106599007A027BB97D027F02124FD9500A9002B963 +:0765A900E09002A5F0F526C9 +:0165B00022C8 +:105378009002BB7403F09002BBE0FFD3940B504C37 +:105388007A027BB97D02124FD99002BBE0FF7E0002 +:105398007B0124A3F9EE3402FA1213B3FD9002B98B +:1053A800E0B5051374A42FF9EE3402FA1213B3FF13 +:1053B8009002BAE06F600C9002BBE06407600412D0 +:0C53C800675C229002BBE02402F080AA87 +:0153D40022B6 +:1063EE009002B07433F07A027BB07D017F0D1243C0 +:1063FE007650129002A7E04420F07A027BA77D012E +:06640E007F041243762218 +:1065C8009002A8E054FCF04FF07A027BA87D017F8E +:0565D8000512437622CC +:106641009002A7E04401F07A027BA77D017F04124A +:036651004376226B +:106654009002A7E054FEF07A027BA77D017F04122A +:0366640043762258 +:106667009002A7E04402F07A027BA77D017F041223 +:0366770043762245 +:10667A009002A7E054FDF07A027BA77D017F041205 +:03668A0043762232 +:105FD8009002BBEEF0A3EFF09002BBE0FEA3E078E6 +:105FE80005CEC313CE13D8F99002AAF07A027BAA81 +:105FF8007D017F0712437650159002BBE0A3E09025 +:0F60080002ABF07A027BAB7D017F081243762258 +:10668D009002A7E04410F07A027BA77D017F0412EF +:03669D004376221F +:1066A0009002A7E054EFF07A027BA77D017F0412ED +:0366B0004376220C +:1066B3009002A9E044F8F07A027BA97D017F0612DB +:0366C300437622F9 +:1066C6009002A9E05407F07A027BA97D017F0612A9 +:0366D600437622E6 +:1066D9009002A9E044E0F07A027BA97D017F0612CD +:0366E900437622D3 +:1066EC009002A9E0541FF07A027BA97D017F06126B +:0366FC00437622C0 +:1066FF009002A9E04408F07A027BA97D017F06127F +:03670F00437622AC +:106712009002A9E054F7F07A027BA97D017F06126C +:0367220043762299 +:10674A009002A6E04FF07A027BA67D017F031243F6 +:02675A007622A5 +:1065B1009002A6E0FEEFF4FFEE5FF07A027BA67D8B +:0765C100017F031243762263 +:10346B003050030235AE3051030235AE2003030258 +:10347B0035AEE490038AF0A3F0C3900063E095129D +:10348B00900062E09511500330181ED3900065E058 +:10349B009512900064E09511400320180C20100940 +:1034AB00201206201103301308C252E4900389F056 +:1034BB0022C39000A4E095129000A3E09511400365 +:1034CB000235A7C3E5129510FFE511950FFED390BA +:1034DB0000A6E09F9000A5E09E40030235A7900058 +:1034EB00A7E0FEA3E0FFEE3395E0FDFC9002201277 +:1034FB001609C312159C50030235A72052069003E0 +:10350B0089E004F09000A9E075F00AA4FF9003890C +:10351B00E0C39FE5F06480F874809850030235AEE9 +:10352B00AD14E5142513FFE433FEEDC39FEE648069 +:10353B00F87480985063ED25E0240AF582E4340298 +:10354B00F583E0FEA3E0C39510FFEE950FFED3903D +:10355B0000A6E09F9000A5E09E503BED25E0240ADD +:10356B00F582E43402F583E0FEA3E0FF9000A3E0D4 +:10357B00FAA3E0FBC3EF9BEE9A401B74017E00A8FD +:10358B0005088005C333CE33CED8F9FF90038AE00C +:10359B004EF0A3E04FF00D8089D25222C252E4903C +:0335AB000389F0A1 +:0135AE0022FA +:1061E200C24530052D20162A305427C39002B4E050 +:1061F20094B49002B3E094005011D245900388E029 +:1062020004F0C3940A400BD2168007C254E49003F0 +:0462120088F0A24529 +:016216002265 +:10420900C3E5129510FFE511950FFEC3EF94B0EECB +:104219009404500AE5129464E51194055002D254AD +:10422900900386E024FE605514605914606A146096 +:104239007C240460030242C220510330527B305374 +:104249001590038AE05455FFA3E054559002B9CF65 +:10425900F0A3EFF0801390038AE054AAFFA3E0547F +:10426900AA9002B9CFF0A3EFF09002B9E0FEA3E063 +:10427900FF125FD89003867402F0D2502290038611 +:104289007403F0221261E24030E4FFFE125FD8901D +:1042990003867404F0B253221261E2400790038648 +:1042A9007405F0229003867401F0B25322900386BC +:0942B9007401F0C251C252C2505E +:0142C20022D9 +:1064140030052220161F900387E004F0C3942D401A +:1064240014742DF020500EE4F0D25190038A7403BA +:06643400F0A374FFF0224A +:0A67940012346B1264141242092241 +:10624C00FFD8FFE2FFECFFF60000000A0019002364 +:10625C00002D00370041004B0055FFFBFFFCFFFDFC +:10626C00FFFEFFFFFFFF0000000100010002000322 +:04627C000004000515 +:0427C0008F828E83F3 +:1027C4007E037FE8AD82AC83121684C006C007AED8 +:1027D40083AF82C3E49FFF74109EFEAB07FAE4F953 +:1027E400F8D007D0061214EF9002BC121615E47F3D +:1027F4000AFEFDFC9002BC121609D31215B2401D4C +:102804009002BC1215FDC3EF940AFFEE9400FEED96 +:102814009400FDEC9400FC9002BC1216159035AFA8 +:10282400E493FE740193FFE4FCFD9002BC121609CC +:10283400C31215B2400D9002BA7408F0A374B7F035 +:102844000229A79036EFE493FE740193FFE4FCFDA4 +:102854009002BC121609D31215B2500D9002BA742C +:102864000EF0A374F7F00229A790027CE09002B95D +:10287400F075F0029035AF121652E493FE74019392 +:10288400FFE4FCFD9002BC121609D31215B2403BC2 +:1028940090027CE0149002B9F09002B9E0FFC39476 +:1028A40000406975F002EF9035AF121652E493FEC2 +:1028B400740193FFE4FCFD9002BC121609D31215B7 +:1028C400B240499002B9E014F080CE90027CE0045A +:1028D4009002B9F09002B9E0FFC394A0502875F0BB +:1028E40002EF9035AF121652E493FE740193FFE4A5 +:1028F400FCFD9002BC121609D31215B250089002C6 +:10290400B9E004F080CE9002B9E014F09002B9E08E +:1029140090027CF075F0029035AF121652E493FEEB +:10292400740193FFE4FCFD9002BC121609121456C4 +:10293400E47B0AFAF9F8121464C004C005C006C0A6 +:10294400079002B9E0FF75F0029035B1121652E417 +:1029540093FC740193FD75F002EF9035AF1216529B +:10296400C37401939DFFE4939CFEAB07FAE4F9F86A +:10297400D007D006D005D0041214EFAB07AA0690F6 +:10298400027CE024CEFFE434FFFE7C007D0A1213B7 +:10299400CCEF2BFFEE3ACF24ABCF340A9002BAF03F +:0B29A400A3EFF09002BAE0FEA3E0FFFA +:0129AF002205 +:105A6400D2459002C2E514F0E5132514FFE433FE99 +:105A74009002C2E0C39FEE6480F87480985028E0DE +:105A8400FF25E02485F582E43402AB82FAEF25E0B9 +:105A9400240EFF7D02124FD94005C245A245229033 +:095AA40002C2E004F080C1A24539 +:015AAD0022D6 +:105BD200D2457A027B997D027F22124FD94002C2BE +:105BE200457A027B9B7D027F24124FD94002C24537 +:105BF2007A027B9D7D027F26124FD94002C245E583 +:105C020013D39405400F7A027B9F7D027F28124FA7 +:075C1200D94002C245A24582 +:015C19002268 +:103A6200125BD24003023B4F900299E0FEA3E0FFBB +:103A72001227C09000D8E02FFF9000D7E03EFEC290 +:103A8200AC900224F0A3EFF0D2AC90029DE0FEA332 +:103A9200E0FFE4FCFD1212F47B9A7A9979D9783F1F +:103AA20012114EE4FBFA79F8784112105D121332CA +:103AB200C2AC900228EEF0A3EFF0D2ACE513D3949F +:103AC20005403290029FE0FEA3E0FFE4FCFD1212EB +:103AD200F47B9A7A9979D9783F12114EE4FBFA79FC +:103AE200F8784112105D121332C2AC90022AEEF045 +:103AF200A3EFF0D2AC900224E0FCA3E0FD9002021E +:103B0200ECF0A3EDF0900204ECF0A3EDF0300D3DEB +:103B120090029BE0FEA3E0FF1227C09000DAE02FA4 +:103B2200FF9000D9E03EFEC2AC900226F0A3EFF077 +:103B3200D2ACD3900203E09F900202E09E4006EED8 +:0D3B4200F0A3EFF022900204EEF0A3EFF0EC +:013B4F002253 +:10382A009002BA121621000000009002BE12162160 +:10383A0000000000E4900200F0A3F09002B37417B5 +:10384A00F0A37470F0125A6440030239619002B90D +:10385A00E514F0E5132514FFE433FE9002B9E0FD08 +:10386A00C39FEE6480F87480984003023938ED25CE +:10387A00E02485F582E43402F583E0FEA3E0FF7CD0 +:10388A000E7DD8121684C006C0079000D1E0FEA3B0 +:10389A00E0FFFBAA06E4F9F8D007D0061214EF906D +:1038AA0002BE121615900200E0FEA3E0FFE4FCFD42 +:1038BA009002BE121609D31215B2400E9002BE1221 +:1038CA0015FD900200EEF0A3EFF09002B3E0FEA324 +:1038DA00E0FFE4FCFD9002BE121609C31215B250B5 +:1038EA000E9002BE1215FD9002B3EEF0A3EFF02087 +:1038FA005033C2AC9002BE1215FD9002B9E025E029 +:10390A00240AF582E43402F583EEF0A3EFF0D2AC98 +:10391A009002BA1215FD9002BE12160912144990AD +:10392A0002BA1216159002B9E004F002385D20506E +:10393A0026900200E0F511A3E0F5129002B3E0F53B +:10394A000FA3E0F510C2AC9002BA1215FD90021E48 +:07395A00EEF0A3EFF0D2AC88 +:013961002243 +:1042C300E49002BEF0A3F0A3F09002C0E0FFC39419 +:1042D3000C400302436DEF25E0244CF582E4346285 +:1042E300F583E493FE740193FFFBAA06EA3395E09A +:1042F300F9F89002C0E025E0244EF582E43462F53B +:1043030083E493FE740193FFEE3395E0FDFC1214F6 +:1043130049E47B02FAF9F8125E8FE47B0AFAF9F8B2 +:10432300121464EF24ABFBEE340AFAE43DF9E43CE7 +:10433300F8900228E0FEA3E0FFE4FCFDC312159C05 +:10434300401F9002C0E025E02466F582E43462F564 +:1043530083E493FF7401939002BECFF0A3EFF08048 +:10436300099002C0E004F00242CC9002BEE0FEA33A +:02437300E0FF69 +:014375002225 +:102EFD009002BA121621000000007A027BA17D0219 +:102F0D007F2A124FD99002A1E0FEA3E0FFEE30E43C +:102F1D000944E09002A1F0A3EFF01242C39000D556 +:102F2D00E0FCA3E0FDC39002A2E09DFD9002A1E0B4 +:102F3D009CCD2FFFED3EFE3395E0FDFC7B187AFC1A +:102F4D0079FF78FF121464C006C0079000D3E0FE2D +:102F5D00A3E0FFFBAA06EA3395E0F9F8D007D00607 +:102F6D00125E8F90027D12161590027D1215FD9046 +:102F7D0002B2E025E025E0243CF582E43402F5833D +:102F8D001216159002B2E004F0C394104002E4F062 +:102F9D00E49002B9F09002B9E0FFC394105026A35B +:102FAD00121609EF25E025E0243CF582E43402F504 +:102FBD00831215FD1214499002BA1216159002B91A +:102FCD00E004F080D0E47B10FAF9F89002BA121503 +:102FDD00FD125E8F900281121615C22BC22A90002F +:102FED0028E0FEA3E0FFC3E49FFFE49EFE3395E0DF +:102FFD00FDFC900281121609C312159C50219003FD +:10300D009BE004F0C3940A405E740AF0D22BC2AC6C +:10301D009002811215FD900220121615D2AC22904D +:10302D000028E0FEA3E0FFEE3395E0FDFC90028169 +:10303D00121609D312159C402090039AE004F094C7 +:10304D000A4024740AF0D22AC2AC9002811215FDF6 +:10305D00900220121615D2AC22C2AC90022012168C +:07306D002100000000D2ACBD +:013074002239 +:10660600126280C24D12382A123A62304B05C24BD2 +:04661600122EFD2221 +:10504800E49002B9F0A3F0AF14E513FDE5142DFDCB +:10505800E433FCEFC39DEC6480F8748098501DEF36 +:1050680025E02485F582E43402F583E0FCA3E0FD25 +:105078009002B9EC8DF01214330F80CD9002B9E094 +:10508800FEA3E0FF7C0E7DD8121684C006C00790F0 +:105098000350E0FEA3E0FFFBAA06E4F9F8D007D02E +:0C50A800061214EF9000D1EEF0A3EFF020 +:0150B40022D9 +:10608E009000D5E0FEA3E0FFC39002A2E09FFF9038 +:10609E0002A1E09EFE3395E0FDFC7B187AFC79FFB1 +:1060AE0078FF121464900347121609125E8FEF4E9A +:0A60BE0060089000D3EEF0A3EFF0AD +:0160C80022B5 +:10676C009002A1E0FFA3E09000D5CFF0A3EFF022C0 +:105D7D00900299E0FEA3E0FF1227C0C390034DE00F +:105D8D009FFF90034CE09EFE9000D7E0FCA3E0FD4A +:105D9D00C3EF9DFDEE9CFCC3ED9496EC6480948066 +:105DAD005012ED946AEC6480947F40089000D7EE19 +:045DBD00F0A3EFF070 +:015DC10022BF +:105DC20090029BE0FEA3E0FF1227C0C390034FE0C6 +:105DD2009FFF90034EE09EFE9000D9E0FCA3E0FD01 +:105DE200C3EF9DFDEE9CFCC3ED9496EC6480948021 +:105DF2005012ED946AEC6480947F40089000D9EED2 +:045E0200F0A3EFF02A +:015E06002279 +:105E0700900352E0900378F0900353E0900379F009 +:105E1700900354E090037AF0900355E090037BF0F1 +:105E2700900356E090037CF0900357E090037DF0D9 +:105E3700900358E090037EF07E037F7812476AD282 +:045E47003BD23F22E9 +:10583F0030734BC27390034BE030E003125048902B +:10584F00034BE030E40312608E90034BE030E5032E +:10585F0012676C90034BE030E203125D7D90034BB7 +:10586F00E030E303125DC290034BE030E703125EBA +:0F587F0007E490034BF0D26A90039E7402F0226C +:1059CA0030600DC260D25EE490039DF012666722D9 +:1059DA00305E3A126599203134900088E075F00201 +:1059EA00A4FFAEF090039DE004F0C39FEE6480F83C +:1059FA007480984018C25EE4F012667A307002C26F +:0E5A0A0019C21BC21C301505C21512601722EE +:105E4B00305F0DC25FD25DE490039CF0126641227D +:105E5B00305D3012659920302A900088E075F00291 +:105E6B00A4FFAEF090039CE004F0C39FEE6480F8B7 +:105E7B00748098400EC25DE4F0126654306F02C21B +:045E8B0018C21A22FD +:10652900300719303C11900360E004F0C394054032 +:0D6539000BD23A7405F022E4900360F022CA +:10525B009002E3EEF0A3EFF0A3EDF0A3EAF0A3EBE3 +:01526B00F052 +:10526C00C245203A41E4A3F09002E3E0FCA3E0FD48 +:10527C00A3E09002F9F0E4A3F09002E6E0FFA3E0D3 +:10528C009002FBCFF0A3EFF07B017FA012332450F0 +:10529C0004D24580117F01125C1A9002E8E004F000 +:0D52AC00E0C3940540C2A245B3923CA24568 +:0152B90022D2 +:1052BA009002C5EEF0A3EFF0A3EDF0A3EAF0A3EBA2 +:0152CA00F0F3 +:1052CB00C246203A41E4A3F09002C5E0FCA3E0FD06 +:1052DB00A3E09002EFF0E4A3F09002C8E0FFA3E09C +:1052EB009002F1CFF0A3EFF07B017FA01229B05019 +:1052FB0004D24680117F01125C1A9002CAE004F0BE +:0D530B00E0C3940540C2A246B3923CA24606 +:015318002272 +:1050B5007E027FBC7B08E4FD126376E49002BAF0C1 +:1050C500A3F09002BAE0FEA3E0FFE4FCFD7BFF7ACB +:1050D50007F9F8D312159C402E53B1F89002BAE0A7 +:1050E500FEA3E07805C333CE33CED8F9241FFFE401 +:1050F5003EFE7A027BBC7D0112525B9002BAE475DA +:10510500F00112143380BB7A027BBC7D087FE07E00 +:0B511500FF12525BE490035CF0A3F07B +:01512000226C +:104DF500C2457A027BB97D087FE07EFF1252BA92E6 +:104E0500459002BAE0FF9002B9E02F9002BBF09006 +:104E150002BEE0FF9002BDE02F9002BFF09002BC01 +:104E2500E0FF9002BBE0B507179002B9E0FEA3E0F2 +:104E35007C002400FFEC3E90035CF0A3EFF0802A99 +:104E45009002C0E0FF9002BFE0B507179002BDE0F9 +:104E5500FEA3E07C002400FFEC3E90035CF0A3EF92 +:0C4E6500F08007E490035CF0A3F0A2458D +:014E7100221E +:105A1800E49002C3F07E037F78122B887E037F78A0 +:105A28007C027DBA7B071262E6E4FF74BA2FF58226 +:105A3800E43402F583E0FE9002C3E02EF00FEFB4E9 +:105A480007E99002C3E09002C1F0A3745AF07A0209 +:0B5A58007BBA7D097FF07EFF12525BDD +:015A63002220 +:105F580090035CE0FCA3E0FDEC9002DBF0AF05A34E +:105F6800EFF09002DBE02F9002DEF09002DBE09091 +:105F780002DFF09002DCE09002E0F09002DEE090B8 +:105F880002E2F07A027BDB7D087FE07EFF12525B43 +:015F980022E6 +:052D4A009002BAEFF059 +:102D4F006410701A7E037F617C027DBB7B0312626D +:102D5F00E67E037F657C027DBE1262E6801F7E03E6 +:102D6F007F78122B887E037F787C027DBB7B0312DA +:102D7F0062E67E037F7B7C027DBE1262E6900206D6 +:102D8F00E0FCA3E0FDEC9002C1F0A3EDF09002088F +:102D9F00E0FCA3E0FDEC9002C3F0A3EDF090022C59 +:102DAF001215FD78181215C39002C5EFF090022C82 +:102DBF001215FD78101215C39002C6EFF090022C79 +:102DCF001215FD78081215C39002C7EFF090022C70 +:102DDF001215FD9002C8EFF09002301215FD781811 +:102DEF001215C39002C9EFF09002301215FD781042 +:102DFF001215C39002CAEFF09002301215FD780839 +:102E0F001215C39002CBEFF09002301215FD900215 +:102E1F00CCEFF090021EE0FCA3E0FDAE047818CEDC +:102E2F00C313CE13D8F99002CDF0EDAE047810CEC7 +:102E3F00C313CE13D8F99002CEF090021EE0FCA37C +:102E4F00E0FDEC9002CFF0A3EDF09002201215FD03 +:102E5F0078181215D69002D1EFF09002201215FDBE +:102E6F0078101215D69002D2EFF09002201215FDB5 +:102E7F0078081215D69002D3EFF09002201215FDAC +:102E8F009002D4EFF0900224E0FCA3E0FDEC90025E +:102E9F00D5F0A3EDF0900236E0FCA3E0FDEC90023C +:102EAF00D7F0A3EDF09002BAE09002D9F0A3745AD4 +:102EBF00F090035CE0FEA3E0FF7A027BBB7D201263 +:102ECF00525B90035CE475F02012143390035CE0C6 +:102EDF00FEA3E0FFE4FCFD7BE07AFFF9F8D31215C7 +:0D2EEF009C5007E490035CF0A3F0125F58C4 +:012EFC0022B3 +:10518C00900381E02480FFE434FFEF7D00C454F0F1 +:10519C00FC900A01E02488FFE434FFFEEF7807C39B +:1051AC0033CE33CED8F92DFFEE3CFE900A02E0FD53 +:1051BC007A0A7B031252BA7B017A0A7900900A02AE +:1051CC00E02403FD126563900A02E02403F582E4F7 +:1051DC00340AF583EFF0C29C900383E02400F5823F +:0851EC00E4340AF583E0F599B3 +:0151F4002298 +:105CF2007E037F78122B887E037F787C0A7D037B6C +:105D0200071262E67B017A0A7900900A02E0240314 +:105D1200FD126563900A02E02403F582E4340AF579 +:105D220083EFF0C29C900383E02400F582E4340AFE +:065D3200F583E0F5992263 +:10564C00300752303B4FC23B303905C2391250B58E +:10565C00303D05C23D12518C303805C238125CF217 +:10566C00303F05C23F125A18303E0CC23E9002B970 +:10567C007410F0FF122D4A30440CC2449002B974DD +:10568C0001F0FF122D4A30410CC2419002B9740254 +:05569C00F0FF122D4A91 +:0156A10022E6 +:103B5000200703023C2290002EE0FF900359E0046E +:103B6000F0C39F4009E4F07E037F78122B88900316 +:103B70005AE475F001121433FEC3E5F09410EE948C +:103B80000E400BE490035AF0A3F0D23BD23F202A20 +:103B90001ED243304206C242D23BD24430190B30CF +:103BA0004008C240D23BD2418005201902D24030A9 +:103BB000436990002CE0FEA3E0FFEE3395E0FDFCAE +:103BC000900220121609C312159C404F90035EE02C +:103BD0007002A3E070147E037F78122B887E037F2F +:103BE000787C037D617B071262E690002BE0FF7E0C +:103BF000007C007D3C1213CC90035EE475F0011252 +:103C00001433FCD3E5F09FEC9E4017E490035EF084 +:103C1000A3F0D242C243D23BD23E22E490035EF0F4 +:033C2000A3F022EC +:0310530002512126 +:10512100C0E0C0D075D000C006C007C0867586003B +:1051310030D807C2D87F0112648530D907C2D97F20 +:105141000212648530DA07C2DA7F0412648530DB2B +:1051510007C2DB7F0812648530DC07C2DC7F1012D6 +:10516100648530DD07C2DD7F2012648530DE07C231 +:10517100DE7F4012648530DF07C2DF7F80126485E5 +:0B518100D086D007D006D0D0D0E0329E +:03102B00021003AD +:10100300C0E0C083C082C0D0C086758640C28F75E1 +:1010130086001264A9D086D0D0D082D083D0E032AB +:104627003074030246C875090F20A7057509018074 +:104637000620B003750902E509650C6038050EE52B +:104647000E7002050DC3E50B940AE50A9400406558 +:10465700E50E940AE50D94004067E50B9490E50A92 +:1046670094014008E50C4440F5088003850C08D206 +:104677007480428040E509640F6037E4F50DF50E5C +:10468700050BE50B7002050AB4900EE50AB40109A3 +:10469700E50C4410F508D27422E50BB4B023E50A03 +:1046A700B4041E750A01750B90E50C4420F508D279 +:1046B700742275080FE4F50AF50BF50DF50E85095B +:0146C7000CE6 +:0146C80022CF +:10621700AB07AA06C2AF43A701EAF5F7AF038FFBA7 +:10622700AF058FFC75F26E75F30575F40A75F50900 +:10623700EAADF7B50509E475F6060000000000535E +:05624700A7FED2AF220A +:10643A00D248E4FDFCEF2DFBEE3C8B82F583E4931E +:10644A006004C248800D0DBD00010CE4B505E6EC00 +:05645A00B402E2A248BB +:01645F00221A +:0854E7009002BFEEF0A3EFF00C +:1054EF00D248AE04AF05E4A3F0A3F09002C1E0FCF4 +:1054FF00A3E0FDC3EC940250369002C0E02DFD9066 +:10550F0002BFE03C8D82F583E493FD9002C1E0FA87 +:10551F00A3E02FF582EE3AF583E0FCED6C6004C258 +:10552F0048800C9002C1E475F00112143380BCA2C4 +:01553F004823 +:015540002248 +:084A52009002BFEEF0A3EFF0AB +:104A5A00C248AF05A3ECF0A3EFF0E4FDFC9002BF5F +:104A6A00E0FAA3E0FB2DF5FBEB2DEA3CF5F7A3E01A +:104A7A00FEA3E02DF582EE3CF583E0F5FC75F26EBF +:104A8A0020AF3D75F305E5A7603275F40A90039FE0 +:104A9A00E06455702375F5099002C0E02D9002BFBD +:104AAA00E03CABF7B5030DE475F606000000000024 +:104ABA00D2488010C2488019C2488015C248801165 +:104ACA00C248800D0DBD00010CED7003EC6402704C +:034ADA008CA24863 +:014ADD0022B6 +:0E489D009002BBEEF0A3EFF0A3ECF0A3EDF061 +:1048AB00C24753B1F8C2AF43A7019002BBE0FF7EF2 +:1048BB0000F5F775F2E620AF5B75F305E5A76054DD +:1048CB0075F40A90039FE06455704975F509ADF7CF +:1048DB00EF6D7001EE703D75F60600000000009064 +:1048EB0002BBE0FEA3E0FF12643A50289002BBE04B +:1048FB00FEA3E0FFA3E0FCA3E0FD124A525015908B +:10490B0002BBE0FEA3E0FFA3E0FCA3E0FD1254E733 +:10491B005002D247E4F5F2F5F3F5F4F5F5F5F6535D +:08492B00A7FEF5F7D2AFA24789 +:014933002261 +:103C2300C245C246206903023CE3C26990039F7404 +:103C330055F0E513D39405400C9002B97427F0A313 +:103C43007410F0800A9002B97413F0A37488F09092 +:103C530002B9E0FEA3E0FFC390021FE09F90021EA3 +:103C6300E09E406B9001FEE0645A7004A3E064A5FB +:103C7300705DFDFCFFFE12489D4023E4FDFCFFFE4A +:103C830012489D4019D24574FF9001FEF0A3F0FD48 +:103C93007FFE7E011262177DFF7FFF126217E4FD34 +:103CA300FCFF7E0212489D402AE4FDFCFF7E0212C7 +:103CB300489D401FD24674FF9001FEF0A3F0FD7FA4 +:103CC300FE7E031262177DFF7FFF1262178004D20C +:103CD30045D246E490039FF0204505204602D26872 +:013CE30022BE +:0E5319009002B9EEF0A3EFF0A3EAF0A3EBF0E0 +:10532700D245AE04AF058E158F16C2AF43A7015302 +:10533700B1F8E4FFFED39002BCE09F9002BBE09E71 +:1053470040279002BAE02FFD9002B9E03E8D82F52A +:1053570083E493851682851583F00516E51670029A +:1053670005150FBF00010E80CC53A7FED2AFA24593 +:015377002213 +:1065DD00306A1190039EE004F0C394024006C26A33 +:0565ED00E4F0D2692278 +:1063A000C24543A701EEC313FEEF1325E0FFEE3312 +:1063B0008F82F583740193B4A507E493B45A02D293 +:0663C0004553A7FEA245B3 +:0163C60022B4 +:0D36F1009002BAECF0A3EDF09002B9EFF0FA +:1036FE00758640EF64557051A3E0FEA3E0FFC394BE +:10370E00E8EE940350187588027C007D2012168412 +:10371E00C3E49FFFE49EA3F0A3EFF0023818758870 +:10372E00229002BAE0FEA3E0FF7C007D20121684F8 +:10373E00E47B40FAF9F81214EFC3E49FFFE49E9085 +:10374E0002BCF0A3EFF00238189002B9E0644470A6 +:10375E005BA3E0FEA3E0FFC394A0EE940F5023758D +:10376E0088127C007D80121684E47B08FAF9F81228 +:10377E0014EFC3E49FFFE49E9002BCF0A3EFF002AF +:10378E0038187588329002BAE0FEA3E0FF7C007D07 +:10379E0080121684E4FB7A01F9F81214EFC3E49F49 +:1037AE00FFE49E9002BCF0A3EFF0805E9002B9E0C1 +:1037BE007058A3E0FEA3E0FFC394F4EE94015022F0 +:1037CE007588307C5D7DC0121684E4FB7A01F9F8B1 +:1037DE001214EFC3E49FFFE49E9002BCF0A3EFF03F +:1037EE0080287588329002BAE0FEA3E0FF7C007D4F +:1037FE0080121684E4FB7A01F9F81214EFC3E49FE9 +:10380E00FFE49E9002BCF0A3EFF09002BCE0FEA39A +:0B381E00E0F58CEEF58DD28AE4F58613 +:01382900227C +:10579D00A2AFE433FEC2AFEF600D64206009EF6489 +:1057AD00406004EFB46007EF4408F5B28010EF6479 +:1057BD00806004EFB4A00753B2FB0053B2F70000B2 +:1057CD00000000000000EF600D64206009EF6440F0 +:1057DD006004EFB4600343B204AF06EE24FF92AF52 +:0157ED002299 +:104C7200900392EEF0A3EFF0A3EDF075C7B09003AE +:104C820092E0FEA3E0FFFBAA06E4F9F87FD87EB823 +:104C92007D05FC125E8F8FCC900392E0FEA3E0FFB5 +:104CA200FBAA06E4F9F87FD87EB87D05FC125E8F78 +:104CB20078081215D68FCDAFCDEFFEADCC7C00E4D7 +:104CC2002DFFEC3EFE900394E0FBFD1213CC7D64BD +:104CD2001213DE8FCEAFCDEFFEADCC7C00E42DFF04 +:104CE200EC3EFEAD031213CC7D641213DEEEF5CF63 +:014CF200229F +:104CF300900395EEF0A3EFF0A3EDF075B6B090033B +:104D030095E0FEA3E0FFFBAA06E4F9F87FD87EB89E +:104D13007D05FC125E8F8FAE900395E0FEA3E0FF4E +:104D2300FBAA06E4F9F87FD87EB87D05FC125E8FF6 +:104D330078081215D68FAFAFAFEFFEADAE7C00E4AF +:104D43002DFFEC3EFE900397E0FBFD1213CC7D6438 +:104D53001213DE8FA4AFAFEFFEADAE7C00E42DFFE8 +:104D6300EC3EFEAD031213CC7D641213DEEEF5A50B +:014D7300221D +:104D74009002B9EEF0A3EFF0A3EDF075B7B0900296 +:104D8400B9E0FEA3E0FFFBAA06E4F9F87FD87EB8F9 +:104D94007D05FC125E8F8FBC9002B9E0FEA3E0FF9C +:104DA400FBAA06E4F9F87FD87EB87D05FC125E8F75 +:104DB40078081215D68FBDAFBDEFFEADBC7C00E404 +:104DC4002DFFEC3EFE9002BBE0FBFD1213CC7D6494 +:104DD4001213DE8FBEAFBDEFFEADBC7C00E42DFF31 +:104DE400EC3EFEAD031213CC7D641213DEEEF5BF70 +:014DF400229C +:105C1A00E5B2547070067C067D868020E5B2547029 +:105C2A00FEBE20067C037D438012E5B25470FEBEA0 +:105C3A0040067C017DA180047C007D8BE4FEEEC3DE +:105C4A009F5014E4FBFAC3EB9DEA9C50070BBB0080 +:075C5A00010A80F20E80E751 +:015C61002220 +:1062B3007F08AE07A806E4F60FEFD3949F40F3E4FC +:1062C300781EF608F6781EE6FE08E6FFD394FFEE86 +:1062D300940A500E8F828E83E4F006E6187001064E +:0262E30080E356 +:0162E5002296 +:1051F50090002FE0645A705A900061E0645A705232 +:10520500900074E0645A704A900089E0645A7042D4 +:1052150090008EE0645A703A900099E0645A7032BA +:105225009000A2E0645A702A9000AAE0B45A239034 +:1052350000CCE0B45A1C9000D0E0B45A159000DCC4 +:10524500E0B45A0E9001FEE0645A7004A3E064A530 +:065255006002C322D32217 +:086376009002C5EEF0A3EFF068 +:10637E00E4FFEFC39B501A9002C5E0F8A3E0F5824C +:10638E008883EDF09002C5E475F0011214330F808E +:01639E00E11D +:01639F0022DB +:0862E6009002DBEEF0A3EFF0E3 +:1062EE00E4FFEFC39B50239002DBE0F8A3E0F582BE +:1062FE008883E08D828C83F00DBD00010C9002DB53 +:0A630E00E475F0011214330F80D87B +:016318002262 +:0C677C00758E55438701000000000022CC +:0C678800758E55438702000000000022BF +:10646000900391E06412701C305B19206A16206959 +:1064700013C2AFF5A8F5A9F588F5E8F59DF59CF5EB +:0564800098120000224B +:105AAE00D228D229201403301602C22820110F202A +:105ABE00130C201B09201C06201503301602C229C8 +:105ACE00202B0E201009201206201803301A02C2B5 +:105ADE0028202A05301902C229201B06201C03305B +:0A5AEE001502C228301A02C2292254 +:10634900125AAEA26D302801B34008A26E3029015D +:10635900B35019A228926DA229926EA229E433FFA3 +:0D63690025E0FFA228E4334FFF1265C82293 +:105C6200201844C3900063E09512900062E0951101 +:105C7200501F900329E475F001121433FEC3E5F0BE +:105C82009401EE94004020D218E4900329F0A3F08E +:105C920022D3900065E09512900064E095114007D0 +:085CA200E4900329F0A3F022B5 +:105CAA00201944D3900076E09510900075E0950F86 +:105CBA00401F90032BE475F001121433FEC3E5F084 +:105CCA009401EE94004020D219E490032BF0A3F043 +:105CDA0022C3900078E09510900077E0950F500766 +:085CEA00E490032BF0A3F0226B +:10588E0020104B90008FE0FEA3E0FF900204E0FC9E +:10589E00A3E0FDD39FEC9E401F90033BE475F00107 +:1058AE00121433FEC3E5F09401EE94004020D210A2 +:1058BE00E490033BF0A3F022900091E0FEA3E0FF02 +:0F58CE00C3ED9FEC9E5007E490033BF0A3F02244 +:1058DD0020124B900093E0FEA3E0FF900202E0FC4B +:1058ED00A3E0FDC39FEC9E501F90033FE475F001B4 +:1058FD00121433FEC3E5F09401EE94004020D21251 +:10590D00E490033FF0A3F022900095E0FEA3E0FFAA +:0F591D00D3ED9FEC9E4007E490033FF0A3F022F0 +:10592C0020114B90009AE0FEA3E0FF900204E0FCF3 +:10593C00A3E0FDD39FEC9E401F90033DE475F00166 +:10594C00121433FEC3E5F09401EE94004020D21102 +:10595C00E490033DF0A3F02290009CE0FEA3E0FF56 +:0F596C00C3ED9FEC9E5007E490033DF0A3F022A3 +:10597B0020134B90009EE0FEA3E0FF900202E0FCA0 +:10598B00A3E0FDC39FEC9E501F900341E475F00113 +:10599B00121433FEC3E5F09401EE94004020D213B1 +:1059AB00E4900341F0A3F0229000A0E0FEA3E0FFFF +:0F59BB00D3ED9FEC9E4007E4900341F0A3F02250 +:1060C90030753712382A123A62125C62125CAA12CF +:1060D900588E1258DD12592C12597B9003A1E004F5 +:1060E900F0C394024014C275204C09203A0620726C +:0B60F90003306803D2552212230F224F +:103DA100201859C3900063E09512900062E09511CC +:103DB1005033900066E075F00AA4FFAEF09003293D +:103DC100E475F001121433FCC3E5F09FEC9E50033F +:103DD100023E5CD218C26FE4900329F0A3F0900375 +:103DE10043F0A3F022D3900065E09512900064E0C7 +:103DF10095114067E4900329F0A3F022206F5CD372 +:103E0100900065E09512900064E0951140379000B4 +:103E110067E075F00AA4FFAEF0900343E475F0018A +:103E2100121433FCC3E5F09FEC9E402F300E06D2F6 +:103E31006FD25F8002C218E4900329F0A3F09003CF +:103E410043F0A3F022C3900063E09512900062E07A +:0C3E510095115007E4900343F0A3F02209 +:103E5D00201959D3900076E09510900075E0950FDC +:103E6D004033900079E075F00AA4FFAEF090032B7B +:103E7D00E475F001121433FCC3E5F09FEC9E500382 +:103E8D00023F18D219C270E490032BF0A3F09003F7 +:103E9D0045F0A3F022C3900078E09510900077E0F4 +:103EAD00950F5067E490032BF0A3F02220705CC3B4 +:103EBD00900078E09510900077E0950F50379000C6 +:103ECD007AE075F00AA4FFAEF0900345E475F001B9 +:103EDD00121433FCC3E5F09FEC9E402F300F06D239 +:103EED0070D2608002C219E490032BF0A3F090030E +:103EFD0045F0A3F022D3900076E09510900075E088 +:0C3F0D00950F4007E4900345F0A3F0225C +:103F190020105E90008FE0FEA3E0FF900204E0FC19 +:103F2900A3E0FDD39FEC9E4031900097E075F0141B +:103F3900A4FFAEF090033BE475F001121433FAC309 +:103F4900E5F09FEA9E5003023FD4D210E490033B70 +:103F5900F0A3F090032DF0A3F022900091E0FEA3CE +:103F6900E0FFC3ED9FEC9E5062E490033BF0A3F0A9 +:103F790022900091E0FEA3E0FF900204E0FCA3E0A0 +:103F8900FDC39FEC9E502E900097E075F014A4FF9E +:103F9900AEF090032DE475F001121433FAC3E5F085 +:103FA9009FEA9E4026C210E490033BF0A3F09003E1 +:103FB9002DF0A3F02290008FE0FEA3E0FFD3ED9F48 +:0C3FC900EC9E4007E490032DF0A3F022D2 +:103FD50020125E900093E0FEA3E0FF900202E0FC59 +:103FE500A3E0FDC39FEC9E5031900097E075F0145F +:103FF500A4FFAEF090033FE475F001121433FAC349 +:10400500E5F09FEA9E5003024090D212E490033FF0 +:10401500F0A3F0900331F0A3F022900095E0FEA309 +:10402500E0FFD3ED9FEC9E4062E490033FF0A3F0E8 +:1040350022900095E0FEA3E0FF900202E0FCA3E0E1 +:10404500FDD39FEC9E402E900097E075F014A4FFE1 +:10405500AEF0900331E475F001121433FAC3E5F0C4 +:104065009FEA9E4026C212E490033FF0A3F090031E +:1040750031F0A3F022900093E0FEA3E0FFC3ED9F93 +:0C408500EC9E5007E4900331F0A3F02201 +:1040910020115E90009AE0FEA3E0FF900204E0FC94 +:1040A100A3E0FDD39FEC9E4031900097E075F014A2 +:1040B100A4FFAEF090033DE475F001121433FAC38E +:1040C100E5F09FEA9E500302414CD211E490033D7A +:1040D100F0A3F090032FF0A3F02290009CE0FEA348 +:1040E100E0FFC3ED9FEC9E5062E490033DF0A3F02E +:1040F1002290009CE0FEA3E0FF900204E0FCA3E01C +:10410100FDC39FEC9E502E900097E075F014A4FF24 +:10411100AEF090032FE475F001121433FAC3E5F009 +:104121009FEA9E4026C211E490033DF0A3F0900364 +:104131002FF0A3F02290009AE0FEA3E0FFD3ED9FC1 +:0C414100EC9E4007E490032FF0A3F02256 +:10414D0020135E90009EE0FEA3E0FF900202E0FCD3 +:10415D00A3E0FDC39FEC9E5031900097E075F014E5 +:10416D00A4FFAEF0900341E475F001121433FAC3CD +:10417D00E5F09FEA9E5003024208D213E4900341FA +:10418D00F0A3F0900333F0A3F0229000A0E0FEA383 +:10419D00E0FFD3ED9FEC9E4062E4900341F0A3F06D +:1041AD00229000A0E0FEA3E0FF900202E0FCA3E05D +:1041BD00FDD39FEC9E402E900097E075F014A4FF68 +:1041CD00AEF0900333E475F001121433FAC3E5F049 +:1041DD009FEA9E4026C213E4900341F0A3F09003A2 +:1041ED0033F0A3F02290009EE0FEA3E0FFC3ED9F0D +:0C41FD00EC9E5007E4900333F0A3F02286 +:10554100201A5590006D1215FD90027D121609D397 +:1055510012159C402A900071E075F00AA4FFAEF08C +:10556100900337E475F001121433FCC3E5F09FECAE +:105571009E4025D21AD25FE4900337F0A3F0222097 +:105581005D16D3900338E09400900337E094004017 +:095591000774FFF5F01214332237 +:10559A00201B5590007E1215FD90027D121609C33C +:1055AA0012159C502A900082E075F00AA4FFAEF012 +:1055BA00900325E475F001121433FCC3E5F09FEC67 +:1055CA009E4025E4900325F0A3F0D21BD26022204E +:1055DA005E16D3900326E09400900325E0940040E1 +:0955EA000774FFF5F012143322DE +:1055F300201C559000831215FD90027D121609C3DD +:1056030012159C502A900087E075F002A4FFAEF0BB +:10561300900327E475F001121433FCD3E5F09FECFB +:105623009E4025E4900327F0A3F0D21CD2602220F1 +:105633005E16D3900328E09400900327E094004083 +:095643000774FFF5F01214332284 +:1064EC0020751B123DA1123E5D123F19123FD512B1 +:0F64FC00409112414D12554112559A1255F322FB +:104F6300300272201B06201C03301539900072E0BA +:104F730075F014A4FFAEF0900339E475F001121438 +:104F830033FCC3E5F09FEC9E401BE490039DF0903F +:104F93000339F0A3F0C21BC21CC260C25E30150508 +:104FA300C215126017301A2D900072E075F014A428 +:104FB300FFAEF0900335E475F001121433FCD3E532 +:104FC300F09FEC9E400FE4900335F0A3F0C21A90DB +:064FD300039CF0C25D2208 +:10654600300719307111900377E004F0C3940540C9 +:0D6556000BD2727405F022E4900377F0225E +:0E5431009002F0EFF0A3EDF0A3EAF0A3EBF091 +:10543F00C248207240E4A3F09002F0E0FD7C00A38C +:10544F00E09002F9F0E4A3F09002F2E0FFA3E09005 +:10545F0002FBCFF0A3EFF0E4FB7FDE123324500406 +:10546F00D24880117F01125C1A9002F4E004F0E040 +:0C547F00C3940540C3A248B39271A24838 +:01548B0022FE +:0E548C009002E6EFF0A3EDF0A3EAF0A3EBF040 +:10549A00C247207240E4A3F09002E6E0FD7C00A33C +:1054AA00E09002EFF0E4A3F09002E8E0FFA3E090BE +:1054BA0002F1CFF0A3EFF0E4FB7FDE1229B0500433 +:1054CA00D24780117F01125C1A9002EAE004F0E0F0 +:0C54DA00C3940540C3A247B39271A247DF +:0154E60022A3 +:082B88009002DBEEF0A3EFF078 +:102B9000C2467A027BDD7D09E4FF12548C400302B9 +:102BA0002D479002E4E030E003022D3A9002DFE08E +:102BB00020E703022C599002DDE0FF54709450404E +:102BC00003022C59EF540F94094003022C59E0548E +:102BD0007F94594003022C59A3E0FF547094505045 +:102BE00078EF540F94095071E0547F9459506AA3C0 +:102BF000E0FF543094205061EF540F9409505AE094 +:102C0000542F94245053A3E0FF54309430504AEF93 +:102C1000540F94095043E0543FFF9431503BEF6010 +:102C200038A3E0FF54109410502FEF540F94095024 +:102C300028E0541FFF94125020EF601DA3E0FF54C2 +:102C4000F094905014EF540F9409500DE094995063 +:102C500008A3E05407940640779002DBE0FEA3E06F +:102C6000FFF5828E83E09002DDF08F828E83A3E0F9 +:102C70009002DEF09002DBE0A3E0F5828E83A3A356 +:102C8000E09002DFF08F828E83A3A3A3E09002E0A6 +:102C9000F09002DBE0A3E02404F582E43EF583E05B +:102CA0009002E1F0EF2405F582E43EF583E0900226 +:102CB000E2F09002DBE0A3E02406F582E43EF58337 +:102CC000E09002E3F07E027FDD12476A9246807751 +:102CD0009002DDE0FF9002DBE0FCA3E0FDF5828CDA +:102CE00083EFF09002DEE08D828C83A3F09002DF10 +:102CF000E0541F8D828C83A3A3F09002E0E08D82CC +:102D00008C83A3A3A3F09002E1E0FFED2404F582FD +:102D1000E43CF583EFF09002E2E0FFED2405F5825C +:102D2000E43CF583EFF09002E3E0FFED2406F5824A +:102D3000E43CF583EFF0D246800D9002DBE0FEA389 +:092D4000E0FF12476A9246A24628 +:012D49002267 +:08476A009002E6EEF0A3EFF06F +:10477200C247A37490F07A027BE87D017F0712544E +:104782003192479002E6E0FEA3E0FFF5828E83E0DD +:104792009002E9F08F828E83A3E09002EAF0900209 +:1047A200E6E0FCA3E0FDF5828C83A3A3E0448090C5 +:1047B20002EBF08D828C83A3A3A3E09002ECF09035 +:1047C20002E6E0A3E0FF2404F582E43EF583E090F4 +:1047D20002EDF0EF2405F582E43EF583E09002EE6F +:1047E200F09002E6E0A3E02406F582E43EF583E0E1 +:1047F2009002EFF07A027BE97D07E4FF12543192D6 +:0348020047A24783 +:014805002290 +:0849C5009002B9EEF0A3EFF03F +:1049CD00C245E49002C4F07E027FBB7B09FD1263F9 +:1049DD00767A027BBB7D097FF07EFF1252BAE4FF2F +:1049ED0074BB2FF582E43402F583E0FE9002C4E03F +:1049FD002EF00FEFB407E99002C4E0FF9002C2E081 +:104A0D00B50706A3E0645A601BE49002BBF0A3F067 +:104A1D00A37412F0A37401F0A37405F0A37420F035 +:104A2D00A37405F07E027FBB9002B9E0FCA3E0FD0C +:104A3D007B071262E69002B9E0FEA3E0FF122B881D +:044A4D009245A245A7 +:014A51002242 +:1039620000070E091C1B1215383F363124232A2D5D +:1039720070777E796C6B6265484F464154535A5D4D +:10398200E0E7EEE9FCFBF2F5D8DFD6D1C4C3CACD3D +:1039920090979E998C8B8285A8AFA6A1B4B3BABD2D +:1039A200C7C0C9CEDBDCD5D2FFF8F1F6E3E4EDEA1D +:1039B200B7B0B9BEABACA5A28F88818693949D9A0D +:1039C2002720292E3B3C35321F18111603040D0AFD +:1039D2005750595E4B4C45426F68616673747D7AED +:1039E200898E878095929B9CB1B6BFB8ADAAA3A4DD +:1039F200F9FEF7F0E5E2EBECC1C6CFC8DDDAD3D4CD +:103A0200696E676075727B7C51565F584D4A4344BC +:103A1200191E171005020B0C21262F283D3A3334AC +:103A22004E49404752555C5B7671787F6A6D64639C +:103A32003E39303722252C2B0601080F1A1D14138C +:103A4200AEA9A0A7B2B5BCBB9691989F8A8D84837C +:103A5200DED9D0D7C2C5CCCBE6E1E8EFFAFDF4F36C +:10656300E4FFEDD3940040131213B36F9039629399 +:0B657300FF740129F9E43AFA1D80E7EB +:01657E0022FA +:1063C700D24A7D807CBBE5C820E31053B1F8ED4C81 +:1063D7006009ED1D70011C80ED80EBE5D154F86F6D +:0663E7006002C24AA24A56 +:0163ED00228D +:103324009002F8EBF09002F5EFF0A3ECF0A3EDF0CF +:10333400D24990030174BBF0A37480F09002FDEFB6 +:10334400F0A3EDF09002FBE0FEA3E0F5828E83E0B3 +:103354009002FFF07B017A0279FD7D031265639090 +:103364000300EFF09002F9E0D394005003023468B4 +:1033740043E6C043D10143C80175C8607F081263A6 +:10338400C7400C7F101263C74005C2490234459000 +:1033940002F5E0F58D75C8407F181263C74005C279 +:1033A400490234459002F8E0B401159002F6E0F5C4 +:1033B4008D75C8407F281263C74005C24902344551 +:1033C4009002F6E0A3E0F58D75C8407F281263C72C +:1033D4004004C249806B9002FAE06401702EA3E0BD +:1033E400FEA3E0F5828E83E0F58D75C8407F281238 +:1033F40063C74004C2498049900300E0F58D75C855 +:10340400407F281263C74039C2498035E4FE9002E8 +:10341400F9E0FFEEC39F50299002FBE0FCA3E0F526 +:10342400828C83E0F58D75C8407F281263C7400401 +:10343400C249800D9002FBE475F0011214330E8032 +:10344400CD75C850E5C830E41B53B1F8900301E0D2 +:103454007002A3E0600E90030174FFF5F0121433C0 +:0634640080E280E0A249B5 +:01346A00223F +:0A29B000AA079002ECECF0A3EDF092 +:1029BA00D248E4900322F0A374BBF0A37480F09091 +:1029CA0002F4EAF0A3EDF09002EFE0FE9002F6F0D6 +:1029DA00EA4401A3F0EED394005003022B8543E6A8 +:1029EA00C043D10143C80175C8607F081263C7405C +:1029FA000C7F101263C74005C248022B628A8D758C +:102A0A00C8407F181263C74005C248022B62EBB464 +:102A1A0001159002ECE0F58D75C8407F281263C756 +:102A2A004005C248022B629002ECE0A3E0F58D75E6 +:102A3A00C8407F281263C74005C248022B62EAB425 +:102A4A0036159002EFE0F58D75C8407F281263C7EE +:102A5A004005C248022B6275C8607F081263C740EE +:102A6A000C7F101263C74005C248022B62EA440178 +:102A7A00F58D75C8407F401263C74005C248022BD6 +:102A8A0062E49002F3F09002EFE0FF9002F3E0FEBE +:102A9A00C39F50579002F0E07031EF14B5060A75E3 +:102AAA00C8407F581263C7800875C8447F501263B4 +:102ABA00C79002F1E0FEA3E0F5828E83E58DF090E7 +:102ACA0002F1E475F001121433801875C8447F507E +:102ADA001263C79002F3E024F8F582E43402F58326 +:102AEA00E58DF09002F3E004F0809B9002F0E06440 +:102AFA0001706575C8407F581263C7900322E58D3F +:102B0A00F07B017A0279F49002EFE02404FD126569 +:102B1A0063900322E0B5073EE49002F3F09002EFDF +:102B2A00E0FF9002F3E0FEC39F502D74F82EF58269 +:102B3A00E43402F583E0FF9002F1E0FCA3E0F582C1 +:102B4A008C83EFF09002F1E475F0011214339002D5 +:102B5A00F3E004F080C7C24875C850E5C830E41BEA +:102B6A0053B1F8900323E07002A3E0600E900323B0 +:0D2B7A0074FFF5F012143380E280E0A248F1 +:012B8700222B +:1061040075C632E4F5E6EFFD7C007E5D7FC01213B8 +:10611400DEEF24F0FFEE34FFC313FEEF13FFEEC4F3 +:10612400F854F0C868EFC4540F48F58A75D1027565 +:09613400C8407589FFE4F58D22D5 +:084934009002B9EEF0A3EFF0D0 +:10493C0075C432E4F587759850AB07AA06F9F87F71 +:10494C00607EE37D16FC125E8FC3E49FFF74809E35 +:10495C00AD07FCF59D8F9CFEAB07FAE4C39BFF747F +:10496C00809AFEE49400FDE49400FCE47B10FAF9D8 +:10497C00F8121464EC1212F4C004C005C006C0078F +:10498C009002B9E0FCA3E0FDE41212F9A804A90519 +:10499C00AA06AB077F007E1B7DB77C4B121257D04B +:1049AC0003D002D001D0001210591213328F9E4343 +:0849BC009D80759A0A759BFFAE +:0149C40022D0 +:031023000257EE83 +:1057EE00C0E0C0F0C083C082C0D075D000C000C081 +:0D57FE0001C002C003C004C005C006C00702 +:10580B00C086758600309807C298AF99124806304B +:09581B009905C2991244D5D0860A +:10582400D007D006D005D004D003D002D001D000D8 +:0B583400D0D0D082D083D0F0D0E03282 +:1035AF00FFFFFFFFF07FDFCDD0DAC222B4F4A8C255 +:1035BF009D769300894E804F77F770386906625673 +:1035CF005C1F565650F44BF1474642EC3EDD3B1420 +:1035DF003728343F312A2E462B97291226B62481BD +:1035EF002270207F1EAE1CFA1B6119E11878172676 +:1035FF0015E714BC13A2129911A010B50FD80F081C +:10360F000E440D8A0CDC0C370B9C0B090A7E09FB50 +:10361F00097E090A089B083207CF0770071706C3F0 +:10362F000673062705DF059B055A051D04E204AB4B +:10363F0004770445041503E803BC0393036C0346A6 +:10364F000325030302E302C502A8028C027102588C +:10365F0002400229021301FE01EA01D701C501B39D +:10366F0001A301930183017501670159014D0140C8 +:10367F0001350129011F0114010A010100F800EFB2 +:10368F0000E600DE00D700CF00C800C100BA00B4CA +:10369F0000AE00A800A2009D00980092008E008945 +:1036AF0000840080007C007800740070006D006959 +:1036BF00006600630060005D005A0057005400521E +:1036CF00004F004D004A00480046004400420040B1 +:1036DF00003E003C003B0039003700360035003417 +:0236EF000032A7 +:0310000002661A6B +:10661A0075819F75B208000000000000000043B2B7 +:04662A0004024EEB2D +:10230F007F647E00C262E4781BF608F67817F60841 +:10231F00F608F608F6781DF6900373F0A3F0900315 +:10232F006CF0A3F0900370F0A3F0A3F090036EF0A5 +:10233F00900375F0A3F0C263C2619002B9F09002EE +:10234F00B9E0FDC3940A4003022452ED25E02402B4 +:10235F00F582E43400F583E0FCA3E0D39512EC950D +:10236F001150030224499002B9E070529000B1E07D +:10237F00FCA3E0FDD39512EC95115003301906E440 +:10238F00FEFF022452C3E5129DFFE5119CFE7C0067 +:10239F007D0A121684C006C0079000B1E0FEA3E0CC +:1023AF00FFC3900003E09FFF900002E09EFEAB078B +:1023BF00FAE4F9F8D007D0061214EF022452900273 +:1023CF00B9E025E02400F582E43400F583E0FEA3B4 +:1023DF00E0FFC3E5129FFFE5119EFE7C007D0A1210 +:1023EF001684C004C005C006C0079002B9E0FF25DF +:1023FF00E02400F582E43400F583E0FCA3E0FDEF78 +:10240F0025E02402F582E43400F583E0FEA3E0C367 +:10241F009DFFEE9CFEAB07FAE4F9F8D007D006D08B +:10242F0005D0041214EFAD07AC069002B9E075F0B9 +:10243F000AA42DFFE5F03CFE80099002B9E004F0FC +:10244F0002234DD3900011E09512900010E09511EA +:10245F0050047E007F649000B5E0FD7C00D3EF9DBB +:10246F00EE9C40067E00AF05801EC3ED9FFDEC9EE7 +:10247F00FCD3ED941EEC940040079000B5EFF08074 +:10248F00079000B5E0FF7E00900234EEF0A3EFF06E +:10249F009000BA1215FD90022C121615900234E01E +:1024AF00FEA3E0FFE4FCFD90022C12160912146447 +:1024BF00E47B64FAF9F81214EF90023012161590BB +:1024CF00022C1215FD900373EEF0A3EFF090023083 +:1024DF001215FD90036CEEF0A3EFF0900234E0FEC6 +:1024EF00A3E0FF7C007D0A1213CC900370EEF0A3E3 +:1024FF00EFF09000CAE0FEA3E0FFD394C8EE940083 +:10250F004006781D764B803DD3EF9464EE940040E7 +:10251F00107C007D051213DEC3745F9F781DF6805B +:10252F00249000CAE0FEA3E0FFD39432EE94004063 +:10253F00107C007D0A1213DEC374699F781DF6802C +:10254F0004781D7664E47819F608F6900372F0901B +:0B255F000375F0A3F0C26290036EF061 +:01256A00224E +:101FE900E49002B9F0A3F0900368121621000000F2 +:101FF90000900028E0FEA3E0FFEE3395E0FDFC90A1 +:102009000220121609D312159C500302216FE49085 +:102019000372F0900375F0A3F0C262781DE6FFE445 +:10202900FCFDFE9000BE121609121464E47B64FAEA +:10203900F9F81214EF9002B9EEF0A3EFF0900373E0 +:10204900E06E7003A3E06F602F900234E0FCA3E020 +:10205900FD9002B9E0FEA3E0FF1213CC7C007D6481 +:102069001213DE90036CEEF0A3EFF0C2ACE4FCFDBA +:10207900900230121615D2AC9002B9E0FFA3E0909D +:102089000373CFF0A3EFF09002811215FD781CEFD6 +:1020990026F618EE36F6C3781CE6941018E6940E68 +:1020A90040380874F026F61874F136F6900373E098 +:1020B900FEA3E0FFC390036DE09F90036CE09E5088 +:1020C90009E475F00112143380CC90036CEEF0A38F +:1020D900EFF0E4781BF608F680BC900373E0FEA3EA +:1020E900E0FF90036CE0FCA3E0FDC39FEC9E502A47 +:1020F9007E037FE8121684C006C007900373E0FED2 +:10210900A3E0FFFBAA06E4F9F8D007D0061214EF02 +:10211900900370EEF0A3EFF0800A9003707403F05F +:10212900A374E8F09000ADE0FEA3E0FFEE3395E084 +:10213900FDFC900281121609C312159C5022C3900E +:1021490000ACE095129000ABE0951150139000AFF0 +:10215900E0FF90036EE004F0C39F4004EFF0D26407 +:1021690012256B022240900028E0FEA3E0FFC3E4A1 +:102179009FFFE49EFE3395E0FDFC900220121609B4 +:10218900C312159C4003022240E490036EF0C2641E +:102199009002811215FD90036812161590036812BA +:1021A90015FDEC33500AC37818E69FF618E69EF63B +:1021B900C37818E6941018E6940E4078C37818E6A8 +:1021C900941018E6940E403B0874F026F61874F142 +:1021D90036F69000C61215FDEF2401FFE43EFEE439 +:1021E9003DFDE43CFC9000C6121615D390036DE04A +:1021F900940190036CE0940040C274FFF5F012144E +:102209003380B99000C21215FD9000C6121609C399 +:102219001215B2401F9000C61215FD9000C2121689 +:10222900091214569000C61216159000CAE475F0EA +:1022390001121433121B8B301832C2AC900373E0B5 +:10224900FEA3E0FF90036CEEF0A3EFF0E4FCFD9039 +:1022590002301216159002301215FD90022C12163A +:1022690015900234E4F0A37464F0D2AC900373E0E7 +:10227900FEA3E0FF90036CE0FAA3E0FBD39FEA9E84 +:10228900400A90036CEEF0A3EFF0801DEF25E0FF0C +:10229900EE33FE7C007D641213DEC3EB9FEA9E5091 +:1022A9000890036CEEF0A3EFF090036CE0FEA3E05E +:1022B900FF7C037DE8121684C006C007900373E013 +:1022C900FEA3E0FFFBAA06E4F9F8D007D006121432 +:1022D900EF900370EEF0A3EFF01216B1C2AC9002CA +:1022E90034E0A3E09000B5F090022C1215FD9000A7 +:1022F900BA1216159000CAE0FFA3E0900236CFF09B +:05230900A3EFF0D2ACCF +:01230E0022AC +:10256B00E49002BBF09002BBE0FFC394095020EF54 +:10257B0025E02402F582E43400F583E0FEA3E0C3FA +:10258B009512EE951150089002BBE004F080D63006 +:10259B006458C3900371E094E7900370E094035088 +:1025AB004990036DE004F0700690036CE004F0902A +:1025BB00036CE0FEA3E0FFE4FCFDEEC0E0EFC0E047 +:1025CB00900373E0FEA3E0FFFBCAEECAE4F9F8D078 +:1025DB00E0FFD0E0FE1214EFE47BE87A03F9F81287 +:1025EB001464900370EEF0A3EFF09002BBE0701A4E +:1025FB00D39000B2E095129000B1E0951150030218 +:10260B0027BFE4900234F0A3F022900014E0FEA365 +:10261B00E0FFC39512EE951140030226BF9000AC6C +:10262B00E095129000ABE0951150030226BF306489 +:10263B00030226BF900371E09484900370E094032F +:10264B0040030227BFC3E5129FFFE5119EFE7C00EE +:10265B007D64121684EEC0E0EFC0E0900014E0FE43 +:10266B00A3E0FFC39000ACE09FFF9000ABE09EFEA9 +:10267B00CBEFCBFAE4F9F8D0E0FFD0E0FE1214EF89 +:10268B00EF2484FFEE3403900370F0A3EFF090037C +:10269B0073E0FEA3E0FF900370E0FCA3E0FD1216D5 +:1026AB0084E47BE87A03F9F81214EF90036CEEF0F4 +:1026BB00A3EFF0223064030227BF9002BBE0F97551 +:1026CB00F064A42432FFE435F0FE900370E0FCA329 +:1026DB00E0FDD39FEC9E5011E975F064A4FFC3EDB0 +:1026EB009FEC95F040030227BF9002BBE0FF25E073 +:1026FB002400F582E43400F583E0FCA3E0FDEF2534 +:10270B00E02402F582E43400F583E0FEA3E06D7073 +:10271B0002EE6C70030227BFC3E5129DFFE5119C0F +:10272B00FE7C007D64121684ECC0E0EDC0E0EEC0D0 +:10273B00E0EFC0E09002BBE0FF25E02400F582E46F +:10274B003400F583E0FCA3E0FDEF25E02402F582E5 +:10275B00E43400F583E0FEA3E0C39DFFEE9CFECBCB +:10276B00EFCBFAE4F9F8D0E0FFD0E0FED0E0FDD0FB +:10277B00E0FC1214EFCDEFCDCCEECC9002BBE075AC +:10278B00F064A42DFEE5F03C900370F0A3CEF09026 +:10279B000373E0FEA3E0FF900370E0FCA3E0FD12E7 +:1027AB001684E47BE87A03F9F81214EF90036CEECD +:0427BB00F0A3EFF0A8 +:0127BF0022F7 +:101B8B00E49002BBF0A3F0A3F0A3F0A3F0A3F0A3A7 +:101B9B00F0A3F0A3F07819E6FE08E6FF2414FDE4A9 +:101BAB003EFC900204E0FAA3E0FBD39DEA9C5011AB +:101BBB00EB2414FDE43AFCD3EF9DEE9C5003021D85 +:101BCB0092900204E0FEA3E0FF7819EEF608EFF620 +:101BDB002487FFEE34F5FE9002BDF0A3EFF07C00FE +:101BEB007D111213CCC374689FFF74429EFECBEF22 +:101BFB00CBFA3395E0F9F89002BDE0FEA3E0FFEEDF +:101C0B003395E0FDFC121464E47B107A27F9F8128B +:101C1B005E8FEF2422FFEE3406FEE43DFDE43CFC38 +:101C2B009000B6E0F8A3E0F9A3E0FAA3E0FB1214EE +:101C3B0064E47BD07A07F9F81214EF9002C2EEF04D +:101C4B00A3EFF0E4FCFD9000B6E0F8A3E0F9A3E00D +:101C5B00FAA3E0FBC31215B250159000B6E0A3E057 +:101C6B00A3E0FFA3E09002C2CFF0A3EFF08065E406 +:101C7B007F06FEFDFC9000B6E0F8A3E0F9A3E0FAC6 +:101C8B00A3E0FB121464E47B0AFAF9F81214EFC810 +:101C9B00ECC8C9EDC9CAEECACBEFCB9002C2E0FECD +:101CAB00A3E0FFE4FCFDD31215B24028E47F06FE4F +:101CBB00FDFC9000B6E0F8A3E0F9A3E0FAA3E0FB8B +:101CCB00121464E47B0AFAF9F81214EF9002C2EED4 +:101CDB00F0A3EFF09002C2E0FEA3E0FF781DE6FD5B +:101CEB007C00121684E47B64FAF9F81214EF90026C +:101CFB00C2EEF0A3EFF0900373E0FCA3E0FDD39FE3 +:101D0B00EC9E501BC39002C3E09DFF9002C2E09C6F +:101D1B00FE90036DE02FF090036CE03EF0804A9054 +:101D2B0002C2E0FEA3E0FFC3900374E09FFF9003A9 +:101D3B0073E09EFEC390036DE09F90036CE09E40AA +:101D4B000CA3E09FF090036CE09EF0801C9002C20D +:101D5B00E0FEA3E0FF7C007D061213CC7D64121322 +:101D6B00DE90036CEEF0A3EFF0C39000B2E09510A1 +:101D7B009000B1E0950F500F9002C2E0FFA3E090EE +:101D8B000373CFF0A3EFF0D3900205E094DD900244 +:101D9B0004E0940A5003021FE874FF7FFAFEFDFC77 +:101DAB009000B6E0F8A3E0F9A3E0FAA3E0FB12146D +:101DBB0064C8ECC8C9EDC9CAEECACBEFCB90022000 +:101DCB00E0FCA3E0FDA3E0FEA3E0FFC31215B240CD +:101DDB0003021FE8900373E0FEA3E0FF7C007D0687 +:101DEB001213CC7D641213DE9002BBEEF0A3EFF066 +:101DFB00900368E0FCA3E0FDA3E0FEA3E0FF126705 +:101E0B009EE47B0AFAF9F81214649000B6E0F8A38A +:101E1B00E0F9A3E0FAA3E0FB1214EF9002BFEFF09E +:101E2B00E47F19FEFDFC900368E0F8A3E0F9A3E062 +:101E3B00FAA3E0FB121464E47BE87A03F9F8125E70 +:101E4B008FEF2416FFEE340D9002C0F0A3EFF0C31A +:101E5B009000B2E095109000B1E0950F50429002C7 +:101E6B00BBE0FEA3E0FFC390036DE09F90036CE02B +:101E7B009E502DC3900371E0942C900370E094015D +:101E8B00501E20621B9000B0E0FF900375E004F041 +:101E9B00C39F5003021F93EFF0D263C261021F93E3 +:101EAB009002C0E0FEA3E0FFC39510EE950F5042E9 +:101EBB009002BBE0FCA3E0FDC390036DE09D90039B +:101ECB006CE09C502DC3900371E0942C900370E058 +:101EDB009401501E20621B9000B0E0FD900375E052 +:101EEB0004F0C39D5003021F93EDF0D263C2610255 +:101EFB001F93D3EF9510EE950F403D9002BBE0FE84 +:101F0B00A3E0FFD390036DE09F90036CE09E40280D +:101F1B00900371E0942C900370E09401501A2062AE +:101F2B00179000B0E0FF900376E004F0C39F405899 +:101F3B00EFF0C263D2618050D39000B2E095109065 +:101F4B0000B1E0950F403D9002BBE0FEA3E0FFD354 +:101F5B0090036DE09F90036CE09E4028900371E02E +:101F6B00942C900370E09401501A2062179000B0EB +:101F7B00E0FF900376E004F0C39F400CEFF0C263E8 +:101F8B00D2618004C263C261C39000B2E09510902D +:101F9B0000B1E0950F40469000B0E0FF900372E077 +:101FAB0004F09F4038EFF0D2629002BFE0941E50D5 +:101FBB001D900374E025E0FF900373E033FE7C007B +:101FCB007D641213DE90036CEEF0A3EFF02290020F +:0D1FDB00BBE0FFA3E090036CCFF0A3EFF09C +:011FE80022D6 +:1016B1009002BC121621000000009002C0121621F7 +:1016C10000000000900370E0FEA3E0FF7C007D0AB3 +:1016D1001213DE9002BBEFF0900220E0FCA3E0FDCC +:1016E100A3E0FEA3E0FFEC4D4E4F7003021B63909D +:1016F10002BBE0FFC3900235E09F900234E094000A +:101701004003021871E4FFFEFDFC900220E0F8A303 +:10171100E0F9A3E0FAA3E0FB12159C500302187153 +:101721009002BBE0FF900234E0FCA3E0FDEF9DFFDF +:10173100E49CFEC3EF9401EE9400500302183F7C39 +:10174100007D64121684E47B1EFAF9F81214EF90FE +:1017510002BC1216159002BCE0FCA3E0FDA3E0FE62 +:10176100A3E0FF90022CE0F8A3E0F9A3E0FAA3E0E4 +:10177100FB121464E47B107A27F9F81214EF90023B +:10178100C0121615900230E0FCA3E0FDA3E0FEA319 +:10179100E0FF9002C0E0F8A3E0F9A3E0FAA3E0FBC8 +:1017A100EF2BFFEE3AFEED39FDEC38FC90023012E2 +:1017B1001615900373E0FEA3E0FFE4FCFD90022CFC +:1017C100121615E47F64FEFDFC900230E0F8A3E000 +:1017D100F9A3E0FAA3E0FB12146490022CE0F8A351 +:1017E100E0F9A3E0FAA3E0FB1214EFC8ECC8C9EDDD +:1017F100C9CAEECACBEFCB900234E0FEA3E0FFE40E +:10180100FCFDC31215B25003021B63E47F64FEFDAD +:10181100FC900230E0F8A3E0F9A3E0FAA3E0FB12A8 +:10182100146490022CE0F8A3E0F9A3E0FAA3E0FB32 +:101831001214EF900234EEF0A3EFF0021B63900359 +:1018410073E0FEA3E0FFE4FCFD90022C121615905C +:10185100036CE0FEA3E0FFE4FCFD900230121615DC +:101861009002BBE0FF900234E4F0A3EFF0021B63AF +:101871009002BBE0F9FF900234E0FAA3E0FBD39FB2 +:10188100EA94005003021AE9900220E0FCA3E0FD73 +:10189100A3E0FEA3E0FFEC334003021AE9E9FFEB0A +:1018A1006F7001EA703220632F20612C900373E086 +:1018B100FEA3E0FFE4FCFD90022C12161590036CD0 +:1018C100E0FEA3E0FFE4FCFD900230121615E9FFF3 +:1018D100900234E4F0A3EFF0900234E0FEA3E0FFC5 +:1018E100D39401EE94005003021AAB900076E024E9 +:1018F10064FD900075E03400FCD3E5109DE50F9C7C +:101901005003021A98EF940FEE94004003021A98C4 +:10191100206306206103021A9874FF7FFDFEFDFC1F +:101921009000B6E0F8A3E0F9A3E0FAA3E0FB1214FB +:1019310064C8ECC8C9EDC9CAEECACBEFCB9002208E +:10194100E0FCA3E0FDA3E0FEA3E0FFD31215B2404B +:1019510035900220E0FCA3E0FDA3E0FEA3E0FF122E +:10196100158EE47B02FAF9F81214649000B6E0F8DF +:10197100A3E0F9A3E0FAA3E0FB1214EF9002C5EE95 +:10198100F0A3EFF080089002C5E4F0A304F090000A +:1019910075E0FEA3E0FFC39510EE950F5017C3E568 +:1019A100109FFFE50F9EFE7C007D821213DE9002E8 +:1019B100C4EFF080069002C47401F09000B6E0FC20 +:1019C100A3E0FDA3E0FEA3E0FF12158EE47B24FA61 +:1019D100F9F8121464ECC0E0EDC0E0EEC0E0EFC035 +:1019E100E0900220E0FCA3E0FDA3E0FEA3E0FFFB0A +:1019F100CAEECAC9EDC9C8ECC8D0E0FFD0E0FED03C +:101A0100E0FDD0E0FC1214EFCDEFCDCCEECC900296 +:101A110034E0A3E0FF9002BBE0FEC3EF9E04FB9025 +:101A210002C4E0FF7E001213CCCDEBCD7C0012137B +:101A3100DEA3E0FCA3E0FD1213DE90036FE004F0EF +:101A4100D39FE49E4013900235E024FFF0900234CE +:101A5100E034FFF0E490036FF0900234E0FEA3E085 +:101A6100FF7C007D0A1213CC900370EEF0A3EFF01F +:101A7100900373E0FEA3E0FF900370E0FCA3E0FDA0 +:101A8100121684E47BE87A03F9F81214EF90036CE0 +:101A9100EEF0A3EFF08013900235E024FFF0900206 +:101AA10034E034FFF0E490036FF0900373E0FEA3A1 +:101AB100E0FFE4FCFD90022C121615900234E0FECA +:101AC100A3E0FFE4FCFD90022CE0F8A3E0F9A3E021 +:101AD100FAA3E0FB121464E47B64FAF9F81214EF40 +:101AE100900230121615807A9002BBE0FB7A0090CA +:101AF1000234E07003A3E06B702C900373E0FEA34B +:101B0100E0FFE4FCFD90022C12161590036CE0FE40 +:101B1100A3E0FFE4FCFD900230121615900234EAB6 +:101B2100F0A3EBF0803C900373E0FEA3E0FFE4FC44 +:101B3100FD90022C121615900234E0FEA3E0FFE4A2 +:101B4100FCFD90022CE0F8A3E0F9A3E0FAA3E0FB8E +:101B5100121464E47B64FAF9F81214EF9002301263 +:101B61001615900234E0FEA3E0FFD39464EE9400D6 +:101B7100400A900234E4F0A37464F022C3EE9400AE +:091B81005007E4900234F0A3F0D7 +:011B8A002238 +:10672500305C0F305B0CC25CC25BC2AF1266A0125C +:0367350000A62299 +:108400002B370C800D480DDE0E740ED80F3C0FA0DC +:10841000100410361068000008980000089800004A +:10842000083400000AAB00C8006414010064055A57 +:10843000021101200053696E6F7765616C746800EA +:1084400000202206200000534833394630303400E3 +:108450000000004C494F4E000000000000000000EA +:10846000005A109A10360202000000000000000BB3 +:10847000B8020A005A0A8C0BB80202000000FFFF83 +:10848000B1E002FFFF63C002045A0FA01E465A0C5F +:108490009F0C6D0AAB0ADD03035A0D670CD10A4726 +:1084A0000A795A105400140064025A1068006405D6 +:1084B000050B540AAB6400000898000008980000FF +:1084C0000898000008340000000000005A741130C1 +:1084D0005A0A22FFAE000100000000005A0000000E +:1084E000000000000000000000000000000000008C +:1084F000000000000000000000000000000000007C +:10850000000000000000000000000000000000006B +:10851000000000000000000000000000000000005B +:10852000000000000000000000000000000000004B +:10853000000000000000000000000000000000003B +:10854000000000000000000000000000000000002B +:10855000000000000000000000000000000000001B +:10856000000000000000000000000000000000000B +:1085700000000000000000000000000000000000FB +:1085800000000000000000000000000000000000EB +:1085900000000000000000000000000000000000DB +:1085A00000000000000000000000000000000000CB +:1085B00000000000000000000000000000000000BB +:1085C00000000000000000000000000000000000AB +:1085D000000000000000000000000000000000009B +:1085E000000000000000000000000000000000008B +:1085F00000000000000000000000000000005AA57C +:108600002B370C800D480DDE0E740ED80F3C0FA0DA +:108610001004103610680000089800000898000048 +:10862000083400000AAB00C8006414010064055A55 +:10863000021101200053696E6F7765616C746800E8 +:1086400000202206200000534833394630303400E1 +:108650000000004C494F4E000000000000000000E8 +:10866000005A109A10360202000000000000000BB1 +:10867000B8020A005A0A8C0BB80202000000FFFF81 +:10868000B1E002FFFF63C002045A0FA01E465A0C5D +:108690009F0C6D0AAB0ADD03035A0D670CD10A4724 +:1086A0000A795A105400140064025A1068006405D4 +:1086B000050B540AAB6400000898000008980000FD +:1086C0000898000008340000000000005A741130BF +:1086D0005A0A22FFAE000100000000005A0000000C +:1086E000000000000000000000000000000000008A +:1086F000000000000000000000000000000000007A +:108700000000000000000000000000000000000069 +:108710000000000000000000000000000000000059 +:108720000000000000000000000000000000000049 +:108730000000000000000000000000000000000039 +:108740000000000000000000000000000000000029 +:108750000000000000000000000000000000000019 +:108760000000000000000000000000000000000009 +:1087700000000000000000000000000000000000F9 +:1087800000000000000000000000000000000000E9 +:1087900000000000000000000000000000000000D9 +:1087A00000000000000000000000000000000000C9 +:1087B00000000000000000000000000000000000B9 +:1087C00000000000000000000000000000000000A9 +:1087D0000000000000000000000000000000000099 +:1087E0000000000000000000000000000000000089 +:1087F00000000000000000000000000000005AA57A +:1010560002139EE86480F8E933E83360110460F017 +:10106600ED33EC337009E8FCE9FDEAFEEBFF220400 +:1010760060DED3EB9FEA9EE99DE8C2E78CF0C2F7FB +:1010860095F0400CE8CCF8E9CDF9EACEFAEBCFFBC7 +:1010960012136985D0F05804700320D5B3E80470A4 +:1010A600075002B2D50213A892D5EC0460F7E4CC3F +:1010B600C0E0C398F8603B94186008400DD0E0FB90 +:1010C600021380E4FBFAC9FC8028E830E406E4C990 +:1010D600FBE4CAFCE830E305E4C9CACBFCE85407E4 +:1010E6006010F8C3E913F9EA13FAEB13FBEC13FCEF +:1010F600D8F130F52FC3E49CFCEF9BFFEE9AFEED92 +:1011060099FDD0E0FBEF4E4D4C701222DB0302132B +:10111600A5EC2CFCEF33FFEE33FEED33FDED30E7AF +:10112600EB021380EF2BFFEE3AFEED39FDD0E0FB2C +:1011360050130BBB00030213A8ED13FDEE13FEEFD5 +:0811460013FFEC13FC021380FF +:10114E00EC4D6011E8497017ED33EC3304600DE49B +:10115E00FCFFFEFD22E933E8330470F802139E1201 +:10116E00136958046009E4CC248150062850090202 +:10117E0013A82840030213A5C0E0EB4A7044B980BF +:10118E0006D0E0FB021394EF4E701CBD8008EBFFFF +:10119E00EAFEE9FD80EBE98DF0A4FEE5F0021237E0 +:1011AE00E9CDF9EAFEEBFFEF89F0A4FCE5F0CE897C +:1011BE00F0A42EFFE435F0CD89F0A42DFEE435F039 +:1011CE008067EF4E7005BD80D780C3EF8BF0A4AC67 +:1011DE00F0EE8BF0A42CFCE435F0F8EF8AF0A42CA2 +:1011EE00E5F038FCE433CB8DF0A42CFCE5F03BF8B5 +:1011FE00EE8AF0A42CFCE5F038F8E433CF89F0A4A5 +:10120E002CFCE5F038CF3400CE89F0A42FFFE5F0AA +:10121E003EFEE433C98DF0A42EFEE5F039CD8AF002 +:10122E00A42FFFE5F03EFEE43DFD33D0E0FB50077A +:10123E000BBB000F0213A8EC2CFCEF33FFEE33FEBA +:06124E00ED33FD021380E8 +:101254000213A8EC5D046005E85904700302139EB0 +:10126400121369580460F6EC4860F2EC7004FDFE59 +:10127400FF22C860DB2481C85009C398600250066D +:101284000213A59850CAF582E9294B4A7005AB822E +:1012940002139475F0007C1A7880C3EF9BEE9AEDEC +:1012A40099400DC3EF9BFFEE9AFEED99FDE842F0E5 +:1012B400DC23ACF0D0E0FFD0E0FED0E0FDAB822038 +:1012C400E7101BEB60BAEC2CFCEF33FFEE33FEEDC2 +:1012D40033FD021380E803F830E705C0F075F00031 +:1012E400EF2FFFEE33FEED33FD40B830E7C280AAA6 +:1012F40075F020800E75F010800575F0087D007E75 +:10130400007F003392D530D50312158EEC33401094 +:10131400EF33FFEE33FEED33FDEC33FCD5F0ED227D +:0E132400E5F0247EA2D513CC92E7CDCEFF22B9 +:10133200EDD2E7CD33EC3392D524814006E4FFFEB3 +:10134200FDFC22FCE4CFCECDCC24E0501174FF8012 +:10135200EDC3CC13CCCD13CDCE13CECF13CF0470AF +:07136200F030D5DE02158E0C +:10136900E9D2E7C933E833F892D5EDD2E7CD33ECCA +:0713790033FC5002B2D52243 +:10138000EC30E7100FBF000C0EBE00080DBD0004CE +:101390000BEB6014A2D5EB13FCED92E7FD2274FF7A +:1013A000FCFDFEFF22E480F8A2D574FF13FC7D80D3 +:0313B000E480EFE7 +:1013B300BB010689828A83E0225002E722BBFE0238 +:0913C300E32289828A83E493226B +:1013CC00EF8DF0A4A8F0CF8CF0A428CE8DF0A42E35 +:0213DC00FE22EF +:1013DE00BC000BBE0029EF8DF084FFADF022E4CCF3 +:1013EE00F875F008EF2FFFEE33FEEC33FCEE9DECBC +:1013FE00984005FCEE9DFE0FD5F0E9E4CEFD22ED02 +:10140E00F8F5F0EE8420D21CFEADF075F008EF2F4B +:10141E00FFED33FD4007985006D5F0F222C398FD3C +:05142E000FD5F0EA22D9 +:10143300C5F0F8A3E028F0C5F0F8E5821582700244 +:061443001583E038F022E1 +:0D144900EF2BFFEE3AFEED39FDEC38FC22F2 +:0E145600C3EF9BFFEE9AFEED99FDEC98FC2291 +:10146400E88FF0A4CC8BF0A42CFCE98EF0A42CFC27 +:101474008AF0EDA42CFCEA8EF0A4CDA8F08BF0A4A5 +:101484002DCC3825F0FDE98FF0A42CCD35F0FCEB04 +:101494008EF0A4FEA9F0EB8FF0A4CFC5F02ECD39C9 +:0F14A400FEE43CFCEAA42DCE35F0FDE43CFC2236 +:1014B30075F008758200EF2FFFEE33FECD33CDCCF0 +:1014C30033CCC58233C5829BED9AEC99E582984073 +:1014D3000CF582EE9BFEED9AFDEC99FC0FD5F0D650 +:1014E300E4CEFBE4CDFAE4CCF9A88222B800C1B97A +:1014F3000059BA002DEC8BF084CFCECDFCE5F0CBB8 +:10150300F97818EF2FFFEE33FEED33FDEC33FCEBF0 +:1015130033FB10D703994004EB99FB0FD8E5E4F9AB +:10152300FA227818EF2FFFEE33FEED33FDEC33FC98 +:10153300C933C910D7059BE99A4007EC9BFCE99A8C +:10154300F90FD8E0E4C9FAE4CCFB2275F010EF2FD1 +:10155300FFEE33FEED33FDCC33CCC833C810D707D1 +:101563009BEC9AE899400AED9BFDEC9AFCE899F80C +:0E1573000FD5F0DAE4CDFBE4CCFAE4C8F9229F +:105E8F00C2D5E830E70FB2D5E4C39BFBE49AFAE43E +:105E9F0099F9E498F8EC30E717B2D5125EC51214F1 +:105EAF00EFE4C39BFBE49AFAE499F9E498F88003D2 +:105EBF001214EF30D50DE4C39FFFE49EFEE49DFD69 +:045ECF00E49CFC2231 +:0D158100EF4BFFEE4AFEED49FDEC48FC2269 +:0E158E00C3E49FFFE49EFEE49DFDE49CFC226E +:10159C00EB9FF5F0EA9E42F0E99D42F0EC6480C8C6 +:0615AC0064809845F02266 +:1015B200EB9FF5F0EA9E42F0E99D42F0E89C45F08F +:0115C2002206 +:1015C300E8600FECC313FCED13FDEE13FEEF13FF06 +:0315D300D8F1222A +:1015D600E86010ECA2E713FCED13FDEE13FEEF132B +:0415E600FFD8F02218 +:1015EA00E8600FEFC333FFEE33FEED33FDEC33FC5F +:0315FA00D8F12203 +:0C15FD00E0FCA3E0FDA3E0FEA3E0FF2261 +:0C160900E0F8A3E0F9A3E0FAA3E0FB2264 +:0C161500ECF0A3EDF0A3EEF0A3EFF02248 +:10162100A8828583F0D083D0821216381216381220 +:101631001638121638E473E493A3C583C5F0C58345 +:10164100C8C582C8F0A3C583C5F0C583C8C582C813 +:011651002276 +:0C165200A42582F582E5F03583F58322A3 +:10165E00D083D082F8E4937012740193700DA3A31B +:10166E0093F8740193F5828883E47374029368602F +:06167E00EFA3A3A380DF2F +:10168400EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02DF3 +:10169400FDE43CFCE8A42EC8C5F03DFDE43CFCEFB1 +:0D16A400A4FFE5F028FEE43DFDE43CFC223F +:08679E00EC30E70312158E2216 +:00000001FF diff --git a/output/McuFlash_IAP.lnp b/output/McuFlash_IAP.lnp new file mode 100644 index 0000000..69a4d6c --- /dev/null +++ b/output/McuFlash_IAP.lnp @@ -0,0 +1,35 @@ +".\output\Main.obj", +".\output\Initial.obj", +".\output\InterruptApp.obj", +".\output\Led.obj", +".\output\KeyApp.obj", +".\output\LowPower.obj", +".\output\UartApp.obj", +".\output\Memory.obj", +".\output\AFE.obj", +".\output\Balance.obj", +".\output\Calculate.obj", +".\output\Calibrate.obj", +".\output\ChargerLoad.obj", +".\output\ExtE2PRom.obj", +".\output\Interrupt.obj", +".\output\KeyScan.obj", +".\output\McuFlash.obj", +".\output\McuLib.obj", +".\output\MosCtrl.obj", +".\output\PorSelfTest.obj", +".\output\Protect.obj", +".\output\RTC.obj", +".\output\TWI.obj", +".\output\Uart.obj", +".\output\Thermistor.obj", +".\output\STARTUP.obj", +".\output\GasGauge.obj", +".\code_gasguage\GasGaugeLib.LIB", +".\output\BootApp.obj", +".\output\DataFlash.obj" +TO ".\output\McuFlash_IAP" REGFILE (.\output\McuFlash_IAP.ORC) +PRINT(".\output\McuFlash_IAP.m51") RAMSIZE(256) +DISABLEWARNING (16) +CODE( 0X1000-0X87FF , ?CO?DATAFLASH(0x8400) ) +XDATA( 0X0200-0X0AFE ) diff --git a/output/McuFlash_IAP.m51 b/output/McuFlash_IAP.m51 new file mode 100644 index 0000000..fdb448a --- /dev/null +++ b/output/McuFlash_IAP.m51 @@ -0,0 +1,6914 @@ +BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 1 + + +BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: +C:\KEIL_V5\C51\BIN\BL51.EXE .\output\Main.obj, .\output\Initial.obj, .\output\InterruptApp.obj, .\output\Led.obj, .\outp +>> ut\KeyApp.obj, .\output\LowPower.obj, .\output\UartApp.obj, .\output\Memory.obj, .\output\AFE.obj, .\output\Balance.o +>> bj, .\output\Calculate.obj, .\output\Calibrate.obj, .\output\ChargerLoad.obj, .\output\ExtE2PRom.obj, .\output\Interr +>> upt.obj, .\output\KeyScan.obj, .\output\McuFlash.obj, .\output\McuLib.obj, .\output\MosCtrl.obj, .\output\PorSelfTest +>> .obj, .\output\Protect.obj, .\output\RTC.obj, .\output\TWI.obj, .\output\Uart.obj, .\output\Thermistor.obj, .\output\ +>> STARTUP.obj, .\output\GasGauge.obj, .\code_gasguage\GasGaugeLib.LIB, .\output\BootApp.obj, .\output\DataFlash.obj TO +>> .\output\McuFlash_IAP REGFILE (.\output\McuFlash_IAP.ORC) PRINT (.\output\McuFlash_IAP.m51) RAMSIZE (256) DISABLEWARN +>> ING (16) CODE (0X1000-0X87FF, ?CO?DATAFLASH (0X8400)) XDATA (0X0200-0X0AFE) + + +MEMORY MODEL: LARGE WITH FLOATING POINT ARITHMETIC + + +INPUT MODULES INCLUDED: + .\output\Main.obj (MAIN) + .\output\Initial.obj (INITIAL) + .\output\InterruptApp.obj (INTERRUPTAPP) + .\output\Led.obj (LED) + .\output\KeyApp.obj (KEYAPP) + .\output\LowPower.obj (LOWPOWER) + .\output\UartApp.obj (UARTAPP) + .\output\Memory.obj (MEMORY) + .\output\AFE.obj (AFE) + .\output\Balance.obj (BALANCE) + .\output\Calculate.obj (CALCULATE) + .\output\Calibrate.obj (CALIBRATE) + .\output\ChargerLoad.obj (CHARGERLOAD) + .\output\ExtE2PRom.obj (EXTE2PROM) + .\output\Interrupt.obj (INTERRUPT) + .\output\KeyScan.obj (KEYSCAN) + .\output\McuFlash.obj (MCUFLASH) + .\output\McuLib.obj (MCULIB) + .\output\MosCtrl.obj (MOSCTRL) + .\output\PorSelfTest.obj (PORSELFTEST) + .\output\Protect.obj (PROTECT) + .\output\RTC.obj (RTC) + .\output\TWI.obj (TWI) + .\output\Uart.obj (UART) + .\output\Thermistor.obj (THERMISTOR) + .\output\STARTUP.obj (?C_STARTUP) + .\output\GasGauge.obj (GASGAUGE) + .\code_gasguage\GasGaugeLib.LIB (GASGAUGELIB) + .\output\BootApp.obj (BOOTAPP) + .\output\DataFlash.obj (DATAFLASH) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?FPADD) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?FPMUL) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?FPDIV) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?FCAST) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?CASTF) + C:\KEIL_V5\C51\LIB\C51FPL.LIB (?C?FPGETOPN) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?CLDPTR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?IMUL) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?UIDIV) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?IILDX) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LADD) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSUB) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LMUL) + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 2 + + + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?ULDIV) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SLDIV) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LOR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LNEG) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SLCMP) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?ULCMP) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?ULSHR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SLSHR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSHL) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDXDATA0) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTKXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?OFFXADD) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?CCASE) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LIMUL) + C:\KEIL_V5\C51\LIB\C51L.LIB (LABS) + + +LINK MAP OF MODULE: .\output\McuFlash_IAP (MAIN) + + + TYPE BASE LENGTH RELOCATION SEGMENT NAME + ----------------------------------------------------- + + * * * * * * * D A T A M E M O R Y * * * * * * * + REG 0000H 0008H ABSOLUTE "REG BANK 0" + DATA 0008H 0007H UNIT ?DT?KEYSCAN + DATA 000FH 0006H UNIT ?DT?AFE + DATA 0015H 0002H UNIT _DATA_GROUP_ + IDATA 0017H 0007H UNIT ?ID?GASGAUGE + IDATA 001EH 0002H UNIT _IDATA_GROUP_ + DATA 0020H 0007H BIT_ADDR ?BA?MEMORY + BIT 0027H.0 0001H.5 UNIT ?BI?EXTE2PROM + BIT 0028H.5 0000H.6 UNIT _BIT_GROUP_ + BIT 0029H.3 0000H.5 UNIT ?BI?AFE + BIT 002AH.0 0000H.5 UNIT ?BI?BALANCE + BIT 002AH.5 0000H.4 UNIT ?BI?LOWPOWER + BIT 002BH.1 0000H.4 UNIT ?BI?UARTAPP + BIT 002BH.5 0000H.4 UNIT ?BI?CHARGERLOAD + BIT 002CH.1 0000H.4 UNIT ?BI?GASGAUGE + BIT 002CH.5 0000H.3 UNIT ?BI?INTERRUPTAPP + BIT 002DH.0 0000H.3 UNIT ?BI?MCUFLASH + BIT 002DH.3 0000H.2 UNIT ?BI?LED + BIT 002DH.5 0000H.2 UNIT ?BI?MOSCTRL + BIT 002DH.7 0000H.2 UNIT ?BI?PROTECT + BIT 002EH.1 0000H.2 UNIT ?BI?RTC + BIT 002EH.3 0000H.1 UNIT ?BI?CALIBRATE + BIT 002EH.4 0000H.1 UNIT ?BI?KEYSCAN + BIT 002EH.5 0000H.1 UNIT ?BI?PORSELFTEST + 002EH.6 0000H.2 *** GAP *** + IDATA 002FH 0001H UNIT ?ID?EXTE2PROM + 0030H 0070H *** GAP *** + IDATA 00A0H 0060H ABSOLUTE + + * * * * * * * X D A T A M E M O R Y * * * * * * * + XDATA 0000H 0002H ABSOLUTE + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 3 + + + XDATA 0002H 0014H ABSOLUTE + XDATA 0016H 0004H ABSOLUTE + XDATA 001AH 0004H ABSOLUTE + XDATA 001EH 0004H ABSOLUTE + XDATA 0022H 0002H ABSOLUTE + XDATA 0024H 0002H ABSOLUTE + XDATA 0026H 0002H ABSOLUTE + XDATA 0028H 0002H ABSOLUTE + XDATA 002AH 0001H ABSOLUTE + XDATA 002BH 0001H ABSOLUTE + XDATA 002CH 0002H ABSOLUTE + XDATA 002EH 0001H ABSOLUTE + XDATA 002FH 0001H ABSOLUTE + XDATA 0030H 0002H ABSOLUTE + XDATA 0032H 0002H ABSOLUTE + XDATA 0034H 0001H ABSOLUTE + XDATA 0035H 000CH ABSOLUTE + XDATA 0041H 0004H ABSOLUTE + XDATA 0045H 0002H ABSOLUTE + XDATA 0047H 000CH ABSOLUTE + XDATA 0053H 000CH ABSOLUTE + XDATA 005FH 0002H ABSOLUTE + XDATA 0061H 0001H ABSOLUTE + XDATA 0062H 0002H ABSOLUTE + XDATA 0064H 0002H ABSOLUTE + XDATA 0066H 0001H ABSOLUTE + XDATA 0067H 0001H ABSOLUTE + XDATA 0068H 0005H ABSOLUTE + XDATA 006DH 0004H ABSOLUTE + XDATA 0071H 0001H ABSOLUTE + XDATA 0072H 0001H ABSOLUTE + XDATA 0073H 0001H ABSOLUTE + XDATA 0074H 0001H ABSOLUTE + XDATA 0075H 0002H ABSOLUTE + XDATA 0077H 0002H ABSOLUTE + XDATA 0079H 0001H ABSOLUTE + XDATA 007AH 0001H ABSOLUTE + XDATA 007BH 0003H ABSOLUTE + XDATA 007EH 0004H ABSOLUTE + XDATA 0082H 0001H ABSOLUTE + XDATA 0083H 0004H ABSOLUTE + XDATA 0087H 0001H ABSOLUTE + XDATA 0088H 0001H ABSOLUTE + XDATA 0089H 0001H ABSOLUTE + XDATA 008AH 0002H ABSOLUTE + XDATA 008CH 0001H ABSOLUTE + XDATA 008DH 0001H ABSOLUTE + XDATA 008EH 0001H ABSOLUTE + XDATA 008FH 0002H ABSOLUTE + XDATA 0091H 0002H ABSOLUTE + XDATA 0093H 0002H ABSOLUTE + XDATA 0095H 0002H ABSOLUTE + XDATA 0097H 0001H ABSOLUTE + XDATA 0098H 0001H ABSOLUTE + XDATA 0099H 0001H ABSOLUTE + XDATA 009AH 0002H ABSOLUTE + XDATA 009CH 0002H ABSOLUTE + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 4 + + + XDATA 009EH 0002H ABSOLUTE + XDATA 00A0H 0002H ABSOLUTE + XDATA 00A2H 0001H ABSOLUTE + XDATA 00A3H 0002H ABSOLUTE + XDATA 00A5H 0002H ABSOLUTE + XDATA 00A7H 0002H ABSOLUTE + XDATA 00A9H 0001H ABSOLUTE + XDATA 00AAH 0001H ABSOLUTE + XDATA 00ABH 0002H ABSOLUTE + XDATA 00ADH 0002H ABSOLUTE + XDATA 00AFH 0001H ABSOLUTE + XDATA 00B0H 0001H ABSOLUTE + XDATA 00B1H 0002H ABSOLUTE + XDATA 00B3H 0002H ABSOLUTE + XDATA 00B5H 0001H ABSOLUTE + XDATA 00B6H 0004H ABSOLUTE + XDATA 00BAH 0004H ABSOLUTE + XDATA 00BEH 0004H ABSOLUTE + XDATA 00C2H 0004H ABSOLUTE + XDATA 00C6H 0004H ABSOLUTE + XDATA 00CAH 0002H ABSOLUTE + XDATA 00CCH 0001H ABSOLUTE + XDATA 00CDH 0001H ABSOLUTE + XDATA 00CEH 0002H ABSOLUTE + XDATA 00D0H 0001H ABSOLUTE + XDATA 00D1H 0002H ABSOLUTE + XDATA 00D3H 0002H ABSOLUTE + XDATA 00D5H 0002H ABSOLUTE + XDATA 00D7H 0002H ABSOLUTE + XDATA 00D9H 0002H ABSOLUTE + XDATA 00DBH 0001H ABSOLUTE + XDATA 00DCH 0001H ABSOLUTE + XDATA 00DDH 0121H ABSOLUTE + XDATA 01FEH 0002H ABSOLUTE + XDATA 0200H 00B5H UNIT ?XD?AFE + XDATA 02B5H 0070H UNIT _XDATA_GROUP_ + XDATA 0325H 0022H UNIT ?XD?PROTECT + XDATA 0347H 0012H UNIT ?XD?CALIBRATE + XDATA 0359H 000FH UNIT ?XD?EXTE2PROM + XDATA 0368H 000FH UNIT ?XD?GASGAUGE + XDATA 0377H 0008H UNIT ?XD?RTC + XDATA 037FH 0007H UNIT ?XD?UARTAPP + XDATA 0386H 0006H UNIT ?XD?BALANCE + XDATA 038CH 0003H UNIT ?XD?LED + XDATA 038FH 0003H UNIT ?XD?LOWPOWER + XDATA 0392H 0003H UNIT ?XD?_MCUPWM0SET?MCULIB + XDATA 0395H 0003H UNIT ?XD?_MCUPWM1SET?MCULIB + XDATA 0398H 0002H UNIT ?XD?INTERRUPTAPP + XDATA 039AH 0002H UNIT ?XD?CALCULATE + XDATA 039CH 0002H UNIT ?XD?CHARGERLOAD + XDATA 039EH 0002H UNIT ?XD?MCUFLASH + XDATA 03A0H 0001H UNIT ?XD?KEYAPP + XDATA 03A1H 0001H UNIT ?XD?PORSELFTEST + 03A2H 065EH *** GAP *** + XDATA 0A00H 0096H ABSOLUTE + + * * * * * * * C O D E M E M O R Y * * * * * * * + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 5 + + + 0000H 1000H *** GAP *** + CODE 1000H 0003H ABSOLUTE + CODE 1003H 0020H UNIT ?PR?INTERRUPTTIMER3?INTERRUPT + CODE 1023H 0003H ABSOLUTE + 1026H 0005H *** GAP *** + CODE 102BH 0003H ABSOLUTE + CODE 102EH 0025H UNIT ?PR?INITGPIO?INITIAL + CODE 1053H 0003H ABSOLUTE + CODE 1056H 065BH UNIT ?C?LIB_CODE + CODE 16B1H 04DAH UNIT ?PR?DATAFILTER?GASGAUGELIB + CODE 1B8BH 045EH UNIT ?PR?CORRECTDSGSOC?GASGAUGELIB + CODE 1FE9H 0326H UNIT ?PR?GASGAUGEMANAGE?GASGAUGE + CODE 230FH 025CH UNIT ?PR?GASGAUGEINIT?GASGAUGE + CODE 256BH 0255H UNIT ?PR?CORRECTCHGSOC?GASGAUGELIB + CODE 27C0H 01F0H UNIT ?PR?_CALCUTEMP?CALCULATE + CODE 29B0H 01D8H UNIT ?PR?_TWIREAD?TWI + CODE 2B88H 01C2H UNIT ?PR?_RTCREADTIME?RTC + CODE 2D4AH 01B3H UNIT ?PR?_E2PROMBKDATA?EXTE2PROM + CODE 2EFDH 0178H UNIT ?PR?AFECALCUCURR?CALCULATE + CODE 3075H 0167H UNIT ?PR?IAPCHECKHANDSHAKE?UARTAPP + CODE 31DCH 0148H UNIT ?PR?UARTRDCMDPROCESS?UARTAPP + CODE 3324H 0147H UNIT ?PR?_TWIWRITE?TWI + CODE 346BH 0144H UNIT ?PR?BALTURNONCHECK?BALANCE + CODE 35AFH 0142H UNIT ?CO?THERMISTOR + CODE 36F1H 0139H UNIT ?PR?_MCUTIMER3SET?MCULIB + CODE 382AH 0138H UNIT ?PR?AFECALCUVOL?CALCULATE + CODE 3962H 0100H UNIT ?CO?TWI + CODE 3A62H 00EEH UNIT ?PR?AFECALCUTEMPE?CALCULATE + CODE 3B50H 00D3H UNIT ?PR?E2PROMBKCHECK?EXTE2PROM + CODE 3C23H 00C1H UNIT ?PR?MCUFLASHPROCESS?MCUFLASH + CODE 3CE4H 00BDH UNIT ?PR?UARTCALICURRENT?UARTAPP + CODE 3DA1H 00BCH UNIT ?PR?PROTECTOV?PROTECT + CODE 3E5DH 00BCH UNIT ?PR?PROTECTUV?PROTECT + CODE 3F19H 00BCH UNIT ?PR?PROTECTOTC?PROTECT + CODE 3FD5H 00BCH UNIT ?PR?PROTECTUTC?PROTECT + CODE 4091H 00BCH UNIT ?PR?PROTECTOTD?PROTECT + CODE 414DH 00BCH UNIT ?PR?PROTECTUTD?PROTECT + CODE 4209H 00BAH UNIT ?PR?BALPROCESS?BALANCE + CODE 42C3H 00B3H UNIT ?PR?OFFSETCALCULATE?CALCULATE + CODE 4376H 00B2H UNIT ?PR?_AFEWRITEREG?AFE + CODE 4428H 00ADH UNIT ?PR?LEDDISPLAY?LED + CODE 44D5H 00ABH UNIT ?PR?INTERRUPTUARTAPPTX?UARTAPP + CODE 4580H 00A7H UNIT ?PR?UARTWRCMDPROCESS?UARTAPP + CODE 4627H 00A2H UNIT ?PR?KEYSCAN?KEYSCAN + CODE 46C9H 00A1H UNIT ?PR?SYSPARAINIT?INITIAL + CODE 476AH 009CH UNIT ?PR?_RTCMODIFYTIME?RTC + CODE 4806H 0097H UNIT ?PR?_INTERRUPTUARTAPPRX?UARTAPP + CODE 489DH 0097H UNIT ?PR?_MCUFLASHWRITE?MCUFLASH + CODE 4934H 0091H UNIT ?PR?_UART0INIT?UART + CODE 49C5H 008DH UNIT ?PR?_RTCINITTIME?RTC + CODE 4A52H 008CH UNIT ?PR?_MCUFLASHWRSECTOR?MCUFLASH + CODE 4ADEH 0088H UNIT ?PR?LOWPOWERCHECK?LOWPOWER + CODE 4B66H 0086H UNIT ?PR?_UARTWRITEINFO?UARTAPP + CODE 4BECH 0086H UNIT ?PR?AFEINITREG?AFE + CODE 4C72H 0081H UNIT ?PR?_MCUPWM0SET?MCULIB + CODE 4CF3H 0081H UNIT ?PR?_MCUPWM1SET?MCULIB + CODE 4D74H 0081H UNIT ?PR?_MCUPWM2SET?MCULIB + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 6 + + + CODE 4DF5H 007DH UNIT ?PR?E2PROMINIT?EXTE2PROM + CODE 4E72H 0079H UNIT ?PR?_UARTREADINFO?UARTAPP + CODE 4EEBH 0078H UNIT ?PR?MAIN?MAIN + CODE 4F63H 0076H UNIT ?PR?PROTECTOCRECOVER?PROTECT + CODE 4FD9H 006FH UNIT ?PR?_AFEREADREG?AFE + CODE 5048H 006DH UNIT ?PR?CALIVOLTAGE?CALIBRATE + CODE 50B5H 006CH UNIT ?PR?E2PROMERASE?EXTE2PROM + CODE 5121H 006BH UNIT ?PR?INTERRUPTINT4?INTERRUPT + CODE 518CH 0069H UNIT ?PR?UARTRDE2PROM?EXTE2PROM + CODE 51F5H 0066H UNIT ?PR?RAMCHECKPROCESS?MCULIB + CODE 525BH 005FH UNIT ?PR?_E2PROMWRITE?EXTE2PROM + CODE 52BAH 005FH UNIT ?PR?_E2PROMREAD?EXTE2PROM + CODE 5319H 005FH UNIT ?PR?_MCUFLASHREAD?MCUFLASH + CODE 5378H 005DH UNIT ?PR?AFERAMCHECK?AFE + CODE 53D5H 005CH UNIT ?PR?KEYSWITCHSPEED?KEYAPP + CODE 5431H 005BH UNIT ?PR?_RTCWRITE?RTC + CODE 548CH 005BH UNIT ?PR?_RTCREAD?RTC + CODE 54E7H 005AH UNIT ?PR?_MCUFLASHDATACHECK?MCUFLASH + CODE 5541H 0059H UNIT ?PR?PROTECTOCC?PROTECT + CODE 559AH 0059H UNIT ?PR?PROTECTOCD1?PROTECT + CODE 55F3H 0059H UNIT ?PR?PROTECTOCD2?PROTECT + CODE 564CH 0056H UNIT ?PR?E2PROMBKPROCESS?EXTE2PROM + CODE 56A2H 0055H UNIT ?PR?INITIAL?INITIAL + CODE 56F7H 0054H UNIT ?PR?UARTCALIRTC?UARTAPP + CODE 574BH 0052H UNIT ?PR?UARTCALIVOLTAGE?UARTAPP + CODE 579DH 0051H UNIT ?PR?_MCUCLOCKSET?MCULIB + CODE 57EEH 0051H UNIT ?PR?INTERRUPTUART0?UART + CODE 583FH 004FH UNIT ?PR?CALIPROCESS?CALIBRATE + CODE 588EH 004FH UNIT ?PR?PORPROTECTOTC?PORSELFTEST + CODE 58DDH 004FH UNIT ?PR?PORPROTECTUTC?PORSELFTEST + CODE 592CH 004FH UNIT ?PR?PORPROTECTOTD?PORSELFTEST + CODE 597BH 004FH UNIT ?PR?PORPROTECTUTD?PORSELFTEST + CODE 59CAH 004EH UNIT ?PR?LOADCHECK?CHARGERLOAD + CODE 5A18H 004CH UNIT ?PR?E2PROMBKRTC?EXTE2PROM + CODE 5A64H 004AH UNIT ?PR?AFEGETVOL?CALCULATE + CODE 5AAEH 004AH UNIT ?PR?MOSSTATUSCHECK?MOSCTRL + CODE 5AF8H 0049H UNIT ?PR?UARTCALITS1?UARTAPP + CODE 5B41H 0049H UNIT ?PR?UARTCALITS2?UARTAPP + CODE 5B8AH 0048H UNIT ?CO?UARTAPP + CODE 5BD2H 0048H UNIT ?PR?AFEGETTEMPE?CALCULATE + CODE 5C1AH 0048H UNIT ?PR?_DELAY1MS?MCULIB + CODE 5C62H 0048H UNIT ?PR?PORPROTECTOV?PORSELFTEST + CODE 5CAAH 0048H UNIT ?PR?PORPROTECTUV?PORSELFTEST + CODE 5CF2H 0046H UNIT ?PR?UARTRDRTC?EXTE2PROM + CODE 5D38H 0045H UNIT ?PR?WRITEMANUFACTURE?UARTAPP + CODE 5D7DH 0045H UNIT ?PR?CALITS1?CALIBRATE + CODE 5DC2H 0045H UNIT ?PR?CALITS2?CALIBRATE + CODE 5E07H 0044H UNIT ?PR?CALIRTCTIME?CALIBRATE + CODE 5E4BH 0044H UNIT ?PR?CHGERCHECK?CHARGERLOAD + CODE 5E8FH 0044H UNIT ?C?LDIV + CODE 5ED3H 0043H UNIT ?PR?SYSTEMINTOSLEEP?LOWPOWER + CODE 5F16H 0042H UNIT ?PR?INITVAR?INITIAL + CODE 5F58H 0041H UNIT ?PR?E2PROMBKBOOT?EXTE2PROM + CODE 5F99H 003FH UNIT ?PR?_LEDGETDISNUM?LED + CODE 5FD8H 003FH UNIT ?PR?_AFEBALCTL?AFE + CODE 6017H 003CH UNIT ?PR?AFECLRFLG?AFE + CODE 6053H 003BH UNIT ?PR?LOWPOWERPROCESS?LOWPOWER + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 7 + + + CODE 608EH 003BH UNIT ?PR?CALICURRENTGAIN?CALIBRATE + CODE 60C9H 003BH UNIT ?PR?PORSELFTEST?PORSELFTEST + CODE 6104H 0039H UNIT ?PR?_TWIINIT?TWI + CODE 613DH 0038H UNIT ?PR?WAKEUPPROCESS?LOWPOWER + CODE 6175H 0037H UNIT ?PR?READSUBCLASSID?UARTAPP + CODE 61ACH 0036H UNIT ?PR?UARTCALICUROFFSET?UARTAPP + CODE 61E2H 0035H UNIT ?PR?CTOCHECKVOL?BALANCE + CODE 6217H 0035H UNIT ?PR?_MCUFLASHWRONEBYTE?MCUFLASH + CODE 624CH 0034H UNIT ?CO?CALCULATE + CODE 6280H 0033H UNIT ?PR?AFERDFLG?AFE + CODE 62B3H 0033H UNIT ?PR?CLRRAM?MCULIB + CODE 62E6H 0033H UNIT ?PR?_MEMORYCOPY?MCULIB + CODE 6319H 0030H UNIT ?PR?KEYPROCESS?KEYAPP + CODE 6349H 002DH UNIT ?PR?MOSCTRL?MOSCTRL + CODE 6376H 002AH UNIT ?PR?_MEMORYSET?MCULIB + CODE 63A0H 0027H UNIT ?PR?_MCUFLASHCHECKFLG?MCUFLASH + CODE 63C7H 0027H UNIT ?PR?_TWICHECKSTATUS?TWI + CODE 63EEH 0026H UNIT ?PR?AFEENTERPD?AFE + CODE 6414H 0026H UNIT ?PR?CTOTURNONCHECK?BALANCE + CODE 643AH 0026H UNIT ?PR?_MCUFLASHBLANKCHECK?MCUFLASH + CODE 6460H 0025H UNIT ?PR?SYSTEMRESETPROCESS?MCULIB + CODE 6485H 0024H UNIT ?PR?_INTERRUPTINT4APP?INTERRUPTAPP + CODE 64A9H 0024H UNIT ?PR?INTERRUPTTIMER3APP?INTERRUPTAPP + CODE 64CDH 001FH UNIT ?PR?SYSTEMINTOPD?LOWPOWER + CODE 64ECH 001FH UNIT ?PR?PROTECTPROCESS?PROTECT + CODE 650BH 001EH UNIT ?PR?INITIRQ?INITIAL + CODE 6529H 001DH UNIT ?PR?E2PROMTWICHECK?EXTE2PROM + CODE 6546H 001DH UNIT ?PR?RTCTWICHECK?RTC + CODE 6563H 001CH UNIT ?PR?_CRC8CAL?TWI + CODE 657FH 001AH UNIT ?PR?AFETWICHECK?AFE + CODE 6599H 0018H UNIT ?PR?AFERDSTATUS?AFE + CODE 65B1H 0017H UNIT ?PR?_AFEALARMDIS?AFE + CODE 65C8H 0015H UNIT ?PR?_AFEMOSCTL?AFE + CODE 65DDH 0015H UNIT ?PR?MCUFLASHWRWAITCHECK?MCUFLASH + CODE 65F2H 0014H UNIT ?PR?UARTCHECK?UARTAPP + CODE 6606H 0014H UNIT ?PR?AFEINFOPROCESS?CALCULATE + CODE 661AH 0014H UNIT ?C_C51STARTUP + CODE 662EH 0013H UNIT ?PR?LEDAUTOOFF?LED + CODE 6641H 0013H UNIT ?PR?AFECHGERCHECKEN?AFE + CODE 6654H 0013H UNIT ?PR?AFECHGERCHECKDIS?AFE + CODE 6667H 0013H UNIT ?PR?AFELOADCHECKEN?AFE + CODE 667AH 0013H UNIT ?PR?AFELOADCHECKDIS?AFE + CODE 668DH 0013H UNIT ?PR?AFEWDTEN?AFE + CODE 66A0H 0013H UNIT ?PR?AFEWDTDIS?AFE + CODE 66B3H 0013H UNIT ?PR?AFEADCEN?AFE + CODE 66C6H 0013H UNIT ?PR?AFEADCDIS?AFE + CODE 66D9H 0013H UNIT ?PR?AFECADCEN?AFE + CODE 66ECH 0013H UNIT ?PR?AFECADCDIS?AFE + CODE 66FFH 0013H UNIT ?PR?AFETEMPADCEN?AFE + CODE 6712H 0013H UNIT ?PR?AFETEMPADCDIS?AFE + CODE 6725H 0013H UNIT ?PR?ISPPROCESS?BOOTAPP + CODE 6738H 0012H UNIT ?PR?UARTHANDSHAKE?UARTAPP + CODE 674AH 0012H UNIT ?PR?_AFEALARMEN?AFE + CODE 675CH 0010H UNIT ?PR?AFEINIT?AFE + CODE 676CH 0010H UNIT ?PR?CALICURZERO?CALIBRATE + CODE 677CH 000CH UNIT ?PR?MCUINTOIDLE?MCULIB + CODE 6788H 000CH UNIT ?PR?MCUINTOPD?MCULIB + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 8 + + + CODE 6794H 000AH UNIT ?PR?BALANCEPROCESS?BALANCE + CODE 679EH 0008H UNIT ?PR?_LABS?LABS + 67A6H 1C5AH *** GAP *** + CODE 8400H 0400H UNIT ?CO?DATAFLASH + + + +OVERLAY MAP OF MODULE: .\output\McuFlash_IAP (MAIN) + + +SEGMENT BIT_GROUP DATA_GROUP IDATA_GROUP XDATA_GROUP + +--> CALLED SEGMENT START LENGTH START LENGTH START LENGTH START LENGTH +----------------------------------------------------------------------------------------------------------------------- +?PR?INTERRUPTINT4?INTERRUPT ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_INTERRUPTINT4APP?INTERRUPTAPP + +?PR?_INTERRUPTINT4APP?INTERRUPTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUCLOCKSET?MCULIB + +*** NEW ROOT *************************************************** + +?PR?INTERRUPTTIMER3?INTERRUPT ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?INTERRUPTTIMER3APP?INTERRUPTAPP + +?PR?INTERRUPTTIMER3APP?INTERRUPTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?KEYSCAN?KEYSCAN + +*** NEW ROOT *************************************************** + +?PR?INTERRUPTUART0?UART ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_INTERRUPTUARTAPPRX?UARTAPP + +--> ?PR?INTERRUPTUARTAPPTX?UARTAPP + +?PR?_INTERRUPTUARTAPPRX?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?UARTRDCMDPROCESS?UARTAPP + +--> ?PR?UARTWRCMDPROCESS?UARTAPP + +--> ?PR?IAPCHECKHANDSHAKE?UARTAPP + +?PR?UARTRDCMDPROCESS?UARTAPP ----- ----- ----- ----- ----- ----- 02B5H 0002H + +--> ?PR?_UARTREADINFO?UARTAPP + +--> ?CO?UARTAPP + +?PR?_UARTREADINFO?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?_CRC8CAL?TWI ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?CO?TWI + +?PR?UARTWRCMDPROCESS?UARTAPP ----- ----- ----- ----- ----- ----- 02B5H 0002H + +--> ?PR?WRITEMANUFACTURE?UARTAPP + +--> ?PR?READSUBCLASSID?UARTAPP + +--> ?PR?UARTCALICURRENT?UARTAPP + +--> ?PR?UARTCALIVOLTAGE?UARTAPP + +--> ?PR?UARTCALICUROFFSET?UARTAPP + +--> ?PR?UARTCALITS1?UARTAPP + +--> ?PR?UARTCALITS2?UARTAPP + +--> ?PR?UARTCALIRTC?UARTAPP + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 9 + + + +--> ?CO?UARTAPP + +--> ?PR?_UARTWRITEINFO?UARTAPP + +?PR?WRITEMANUFACTURE?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?READSUBCLASSID?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UARTCALICURRENT?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UARTCALIVOLTAGE?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UARTCALICUROFFSET?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UARTCALITS1?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UARTCALITS2?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UARTCALIRTC?UARTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?_UARTWRITEINFO?UARTAPP ----- ----- ----- ----- ----- ----- 02B7H 0002H + +--> ?PR?_CRC8CAL?TWI + +?PR?IAPCHECKHANDSHAKE?UARTAPP ----- ----- ----- ----- ----- ----- 02B5H 0002H + +*** NEW ROOT *************************************************** + +?C_C51STARTUP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?MAIN?MAIN + +?PR?MAIN?MAIN ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?INITIAL?INITIAL + +--> ?PR?KEYPROCESS?KEYAPP + +--> ?PR?AFEINFOPROCESS?CALCULATE + +--> ?PR?BALANCEPROCESS?BALANCE + +--> ?PR?PROTECTPROCESS?PROTECT + +--> ?PR?PORSELFTEST?PORSELFTEST + +--> ?PR?LOADCHECK?CHARGERLOAD + +--> ?PR?CHGERCHECK?CHARGERLOAD + +--> ?PR?MOSCTRL?MOSCTRL + +--> ?PR?PROTECTOCRECOVER?PROTECT + +--> ?PR?LEDDISPLAY?LED + +--> ?PR?UARTCHECK?UARTAPP + +--> ?PR?GASGAUGEMANAGE?GASGAUGE + +--> ?PR?AFERAMCHECK?AFE + +--> ?PR?AFETWICHECK?AFE + +--> ?PR?E2PROMTWICHECK?EXTE2PROM + +--> ?PR?RTCTWICHECK?RTC + +--> ?PR?RAMCHECKPROCESS?MCULIB + +--> ?PR?SYSPARAINIT?INITIAL + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 10 + + + +--> ?PR?MCUFLASHWRWAITCHECK?MCUFLASH + +--> ?PR?E2PROMBKCHECK?EXTE2PROM + +--> ?PR?LOWPOWERCHECK?LOWPOWER + +--> ?PR?SYSTEMRESETPROCESS?MCULIB + +--> ?PR?ISPPROCESS?BOOTAPP + +--> ?PR?CALIPROCESS?CALIBRATE + +--> ?PR?MCUFLASHPROCESS?MCUFLASH + +--> ?PR?E2PROMBKPROCESS?EXTE2PROM + +--> ?PR?LOWPOWERPROCESS?LOWPOWER + +?PR?INITIAL?INITIAL ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?INITGPIO?INITIAL + +--> ?PR?CLRRAM?MCULIB + +--> ?PR?SYSPARAINIT?INITIAL + +--> ?PR?INITVAR?INITIAL + +--> ?PR?_MCUTIMER3SET?MCULIB + +--> ?PR?_UART0INIT?UART + +--> ?PR?_TWIINIT?TWI + +--> ?PR?_MCUPWM2SET?MCULIB + +--> ?PR?AFEINITREG?AFE + +--> ?PR?AFEINIT?AFE + +--> ?PR?AFECLRFLG?AFE + +--> ?PR?E2PROMINIT?EXTE2PROM + +--> ?PR?_RTCINITTIME?RTC + +--> ?PR?INITIRQ?INITIAL + +?PR?CLRRAM?MCULIB ----- ----- ----- ----- 001EH 0002H ----- ----- + +?PR?SYSPARAINIT?INITIAL ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUFLASHCHECKFLG?MCUFLASH + +--> ?PR?_MCUFLASHREAD?MCUFLASH + +--> ?PR?_MCUFLASHWRITE?MCUFLASH + +?PR?_MCUFLASHCHECKFLG?MCUFLASH 0028H.5 0000H.1 ----- ----- ----- ----- ----- ----- + +?PR?_MCUFLASHREAD?MCUFLASH 0028H.5 0000H.1 0015H 0002H ----- ----- 02B9H 0004H + +?PR?_MCUFLASHWRITE?MCUFLASH 0028H.7 0000H.1 ----- ----- ----- ----- 02BBH 0004H + +--> ?PR?_MCUFLASHBLANKCHECK?MCUFLASH + +--> ?PR?_MCUFLASHWRSECTOR?MCUFLASH + +--> ?PR?_MCUFLASHDATACHECK?MCUFLASH + +?PR?_MCUFLASHBLANKCHECK?MCUFLASH 0029H.0 0000H.1 ----- ----- ----- ----- ----- ----- + +?PR?_MCUFLASHWRSECTOR?MCUFLASH 0029H.0 0000H.1 ----- ----- ----- ----- 02BFH 0004H + +?PR?_MCUFLASHDATACHECK?MCUFLASH 0029H.0 0000H.1 ----- ----- ----- ----- 02BFH 0004H + +?PR?INITVAR?INITIAL ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_MEMORYSET?MCULIB + +?PR?_MEMORYSET?MCULIB ----- ----- ----- ----- ----- ----- 02C5H 0002H + +?PR?_MCUTIMER3SET?MCULIB ----- ----- ----- ----- ----- ----- 02B9H 0005H + +?PR?_UART0INIT?UART ----- ----- ----- ----- ----- ----- 02B9H 0002H + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 11 + + + +?PR?_MCUPWM2SET?MCULIB ----- ----- ----- ----- ----- ----- 02B9H 0003H + +?PR?AFEINIT?AFE 0028H.5 0000H.1 ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?_AFEWRITEREG?AFE 0028H.6 0000H.1 ----- ----- ----- ----- 02BDH 0006H + +--> ?PR?_TWIWRITE?TWI + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?_TWIINIT?TWI + +?PR?_TWIWRITE?TWI 0029H.1 0000H.1 ----- ----- ----- ----- 02F5H 000EH + +--> ?PR?_CRC8CAL?TWI + +--> ?PR?_TWICHECKSTATUS?TWI + +?PR?_TWICHECKSTATUS?TWI 0029H.2 0000H.1 ----- ----- ----- ----- ----- ----- + +?PR?AFECLRFLG?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?_AFEWRITEREG?AFE + +?PR?_AFEREADREG?AFE 0028H.6 0000H.1 ----- ----- ----- ----- 02C3H 0005H + +--> ?PR?_TWIREAD?TWI + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?_TWIINIT?TWI + +?PR?_TWIREAD?TWI 0029H.0 0000H.1 ----- ----- ----- ----- 02EBH 003AH + +--> ?PR?_TWICHECKSTATUS?TWI + +--> ?PR?_CRC8CAL?TWI + +?PR?E2PROMINIT?EXTE2PROM 0028H.5 0000H.1 ----- ----- ----- ----- 02B9H 0008H + +--> ?PR?_E2PROMREAD?EXTE2PROM + +?PR?_E2PROMREAD?EXTE2PROM 0028H.6 0000H.1 ----- ----- ----- ----- 02C5H 0006H + +--> ?PR?_TWIREAD?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?_RTCINITTIME?RTC 0028H.5 0000H.1 ----- ----- ----- ----- 02B9H 000CH + +--> ?PR?_MEMORYSET?MCULIB + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_RTCREADTIME?RTC + +?PR?_MEMORYCOPY?MCULIB ----- ----- ----- ----- ----- ----- 02DBH 0002H + +?PR?_RTCREADTIME?RTC 0028H.6 0000H.1 ----- ----- ----- ----- 02DBH 000BH + +--> ?PR?_RTCREAD?RTC + +--> ?PR?_RTCMODIFYTIME?RTC + +?PR?_RTCREAD?RTC 0028H.7 0000H.1 ----- ----- ----- ----- 02E6H 0005H + +--> ?PR?_TWIREAD?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?_RTCMODIFYTIME?RTC 0028H.7 0000H.1 ----- ----- ----- ----- 02E6H 000AH + +--> ?PR?_RTCWRITE?RTC + +?PR?_RTCWRITE?RTC 0029H.0 0000H.1 ----- ----- ----- ----- 02F0H 0005H + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 12 + + + +--> ?PR?_TWIWRITE?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?KEYPROCESS?KEYAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?KEYSWITCHSPEED?KEYAPP + +?PR?KEYSWITCHSPEED?KEYAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUPWM2SET?MCULIB + +?PR?AFEINFOPROCESS?CALCULATE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?AFERDFLG?AFE + +--> ?PR?AFECALCUVOL?CALCULATE + +--> ?PR?AFECALCUTEMPE?CALCULATE + +--> ?PR?AFECALCUCURR?CALCULATE + +?PR?AFERDFLG?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?AFEINIT?AFE + +?PR?AFECALCUVOL?CALCULATE ----- ----- ----- ----- ----- ----- 02B9H 0009H + +--> ?PR?AFEGETVOL?CALCULATE + +?PR?AFEGETVOL?CALCULATE 0028H.5 0000H.1 ----- ----- ----- ----- 02C2H 0001H + +--> ?PR?_AFEREADREG?AFE + +?PR?AFECALCUTEMPE?CALCULATE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?AFEGETTEMPE?CALCULATE + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?AFEGETTEMPE?CALCULATE 0028H.5 0000H.1 ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEREADREG?AFE + +?PR?_CALCUTEMP?CALCULATE ----- ----- ----- ----- ----- ----- 02B9H 0007H + +--> ?CO?THERMISTOR + +?PR?AFECALCUCURR?CALCULATE ----- ----- ----- ----- ----- ----- 02B9H 0005H + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?OFFSETCALCULATE?CALCULATE + +?PR?OFFSETCALCULATE?CALCULATE ----- ----- ----- ----- ----- ----- 02BEH 0003H + +--> ?CO?CALCULATE + +?PR?BALANCEPROCESS?BALANCE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?BALTURNONCHECK?BALANCE + +--> ?PR?CTOTURNONCHECK?BALANCE + +--> ?PR?BALPROCESS?BALANCE + +?PR?BALPROCESS?BALANCE ----- ----- ----- ----- ----- ----- 02B9H 0002H + +--> ?PR?_AFEBALCTL?AFE + +--> ?PR?CTOCHECKVOL?BALANCE + +?PR?_AFEBALCTL?AFE ----- ----- ----- ----- ----- ----- 02BBH 0002H + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CTOCHECKVOL?BALANCE 0028H.5 0000H.1 ----- ----- ----- ----- ----- ----- + +?PR?PROTECTPROCESS?PROTECT ----- ----- ----- ----- ----- ----- ----- ----- + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 13 + + + +--> ?PR?PROTECTOV?PROTECT + +--> ?PR?PROTECTUV?PROTECT + +--> ?PR?PROTECTOTC?PROTECT + +--> ?PR?PROTECTUTC?PROTECT + +--> ?PR?PROTECTOTD?PROTECT + +--> ?PR?PROTECTUTD?PROTECT + +--> ?PR?PROTECTOCC?PROTECT + +--> ?PR?PROTECTOCD1?PROTECT + +--> ?PR?PROTECTOCD2?PROTECT + +?PR?PORSELFTEST?PORSELFTEST ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECALCUVOL?CALCULATE + +--> ?PR?AFECALCUTEMPE?CALCULATE + +--> ?PR?PORPROTECTOV?PORSELFTEST + +--> ?PR?PORPROTECTUV?PORSELFTEST + +--> ?PR?PORPROTECTOTC?PORSELFTEST + +--> ?PR?PORPROTECTUTC?PORSELFTEST + +--> ?PR?PORPROTECTOTD?PORSELFTEST + +--> ?PR?PORPROTECTUTD?PORSELFTEST + +--> ?PR?GASGAUGEINIT?GASGAUGE + +?PR?GASGAUGEINIT?GASGAUGE ----- ----- ----- ----- ----- ----- 02B9H 0001H + +?PR?LOADCHECK?CHARGERLOAD ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?AFELOADCHECKEN?AFE + +--> ?PR?AFERDSTATUS?AFE + +--> ?PR?AFELOADCHECKDIS?AFE + +--> ?PR?AFECLRFLG?AFE + +?PR?AFELOADCHECKEN?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFERDSTATUS?AFE ----- ----- ----- ----- ----- ----- 02B9H 0002H + +--> ?PR?_AFEREADREG?AFE + +?PR?AFELOADCHECKDIS?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CHGERCHECK?CHARGERLOAD ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECHGERCHECKEN?AFE + +--> ?PR?AFERDSTATUS?AFE + +--> ?PR?AFECHGERCHECKDIS?AFE + +?PR?AFECHGERCHECKEN?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFECHGERCHECKDIS?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?MOSCTRL?MOSCTRL ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?MOSSTATUSCHECK?MOSCTRL + +--> ?PR?_AFEMOSCTL?AFE + +?PR?_AFEMOSCTL?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?PROTECTOCRECOVER?PROTECT ----- ----- ----- ----- ----- ----- ----- ----- + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 14 + + + +--> ?PR?AFECLRFLG?AFE + +?PR?LEDDISPLAY?LED ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_LEDGETDISNUM?LED + +--> ?PR?LEDAUTOOFF?LED + +?PR?GASGAUGEMANAGE?GASGAUGE ----- ----- ----- ----- ----- ----- 02B9H 0002H + +--> ?PR?CORRECTCHGSOC?GASGAUGELIB + +--> ?PR?CORRECTDSGSOC?GASGAUGELIB + +--> ?PR?DATAFILTER?GASGAUGELIB + +?PR?CORRECTCHGSOC?GASGAUGELIB ----- ----- ----- ----- ----- ----- 02BBH 0001H + +?PR?CORRECTDSGSOC?GASGAUGELIB ----- ----- ----- ----- ----- ----- 02BBH 0009H + +--> ?PR?_LABS?LABS + +?PR?DATAFILTER?GASGAUGELIB ----- ----- ----- ----- ----- ----- 02BBH 000CH + +?PR?AFERAMCHECK?AFE ----- ----- ----- ----- ----- ----- 02B9H 0003H + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?AFEINIT?AFE + +?PR?E2PROMBKCHECK?EXTE2PROM ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +?PR?ISPPROCESS?BOOTAPP ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?AFEWDTDIS?AFE + +?PR?AFEWDTDIS?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CALIPROCESS?CALIBRATE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?CALIVOLTAGE?CALIBRATE + +--> ?PR?CALICURRENTGAIN?CALIBRATE + +--> ?PR?CALICURZERO?CALIBRATE + +--> ?PR?CALITS1?CALIBRATE + +--> ?PR?CALITS2?CALIBRATE + +--> ?PR?CALIRTCTIME?CALIBRATE + +?PR?CALIVOLTAGE?CALIBRATE ----- ----- ----- ----- ----- ----- 02B9H 0002H + +?PR?CALITS1?CALIBRATE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?CALITS2?CALIBRATE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?CALIRTCTIME?CALIBRATE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCMODIFYTIME?RTC + +?PR?MCUFLASHPROCESS?MCUFLASH 0028H.5 0000H.2 ----- ----- ----- ----- 02B9H 0002H + +--> ?PR?_MCUFLASHWRITE?MCUFLASH + +--> ?PR?_MCUFLASHWRONEBYTE?MCUFLASH + +?PR?E2PROMBKPROCESS?EXTE2PROM ----- ----- ----- ----- ----- ----- 02B9H 0001H + +--> ?PR?E2PROMERASE?EXTE2PROM + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 15 + + + +--> ?PR?UARTRDE2PROM?EXTE2PROM + +--> ?PR?UARTRDRTC?EXTE2PROM + +--> ?PR?E2PROMBKRTC?EXTE2PROM + +--> ?PR?_E2PROMBKDATA?EXTE2PROM + +?PR?E2PROMERASE?EXTE2PROM ----- ----- ----- ----- ----- ----- 02BAH 000AH + +--> ?PR?_MEMORYSET?MCULIB + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?_E2PROMWRITE?EXTE2PROM 0028H.5 0000H.1 ----- ----- ----- ----- 02E3H 0006H + +--> ?PR?_TWIWRITE?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?UARTRDE2PROM?EXTE2PROM ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_CRC8CAL?TWI + +?PR?UARTRDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWI + +?PR?E2PROMBKRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- 02BAH 000AH + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?_E2PROMBKDATA?EXTE2PROM ----- ----- ----- ----- ----- ----- 02BAH 0021H + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +--> ?PR?E2PROMBKBOOT?EXTE2PROM + +?PR?E2PROMBKBOOT?EXTE2PROM ----- ----- ----- ----- ----- ----- 02DBH 0008H + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?LOWPOWERPROCESS?LOWPOWER ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?MCUINTOIDLE?MCULIB + +--> ?PR?SYSTEMINTOPD?LOWPOWER + +--> ?PR?SYSTEMINTOSLEEP?LOWPOWER + +--> ?PR?WAKEUPPROCESS?LOWPOWER + +?PR?SYSTEMINTOPD?LOWPOWER ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEMOSCTL?AFE + +--> ?PR?AFEENTERPD?AFE + +?PR?AFEENTERPD?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?SYSTEMINTOSLEEP?LOWPOWER ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?AFEWDTDIS?AFE + +--> ?PR?AFETEMPADCDIS?AFE + +--> ?PR?_AFEALARMEN?AFE + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?MCUINTOPD?MCULIB + + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 16 + + +?PR?AFETEMPADCDIS?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?_AFEALARMEN?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?WAKEUPPROCESS?LOWPOWER ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?_AFEALARMDIS?AFE + +--> ?PR?AFETEMPADCEN?AFE + +--> ?PR?AFEWDTEN?AFE + +?PR?_AFEALARMDIS?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFETEMPADCEN?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFEWDTEN?AFE ----- ----- ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + + + +SYMBOL TABLE OF MODULE: .\output\McuFlash_IAP (MAIN) + + VALUE TYPE NAME + ---------------------------------- + + ------- MODULE MAIN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:4EEBH PUBLIC main + D:00B1H PUBLIC RSTSTAT + ------- PROC MAIN + C:4EEBH LINE# 21 + C:4EEBH LINE# 22 + C:4EEBH LINE# 23 + C:4EEEH LINE# 25 + C:4EEEH LINE# 26 + C:4EEEH LINE# 27 + C:4EF1H LINE# 29 + C:4EF4H LINE# 31 + C:4EF7H LINE# 32 + C:4EF7H LINE# 33 + C:4EF9H LINE# 34 + C:4EFCH LINE# 36 + C:4EFFH LINE# 38 + C:4F02H LINE# 40 + C:4F05H LINE# 42 + C:4F08H LINE# 44 + C:4F0BH LINE# 46 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 17 + + + C:4F0EH LINE# 48 + C:4F11H LINE# 50 + C:4F14H LINE# 52 + C:4F17H LINE# 53 + C:4F17H LINE# 55 + C:4F1AH LINE# 56 + C:4F1AH LINE# 57 + C:4F1CH LINE# 58 + C:4F1FH LINE# 60 + C:4F22H LINE# 62 + C:4F25H LINE# 63 + C:4F28H LINE# 64 + C:4F2BH LINE# 66 + C:4F30H LINE# 67 + C:4F30H LINE# 68 + C:4F33H LINE# 69 + C:4F33H LINE# 71 + C:4F36H LINE# 73 + C:4F39H LINE# 75 + C:4F3CH LINE# 76 + C:4F3CH LINE# 78 + C:4F3FH LINE# 80 + C:4F42H LINE# 82 + C:4F45H LINE# 84 + C:4F48H LINE# 86 + C:4F4BH LINE# 88 + C:4F4EH LINE# 90 + C:4F58H LINE# 91 + C:4F60H LINE# 92 + ------- ENDPROC MAIN + ------- ENDMOD MAIN + + ------- MODULE INITIAL + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:650BH PUBLIC InitIRQ + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00A9H PUBLIC IEN1 + D:00E8H PUBLIC EXF0 + D:00D8H PUBLIC EXF1 + D:00E1H PUBLIC P0CR + D:00E2H PUBLIC P1CR + D:00E3H PUBLIC P2CR + D:00E4H PUBLIC P3CR + D:00BAH PUBLIC IENC + C:5F16H PUBLIC InitVar + C:102EH PUBLIC InitGPIO + B:00A8H.4 PUBLIC ES0 + B:00A8H.5 PUBLIC ET3 + D:0086H PUBLIC INSCON + B:0088H.7 PUBLIC TF3 + C:56A2H PUBLIC Initial + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 18 + + + C:46C9H PUBLIC SysParaInit + D:00E9H PUBLIC P0PCR + D:00EAH PUBLIC P1PCR + D:00EBH PUBLIC P2PCR + D:00ECH PUBLIC P3PCR + ------- PROC INITVAR + C:5F16H LINE# 18 + C:5F16H LINE# 19 + C:5F16H LINE# 20 + C:5F1CH LINE# 21 + C:5F27H LINE# 22 + C:5F31H LINE# 23 + C:5F3BH LINE# 24 + C:5F43H LINE# 26 + C:5F45H LINE# 27 + C:5F47H LINE# 28 + C:5F4DH LINE# 29 + C:5F4FH LINE# 30 + C:5F51H LINE# 32 + C:5F57H LINE# 33 + ------- ENDPROC INITVAR + ------- PROC SYSPARAINIT + C:46C9H LINE# 41 + C:46C9H LINE# 42 + C:46C9H LINE# 43 + C:46D2H LINE# 44 + C:46D2H LINE# 45 + C:46DEH LINE# 46 + C:46E7H LINE# 47 + C:46E7H LINE# 48 + C:46EFH LINE# 49 + C:46EFH LINE# 50 + C:46F1H LINE# 51 + C:46FAH LINE# 52 + C:46FAH LINE# 53 + C:4707H LINE# 54 + C:470EH LINE# 55 + C:4710H LINE# 57 + C:4710H LINE# 58 + C:4713H LINE# 60 + C:4713H LINE# 62 + C:471DH LINE# 63 + C:4727H LINE# 64 + C:4733H LINE# 65 + C:4742H LINE# 67 + C:474AH LINE# 69 + C:4753H LINE# 70 + C:4753H LINE# 71 + C:4756H LINE# 72 + C:4757H LINE# 73 + C:4762H LINE# 74 + C:4762H LINE# 75 + C:4765H LINE# 76 + C:4766H LINE# 78 + C:4766H LINE# 79 + C:4769H LINE# 80 + C:4769H LINE# 81 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 19 + + + ------- ENDPROC SYSPARAINIT + ------- PROC INITIRQ + C:650BH LINE# 89 + C:650BH LINE# 90 + C:650BH LINE# 91 + C:650DH LINE# 93 + C:650FH LINE# 95 + C:6518H LINE# 96 + C:651AH LINE# 98 + C:651DH LINE# 99 + C:6520H LINE# 100 + C:6523H LINE# 101 + C:6526H LINE# 103 + C:6528H LINE# 104 + ------- ENDPROC INITIRQ + ------- PROC INITGPIO + C:102EH LINE# 131 + C:102EH LINE# 132 + C:102EH LINE# 133 + C:1031H LINE# 134 + C:1034H LINE# 135 + C:1037H LINE# 137 + C:103AH LINE# 138 + C:103DH LINE# 139 + C:1040H LINE# 141 + C:1043H LINE# 142 + C:1046H LINE# 143 + C:1049H LINE# 145 + C:104CH LINE# 146 + C:104FH LINE# 147 + C:1052H LINE# 148 + ------- ENDPROC INITGPIO + ------- PROC INITIAL + C:56A2H LINE# 156 + C:56A2H LINE# 157 + C:56A2H LINE# 158 + C:56A7H LINE# 160 + C:56AAH LINE# 162 + C:56ADH LINE# 164 + C:56B0H LINE# 166 + C:56B3H LINE# 168 + C:56BCH LINE# 170 + C:56C3H LINE# 172 + C:56C8H LINE# 174 + C:56D1H LINE# 176 + C:56D4H LINE# 177 + C:56D9H LINE# 178 + C:56D9H LINE# 179 + C:56DBH LINE# 180 + C:56DBH LINE# 181 + C:56DEH LINE# 183 + C:56E1H LINE# 184 + C:56E1H LINE# 185 + C:56E6H LINE# 186 + C:56E6H LINE# 187 + C:56E8H LINE# 188 + C:56E8H LINE# 190 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 20 + + + C:56F1H LINE# 191 + C:56F1H LINE# 192 + C:56F3H LINE# 193 + C:56F3H LINE# 194 + C:56F3H LINE# 196 + C:56F6H LINE# 197 + ------- ENDPROC INITIAL + ------- ENDMOD INITIAL + + ------- MODULE INTERRUPTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + X:0398H PUBLIC ucTimer1s + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:6485H PUBLIC _InterruptINT4App + B:002CH.5 PUBLIC bTimer5msFlg + X:0399H PUBLIC ucTimer50ms + B:002CH.6 PUBLIC bTimer1sFlg + C:64A9H PUBLIC InterruptTimer3App + B:002CH.7 PUBLIC bTimer50msFlg + ------- PROC _INTERRUPTINT4APP + D:0007H SYMBOL IntSource + C:6485H LINE# 24 + C:6485H LINE# 25 + C:6485H LINE# 26 + C:6489H LINE# 27 + C:6489H LINE# 28 + C:648FH LINE# 29 + C:648FH LINE# 30 + C:6494H LINE# 31 + C:6496H LINE# 32 + C:6496H LINE# 33 + C:6497H LINE# 34 + C:649BH LINE# 35 + C:649BH LINE# 36 + C:64A1H LINE# 37 + C:64A1H LINE# 38 + C:64A6H LINE# 39 + C:64A8H LINE# 40 + C:64A8H LINE# 41 + C:64A8H LINE# 42 + ------- ENDPROC _INTERRUPTINT4APP + ------- PROC INTERRUPTTIMER3APP + C:64A9H LINE# 51 + C:64A9H LINE# 52 + C:64A9H LINE# 53 + C:64ABH LINE# 55 + C:64B6H LINE# 56 + C:64B6H LINE# 57 + C:64B8H LINE# 58 + C:64BAH LINE# 59 + C:64BAH LINE# 61 + C:64C5H LINE# 62 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 21 + + + C:64C5H LINE# 63 + C:64C7H LINE# 64 + C:64C9H LINE# 65 + C:64C9H LINE# 67 + C:64CCH LINE# 68 + ------- ENDPROC INTERRUPTTIMER3APP + ------- ENDMOD INTERRUPTAPP + + ------- MODULE LED + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:5F99H PUBLIC _LedGetDisNum + B:00A0H.0 PUBLIC P2_0 + B:00A0H.1 PUBLIC P2_1 + B:00A0H.2 PUBLIC P2_2 + B:00A0H.3 PUBLIC P2_3 + B:00A0H.4 PUBLIC P2_4 + X:038CH PUBLIC ucLedChgFlickCnt + B:00B0H.5 PUBLIC P3_5 + X:038DH PUBLIC ucLedBleFlickCnt + X:038EH PUBLIC ucLedTimeCnt + B:002DH.3 PUBLIC bLedDisFlg + B:002DH.4 PUBLIC bLedDisBleFlg + C:662EH PUBLIC LedAutoOff + C:4428H PUBLIC LedDisplay + ------- PROC _LEDGETDISNUM + D:0006H SYMBOL Rsoc + C:5F99H LINE# 24 + C:5F99H LINE# 25 + C:5F99H LINE# 26 + C:5FA2H LINE# 27 + C:5FA2H LINE# 28 + C:5FA5H LINE# 29 + C:5FA5H LINE# 30 + C:5FAEH LINE# 31 + C:5FAEH LINE# 32 + C:5FB1H LINE# 33 + C:5FB1H LINE# 34 + C:5FBAH LINE# 35 + C:5FBAH LINE# 36 + C:5FBDH LINE# 37 + C:5FBDH LINE# 38 + C:5FC6H LINE# 39 + C:5FC6H LINE# 40 + C:5FC9H LINE# 41 + C:5FC9H LINE# 42 + C:5FD2H LINE# 43 + C:5FD2H LINE# 44 + C:5FD5H LINE# 45 + C:5FD5H LINE# 47 + C:5FD5H LINE# 48 + C:5FD7H LINE# 49 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 22 + + + C:5FD7H LINE# 50 + ------- ENDPROC _LEDGETDISNUM + ------- PROC LEDAUTOOFF + C:662EH LINE# 59 + C:662EH LINE# 60 + C:662EH LINE# 61 + C:6631H LINE# 62 + C:6631H LINE# 63 + C:663CH LINE# 64 + C:663CH LINE# 65 + C:663EH LINE# 66 + C:6640H LINE# 67 + C:6640H LINE# 68 + C:6640H LINE# 69 + ------- ENDPROC LEDAUTOOFF + ------- PROC LEDDISPLAY + ------- DO + D:0007H SYMBOL LedDisNum + ------- ENDDO + C:4428H LINE# 80 + C:4428H LINE# 81 + C:4428H LINE# 84 + C:442BH LINE# 85 + C:442BH LINE# 86 + C:4436H LINE# 87 + C:4436H LINE# 88 + C:4438H LINE# 89 + C:443DH LINE# 90 + C:443DH LINE# 91 + C:443FH LINE# 93 + C:443FH LINE# 94 + C:4441H LINE# 95 + C:4441H LINE# 97 + C:4444H LINE# 98 + C:4444H LINE# 99 + C:444FH LINE# 100 + C:444FH LINE# 101 + C:4451H LINE# 102 + C:4456H LINE# 103 + C:4456H LINE# 104 + C:4458H LINE# 106 + C:4458H LINE# 107 + C:445AH LINE# 108 + C:445AH LINE# 110 + C:445DH LINE# 111 + C:445DH LINE# 112 + C:4468H LINE# 113 + C:446BH LINE# 114 + C:446BH LINE# 115 + C:4478H LINE# 116 + C:4478H LINE# 117 + C:447CH LINE# 118 + C:447CH LINE# 119 + C:4481H LINE# 120 + C:4483H LINE# 121 + C:4487H LINE# 122 + C:4487H LINE# 123 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 23 + + + C:448CH LINE# 124 + C:448EH LINE# 125 + C:4490H LINE# 126 + C:4494H LINE# 127 + C:4494H LINE# 128 + C:4499H LINE# 129 + C:449BH LINE# 130 + C:449DH LINE# 131 + C:449FH LINE# 132 + C:44A3H LINE# 133 + C:44A3H LINE# 134 + C:44A8H LINE# 135 + C:44AAH LINE# 136 + C:44ACH LINE# 137 + C:44AEH LINE# 138 + C:44B0H LINE# 139 + C:44B5H LINE# 140 + C:44B5H LINE# 141 + C:44C2H LINE# 142 + C:44C2H LINE# 143 + C:44C4H LINE# 145 + C:44C4H LINE# 146 + C:44D1H LINE# 147 + C:44D1H LINE# 149 + C:44D4H LINE# 150 + ------- ENDPROC LEDDISPLAY + ------- ENDMOD LED + + ------- MODULE KEYAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + D:00B7H PUBLIC PWM2CON + C:6319H PUBLIC KeyProcess + B:0080H.3 PUBLIC P0_3 + C:53D5H PUBLIC KeySwitchSpeed + X:03A0H PUBLIC ucDsgingSpeed + ------- PROC KEYSWITCHSPEED + C:53D5H LINE# 20 + C:53D5H LINE# 21 + C:53D5H LINE# 22 + C:53D7H LINE# 23 + C:53D9H LINE# 24 + C:53DBH LINE# 26 + C:53E1H LINE# 27 + C:53E1H LINE# 28 + C:53E3H LINE# 29 + C:53E5H LINE# 30 + C:53F5H LINE# 31 + C:53F8H LINE# 32 + C:53F9H LINE# 33 + C:5400H LINE# 34 + C:5400H LINE# 35 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 24 + + + C:5403H LINE# 36 + C:5405H LINE# 37 + C:5412H LINE# 38 + C:5415H LINE# 39 + C:5416H LINE# 41 + C:5416H LINE# 42 + C:541BH LINE# 43 + C:541DH LINE# 44 + C:542DH LINE# 45 + C:5430H LINE# 46 + C:5430H LINE# 47 + ------- ENDPROC KEYSWITCHSPEED + ------- PROC KEYPROCESS + C:6319H LINE# 56 + C:6319H LINE# 57 + C:6319H LINE# 58 + C:631CH LINE# 59 + C:631CH LINE# 60 + C:631EH LINE# 61 + C:632FH LINE# 62 + C:632FH LINE# 63 + C:632FH LINE# 64 + C:6332H LINE# 65 + C:6333H LINE# 67 + C:6333H LINE# 68 + C:6335H LINE# 69 + C:633AH LINE# 70 + C:633BH LINE# 72 + C:633BH LINE# 73 + C:633DH LINE# 74 + C:633EH LINE# 76 + C:633EH LINE# 77 + C:6340H LINE# 78 + C:6343H LINE# 79 + C:6343H LINE# 80 + C:6345H LINE# 81 + C:6346H LINE# 83 + C:6346H LINE# 84 + C:6348H LINE# 85 + C:6348H LINE# 86 + C:6348H LINE# 88 + C:6348H LINE# 89 + C:6348H LINE# 90 + C:6348H LINE# 91 + C:6348H LINE# 92 + ------- ENDPROC KEYPROCESS + ------- ENDMOD KEYAPP + + ------- MODULE LOWPOWER + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:038FH PUBLIC ucSleepTimerCnt + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 25 + + + B:00A8H.7 PUBLIC EA + B:00C8H.6 PUBLIC ENTWI + D:00B7H PUBLIC PWM2CON + B:002AH.5 PUBLIC bPDFlg + B:00A0H.0 PUBLIC P2_0 + B:0080H.3 PUBLIC P0_3 + B:00A0H.1 PUBLIC P2_1 + B:00A0H.2 PUBLIC P2_2 + B:00A0H.3 PUBLIC P2_3 + D:00D8H PUBLIC EXF1 + B:00A0H.4 PUBLIC P2_4 + B:00A0H.5 PUBLIC P2_5 + X:0390H PUBLIC ucPDTimerCnt + C:5ED3H PUBLIC SystemIntoSleep + C:4ADEH PUBLIC LowPowerCheck + B:002AH.6 PUBLIC bPCEnterPDFlg + C:6053H PUBLIC LowPowerProcess + C:613DH PUBLIC WakeUpProcess + D:00B1H PUBLIC RSTSTAT + C:64CDH PUBLIC SystemIntoPD + B:00A8H.4 PUBLIC ES0 + B:00A8H.5 PUBLIC ET3 + X:0391H PUBLIC ucResetFlag + B:002AH.7 PUBLIC bWakeupFlg + B:002BH.0 PUBLIC bSleepFlg + ------- PROC WAKEUPPROCESS + C:613DH LINE# 26 + C:613DH LINE# 27 + C:613DH LINE# 28 + C:6140H LINE# 29 + C:6140H LINE# 30 + C:6142H LINE# 31 + C:6145H LINE# 32 + C:6145H LINE# 33 + C:614AH LINE# 34 + C:614CH LINE# 36 + C:614EH LINE# 37 + C:6153H LINE# 38 + C:6158H LINE# 40 + C:615AH LINE# 41 + C:615CH LINE# 42 + C:615EH LINE# 44 + C:6163H LINE# 45 + C:6166H LINE# 46 + C:6169H LINE# 47 + C:6169H LINE# 48 + C:616EH LINE# 49 + C:6170H LINE# 50 + C:6174H LINE# 51 + C:6174H LINE# 52 + ------- ENDPROC WAKEUPPROCESS + ------- PROC SYSTEMINTOPD + C:64CDH LINE# 61 + C:64CDH LINE# 62 + C:64CDH LINE# 63 + C:64CDH LINE# 64 + C:64CDH LINE# 65 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 26 + + + C:64D0H LINE# 67 + C:64D2H LINE# 68 + C:64DFH LINE# 69 + C:64E1H LINE# 70 + C:64E6H LINE# 72 + C:64E9H LINE# 73 + ------- ENDPROC SYSTEMINTOPD + ------- PROC SYSTEMINTOSLEEP + C:5ED3H LINE# 83 + C:5ED3H LINE# 84 + C:5ED3H LINE# 85 + C:5EE0H LINE# 86 + C:5EE2H LINE# 87 + C:5EE4H LINE# 89 + C:5EE7H LINE# 90 + C:5EEAH LINE# 91 + C:5EEFH LINE# 92 + C:5EF1H LINE# 93 + C:5EF4H LINE# 94 + C:5EF7H LINE# 95 + C:5EF7H LINE# 96 + C:5EF9H LINE# 97 + C:5EFBH LINE# 99 + C:5EFBH LINE# 100 + C:5EFDH LINE# 101 + C:5EFDH LINE# 102 + C:5F02H LINE# 104 + C:5F04H LINE# 105 + C:5F06H LINE# 106 + C:5F08H LINE# 107 + C:5F0BH LINE# 108 + C:5F10H LINE# 109 + C:5F12H LINE# 111 + C:5F15H LINE# 112 + ------- ENDPROC SYSTEMINTOSLEEP + ------- PROC LOWPOWERCHECK + C:4ADEH LINE# 123 + C:4ADEH LINE# 124 + C:4ADEH LINE# 125 + C:4AE4H LINE# 126 + C:4AE4H LINE# 127 + C:4AE6H LINE# 128 + C:4AE8H LINE# 129 + C:4AE9H LINE# 130 + C:4AECH LINE# 131 + C:4AECH LINE# 132 + C:4AFBH LINE# 133 + C:4AFBH LINE# 134 + C:4AFDH LINE# 135 + C:4AFFH LINE# 136 + C:4AFFH LINE# 137 + C:4B00H LINE# 138 + C:4B03H LINE# 139 + C:4B03H LINE# 140 + C:4B09H LINE# 141 + C:4B09H LINE# 142 + C:4B0CH LINE# 143 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 27 + + + C:4B0CH LINE# 144 + C:4B1BH LINE# 145 + C:4B1BH LINE# 146 + C:4B1DH LINE# 147 + C:4B1FH LINE# 148 + C:4B1FH LINE# 149 + C:4B20H LINE# 151 + C:4B20H LINE# 152 + C:4B25H LINE# 153 + C:4B3DH LINE# 154 + C:4B3DH LINE# 155 + C:4B4BH LINE# 156 + C:4B4BH LINE# 157 + C:4B4DH LINE# 158 + C:4B4FH LINE# 159 + C:4B4FH LINE# 160 + C:4B50H LINE# 162 + C:4B50H LINE# 163 + C:4B55H LINE# 164 + C:4B55H LINE# 165 + C:4B55H LINE# 166 + C:4B56H LINE# 168 + C:4B56H LINE# 169 + C:4B5BH LINE# 170 + C:4B5DH LINE# 171 + C:4B5DH LINE# 172 + C:4B5EH LINE# 174 + C:4B5EH LINE# 175 + C:4B63H LINE# 176 + C:4B65H LINE# 177 + C:4B65H LINE# 178 + ------- ENDPROC LOWPOWERCHECK + ------- PROC LOWPOWERPROCESS + C:6053H LINE# 187 + C:6053H LINE# 188 + C:6053H LINE# 189 + C:6059H LINE# 190 + C:6059H LINE# 191 + C:605BH LINE# 192 + C:6073H LINE# 193 + C:6073H LINE# 194 + C:6075H LINE# 195 + C:6078H LINE# 196 + C:6078H LINE# 197 + C:607AH LINE# 198 + C:607CH LINE# 199 + C:607FH LINE# 200 + C:607FH LINE# 201 + C:6082H LINE# 202 + C:6084H LINE# 203 + C:6087H LINE# 204 + C:6087H LINE# 205 + C:608AH LINE# 206 + C:608AH LINE# 208 + C:608DH LINE# 209 + ------- ENDPROC LOWPOWERPROCESS + ------- ENDMOD LOWPOWER + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 28 + + + + ------- MODULE UARTAPP + C:0000H SYMBOL _ICE_DUMMY_ + C:65F2H PUBLIC UartCheck + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + C:3CE4H PUBLIC UartCaliCurrent + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + C:56F7H PUBLIC UartCaliRTC + D:0080H PUBLIC P5 + X:037FH PUBLIC ucUartSndLength + C:3075H PUBLIC IapCheckHandshake + X:0380H PUBLIC ucUartTimeoutCnt + X:0381H PUBLIC ucSubClassID + C:5D38H PUBLIC WriteManufacture + X:0A00H PUBLIC ucUartBuf + B:002BH.1 PUBLIC bUartReadFlg + X:0382H PUBLIC ucUartErrCode + B:002BH.2 PUBLIC bUartWriteFlg + C:4E72H PUBLIC _UartReadInfo + C:6738H PUBLIC UartHandshake + C:5B8AH PUBLIC Page1WrRdFuncTable + C:5BAEH PUBLIC Page2WrRdFuncTable + D:0099H PUBLIC SBUF + C:61ACH PUBLIC UartCaliCurOffset + C:6175H PUBLIC ReadSubClassID + D:00B1H PUBLIC RSTSTAT + C:4B66H PUBLIC _UartWriteInfo + X:0383H PUBLIC ucUartBufPT + C:31DCH PUBLIC UartRdCmdProcess + B:002BH.3 PUBLIC bUartSndAckFlg + C:4806H PUBLIC _InterruptUartAppRx + C:4580H PUBLIC UartWrCmdProcess + C:44D5H PUBLIC InterruptUartAppTx + B:0098H.4 PUBLIC REN + B:002BH.4 PUBLIC bISPFlg + D:009AH PUBLIC SADDR + C:574BH PUBLIC UartCaliVoltage + C:5AF8H PUBLIC UartCaliTS1 + C:5B41H PUBLIC UartCaliTS2 + X:0384H PUBLIC uiReceCheckSum + ------- PROC UARTHANDSHAKE + C:6738H LINE# 90 + C:6738H LINE# 91 + C:6738H LINE# 92 + C:673EH LINE# 93 + C:673EH LINE# 94 + C:6743H LINE# 95 + C:6744H LINE# 97 + C:6744H LINE# 98 + C:6749H LINE# 99 + C:6749H LINE# 100 + ------- ENDPROC UARTHANDSHAKE + ------- PROC _UARTWRITEINFO + X:02B7H SYMBOL ptr + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 29 + + + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:4B66H LINE# 109 + C:4B6EH LINE# 110 + C:4B6EH LINE# 113 + C:4B8FH LINE# 114 + C:4B8FH LINE# 115 + C:4B9AH LINE# 116 + C:4B9AH LINE# 117 + C:4B9DH LINE# 118 + C:4BB6H LINE# 119 + C:4BC0H LINE# 120 + C:4BC3H LINE# 122 + C:4BC8H LINE# 123 + C:4BCAH LINE# 124 + C:4BCCH LINE# 125 + C:4BCEH LINE# 126 + C:4BD0H LINE# 127 + C:4BD2H LINE# 129 + C:4BD6H LINE# 130 + C:4BD8H LINE# 131 + C:4BDAH LINE# 133 + C:4BDCH LINE# 134 + C:4BE0H LINE# 136 + C:4BE5H LINE# 137 + C:4BE6H LINE# 139 + C:4BE6H LINE# 140 + C:4BEBH LINE# 141 + C:4BEBH LINE# 142 + ------- ENDPROC _UARTWRITEINFO + ------- PROC _UARTREADINFO + D:0006H SYMBOL ptr + ------- DO + D:0005H SYMBOL i + ------- ENDDO + C:4E72H LINE# 151 + C:4E72H LINE# 152 + C:4E72H LINE# 155 + C:4E7BH LINE# 156 + C:4E7BH LINE# 157 + C:4E7DH LINE# 158 + C:4E7DH LINE# 160 + C:4E82H LINE# 161 + C:4E84H LINE# 162 + C:4E86H LINE# 163 + C:4E88H LINE# 164 + C:4E8AH LINE# 165 + C:4E8CH LINE# 167 + C:4E90H LINE# 168 + C:4E92H LINE# 169 + C:4E94H LINE# 171 + C:4E9FH LINE# 172 + C:4E9FH LINE# 173 + C:4EA2H LINE# 174 + C:4EB4H LINE# 175 + C:4EB9H LINE# 176 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 30 + + + C:4EBCH LINE# 177 + C:4ED8H LINE# 179 + C:4EEAH LINE# 180 + ------- ENDPROC _UARTREADINFO + ------- PROC WRITEMANUFACTURE + C:5D38H LINE# 191 + C:5D38H LINE# 192 + C:5D38H LINE# 193 + C:5D59H LINE# 194 + C:5D59H LINE# 195 + C:5D61H LINE# 196 + C:5D61H LINE# 197 + C:5D67H LINE# 198 + C:5D69H LINE# 199 + C:5D6DH LINE# 200 + C:5D6DH LINE# 201 + C:5D6FH LINE# 202 + C:5D6FH LINE# 203 + C:5D71H LINE# 204 + C:5D76H LINE# 205 + C:5D77H LINE# 207 + C:5D77H LINE# 208 + C:5D7CH LINE# 209 + C:5D7CH LINE# 210 + ------- ENDPROC WRITEMANUFACTURE + ------- PROC READSUBCLASSID + C:6175H LINE# 219 + C:6175H LINE# 220 + C:6175H LINE# 221 + C:6196H LINE# 222 + C:6196H LINE# 223 + C:619EH LINE# 225 + C:61A0H LINE# 226 + C:61A5H LINE# 227 + C:61A6H LINE# 229 + C:61A6H LINE# 230 + C:61ABH LINE# 231 + C:61ABH LINE# 232 + ------- ENDPROC READSUBCLASSID + ------- PROC UARTRDCMDPROCESS + ------- DO + X:02B5H SYMBOL rdaddr + ------- ENDDO + C:31DCH LINE# 241 + C:31DCH LINE# 242 + C:31DCH LINE# 245 + C:3230H LINE# 246 + C:3230H LINE# 247 + C:3230H LINE# 248 + C:3230H LINE# 249 + C:3230H LINE# 250 + C:3230H LINE# 251 + C:3230H LINE# 252 + C:3230H LINE# 253 + C:3230H LINE# 254 + C:3230H LINE# 255 + C:3230H LINE# 256 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 31 + + + C:3230H LINE# 257 + C:3240H LINE# 258 + C:3241H LINE# 260 + C:3241H LINE# 261 + C:3248H LINE# 262 + C:3249H LINE# 264 + C:3249H LINE# 265 + C:3250H LINE# 266 + C:3251H LINE# 268 + C:3251H LINE# 269 + C:3258H LINE# 270 + C:3259H LINE# 272 + C:3259H LINE# 273 + C:3260H LINE# 274 + C:3261H LINE# 276 + C:3261H LINE# 277 + C:3268H LINE# 278 + C:3269H LINE# 280 + C:3269H LINE# 281 + C:3270H LINE# 282 + C:3271H LINE# 284 + C:3271H LINE# 285 + C:3278H LINE# 286 + C:3279H LINE# 288 + C:3279H LINE# 289 + C:3280H LINE# 290 + C:3281H LINE# 292 + C:3281H LINE# 293 + C:3288H LINE# 294 + C:3289H LINE# 296 + C:3289H LINE# 297 + C:3290H LINE# 298 + C:3291H LINE# 300 + C:3291H LINE# 301 + C:3298H LINE# 302 + C:3299H LINE# 304 + C:3299H LINE# 305 + C:32A0H LINE# 306 + C:32A1H LINE# 308 + C:32A1H LINE# 309 + C:32A8H LINE# 310 + C:32A9H LINE# 312 + C:32A9H LINE# 313 + C:32B0H LINE# 314 + C:32B1H LINE# 316 + C:32B1H LINE# 317 + C:32BAH LINE# 318 + C:32BAH LINE# 319 + C:32BCH LINE# 320 + C:32BEH LINE# 321 + C:32BFH LINE# 322 + C:32CDH LINE# 323 + C:32CDH LINE# 324 + C:32CFH LINE# 325 + C:32D1H LINE# 326 + C:32D2H LINE# 327 + C:32D9H LINE# 328 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 32 + + + C:32D9H LINE# 329 + C:32F7H LINE# 330 + C:32FAH LINE# 331 + C:32FBH LINE# 332 + C:3302H LINE# 333 + C:3302H LINE# 334 + C:3320H LINE# 335 + C:3323H LINE# 336 + C:3323H LINE# 337 + C:3323H LINE# 338 + C:3323H LINE# 339 + ------- ENDPROC UARTRDCMDPROCESS + ------- PROC UARTCALIVOLTAGE + C:574BH LINE# 348 + C:574BH LINE# 349 + C:574BH LINE# 350 + C:576CH LINE# 351 + C:576CH LINE# 352 + C:577FH LINE# 354 + C:5782H LINE# 355 + C:5782H LINE# 356 + C:5787H LINE# 357 + C:5788H LINE# 359 + C:5788H LINE# 360 + C:578AH LINE# 361 + C:5791H LINE# 362 + C:5796H LINE# 363 + C:5796H LINE# 364 + C:5797H LINE# 366 + C:5797H LINE# 367 + C:579CH LINE# 368 + C:579CH LINE# 369 + ------- ENDPROC UARTCALIVOLTAGE + ------- PROC UARTCALICURRENT + C:3CE4H LINE# 378 + C:3CE4H LINE# 379 + C:3CE4H LINE# 380 + C:3D08H LINE# 381 + C:3D08H LINE# 385 + C:3D70H LINE# 387 + C:3D86H LINE# 388 + C:3D86H LINE# 389 + C:3D8BH LINE# 390 + C:3D8CH LINE# 392 + C:3D8CH LINE# 393 + C:3D8EH LINE# 394 + C:3D95H LINE# 395 + C:3D9AH LINE# 396 + C:3D9AH LINE# 397 + C:3D9BH LINE# 399 + C:3D9BH LINE# 400 + C:3DA0H LINE# 401 + C:3DA0H LINE# 402 + ------- ENDPROC UARTCALICURRENT + ------- PROC UARTCALICUROFFSET + C:61ACH LINE# 405 + C:61ACH LINE# 406 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 33 + + + C:61ACH LINE# 407 + C:61CDH LINE# 408 + C:61CDH LINE# 409 + C:61CFH LINE# 410 + C:61D6H LINE# 412 + C:61DBH LINE# 413 + C:61DCH LINE# 415 + C:61DCH LINE# 416 + C:61E1H LINE# 417 + C:61E1H LINE# 418 + ------- ENDPROC UARTCALICUROFFSET + ------- PROC UARTCALITS1 + C:5AF8H LINE# 427 + C:5AF8H LINE# 428 + C:5AF8H LINE# 429 + C:5B19H LINE# 430 + C:5B19H LINE# 431 + C:5B1BH LINE# 432 + C:5B2EH LINE# 433 + C:5B35H LINE# 435 + C:5B3AH LINE# 436 + C:5B3BH LINE# 438 + C:5B3BH LINE# 439 + C:5B40H LINE# 440 + C:5B40H LINE# 441 + ------- ENDPROC UARTCALITS1 + ------- PROC UARTCALITS2 + C:5B41H LINE# 444 + C:5B41H LINE# 445 + C:5B41H LINE# 446 + C:5B62H LINE# 447 + C:5B62H LINE# 448 + C:5B64H LINE# 449 + C:5B77H LINE# 450 + C:5B7EH LINE# 452 + C:5B83H LINE# 453 + C:5B84H LINE# 455 + C:5B84H LINE# 456 + C:5B89H LINE# 457 + C:5B89H LINE# 458 + ------- ENDPROC UARTCALITS2 + ------- PROC UARTCALIRTC + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:56F7H LINE# 467 + C:56F7H LINE# 468 + C:56F7H LINE# 471 + C:5718H LINE# 472 + C:5718H LINE# 473 + C:5719H LINE# 474 + C:5719H LINE# 475 + C:5731H LINE# 476 + C:5736H LINE# 477 + C:5738H LINE# 478 + C:573FH LINE# 479 + C:5744H LINE# 480 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 34 + + + C:5745H LINE# 482 + C:5745H LINE# 483 + C:574AH LINE# 484 + C:574AH LINE# 485 + ------- ENDPROC UARTCALIRTC + ------- PROC UARTWRCMDPROCESS + ------- DO + X:02B5H SYMBOL rdaddr + ------- ENDDO + C:4580H LINE# 494 + C:4580H LINE# 495 + C:4580H LINE# 497 + C:45ACH LINE# 498 + C:45ACH LINE# 499 + C:45ACH LINE# 500 + C:45AFH LINE# 501 + C:45B0H LINE# 502 + C:45B0H LINE# 503 + C:45B3H LINE# 504 + C:45B4H LINE# 505 + C:45B4H LINE# 506 + C:45B7H LINE# 507 + C:45B8H LINE# 508 + C:45B8H LINE# 509 + C:45BBH LINE# 510 + C:45BCH LINE# 511 + C:45BCH LINE# 512 + C:45BFH LINE# 513 + C:45C0H LINE# 514 + C:45C0H LINE# 515 + C:45C3H LINE# 516 + C:45C4H LINE# 517 + C:45C4H LINE# 518 + C:45C7H LINE# 519 + C:45C8H LINE# 521 + C:45C8H LINE# 522 + C:45CBH LINE# 523 + C:45CCH LINE# 524 + C:45CCH LINE# 525 + C:45EAH LINE# 526 + C:45EDH LINE# 527 + C:45EEH LINE# 528 + C:45EEH LINE# 529 + C:460CH LINE# 530 + C:460FH LINE# 531 + C:4610H LINE# 533 + C:4610H LINE# 534 + C:4617H LINE# 535 + C:4617H LINE# 536 + C:4619H LINE# 537 + C:461BH LINE# 538 + C:4620H LINE# 539 + C:4621H LINE# 541 + C:4621H LINE# 542 + C:4626H LINE# 543 + C:4626H LINE# 544 + C:4626H LINE# 545 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 35 + + + C:4626H LINE# 546 + ------- ENDPROC UARTWRCMDPROCESS + ------- PROC IAPCHECKHANDSHAKE + ------- DO + D:0007H SYMBOL i + D:0007H SYMBOL databak + X:02B5H SYMBOL checksum + ------- ENDDO + C:3075H LINE# 555 + C:3075H LINE# 556 + C:3075H LINE# 558 + C:307CH LINE# 560 + C:3084H LINE# 561 + C:3084H LINE# 562 + C:308CH LINE# 563 + C:308CH LINE# 564 + C:3091H LINE# 565 + C:3092H LINE# 567 + C:3092H LINE# 568 + C:3099H LINE# 569 + C:309DH LINE# 570 + C:309DH LINE# 571 + C:309EH LINE# 573 + C:309EH LINE# 574 + C:30B9H LINE# 575 + C:30B9H LINE# 576 + C:30CCH LINE# 577 + C:30CCH LINE# 578 + C:30E4H LINE# 579 + C:30E4H LINE# 580 + C:30ECH LINE# 581 + C:30ECH LINE# 582 + C:30F7H LINE# 583 + C:30F7H LINE# 584 + C:30FCH LINE# 585 + C:30FCH LINE# 586 + C:30FDH LINE# 587 + C:3105H LINE# 588 + C:3105H LINE# 589 + C:3110H LINE# 590 + C:3110H LINE# 591 + C:3117H LINE# 592 + C:3117H LINE# 593 + C:3117H LINE# 594 + C:3118H LINE# 596 + C:3118H LINE# 597 + C:311DH LINE# 598 + C:314CH LINE# 599 + C:314CH LINE# 600 + C:3153H LINE# 601 + C:3153H LINE# 603 + C:315AH LINE# 604 + C:315AH LINE# 605 + C:315EH LINE# 606 + C:3160H LINE# 608 + C:3160H LINE# 609 + C:3162H LINE# 610 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 36 + + + C:3167H LINE# 611 + C:3167H LINE# 613 + C:316CH LINE# 614 + C:3172H LINE# 616 + C:3177H LINE# 617 + C:317DH LINE# 618 + C:3180H LINE# 620 + C:3199H LINE# 621 + C:3199H LINE# 622 + C:31AEH LINE# 623 + C:31B1H LINE# 625 + C:31C5H LINE# 626 + C:31D6H LINE# 628 + C:31DBH LINE# 629 + C:31DBH LINE# 630 + C:31DBH LINE# 631 + ------- ENDPROC IAPCHECKHANDSHAKE + ------- PROC _INTERRUPTUARTAPPRX + D:0007H SYMBOL RxData + C:4806H LINE# 645 + C:4806H LINE# 646 + C:4806H LINE# 647 + C:4815H LINE# 648 + C:481BH LINE# 649 + C:4821H LINE# 650 + C:4821H LINE# 651 + C:4823H LINE# 652 + C:4823H LINE# 653 + C:482BH LINE# 654 + C:482BH LINE# 655 + C:4835H LINE# 656 + C:4835H LINE# 657 + C:4839H LINE# 658 + C:4839H LINE# 659 + C:483BH LINE# 660 + C:483DH LINE# 661 + C:483FH LINE# 663 + C:483FH LINE# 664 + C:4841H LINE# 665 + C:4843H LINE# 666 + C:4843H LINE# 667 + C:4845H LINE# 668 + C:484DH LINE# 669 + C:484DH LINE# 670 + C:4852H LINE# 671 + C:4852H LINE# 672 + C:4852H LINE# 674 + C:4855H LINE# 675 + C:4855H LINE# 676 + C:485DH LINE# 677 + C:485DH LINE# 678 + C:4860H LINE# 679 + C:4860H LINE# 680 + C:4862H LINE# 681 + C:4865H LINE# 682 + C:4865H LINE# 683 + C:487EH LINE# 684 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 37 + + + C:487EH LINE# 685 + C:4881H LINE# 686 + C:4883H LINE# 687 + C:4888H LINE# 688 + C:4888H LINE# 689 + C:488AH LINE# 691 + C:488AH LINE# 692 + C:488DH LINE# 693 + C:488DH LINE# 694 + C:488FH LINE# 696 + C:4894H LINE# 697 + C:4898H LINE# 698 + C:489CH LINE# 699 + ------- ENDPROC _INTERRUPTUARTAPPRX + ------- PROC INTERRUPTUARTAPPTX + C:44D5H LINE# 708 + C:44D5H LINE# 709 + C:44D5H LINE# 710 + C:44E5H LINE# 711 + C:44E5H LINE# 712 + C:44FEH LINE# 713 + C:44FEH LINE# 714 + C:4500H LINE# 715 + C:4502H LINE# 716 + C:4504H LINE# 717 + C:4508H LINE# 718 + C:450AH LINE# 719 + C:450CH LINE# 720 + C:450EH LINE# 721 + C:4510H LINE# 722 + C:4512H LINE# 724 + C:4512H LINE# 725 + C:4518H LINE# 726 + C:4527H LINE# 727 + C:4527H LINE# 728 + C:4529H LINE# 729 + C:4546H LINE# 730 + C:4546H LINE# 731 + C:4548H LINE# 732 + C:454DH LINE# 733 + C:454FH LINE# 734 + C:4553H LINE# 735 + C:4555H LINE# 736 + C:4557H LINE# 737 + C:4559H LINE# 738 + C:455BH LINE# 739 + C:455DH LINE# 741 + C:455DH LINE# 742 + C:4563H LINE# 743 + C:4572H LINE# 744 + C:4572H LINE# 746 + C:4577H LINE# 747 + C:457BH LINE# 748 + C:457FH LINE# 749 + ------- ENDPROC INTERRUPTUARTAPPTX + ------- PROC UARTCHECK + C:65F2H LINE# 758 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 38 + + + C:65F2H LINE# 759 + C:65F2H LINE# 760 + C:65FDH LINE# 761 + C:65FDH LINE# 762 + C:65FFH LINE# 763 + C:6603H LINE# 764 + C:6605H LINE# 765 + C:6605H LINE# 766 + ------- ENDPROC UARTCHECK + ------- ENDMOD UARTAPP + + ------- MODULE MEMORY + C:0000H SYMBOL _ICE_DUMMY_ + B:0020H.2 PUBLIC bOCRC_EN + X:00B3H PUBLIC E2uiLearnLowTempe + D:0080H PUBLIC P0 + D:0022H PUBLIC uiBatStatus + D:0090H PUBLIC P1 + X:00C2H PUBLIC E2ulCycleThreshold + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + B:0025H.6 PUBLIC bFastDischarge + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:0023H.0 PUBLIC bOV + X:002AH PUBLIC E2ucLowPowerDeley + B:0023H.1 PUBLIC bUV + X:00C6H PUBLIC E2ulCycleThresholdCount + B:0025H.5 PUBLIC bMidDischarge + B:0020H.6 PUBLIC bOCPM + B:0025H.2 PUBLIC bCHGING + X:006DH PUBLIC E2slOCCCurrent + X:00D7H PUBLIC E2siTS0Offset + X:0088H PUBLIC E2ucLoadRDelay + X:00D9H PUBLIC E2siTS1Offset + X:0071H PUBLIC E2ucOCCDelay + X:0024H PUBLIC E2uiLearnLowTemp + B:0025H.4 PUBLIC bSlowDischarge + B:0021H.3 PUBLIC bLEDNum0 + B:0021H.4 PUBLIC bLEDNum1 + X:00CEH PUBLIC E2uiAFEOVvol + X:001EH PUBLIC E2ulCycleThreshold_Rsv + X:002FH PUBLIC E2ucRamCheckFlg0 + X:00ADH PUBLIC E2siChgEndCurr + X:0061H PUBLIC E2ucRamCheckFlg1 + B:0025H.3 PUBLIC bDSGING + X:0074H PUBLIC E2ucRamCheckFlg2 + X:008DH PUBLIC E2ucDSG1PWMRatioH + X:0089H PUBLIC E2ucRamCheckFlg3 + X:0064H PUBLIC E2uiOVRvol + X:002CH PUBLIC E2siChgBKCur + X:008EH PUBLIC E2ucRamCheckFlg5 + X:0053H PUBLIC E2ucDeviceChem + X:0099H PUBLIC E2ucRamCheckFlg6 + B:0022H.5 PUBLIC bAFE_SC + B:0025H.0 PUBLIC bCHGMOS + B:0020H.3 PUBLIC bBAL_EN + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 39 + + + X:00B6H PUBLIC E2ulFCC + X:00A2H PUBLIC E2ucRamCheckFlg7 + X:008CH PUBLIC E2ucDSG1PWMRatioL + X:00AAH PUBLIC E2ucRamCheckFlg8 + X:00CCH PUBLIC E2ucRamCheckFlg9 + X:0077H PUBLIC E2uiUVRvol + X:0047H PUBLIC E2ucDeviceName + X:0091H PUBLIC E2uiTempOTCR + X:009CH PUBLIC E2uiTempOTDR + X:0026H PUBLIC E2uiNearFCC + B:0021H.5 PUBLIC bTempNum + X:00D5H PUBLIC E2siCadcOffset + X:0098H PUBLIC E2ucTempRDelay + D:0026H PUBLIC ucAFEStatus + X:0095H PUBLIC E2uiTempUTCR + B:0020H.7 PUBLIC bEnEEPRomBK + X:00D1H PUBLIC E2uiVPackGain + X:00D0H PUBLIC E2ucRamCheckFlgA + X:00A5H PUBLIC E2uiBalanceVolDiff + X:00A0H PUBLIC E2uiTempUTDR + X:00DCH PUBLIC E2ucRamCheckFlgB + B:0025H.1 PUBLIC bDSGMOS + X:01FEH PUBLIC E2uiCheckFlag + X:00A3H PUBLIC E2uiBalanceVol + B:0022H.4 PUBLIC bAFE_OV + X:00B5H PUBLIC E2ucSOC + X:00ABH PUBLIC E2uiChgEndVol + X:0035H PUBLIC E2ucMNFName + B:0023H.2 PUBLIC bOCC + X:00BEH PUBLIC E2ulChgFCC + D:0020H PUBLIC uiPackConfig + X:0067H PUBLIC E2ucOVRDelay + X:002EH PUBLIC E2ucRTCBKDelay + X:0041H PUBLIC E2ulMNFDate + B:0020H.5 PUBLIC bCTO_EN + X:00BAH PUBLIC E2ulLastFCC + X:0002H PUBLIC E2uiVOC + X:007AH PUBLIC E2ucUVRDelay + X:00DBH PUBLIC E2ucCalibrated + X:00B1H PUBLIC E2uiDsgEndVol + B:0026H.4 PUBLIC bAfeCHG + X:00D3H PUBLIC E2siCadcGain + X:001AH PUBLIC E2ulFCC_Rsv + B:0026H.2 PUBLIC bAfeChging + X:00DDH PUBLIC Reserved + X:0068H PUBLIC E2ucReserved0 + X:007BH PUBLIC E2ucReserved1 + B:0021H.0 PUBLIC bCellNum1 + X:007EH PUBLIC E2slOCD1Current + X:0073H PUBLIC E2ucReserved2 + B:0022H.6 PUBLIC bCTO + B:0022H.0 PUBLIC bOTC + B:0021H.1 PUBLIC bCellNum2 + X:0083H PUBLIC E2slOCD2Current + B:0022H.1 PUBLIC bOTD + B:0021H.2 PUBLIC bCellNum3 + X:0082H PUBLIC E2ucOCD1Delay + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 40 + + + X:0087H PUBLIC E2ucOCD2Delay + B:0024H.2 PUBLIC bVDQ + X:00A7H PUBLIC E2siBalCurrent + B:0026H.5 PUBLIC bAfeDSG + B:0022H.2 PUBLIC bUTC + X:0062H PUBLIC E2uiOVvol + X:0028H PUBLIC E2siDfilterCur + B:0026H.3 PUBLIC bAfeDsging + B:0022H.3 PUBLIC bUTD + X:0000H PUBLIC E2uiPackConfigMap + X:0075H PUBLIC E2uiUVvol + X:00CAH PUBLIC E2uiCycleCount + X:008FH PUBLIC E2uiTempOTC + X:009AH PUBLIC E2uiTempOTD + B:0021H.6 PUBLIC bChgerLock + X:0097H PUBLIC E2ucTempDelay + B:0026H.0 PUBLIC bAfeChger + X:0093H PUBLIC E2uiTempUTC + X:009EH PUBLIC E2uiTempUTD + X:0034H PUBLIC E2ucID + X:00CDH PUBLIC E2ucAFEProtectConfig + X:0032H PUBLIC E2uiHWVersion + X:005FH PUBLIC E2uiChemID + X:002BH PUBLIC E2ucChgBKDelay + X:0066H PUBLIC E2ucOVDelay + D:0024H PUBLIC uiPackStatus + B:0023H.3 PUBLIC bOCD1 + B:0023H.4 PUBLIC bOCD2 + B:0024H.0 PUBLIC bFC + B:0020H.4 PUBLIC bPF_EN + X:0072H PUBLIC E2ucOCCRDelay + X:0016H PUBLIC E2ulDesignCapacity + B:0024H.1 PUBLIC bFD + B:0020H.0 PUBLIC bSC_EN + X:0045H PUBLIC E2uiSerialNum + X:0030H PUBLIC E2uiSWVersion + X:00A9H PUBLIC E2ucBalanceDelay + X:008AH PUBLIC E2uiDSG1PWMFreq + X:0079H PUBLIC E2ucUVDelay + X:00AFH PUBLIC E2ucChgEndDelay + B:0021H.7 PUBLIC bLoadLock + B:0026H.1 PUBLIC bAfeLoad + X:0022H PUBLIC E2uiCycleCount_Rsv + I:00A0H PUBLIC STACK + B:0020H.1 PUBLIC bOV_EN + X:00B0H PUBLIC E2ucDsgEndDelay + ------- ENDMOD MEMORY + + ------- MODULE AFE + C:0000H SYMBOL _ICE_DUMMY_ + X:0200H PUBLIC uiVadcVmax + D:000FH PUBLIC uiCellVmin + D:0080H PUBLIC P0 + D:0011H PUBLIC uiCellVmax + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 41 + + + C:4BECH PUBLIC AFEInitReg + X:0202H PUBLIC uiTempeMin + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:0204H PUBLIC uiTempeMax + B:0029H.3 PUBLIC bCADCFlg + C:66B3H PUBLIC AfeADCEn + C:6017H PUBLIC AFEClrFlg + C:6599H PUBLIC AFERdStatus + D:0013H PUBLIC ucCellNum + X:0206H PUBLIC Info + C:6712H PUBLIC AfeTempADCDis + X:023CH PUBLIC slCadcCurBuf + B:0029H.4 PUBLIC bAfeErr + B:0029H.5 PUBLIC bVADCFlg + C:6280H PUBLIC AFERdFlg + C:65B1H PUBLIC _AfeAlarmDis + C:66A0H PUBLIC AfeWDTDis + B:0029H.6 PUBLIC bAfeI2CRWErrFlg + C:65C8H PUBLIC _AFEMosCtl + C:66FFH PUBLIC AfeTempADCEn + X:027CH PUBLIC ucTempeMiddle + C:674AH PUBLIC _AfeAlarmEn + C:668DH PUBLIC AfeWDTEn + X:027DH PUBLIC slCadcCurrent + X:0281H PUBLIC slCadcCurAverage + C:66ECH PUBLIC AfeCADCDis + C:6654H PUBLIC AFEChgerCheckDis + C:5FD8H PUBLIC _AfeBalCtl + X:0285H PUBLIC AFE + C:66D9H PUBLIC AfeCADCEn + C:6641H PUBLIC AFEChgerCheckEn + C:5378H PUBLIC AFERamCheck + C:667AH PUBLIC AFELoadCheckDis + D:00C8H PUBLIC TWICON + X:02A3H PUBLIC REG + C:63EEH PUBLIC AFEEnterPD + C:675CH PUBLIC AFEInit + C:657FH PUBLIC AFETwiCheck + C:6667H PUBLIC AFELoadCheckEn + C:4FD9H PUBLIC _AFEReadReg + X:02B1H PUBLIC ucAfeI2CErrDelayCnt + X:02B2H PUBLIC ucCadcCnt + C:66C6H PUBLIC AfeADCDis + D:0014H PUBLIC ucCellNumOffset + C:4376H PUBLIC _AFEWriteReg + B:0029H.7 PUBLIC bAfeAlarmFlg + X:02B3H PUBLIC uiVadcVmin + ------- PROC AFETWICHECK + C:657FH LINE# 43 + C:657FH LINE# 44 + C:657FH LINE# 45 + C:6582H LINE# 46 + C:6582H LINE# 47 + C:658DH LINE# 48 + C:658DH LINE# 49 + C:658FH LINE# 50 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 42 + + + C:6592H LINE# 51 + C:6592H LINE# 52 + C:6593H LINE# 54 + C:6593H LINE# 55 + C:6598H LINE# 56 + C:6598H LINE# 57 + ------- ENDPROC AFETWICHECK + ------- PROC _AFEWRITEREG + X:02BDH SYMBOL Reg + X:02BEH SYMBOL Length + X:02BFH SYMBOL WrBuf + ------- DO + B:0028H.6 SYMBOL Result + X:02C1H SYMBOL Times + X:02C2H SYMBOL i + ------- ENDDO + C:4376H LINE# 67 + C:4384H LINE# 68 + C:4384H LINE# 69 + C:4386H LINE# 70 + C:4389H LINE# 73 + C:438FH LINE# 74 + C:438FH LINE# 75 + C:43A1H LINE# 76 + C:43A1H LINE# 77 + C:43AEH LINE# 78 + C:43AEH LINE# 79 + C:43D5H LINE# 80 + C:43D8H LINE# 81 + C:43D8H LINE# 82 + C:43DAH LINE# 83 + C:43DCH LINE# 85 + C:43DCH LINE# 86 + C:43DFH LINE# 87 + C:43E4H LINE# 88 + C:43E9H LINE# 89 + C:43EEH LINE# 90 + C:43EEH LINE# 91 + C:43F0H LINE# 92 + C:43F9H LINE# 93 + C:43F9H LINE# 94 + C:43FBH LINE# 95 + C:43FDH LINE# 97 + C:43FDH LINE# 98 + C:4402H LINE# 99 + C:4408H LINE# 100 + C:4412H LINE# 101 + C:4412H LINE# 102 + C:4417H LINE# 103 + C:4420H LINE# 104 + C:4420H LINE# 105 + C:4425H LINE# 107 + C:4427H LINE# 108 + ------- ENDPROC _AFEWRITEREG + ------- PROC _AFEREADREG + X:02C3H SYMBOL Reg + X:02C4H SYMBOL Length + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 43 + + + X:02C5H SYMBOL RdBuf + ------- DO + B:0028H.6 SYMBOL Result + X:02C7H SYMBOL Times + ------- ENDDO + C:4FD9H LINE# 118 + C:4FE7H LINE# 119 + C:4FE7H LINE# 120 + C:4FE9H LINE# 121 + C:4FECH LINE# 123 + C:4FEFH LINE# 124 + C:4FEFH LINE# 125 + C:4FFCH LINE# 126 + C:4FFCH LINE# 127 + C:5025H LINE# 128 + C:5028H LINE# 129 + C:5028H LINE# 130 + C:502AH LINE# 131 + C:502CH LINE# 133 + C:502CH LINE# 134 + C:502FH LINE# 135 + C:5034H LINE# 136 + C:5039H LINE# 137 + C:503EH LINE# 138 + C:503EH LINE# 139 + C:5040H LINE# 140 + C:5040H LINE# 141 + C:5045H LINE# 143 + C:5047H LINE# 144 + ------- ENDPROC _AFEREADREG + ------- PROC AFECLRFLG + C:6017H LINE# 153 + C:6017H LINE# 154 + C:6017H LINE# 155 + C:6024H LINE# 156 + C:6024H LINE# 157 + C:602EH LINE# 158 + C:602EH LINE# 159 + C:6035H LINE# 160 + C:6040H LINE# 161 + C:6047H LINE# 162 + C:6052H LINE# 163 + C:6052H LINE# 164 + C:6052H LINE# 165 + ------- ENDPROC AFECLRFLG + ------- PROC AFEINITREG + ------- DO + D:0004H SYMBOL TempVar + ------- ENDDO + C:4BECH LINE# 174 + C:4BECH LINE# 175 + C:4BECH LINE# 178 + C:4BF1H LINE# 179 + C:4BF5H LINE# 180 + C:4BF8H LINE# 181 + C:4BFCH LINE# 182 + C:4BFFH LINE# 183 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 44 + + + C:4C01H LINE# 184 + C:4C05H LINE# 185 + C:4C09H LINE# 186 + C:4C0DH LINE# 187 + C:4C11H LINE# 188 + C:4C14H LINE# 190 + C:4C17H LINE# 191 + C:4C17H LINE# 192 + C:4C1EH LINE# 193 + C:4C30H LINE# 194 + C:4C30H LINE# 195 + C:4C33H LINE# 196 + C:4C33H LINE# 197 + C:4C3AH LINE# 198 + C:4C4CH LINE# 199 + C:4C69H LINE# 200 + C:4C6EH LINE# 201 + C:4C71H LINE# 202 + C:4C71H LINE# 203 + ------- ENDPROC AFEINITREG + ------- PROC AFEINIT + ------- DO + B:0028H.5 SYMBOL Result + ------- ENDDO + C:675CH LINE# 213 + C:675CH LINE# 214 + C:675CH LINE# 229 + C:6769H LINE# 230 + C:676BH LINE# 231 + ------- ENDPROC AFEINIT + ------- PROC AFERDFLG + C:6280H LINE# 242 + C:6280H LINE# 243 + C:6280H LINE# 244 + C:628DH LINE# 245 + C:628DH LINE# 246 + C:6295H LINE# 247 + C:6295H LINE# 248 + C:6297H LINE# 249 + C:6297H LINE# 251 + C:629BH LINE# 252 + C:629BH LINE# 253 + C:629DH LINE# 254 + C:629DH LINE# 256 + C:62A4H LINE# 257 + C:62A4H LINE# 258 + C:62A6H LINE# 259 + C:62A8H LINE# 260 + C:62A8H LINE# 262 + C:62AFH LINE# 263 + C:62AFH LINE# 264 + C:62B2H LINE# 265 + C:62B2H LINE# 266 + C:62B2H LINE# 267 + ------- ENDPROC AFERDFLG + ------- PROC AFERDSTATUS + ------- DO + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 45 + + + X:02B9H SYMBOL RegTemp + ------- ENDDO + C:6599H LINE# 276 + C:6599H LINE# 277 + C:6599H LINE# 279 + C:65A6H LINE# 280 + C:65A6H LINE# 281 + C:65B0H LINE# 282 + C:65B0H LINE# 283 + ------- ENDPROC AFERDSTATUS + ------- PROC AFERAMCHECK + ------- DO + X:02B9H SYMBOL RdBuf + X:02BBH SYMBOL i + ------- ENDDO + C:5378H LINE# 292 + C:5378H LINE# 293 + C:5378H LINE# 297 + C:5388H LINE# 298 + C:5388H LINE# 299 + C:5391H LINE# 301 + C:53BFH LINE# 302 + C:53BFH LINE# 303 + C:53C7H LINE# 304 + C:53C7H LINE# 305 + C:53CAH LINE# 306 + C:53CBH LINE# 307 + C:53CBH LINE# 308 + C:53CBH LINE# 309 + C:53D4H LINE# 310 + ------- ENDPROC AFERAMCHECK + ------- PROC AFEENTERPD + C:63EEH LINE# 319 + C:63EEH LINE# 320 + C:63EEH LINE# 321 + C:63F4H LINE# 322 + C:6401H LINE# 323 + C:6401H LINE# 324 + C:6408H LINE# 325 + C:6413H LINE# 326 + C:6413H LINE# 327 + ------- ENDPROC AFEENTERPD + ------- PROC _AFEMOSCTL + D:0007H SYMBOL MosStatus + C:65C8H LINE# 336 + C:65C8H LINE# 337 + C:65C8H LINE# 338 + C:65CFH LINE# 339 + C:65D1H LINE# 340 + C:65DCH LINE# 341 + ------- ENDPROC _AFEMOSCTL + ------- PROC AFECHGERCHECKEN + C:6641H LINE# 351 + C:6641H LINE# 352 + C:6641H LINE# 353 + C:6648H LINE# 354 + C:6653H LINE# 355 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 46 + + + ------- ENDPROC AFECHGERCHECKEN + ------- PROC AFECHGERCHECKDIS + C:6654H LINE# 358 + C:6654H LINE# 359 + C:6654H LINE# 360 + C:665BH LINE# 361 + C:6666H LINE# 362 + ------- ENDPROC AFECHGERCHECKDIS + ------- PROC AFELOADCHECKEN + C:6667H LINE# 365 + C:6667H LINE# 366 + C:6667H LINE# 367 + C:666EH LINE# 368 + C:6679H LINE# 369 + ------- ENDPROC AFELOADCHECKEN + ------- PROC AFELOADCHECKDIS + C:667AH LINE# 372 + C:667AH LINE# 373 + C:667AH LINE# 374 + C:6681H LINE# 375 + C:668CH LINE# 376 + ------- ENDPROC AFELOADCHECKDIS + ------- PROC _AFEBALCTL + X:02BBH SYMBOL BalChTemp + C:5FD8H LINE# 385 + C:5FE0H LINE# 386 + C:5FE0H LINE# 387 + C:5FF4H LINE# 388 + C:6001H LINE# 389 + C:6001H LINE# 390 + C:600BH LINE# 391 + C:6016H LINE# 392 + C:6016H LINE# 393 + ------- ENDPROC _AFEBALCTL + ------- PROC AFEWDTEN + C:668DH LINE# 402 + C:668DH LINE# 403 + C:668DH LINE# 404 + C:6694H LINE# 405 + C:669FH LINE# 406 + ------- ENDPROC AFEWDTEN + ------- PROC AFEWDTDIS + C:66A0H LINE# 409 + C:66A0H LINE# 410 + C:66A0H LINE# 411 + C:66A7H LINE# 412 + C:66B2H LINE# 413 + ------- ENDPROC AFEWDTDIS + ------- PROC AFEADCEN + C:66B3H LINE# 422 + C:66B3H LINE# 423 + C:66B3H LINE# 424 + C:66BAH LINE# 425 + C:66C5H LINE# 426 + ------- ENDPROC AFEADCEN + ------- PROC AFEADCDIS + C:66C6H LINE# 429 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 47 + + + C:66C6H LINE# 430 + C:66C6H LINE# 431 + C:66CDH LINE# 432 + C:66D8H LINE# 433 + ------- ENDPROC AFEADCDIS + ------- PROC AFECADCEN + C:66D9H LINE# 435 + C:66D9H LINE# 436 + C:66D9H LINE# 437 + C:66E0H LINE# 438 + C:66EBH LINE# 439 + ------- ENDPROC AFECADCEN + ------- PROC AFECADCDIS + C:66ECH LINE# 442 + C:66ECH LINE# 443 + C:66ECH LINE# 444 + C:66F3H LINE# 445 + C:66FEH LINE# 446 + ------- ENDPROC AFECADCDIS + ------- PROC AFETEMPADCEN + C:66FFH LINE# 448 + C:66FFH LINE# 449 + C:66FFH LINE# 450 + C:6706H LINE# 451 + C:6711H LINE# 452 + ------- ENDPROC AFETEMPADCEN + ------- PROC AFETEMPADCDIS + C:6712H LINE# 455 + C:6712H LINE# 456 + C:6712H LINE# 457 + C:6719H LINE# 458 + C:6724H LINE# 459 + ------- ENDPROC AFETEMPADCDIS + ------- PROC _AFEALARMEN + D:0007H SYMBOL AlarmFlg + C:674AH LINE# 468 + C:674AH LINE# 469 + C:674AH LINE# 470 + C:6750H LINE# 471 + C:675BH LINE# 472 + ------- ENDPROC _AFEALARMEN + ------- PROC _AFEALARMDIS + D:0007H SYMBOL AlarmFlg + C:65B1H LINE# 474 + C:65B1H LINE# 475 + C:65B1H LINE# 476 + C:65BCH LINE# 477 + C:65C7H LINE# 478 + ------- ENDPROC _AFEALARMDIS + ------- ENDMOD AFE + + ------- MODULE BALANCE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + B:002AH.0 PUBLIC bBalancingFlg + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 48 + + + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + B:002AH.1 PUBLIC bCellOpenDecFlag + D:0080H PUBLIC P5 + C:6794H PUBLIC BalanceProcess + X:0386H PUBLIC ucBalanceStep + X:0387H PUBLIC ucCellOpenDecCnt + X:0388H PUBLIC ucCtoCnt + B:002AH.2 PUBLIC bBalanceFlg + C:6414H PUBLIC CTOTurnOnCheck + X:0389H PUBLIC ucBalanceTimeCnt + B:002AH.3 PUBLIC bBalanceOddFlg + X:038AH PUBLIC uiBalanceChannel + B:002AH.4 PUBLIC bCTOValidFlg + C:346BH PUBLIC BalTurnOnCheck + C:4209H PUBLIC BalProcess + C:61E2H PUBLIC CTOCheckVol + ------- PROC BALTURNONCHECK + ------- DO + D:0005H SYMBOL i + ------- ENDDO + C:346BH LINE# 32 + C:346BH LINE# 33 + C:346BH LINE# 36 + C:3477H LINE# 37 + C:3477H LINE# 38 + C:347DH LINE# 39 + C:347DH LINE# 40 + C:3484H LINE# 41 + C:34B4H LINE# 44 + C:34B4H LINE# 45 + C:34B6H LINE# 46 + C:34BBH LINE# 47 + C:34BCH LINE# 49 + C:34BCH LINE# 50 + C:3506H LINE# 51 + C:3506H LINE# 52 + C:3509H LINE# 53 + C:3509H LINE# 54 + C:350FH LINE# 55 + C:350FH LINE# 56 + C:352BH LINE# 57 + C:352BH LINE# 58 + C:3541H LINE# 59 + C:3541H LINE# 60 + C:3586H LINE# 61 + C:3586H LINE# 62 + C:35A1H LINE# 63 + C:35A1H LINE# 64 + C:35A4H LINE# 65 + C:35A6H LINE# 66 + C:35A6H LINE# 67 + C:35A7H LINE# 69 + C:35A7H LINE# 70 + C:35A9H LINE# 71 + C:35AEH LINE# 72 + C:35AEH LINE# 73 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 49 + + + C:35AEH LINE# 74 + C:35AEH LINE# 75 + C:35AEH LINE# 76 + ------- ENDPROC BALTURNONCHECK + ------- PROC CTOCHECKVOL + ------- DO + B:0028H.5 SYMBOL bResult + ------- ENDDO + C:61E2H LINE# 87 + C:61E2H LINE# 88 + C:61E2H LINE# 89 + C:61E4H LINE# 91 + C:61E7H LINE# 92 + C:61E7H LINE# 93 + C:61EAH LINE# 94 + C:61EAH LINE# 95 + C:61EDH LINE# 96 + C:61EDH LINE# 97 + C:61FCH LINE# 98 + C:61FCH LINE# 99 + C:61FEH LINE# 100 + C:6209H LINE# 101 + C:6209H LINE# 102 + C:620BH LINE# 103 + C:620BH LINE# 104 + C:620DH LINE# 106 + C:620DH LINE# 107 + C:620FH LINE# 108 + C:6214H LINE# 109 + C:6214H LINE# 110 + C:6214H LINE# 111 + C:6214H LINE# 128 + C:6214H LINE# 130 + C:6216H LINE# 131 + ------- ENDPROC CTOCHECKVOL + ------- PROC BALPROCESS + ------- DO + X:02B9H SYMBOL BalChTemp + ------- ENDDO + C:4209H LINE# 144 + C:4209H LINE# 145 + C:4209H LINE# 150 + C:4227H LINE# 151 + C:4227H LINE# 152 + C:4229H LINE# 153 + C:4229H LINE# 155 + C:4241H LINE# 156 + C:4241H LINE# 157 + C:4241H LINE# 158 + C:4247H LINE# 159 + C:4247H LINE# 160 + C:424AH LINE# 161 + C:424AH LINE# 162 + C:425DH LINE# 163 + C:425FH LINE# 165 + C:425FH LINE# 166 + C:4272H LINE# 167 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 50 + + + C:4272H LINE# 168 + C:427DH LINE# 169 + C:4283H LINE# 170 + C:4285H LINE# 171 + C:4285H LINE# 172 + C:4286H LINE# 174 + C:4286H LINE# 175 + C:428CH LINE# 176 + C:428DH LINE# 178 + C:428DH LINE# 179 + C:4292H LINE# 180 + C:4292H LINE# 181 + C:4298H LINE# 182 + C:429EH LINE# 183 + C:42A0H LINE# 184 + C:42A0H LINE# 185 + C:42A1H LINE# 187 + C:42A1H LINE# 188 + C:42A6H LINE# 189 + C:42A6H LINE# 190 + C:42ACH LINE# 191 + C:42ADH LINE# 193 + C:42ADH LINE# 194 + C:42B3H LINE# 195 + C:42B5H LINE# 196 + C:42B5H LINE# 197 + C:42B6H LINE# 199 + C:42B6H LINE# 200 + C:42BCH LINE# 201 + C:42BEH LINE# 202 + C:42C0H LINE# 203 + C:42C2H LINE# 204 + C:42C2H LINE# 205 + C:42C2H LINE# 206 + ------- ENDPROC BALPROCESS + ------- PROC CTOTURNONCHECK + C:6414H LINE# 215 + C:6414H LINE# 216 + C:6414H LINE# 220 + C:641AH LINE# 222 + C:641AH LINE# 223 + C:6425H LINE# 224 + C:6425H LINE# 225 + C:6428H LINE# 226 + C:642BH LINE# 227 + C:642BH LINE# 228 + C:642DH LINE# 229 + C:642FH LINE# 230 + C:6439H LINE# 231 + C:6439H LINE# 232 + C:6439H LINE# 233 + C:6439H LINE# 234 + ------- ENDPROC CTOTURNONCHECK + ------- PROC BALANCEPROCESS + C:6794H LINE# 242 + C:6794H LINE# 243 + C:6794H LINE# 244 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 51 + + + C:6797H LINE# 246 + C:679AH LINE# 248 + C:679DH LINE# 249 + ------- ENDPROC BALANCEPROCESS + ------- ENDMOD BALANCE + + ------- MODULE CALCULATE + C:0000H SYMBOL _ICE_DUMMY_ + C:42C3H PUBLIC OffsetCalculate + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:27C0H PUBLIC _CalcuTemp + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:624CH PUBLIC siCurTempOffset + C:2EFDH PUBLIC AfeCalcuCurr + C:382AH PUBLIC AfeCalcuVol + C:5BD2H PUBLIC AfeGetTempe + X:039AH PUBLIC ucChgingCheckCnt + C:6606H PUBLIC AFEInfoProcess + X:039BH PUBLIC ucDsgingCheckCnt + B:00A8H.4 PUBLIC ES0 + C:5A64H PUBLIC AfeGetVol + C:3A62H PUBLIC AfeCalcuTempe + ------- PROC _CALCUTEMP + D:0082H SYMBOL getdata + ------- DO + X:02B9H SYMBOL i + X:02BAH SYMBOL Temperature + X:02BCH SYMBOL Tempcalcu + ------- ENDDO + C:27C0H LINE# 22 + C:27C4H LINE# 23 + C:27C4H LINE# 31 + C:27F2H LINE# 32 + C:2804H LINE# 33 + C:2804H LINE# 34 + C:2821H LINE# 35 + C:2821H LINE# 38 + C:283AH LINE# 39 + C:283AH LINE# 40 + C:2844H LINE# 41 + C:2847H LINE# 42 + C:2860H LINE# 43 + C:2860H LINE# 44 + C:286AH LINE# 45 + C:286DH LINE# 47 + C:286DH LINE# 48 + C:2875H LINE# 49 + C:2894H LINE# 50 + C:2894H LINE# 51 + C:28A7H LINE# 52 + C:28A7H LINE# 53 + C:28C7H LINE# 54 + C:28C7H LINE# 55 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 52 + + + C:28C7H LINE# 56 + C:28C7H LINE# 57 + C:28CFH LINE# 58 + C:28CFH LINE# 60 + C:28CFH LINE# 61 + C:28E2H LINE# 62 + C:28E2H LINE# 63 + C:2902H LINE# 64 + C:2902H LINE# 65 + C:2902H LINE# 66 + C:2902H LINE# 67 + C:290AH LINE# 68 + C:2910H LINE# 69 + C:2910H LINE# 70 + C:2918H LINE# 72 + C:29A7H LINE# 73 + C:29A7H LINE# 74 + C:29AFH LINE# 75 + ------- ENDPROC _CALCUTEMP + ------- PROC AFEGETVOL + ------- DO + X:02C2H SYMBOL i + B:0028H.5 SYMBOL Result + ------- ENDDO + C:5A64H LINE# 84 + C:5A64H LINE# 85 + C:5A64H LINE# 87 + C:5A66H LINE# 89 + C:5A83H LINE# 90 + C:5A83H LINE# 91 + C:5A9EH LINE# 92 + C:5A9EH LINE# 93 + C:5AA0H LINE# 94 + C:5AA3H LINE# 95 + C:5AA3H LINE# 96 + C:5AABH LINE# 98 + C:5AADH LINE# 99 + ------- ENDPROC AFEGETVOL + ------- PROC AFEGETTEMPE + ------- DO + B:0028H.5 SYMBOL Result + ------- ENDDO + C:5BD2H LINE# 101 + C:5BD2H LINE# 102 + C:5BD2H LINE# 103 + C:5BD4H LINE# 105 + C:5BE1H LINE# 106 + C:5BE1H LINE# 107 + C:5BE3H LINE# 108 + C:5BE3H LINE# 109 + C:5BF0H LINE# 110 + C:5BF0H LINE# 111 + C:5BF2H LINE# 112 + C:5BF2H LINE# 114 + C:5BFFH LINE# 115 + C:5BFFH LINE# 116 + C:5C01H LINE# 117 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 53 + + + C:5C01H LINE# 118 + C:5C08H LINE# 119 + C:5C08H LINE# 120 + C:5C15H LINE# 121 + C:5C15H LINE# 122 + C:5C17H LINE# 123 + C:5C17H LINE# 124 + C:5C17H LINE# 126 + C:5C19H LINE# 127 + ------- ENDPROC AFEGETTEMPE + ------- PROC AFECALCUTEMPE + ------- DO + D:0006H SYMBOL TempeData + ------- ENDDO + C:3A62H LINE# 136 + C:3A62H LINE# 137 + C:3A62H LINE# 140 + C:3A6AH LINE# 141 + C:3A6AH LINE# 142 + C:3A81H LINE# 143 + C:3A83H LINE# 144 + C:3A8AH LINE# 145 + C:3A8CH LINE# 147 + C:3AB2H LINE# 148 + C:3AB4H LINE# 149 + C:3ABCH LINE# 150 + C:3ABEH LINE# 152 + C:3AC5H LINE# 153 + C:3AC5H LINE# 154 + C:3AEBH LINE# 155 + C:3AEDH LINE# 156 + C:3AF5H LINE# 157 + C:3AF7H LINE# 158 + C:3AF7H LINE# 160 + C:3B07H LINE# 161 + C:3B0FH LINE# 162 + C:3B12H LINE# 163 + C:3B12H LINE# 164 + C:3B29H LINE# 165 + C:3B2BH LINE# 166 + C:3B32H LINE# 167 + C:3B34H LINE# 169 + C:3B41H LINE# 170 + C:3B41H LINE# 171 + C:3B46H LINE# 172 + C:3B47H LINE# 174 + C:3B47H LINE# 175 + C:3B4FH LINE# 176 + C:3B4FH LINE# 177 + C:3B4FH LINE# 178 + C:3B4FH LINE# 179 + ------- ENDPROC AFECALCUTEMPE + ------- PROC AFECALCUVOL + ------- DO + X:02B9H SYMBOL i + X:02BAH SYMBOL TempPackVol + X:02BEH SYMBOL TempCellVol + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 54 + + + ------- ENDDO + C:382AH LINE# 189 + C:382AH LINE# 190 + C:382AH LINE# 192 + C:383EH LINE# 193 + C:3845H LINE# 194 + C:384FH LINE# 196 + C:3857H LINE# 197 + C:3857H LINE# 198 + C:3878H LINE# 199 + C:3878H LINE# 200 + C:38AFH LINE# 202 + C:38C6H LINE# 203 + C:38C6H LINE# 204 + C:38D4H LINE# 205 + C:38D4H LINE# 206 + C:38EBH LINE# 207 + C:38EBH LINE# 208 + C:38F9H LINE# 209 + C:38F9H LINE# 211 + C:38FCH LINE# 212 + C:38FCH LINE# 213 + C:38FEH LINE# 214 + C:3918H LINE# 215 + C:391AH LINE# 216 + C:392FH LINE# 217 + C:392FH LINE# 218 + C:3938H LINE# 220 + C:393BH LINE# 221 + C:393BH LINE# 222 + C:3945H LINE# 223 + C:394FH LINE# 225 + C:3951H LINE# 226 + C:395FH LINE# 227 + C:3961H LINE# 228 + C:3961H LINE# 229 + C:3961H LINE# 230 + ------- ENDPROC AFECALCUVOL + ------- PROC OFFSETCALCULATE + ------- DO + X:02BEH SYMBOL siCadcTempOffset + X:02C0H SYMBOL i + ------- ENDDO + C:42C3H LINE# 251 + C:42C3H LINE# 252 + C:42C3H LINE# 253 + C:42CAH LINE# 256 + C:42D9H LINE# 257 + C:42D9H LINE# 258 + C:4345H LINE# 259 + C:4345H LINE# 260 + C:4362H LINE# 261 + C:4364H LINE# 262 + C:4364H LINE# 263 + C:436DH LINE# 264 + C:4375H LINE# 265 + ------- ENDPROC OFFSETCALCULATE + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 55 + + + ------- PROC AFECALCUCURR + ------- DO + X:02B9H SYMBOL i + X:02BAH SYMBOL Tempdata + ------- ENDDO + C:2EFDH LINE# 273 + C:2EFDH LINE# 274 + C:2EFDH LINE# 276 + C:2F07H LINE# 278 + C:2F12H LINE# 280 + C:2F1EH LINE# 281 + C:2F1EH LINE# 282 + C:2F27H LINE# 283 + C:2F27H LINE# 284 + C:2F76H LINE# 286 + C:2F90H LINE# 287 + C:2F9BH LINE# 288 + C:2F9BH LINE# 289 + C:2F9DH LINE# 290 + C:2F9DH LINE# 291 + C:2FACH LINE# 292 + C:2FACH LINE# 293 + C:2FCAH LINE# 294 + C:2FD2H LINE# 295 + C:2FE7H LINE# 297 + C:2FE9H LINE# 298 + C:2FEBH LINE# 299 + C:300BH LINE# 300 + C:300BH LINE# 301 + C:3016H LINE# 302 + C:3016H LINE# 303 + C:3019H LINE# 304 + C:301BH LINE# 305 + C:301DH LINE# 306 + C:3029H LINE# 307 + C:302BH LINE# 308 + C:302BH LINE# 309 + C:302CH LINE# 310 + C:3046H LINE# 311 + C:3046H LINE# 312 + C:3050H LINE# 313 + C:3050H LINE# 314 + C:3053H LINE# 315 + C:3055H LINE# 316 + C:3057H LINE# 317 + C:3063H LINE# 318 + C:3065H LINE# 319 + C:3065H LINE# 320 + C:3066H LINE# 322 + C:3066H LINE# 323 + C:3068H LINE# 324 + C:3072H LINE# 325 + C:3074H LINE# 326 + C:3074H LINE# 327 + ------- ENDPROC AFECALCUCURR + ------- PROC AFEINFOPROCESS + C:6606H LINE# 336 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 56 + + + C:6606H LINE# 337 + C:6606H LINE# 338 + C:6609H LINE# 340 + C:660BH LINE# 341 + C:660EH LINE# 342 + C:6611H LINE# 344 + C:6614H LINE# 345 + C:6614H LINE# 346 + C:6616H LINE# 347 + C:6619H LINE# 348 + C:6619H LINE# 349 + ------- ENDPROC AFEINFOPROCESS + ------- ENDMOD CALCULATE + + ------- MODULE CALIBRATE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:0347H PUBLIC slExtCur + C:676CH PUBLIC CaliCurZero + X:034BH PUBLIC ucExtcaliSwitch1 + C:5048H PUBLIC CaliVoltage + C:5D7DH PUBLIC CaliTS1 + C:5DC2H PUBLIC CaliTS2 + X:034CH PUBLIC uiExtTemp1 + X:034EH PUBLIC uiExtTemp2 + C:583FH PUBLIC CaliProcess + C:608EH PUBLIC CaliCurrentGain + X:0350H PUBLIC ulExtVPack + X:0352H PUBLIC ucExtRTC + C:5E07H PUBLIC CaliRTCTime + B:002EH.3 PUBLIC bCaliFlg + ------- PROC CALIVOLTAGE + ------- DO + D:0007H SYMBOL i + X:02B9H SYMBOL VPackTemp + ------- ENDDO + C:5048H LINE# 26 + C:5048H LINE# 27 + C:5048H LINE# 29 + C:504FH LINE# 31 + C:5067H LINE# 32 + C:5067H LINE# 33 + C:5081H LINE# 34 + C:5084H LINE# 36 + C:50B4H LINE# 37 + ------- ENDPROC CALIVOLTAGE + ------- PROC CALICURRENTGAIN + ------- DO + D:0006H SYMBOL TempGain + ------- ENDDO + C:608EH LINE# 46 + C:608EH LINE# 47 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 57 + + + C:608EH LINE# 50 + C:60BCH LINE# 51 + C:60C0H LINE# 52 + C:60C0H LINE# 53 + C:60C8H LINE# 54 + C:60C8H LINE# 55 + ------- ENDPROC CALICURRENTGAIN + ------- PROC CALICURZERO + C:676CH LINE# 64 + C:676CH LINE# 65 + C:676CH LINE# 66 + C:677BH LINE# 67 + ------- ENDPROC CALICURZERO + ------- PROC CALITS1 + ------- DO + D:0006H SYMBOL Tempe + ------- ENDDO + C:5D7DH LINE# 76 + C:5D7DH LINE# 77 + C:5D7DH LINE# 80 + C:5D95H LINE# 81 + C:5DB9H LINE# 82 + C:5DB9H LINE# 83 + C:5DC1H LINE# 84 + C:5DC1H LINE# 85 + ------- ENDPROC CALITS1 + ------- PROC CALITS2 + ------- DO + D:0006H SYMBOL Tempe + ------- ENDDO + C:5DC2H LINE# 87 + C:5DC2H LINE# 88 + C:5DC2H LINE# 91 + C:5DDAH LINE# 92 + C:5DFEH LINE# 93 + C:5DFEH LINE# 94 + C:5E06H LINE# 95 + C:5E06H LINE# 96 + ------- ENDPROC CALITS2 + ------- PROC CALIRTCTIME + C:5E07H LINE# 106 + C:5E07H LINE# 107 + C:5E07H LINE# 108 + C:5E0FH LINE# 109 + C:5E17H LINE# 110 + C:5E1FH LINE# 111 + C:5E27H LINE# 112 + C:5E2FH LINE# 113 + C:5E37H LINE# 114 + C:5E3FH LINE# 116 + C:5E46H LINE# 118 + C:5E48H LINE# 119 + C:5E4AH LINE# 120 + ------- ENDPROC CALIRTCTIME + ------- PROC CALIPROCESS + C:583FH LINE# 131 + C:583FH LINE# 132 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 58 + + + C:583FH LINE# 133 + C:5842H LINE# 134 + C:5842H LINE# 135 + C:5844H LINE# 137 + C:584BH LINE# 138 + C:584BH LINE# 139 + C:584EH LINE# 140 + C:584EH LINE# 142 + C:5855H LINE# 143 + C:5855H LINE# 144 + C:5858H LINE# 145 + C:5858H LINE# 147 + C:585FH LINE# 148 + C:585FH LINE# 149 + C:5862H LINE# 150 + C:5862H LINE# 152 + C:5869H LINE# 153 + C:5869H LINE# 154 + C:586CH LINE# 155 + C:586CH LINE# 157 + C:5873H LINE# 158 + C:5873H LINE# 159 + C:5876H LINE# 160 + C:5876H LINE# 162 + C:587DH LINE# 163 + C:587DH LINE# 164 + C:5880H LINE# 165 + C:5880H LINE# 167 + C:5885H LINE# 168 + C:5887H LINE# 169 + C:588DH LINE# 170 + C:588DH LINE# 171 + ------- ENDPROC CALIPROCESS + ------- ENDMOD CALIBRATE + + ------- MODULE CHARGERLOAD + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:039CH PUBLIC ucChgerRCnt + B:002BH.5 PUBLIC bChgerChkingFlg + C:5E4BH PUBLIC ChgerCheck + X:039DH PUBLIC ucLoadRCnt + B:002BH.6 PUBLIC bLoadChkingFlg + B:002BH.7 PUBLIC bChgerStartCheckFlg + C:59CAH PUBLIC LoadCheck + B:002CH.0 PUBLIC bLoadStartCheckFlg + ------- PROC LOADCHECK + C:59CAH LINE# 26 + C:59CAH LINE# 27 + C:59CAH LINE# 28 + C:59CDH LINE# 29 + C:59CDH LINE# 30 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 59 + + + C:59CFH LINE# 31 + C:59D1H LINE# 32 + C:59D6H LINE# 33 + C:59D9H LINE# 34 + C:59DAH LINE# 35 + C:59DDH LINE# 36 + C:59DDH LINE# 37 + C:59E0H LINE# 38 + C:59E3H LINE# 39 + C:59E3H LINE# 40 + C:59FFH LINE# 41 + C:59FFH LINE# 42 + C:5A01H LINE# 43 + C:5A03H LINE# 44 + C:5A06H LINE# 45 + C:5A09H LINE# 46 + C:5A09H LINE# 47 + C:5A0BH LINE# 48 + C:5A0BH LINE# 49 + C:5A0DH LINE# 50 + C:5A0FH LINE# 51 + C:5A12H LINE# 52 + C:5A12H LINE# 53 + C:5A14H LINE# 54 + C:5A17H LINE# 55 + C:5A17H LINE# 56 + C:5A17H LINE# 57 + C:5A17H LINE# 58 + C:5A17H LINE# 59 + ------- ENDPROC LOADCHECK + ------- PROC CHGERCHECK + C:5E4BH LINE# 68 + C:5E4BH LINE# 69 + C:5E4BH LINE# 70 + C:5E4EH LINE# 71 + C:5E4EH LINE# 72 + C:5E50H LINE# 73 + C:5E52H LINE# 74 + C:5E57H LINE# 75 + C:5E5AH LINE# 76 + C:5E5BH LINE# 77 + C:5E5EH LINE# 78 + C:5E5EH LINE# 79 + C:5E61H LINE# 80 + C:5E64H LINE# 81 + C:5E64H LINE# 82 + C:5E80H LINE# 83 + C:5E80H LINE# 84 + C:5E82H LINE# 85 + C:5E84H LINE# 86 + C:5E87H LINE# 87 + C:5E8AH LINE# 88 + C:5E8AH LINE# 89 + C:5E8CH LINE# 90 + C:5E8CH LINE# 91 + C:5E8EH LINE# 92 + C:5E8EH LINE# 93 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 60 + + + C:5E8EH LINE# 94 + C:5E8EH LINE# 95 + ------- ENDPROC CHGERCHECK + ------- ENDMOD CHARGERLOAD + + ------- MODULE EXTE2PROM + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + C:2D4AH PUBLIC _E2PRomBKData + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:525BH PUBLIC _E2PRomWrite + C:4DF5H PUBLIC E2PRomInit + C:6529H PUBLIC E2PRomTwiCheck + X:0359H PUBLIC ucRTCBKTime1 + B:0027H.0 PUBLIC bRTCRdTime + X:035AH PUBLIC uiRTCBKTime2 + C:5F58H PUBLIC E2PRomBKBoot + B:0027H.1 PUBLIC bE2PErase + X:035CH PUBLIC uiE2PDataAddr + B:0027H.2 PUBLIC bE2PRErr + B:0027H.3 PUBLIC bE2PProcessFlg + I:002FH PUBLIC ucUpDataLimitTime + D:0099H PUBLIC SBUF + X:035EH PUBLIC uiCHGValidTime + D:00B1H PUBLIC RSTSTAT + C:5CF2H PUBLIC UartRdRTC + X:0360H PUBLIC ucE2PTwiRWErrDelayCnt + C:518CH PUBLIC UartRdE2PRom + B:0027H.4 PUBLIC bE2PTwiRWErrFlg + B:0027H.5 PUBLIC bE2PRdData + B:0027H.6 PUBLIC bE2PBKChgStart + X:0361H PUBLIC ucRTCBuf + B:0027H.7 PUBLIC bE2PBKRtc + B:0028H.0 PUBLIC bE2PBKDsgEndValid + B:0098H.4 PUBLIC REN + C:3B50H PUBLIC E2PRomBKCheck + C:564CH PUBLIC E2PRomBKProcess + C:50B5H PUBLIC E2PRomErase + C:5A18H PUBLIC E2PRomBKRTC + B:0028H.1 PUBLIC bE2PBKDsgEnd + B:0028H.2 PUBLIC bChgToDsgFlg + B:0028H.3 PUBLIC bDsgToChgFlg + B:0028H.4 PUBLIC bE2PBKChgStop + C:52BAH PUBLIC _E2PRomRead + ------- PROC E2PROMTWICHECK + C:6529H LINE# 39 + C:6529H LINE# 40 + C:6529H LINE# 41 + C:652CH LINE# 42 + C:652CH LINE# 43 + C:652FH LINE# 44 + C:652FH LINE# 45 + C:653AH LINE# 46 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 61 + + + C:653AH LINE# 47 + C:653CH LINE# 48 + C:653FH LINE# 49 + C:653FH LINE# 50 + C:6540H LINE# 52 + C:6540H LINE# 53 + C:6545H LINE# 54 + C:6545H LINE# 55 + C:6545H LINE# 56 + ------- ENDPROC E2PROMTWICHECK + ------- PROC _E2PROMWRITE + X:02E3H SYMBOL WrAddr + X:02E5H SYMBOL Length + X:02E6H SYMBOL WrBuf + ------- DO + B:0028H.5 SYMBOL Result + X:02E8H SYMBOL i + ------- ENDDO + C:525BH LINE# 65 + C:526CH LINE# 66 + C:526CH LINE# 67 + C:526EH LINE# 70 + C:5271H LINE# 71 + C:5271H LINE# 72 + C:5274H LINE# 73 + C:5274H LINE# 74 + C:529DH LINE# 75 + C:529DH LINE# 76 + C:529FH LINE# 77 + C:52A1H LINE# 78 + C:52A1H LINE# 79 + C:52A6H LINE# 80 + C:52B2H LINE# 81 + C:52B2H LINE# 82 + C:52B7H LINE# 84 + C:52B9H LINE# 85 + ------- ENDPROC _E2PROMWRITE + ------- PROC _E2PROMREAD + X:02C5H SYMBOL RdAddr + X:02C7H SYMBOL Length + X:02C8H SYMBOL RdBuf + ------- DO + B:0028H.6 SYMBOL Result + X:02CAH SYMBOL i + ------- ENDDO + C:52BAH LINE# 94 + C:52CBH LINE# 95 + C:52CBH LINE# 96 + C:52CDH LINE# 99 + C:52D0H LINE# 100 + C:52D0H LINE# 101 + C:52D3H LINE# 102 + C:52D3H LINE# 103 + C:52FCH LINE# 104 + C:52FCH LINE# 105 + C:52FEH LINE# 106 + C:5300H LINE# 107 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 62 + + + C:5300H LINE# 108 + C:5305H LINE# 109 + C:5311H LINE# 110 + C:5311H LINE# 111 + C:5316H LINE# 113 + C:5318H LINE# 114 + ------- ENDPROC _E2PROMREAD + ------- PROC E2PROMERASE + ------- DO + X:02BAH SYMBOL i + X:02BCH SYMBOL WrBuf + ------- ENDDO + C:50B5H LINE# 124 + C:50B5H LINE# 125 + C:50B5H LINE# 129 + C:50C0H LINE# 131 + C:50DEH LINE# 132 + C:50DEH LINE# 133 + C:50E1H LINE# 134 + C:5100H LINE# 135 + C:510CH LINE# 137 + C:5119H LINE# 138 + C:5120H LINE# 139 + ------- ENDPROC E2PROMERASE + ------- PROC E2PROMINIT + ------- DO + B:0028H.5 SYMBOL Result + X:02B9H SYMBOL RdBuf + ------- ENDDO + C:4DF5H LINE# 148 + C:4DF5H LINE# 149 + C:4DF5H LINE# 150 + C:4DF7H LINE# 154 + C:4E06H LINE# 156 + C:4E14H LINE# 157 + C:4E22H LINE# 159 + C:4E2EH LINE# 160 + C:4E2EH LINE# 161 + C:4E43H LINE# 162 + C:4E45H LINE# 163 + C:4E51H LINE# 164 + C:4E51H LINE# 165 + C:4E66H LINE# 166 + C:4E68H LINE# 168 + C:4E68H LINE# 169 + C:4E6FH LINE# 170 + C:4E6FH LINE# 172 + C:4E71H LINE# 173 + ------- ENDPROC E2PROMINIT + ------- PROC E2PROMBKRTC + ------- DO + X:02BAH SYMBOL WrBuf + D:0007H SYMBOL i + X:02C3H SYMBOL checksum + ------- ENDDO + C:5A18H LINE# 182 + C:5A18H LINE# 183 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 63 + + + C:5A18H LINE# 185 + C:5A1DH LINE# 187 + C:5A24H LINE# 188 + C:5A31H LINE# 189 + C:5A33H LINE# 190 + C:5A33H LINE# 191 + C:5A45H LINE# 192 + C:5A4AH LINE# 193 + C:5A52H LINE# 194 + C:5A56H LINE# 196 + C:5A63H LINE# 197 + ------- ENDPROC E2PROMBKRTC + ------- PROC E2PROMBKBOOT + ------- DO + X:02DBH SYMBOL WrBuf + ------- ENDDO + C:5F58H LINE# 206 + C:5F58H LINE# 207 + C:5F58H LINE# 210 + C:5F65H LINE# 211 + C:5F6AH LINE# 212 + C:5F73H LINE# 214 + C:5F7BH LINE# 215 + C:5F83H LINE# 216 + C:5F8BH LINE# 218 + C:5F98H LINE# 219 + ------- ENDPROC E2PROMBKBOOT + ------- PROC _E2PROMBKDATA + X:02BAH SYMBOL BKType + ------- DO + X:02BBH SYMBOL WrBuf + ------- ENDDO + C:2D4AH LINE# 228 + C:2D4FH LINE# 229 + C:2D4FH LINE# 232 + C:2D53H LINE# 233 + C:2D53H LINE# 234 + C:2D60H LINE# 235 + C:2D6BH LINE# 236 + C:2D6DH LINE# 238 + C:2D6DH LINE# 239 + C:2D74H LINE# 240 + C:2D81H LINE# 241 + C:2D8CH LINE# 242 + C:2D8CH LINE# 244 + C:2D99H LINE# 245 + C:2D9CH LINE# 246 + C:2DA9H LINE# 247 + C:2DACH LINE# 248 + C:2DBCH LINE# 249 + C:2DCCH LINE# 250 + C:2DDCH LINE# 251 + C:2DE7H LINE# 252 + C:2DF7H LINE# 253 + C:2E07H LINE# 254 + C:2E17H LINE# 255 + C:2E22H LINE# 256 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 64 + + + C:2E39H LINE# 257 + C:2E49H LINE# 258 + C:2E56H LINE# 259 + C:2E59H LINE# 260 + C:2E69H LINE# 261 + C:2E79H LINE# 262 + C:2E89H LINE# 263 + C:2E94H LINE# 264 + C:2EA1H LINE# 265 + C:2EA4H LINE# 266 + C:2EB1H LINE# 267 + C:2EB4H LINE# 268 + C:2EBCH LINE# 269 + C:2EC0H LINE# 271 + C:2ED1H LINE# 273 + C:2EDBH LINE# 274 + C:2EF2H LINE# 275 + C:2EF2H LINE# 276 + C:2EF9H LINE# 277 + C:2EF9H LINE# 279 + C:2EFCH LINE# 280 + ------- ENDPROC _E2PROMBKDATA + ------- PROC UARTRDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:518CH LINE# 289 + C:518CH LINE# 290 + C:518CH LINE# 293 + C:51B7H LINE# 294 + C:51C3H LINE# 296 + C:51E2H LINE# 297 + C:51F4H LINE# 298 + ------- ENDPROC UARTRDE2PROM + ------- PROC UARTRDRTC + C:5CF2H LINE# 307 + C:5CF2H LINE# 308 + C:5CF2H LINE# 309 + C:5CF9H LINE# 310 + C:5D06H LINE# 312 + C:5D25H LINE# 313 + C:5D37H LINE# 314 + ------- ENDPROC UARTRDRTC + ------- PROC E2PROMBKPROCESS + ------- DO + X:02B9H SYMBOL BKType + ------- ENDDO + C:564CH LINE# 323 + C:564CH LINE# 324 + C:564CH LINE# 327 + C:5652H LINE# 328 + C:5652H LINE# 329 + C:5654H LINE# 333 + C:5657H LINE# 334 + C:5657H LINE# 335 + C:5659H LINE# 336 + C:565CH LINE# 337 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 65 + + + C:565CH LINE# 339 + C:565FH LINE# 340 + C:565FH LINE# 341 + C:5661H LINE# 342 + C:5664H LINE# 343 + C:5664H LINE# 345 + C:5667H LINE# 346 + C:5667H LINE# 347 + C:5669H LINE# 348 + C:566CH LINE# 349 + C:566CH LINE# 351 + C:566FH LINE# 352 + C:566FH LINE# 353 + C:5671H LINE# 354 + C:5674H LINE# 355 + C:5674H LINE# 357 + C:5677H LINE# 358 + C:5677H LINE# 359 + C:5679H LINE# 360 + C:567FH LINE# 361 + C:5683H LINE# 362 + C:5683H LINE# 364 + C:5686H LINE# 365 + C:5686H LINE# 366 + C:5688H LINE# 367 + C:568EH LINE# 368 + C:5692H LINE# 369 + C:5692H LINE# 371 + C:5695H LINE# 372 + C:5695H LINE# 373 + C:5697H LINE# 374 + C:569DH LINE# 375 + C:56A1H LINE# 376 + C:56A1H LINE# 377 + C:56A1H LINE# 378 + ------- ENDPROC E2PROMBKPROCESS + ------- PROC E2PROMBKCHECK + C:3B50H LINE# 387 + C:3B50H LINE# 388 + C:3B50H LINE# 389 + C:3B56H LINE# 390 + C:3B56H LINE# 394 + C:3B65H LINE# 395 + C:3B65H LINE# 396 + C:3B67H LINE# 397 + C:3B6EH LINE# 398 + C:3B6EH LINE# 400 + C:3B83H LINE# 401 + C:3B83H LINE# 402 + C:3B8AH LINE# 403 + C:3B8CH LINE# 404 + C:3B8EH LINE# 405 + C:3B8EH LINE# 407 + C:3B91H LINE# 408 + C:3B91H LINE# 409 + C:3B93H LINE# 410 + C:3B96H LINE# 411 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 66 + + + C:3B96H LINE# 412 + C:3B98H LINE# 413 + C:3B9AH LINE# 414 + C:3B9CH LINE# 415 + C:3B9CH LINE# 416 + C:3BA2H LINE# 417 + C:3BA2H LINE# 418 + C:3BA4H LINE# 419 + C:3BA6H LINE# 420 + C:3BA8H LINE# 421 + C:3BAAH LINE# 422 + C:3BADH LINE# 423 + C:3BADH LINE# 424 + C:3BAFH LINE# 425 + C:3BAFH LINE# 426 + C:3BAFH LINE# 428 + C:3BCCH LINE# 429 + C:3BCCH LINE# 430 + C:3BD6H LINE# 431 + C:3BD6H LINE# 432 + C:3BDDH LINE# 433 + C:3BEAH LINE# 434 + C:3BEAH LINE# 436 + C:3C0BH LINE# 437 + C:3C0BH LINE# 438 + C:3C12H LINE# 439 + C:3C14H LINE# 440 + C:3C16H LINE# 441 + C:3C18H LINE# 442 + C:3C1AH LINE# 443 + C:3C1AH LINE# 444 + C:3C1BH LINE# 446 + C:3C1BH LINE# 447 + C:3C22H LINE# 448 + C:3C22H LINE# 449 + C:3C22H LINE# 450 + ------- ENDPROC E2PROMBKCHECK + ------- ENDMOD EXTE2PROM + + ------- MODULE INTERRUPT + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:1003H PUBLIC InterruptTimer3 + D:0086H PUBLIC INSCON + B:0088H.7 PUBLIC TF3 + B:00D8H.0 PUBLIC IF40 + C:5121H PUBLIC InterruptINT4 + B:00D8H.1 PUBLIC IF41 + B:00D8H.2 PUBLIC IF42 + B:00D8H.3 PUBLIC IF43 + B:00D8H.4 PUBLIC IF44 + B:00D8H.5 PUBLIC IF45 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 67 + + + B:00D8H.6 PUBLIC IF46 + B:00D8H.7 PUBLIC IF47 + ------- PROC INTERRUPTINT4 + C:5121H LINE# 18 + C:512CH LINE# 20 + C:512EH LINE# 21 + C:5131H LINE# 23 + C:5134H LINE# 24 + C:5134H LINE# 25 + C:5136H LINE# 26 + C:513BH LINE# 27 + C:513BH LINE# 28 + C:513EH LINE# 29 + C:513EH LINE# 30 + C:5140H LINE# 31 + C:5145H LINE# 32 + C:5145H LINE# 33 + C:5148H LINE# 34 + C:5148H LINE# 35 + C:514AH LINE# 36 + C:514FH LINE# 37 + C:514FH LINE# 38 + C:5152H LINE# 39 + C:5152H LINE# 40 + C:5154H LINE# 41 + C:5159H LINE# 42 + C:5159H LINE# 43 + C:515CH LINE# 44 + C:515CH LINE# 45 + C:515EH LINE# 46 + C:5163H LINE# 47 + C:5163H LINE# 48 + C:5166H LINE# 49 + C:5166H LINE# 50 + C:5168H LINE# 51 + C:516DH LINE# 52 + C:516DH LINE# 53 + C:5170H LINE# 54 + C:5170H LINE# 55 + C:5172H LINE# 56 + C:5177H LINE# 57 + C:5177H LINE# 58 + C:517AH LINE# 59 + C:517AH LINE# 60 + C:517CH LINE# 61 + C:5181H LINE# 62 + C:5181H LINE# 64 + C:5183H LINE# 65 + ------- ENDPROC INTERRUPTINT4 + ------- PROC INTERRUPTTIMER3 + C:1003H LINE# 74 + C:100BH LINE# 76 + C:100DH LINE# 78 + C:1010H LINE# 79 + C:1012H LINE# 80 + C:1015H LINE# 82 + C:1018H LINE# 84 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 68 + + + C:101AH LINE# 85 + ------- ENDPROC INTERRUPTTIMER3 + ------- ENDMOD INTERRUPT + + ------- MODULE KEYSCAN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0008H PUBLIC ucKeyValue + D:0080H PUBLIC P5 + D:0009H PUBLIC ucKeyValueBK + B:00B0H.0 PUBLIC P3_0 + B:00A0H.7 PUBLIC P2_7 + D:000AH PUBLIC uiKeyValidCnt + D:000CH PUBLIC ucKeyOldValue + B:002EH.4 PUBLIC bKeyFlg + C:4627H PUBLIC KeyScan + D:000DH PUBLIC uiKeyInvalidCnt + ------- PROC KEYSCAN + ------- DO + C:46BCH SYMBOL scanend + ------- ENDDO + C:4627H LINE# 33 + C:4627H LINE# 34 + C:4627H LINE# 35 + C:462DH LINE# 36 + C:462DH LINE# 37 + C:4630H LINE# 46 + C:4633H LINE# 47 + C:4633H LINE# 48 + C:4636H LINE# 49 + C:4638H LINE# 50 + C:463BH LINE# 51 + C:463BH LINE# 52 + C:463EH LINE# 53 + C:463EH LINE# 69 + C:4644H LINE# 70 + C:4644H LINE# 71 + C:464CH LINE# 72 + C:4657H LINE# 73 + C:4657H LINE# 74 + C:4661H LINE# 75 + C:4661H LINE# 76 + C:466BH LINE# 77 + C:466BH LINE# 78 + C:4671H LINE# 79 + C:4673H LINE# 81 + C:4673H LINE# 82 + C:4676H LINE# 83 + C:4676H LINE# 84 + C:4678H LINE# 85 + C:467AH LINE# 86 + C:467AH LINE# 91 + C:467AH LINE# 93 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 69 + + + C:467AH LINE# 94 + C:467CH LINE# 95 + C:467CH LINE# 96 + C:467CH LINE# 98 + C:467CH LINE# 99 + C:4682H LINE# 100 + C:4682H LINE# 101 + C:4687H LINE# 102 + C:468FH LINE# 103 + C:4697H LINE# 104 + C:4697H LINE# 105 + C:469DH LINE# 106 + C:469FH LINE# 107 + C:46A0H LINE# 108 + C:46AAH LINE# 109 + C:46AAH LINE# 110 + C:46B0H LINE# 111 + C:46B6H LINE# 112 + C:46B8H LINE# 113 + C:46B8H LINE# 114 + C:46B9H LINE# 116 + C:46B9H LINE# 117 + C:46BCH LINE# 118 + C:46BCH LINE# 119 + C:46C1H LINE# 120 + C:46C5H LINE# 121 + C:46C8H LINE# 122 + C:46C8H LINE# 123 + C:46C8H LINE# 124 + C:46C8H LINE# 125 + ------- ENDPROC KEYSCAN + ------- ENDMOD KEYSCAN + + ------- MODULE MCUFLASH + C:0000H SYMBOL _ICE_DUMMY_ + D:00F3H PUBLIC IB_CON2 + D:0080H PUBLIC P0 + D:00F4H PUBLIC IB_CON3 + D:0090H PUBLIC P1 + D:00F5H PUBLIC IB_CON4 + D:00A0H PUBLIC P2 + D:00F6H PUBLIC IB_CON5 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + X:039EH PUBLIC bMcuFlashWrWaitCnt + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00FCH PUBLIC IB_DATA + C:63A0H PUBLIC _McuFlashCheckFlg + C:5319H PUBLIC _McuFlashRead + C:6217H PUBLIC _McuFlashWrOneByte + B:002DH.0 PUBLIC bMcuFlashErr + C:489DH PUBLIC _McuFlashWrite + X:039FH PUBLIC ucMcuFlashWrValid + D:00FBH PUBLIC IB_OFFSET + D:00B1H PUBLIC RSTSTAT + D:00A7H PUBLIC FLASHCON + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 70 + + + C:4A52H PUBLIC _McuFlashWrSector + C:65DDH PUBLIC McuFlashWrWaitCheck + B:002DH.1 PUBLIC bMcuFlashWrFlg + C:643AH PUBLIC _McuFlashBlankCheck + C:54E7H PUBLIC _McuFlashDataCheck + D:00F7H PUBLIC XPAGE + B:002DH.2 PUBLIC bMcuFlashWrWaitFlg + C:3C23H PUBLIC McuFlashProcess + D:00F2H PUBLIC IB_CON1 + ------- PROC _MCUFLASHWRONEBYTE + D:0002H SYMBOL McuFlashAddr + D:0005H SYMBOL WrData + C:6217H LINE# 24 + C:621BH LINE# 25 + C:621BH LINE# 26 + C:621DH LINE# 27 + C:6220H LINE# 29 + C:6223H LINE# 30 + C:6227H LINE# 31 + C:622BH LINE# 33 + C:622EH LINE# 34 + C:6231H LINE# 35 + C:6234H LINE# 36 + C:6237H LINE# 37 + C:623EH LINE# 38 + C:623EH LINE# 39 + C:6241H LINE# 40 + C:6242H LINE# 41 + C:6243H LINE# 42 + C:6244H LINE# 43 + C:6245H LINE# 44 + C:6246H LINE# 45 + C:6246H LINE# 47 + C:6249H LINE# 48 + C:624BH LINE# 49 + ------- ENDPROC _MCUFLASHWRONEBYTE + ------- PROC _MCUFLASHBLANKCHECK + D:0006H SYMBOL McuFlashAddr + ------- DO + B:0029H.0 SYMBOL Result + D:0004H SYMBOL i + ------- ENDDO + C:643AH LINE# 58 + C:643AH LINE# 59 + C:643AH LINE# 60 + C:643CH LINE# 63 + C:643FH LINE# 64 + C:643FH LINE# 65 + C:644CH LINE# 66 + C:644CH LINE# 67 + C:644EH LINE# 68 + C:6450H LINE# 69 + C:6450H LINE# 70 + C:645DH LINE# 72 + C:645FH LINE# 73 + ------- ENDPROC _MCUFLASHBLANKCHECK + ------- PROC _MCUFLASHDATACHECK + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 71 + + + X:02BFH SYMBOL McuFlashAddr + D:0004H SYMBOL XramAddr + ------- DO + B:0029H.0 SYMBOL Result + D:0006H SYMBOL ptr + X:02C1H SYMBOL i + ------- ENDDO + C:54E7H LINE# 82 + C:54EFH LINE# 83 + C:54EFH LINE# 84 + C:54F1H LINE# 85 + C:54F5H LINE# 88 + C:5508H LINE# 89 + C:5508H LINE# 90 + C:552EH LINE# 91 + C:552EH LINE# 92 + C:5530H LINE# 93 + C:5532H LINE# 94 + C:5532H LINE# 95 + C:553EH LINE# 97 + C:5540H LINE# 98 + ------- ENDPROC _MCUFLASHDATACHECK + ------- PROC _MCUFLASHWRSECTOR + X:02BFH SYMBOL McuFlashAddr + D:0004H SYMBOL XramAddr + ------- DO + B:0029H.0 SYMBOL Result + D:0004H SYMBOL i + X:02C1H SYMBOL ptr + ------- ENDDO + C:4A52H LINE# 107 + C:4A5AH LINE# 108 + C:4A5AH LINE# 109 + C:4A5CH LINE# 111 + C:4A64H LINE# 113 + C:4A67H LINE# 114 + C:4A67H LINE# 115 + C:4A72H LINE# 116 + C:4A78H LINE# 117 + C:4A87H LINE# 118 + C:4A8AH LINE# 119 + C:4A8DH LINE# 120 + C:4A8DH LINE# 121 + C:4A90H LINE# 122 + C:4A94H LINE# 123 + C:4A94H LINE# 124 + C:4A97H LINE# 125 + C:4A9FH LINE# 126 + C:4A9FH LINE# 127 + C:4AA2H LINE# 128 + C:4AB2H LINE# 129 + C:4AB2H LINE# 130 + C:4AB5H LINE# 131 + C:4AB6H LINE# 132 + C:4AB7H LINE# 133 + C:4AB8H LINE# 134 + C:4AB9H LINE# 135 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 72 + + + C:4ABAH LINE# 136 + C:4ABCH LINE# 137 + C:4ABEH LINE# 139 + C:4ABEH LINE# 140 + C:4AC0H LINE# 141 + C:4AC2H LINE# 142 + C:4AC2H LINE# 143 + C:4AC2H LINE# 145 + C:4AC2H LINE# 146 + C:4AC4H LINE# 147 + C:4AC6H LINE# 148 + C:4AC6H LINE# 149 + C:4AC6H LINE# 151 + C:4AC6H LINE# 152 + C:4AC8H LINE# 153 + C:4ACAH LINE# 154 + C:4ACAH LINE# 155 + C:4ACAH LINE# 157 + C:4ACAH LINE# 158 + C:4ACCH LINE# 159 + C:4ACEH LINE# 160 + C:4ACEH LINE# 161 + C:4ADBH LINE# 163 + C:4ADDH LINE# 164 + ------- ENDPROC _MCUFLASHWRSECTOR + ------- PROC _MCUFLASHWRITE + X:02BBH SYMBOL McuFlashAddr + X:02BDH SYMBOL XramAddr + ------- DO + B:0028H.7 SYMBOL Result + ------- ENDDO + C:489DH LINE# 177 + C:48ABH LINE# 178 + C:48ABH LINE# 179 + C:48ADH LINE# 181 + C:48B0H LINE# 182 + C:48B2H LINE# 183 + C:48B5H LINE# 185 + C:48BEH LINE# 186 + C:48C1H LINE# 187 + C:48C4H LINE# 188 + C:48C4H LINE# 189 + C:48C7H LINE# 190 + C:48CBH LINE# 191 + C:48CBH LINE# 192 + C:48CEH LINE# 193 + C:48D6H LINE# 194 + C:48D6H LINE# 195 + C:48D9H LINE# 196 + C:48E2H LINE# 197 + C:48E2H LINE# 198 + C:48E5H LINE# 199 + C:48E6H LINE# 200 + C:48E7H LINE# 201 + C:48E8H LINE# 202 + C:48E9H LINE# 203 + C:48EAH LINE# 205 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 73 + + + C:48F7H LINE# 206 + C:48F7H LINE# 207 + C:490AH LINE# 208 + C:490AH LINE# 209 + C:491DH LINE# 210 + C:491DH LINE# 211 + C:491FH LINE# 212 + C:491FH LINE# 213 + C:491FH LINE# 214 + C:491FH LINE# 215 + C:491FH LINE# 216 + C:491FH LINE# 217 + C:491FH LINE# 218 + C:491FH LINE# 220 + C:4922H LINE# 221 + C:4924H LINE# 222 + C:4926H LINE# 223 + C:4928H LINE# 224 + C:492AH LINE# 226 + C:492DH LINE# 227 + C:492FH LINE# 228 + C:4931H LINE# 230 + C:4933H LINE# 231 + ------- ENDPROC _MCUFLASHWRITE + ------- PROC MCUFLASHPROCESS + ------- DO + B:0028H.5 SYMBOL McuFlashBk1WrFailFlg + B:0028H.6 SYMBOL McuFlashBk2WrFailFlg + X:02B9H SYMBOL VoltageMin + ------- ENDDO + C:3C23H LINE# 244 + C:3C23H LINE# 245 + C:3C23H LINE# 246 + C:3C27H LINE# 249 + C:3C2DH LINE# 250 + C:3C2DH LINE# 251 + C:3C2FH LINE# 253 + C:3C35H LINE# 254 + C:3C3CH LINE# 255 + C:3C3CH LINE# 256 + C:3C46H LINE# 257 + C:3C48H LINE# 259 + C:3C48H LINE# 260 + C:3C52H LINE# 261 + C:3C52H LINE# 263 + C:3C75H LINE# 264 + C:3C75H LINE# 265 + C:3C7EH LINE# 266 + C:3C7EH LINE# 267 + C:3C88H LINE# 268 + C:3C88H LINE# 269 + C:3C8AH LINE# 270 + C:3C92H LINE# 271 + C:3C9AH LINE# 272 + C:3CA1H LINE# 273 + C:3CA1H LINE# 274 + C:3CA1H LINE# 276 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 74 + + + C:3CACH LINE# 277 + C:3CACH LINE# 278 + C:3CB7H LINE# 279 + C:3CB7H LINE# 280 + C:3CB9H LINE# 281 + C:3CC1H LINE# 282 + C:3CC9H LINE# 283 + C:3CD0H LINE# 284 + C:3CD0H LINE# 285 + C:3CD0H LINE# 286 + C:3CD2H LINE# 288 + C:3CD2H LINE# 289 + C:3CD4H LINE# 290 + C:3CD6H LINE# 291 + C:3CD6H LINE# 292 + C:3CDBH LINE# 294 + C:3CE1H LINE# 295 + C:3CE1H LINE# 296 + C:3CE3H LINE# 297 + C:3CE3H LINE# 298 + C:3CE3H LINE# 299 + ------- ENDPROC MCUFLASHPROCESS + ------- PROC _MCUFLASHREAD + X:02B9H SYMBOL SourceAddr + D:0004H SYMBOL TargetAddr + X:02BBH SYMBOL Length + ------- DO + D:0006H SYMBOL i + B:0028H.5 SYMBOL Result + D:0015H SYMBOL TargetAddr1 + ------- ENDDO + C:5319H LINE# 308 + C:5327H LINE# 309 + C:5327H LINE# 311 + C:5329H LINE# 312 + C:5331H LINE# 314 + C:5333H LINE# 315 + C:5336H LINE# 316 + C:5339H LINE# 317 + C:5349H LINE# 318 + C:5349H LINE# 319 + C:5361H LINE# 320 + C:5369H LINE# 321 + C:5370H LINE# 322 + C:5373H LINE# 323 + C:5375H LINE# 325 + C:5377H LINE# 326 + ------- ENDPROC _MCUFLASHREAD + ------- PROC MCUFLASHWRWAITCHECK + C:65DDH LINE# 335 + C:65DDH LINE# 336 + C:65DDH LINE# 337 + C:65E0H LINE# 338 + C:65E0H LINE# 339 + C:65EBH LINE# 340 + C:65EBH LINE# 341 + C:65EDH LINE# 342 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 75 + + + C:65EFH LINE# 343 + C:65F1H LINE# 344 + C:65F1H LINE# 345 + C:65F1H LINE# 346 + ------- ENDPROC MCUFLASHWRWAITCHECK + ------- PROC _MCUFLASHCHECKFLG + D:0006H SYMBOL McuFlashAddr + ------- DO + B:0028H.5 SYMBOL Result + ------- ENDDO + C:63A0H LINE# 355 + C:63A0H LINE# 356 + C:63A0H LINE# 357 + C:63A2H LINE# 359 + C:63A5H LINE# 360 + C:63BFH LINE# 361 + C:63BFH LINE# 362 + C:63C1H LINE# 363 + C:63C1H LINE# 364 + C:63C4H LINE# 366 + C:63C6H LINE# 367 + ------- ENDPROC _MCUFLASHCHECKFLG + ------- ENDMOD MCUFLASH + + ------- MODULE MCULIB + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + C:5C1AH PUBLIC _Delay1ms + D:009DH PUBLIC SBRTH + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00C7H PUBLIC PWM0CON + D:00B6H PUBLIC PWM1CON + D:00B7H PUBLIC PWM2CON + D:009CH PUBLIC SBRTL + C:36F1H PUBLIC _McuTimer3Set + D:00A8H PUBLIC IEN0 + D:00A9H PUBLIC IEN1 + D:00E8H PUBLIC EXF0 + D:008EH PUBLIC SUSLO + C:62E6H PUBLIC _MemoryCopy + C:6376H PUBLIC _MemorySet + D:0087H PUBLIC PCON + D:00CFH PUBLIC PWM0DH + D:00A5H PUBLIC PWM1DH + D:00BFH PUBLIC PWM2DH + D:0098H PUBLIC SCON + D:0088H PUBLIC TCON + D:00CEH PUBLIC PWM0DL + D:00A4H PUBLIC PWM1DL + D:00BEH PUBLIC PWM2DL + D:00B2H PUBLIC CLKCON + D:00CDH PUBLIC PWM0PH + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 76 + + + D:00AFH PUBLIC PWM1PH + D:00BDH PUBLIC PWM2PH + D:00CCH PUBLIC PWM0PL + D:00AEH PUBLIC PWM1PL + C:677CH PUBLIC McuIntoIdle + C:579DH PUBLIC _McuClockSet + C:62B3H PUBLIC ClrRam + D:00BCH PUBLIC PWM2PL + D:0086H PUBLIC INSCON + D:008DH PUBLIC TH3 + D:008CH PUBLIC TL3 + C:6788H PUBLIC McuIntoPD + B:0088H.2 PUBLIC TR3 + C:51F5H PUBLIC RamCheckProcess + D:0088H PUBLIC T3CON + C:6460H PUBLIC SystemResetProcess + C:4C72H PUBLIC _McuPWM0Set + C:4CF3H PUBLIC _McuPWM1Set + C:4D74H PUBLIC _McuPWM2Set + ------- PROC _MCUTIMER3SET + X:02B9H SYMBOL ClkSource + X:02BAH SYMBOL XmS + ------- DO + X:02BCH SYMBOL TempVal + ------- ENDDO + C:36F1H LINE# 20 + C:36FEH LINE# 21 + C:36FEH LINE# 24 + C:3701H LINE# 26 + C:3706H LINE# 27 + C:3706H LINE# 28 + C:3714H LINE# 29 + C:3714H LINE# 30 + C:3717H LINE# 31 + C:3729H LINE# 32 + C:372CH LINE# 34 + C:372CH LINE# 35 + C:372FH LINE# 36 + C:3754H LINE# 37 + C:3754H LINE# 38 + C:3757H LINE# 39 + C:375FH LINE# 40 + C:375FH LINE# 41 + C:376DH LINE# 42 + C:376DH LINE# 43 + C:3770H LINE# 44 + C:378DH LINE# 45 + C:3790H LINE# 47 + C:3790H LINE# 48 + C:3793H LINE# 49 + C:37B8H LINE# 50 + C:37B8H LINE# 51 + C:37BAH LINE# 52 + C:37C0H LINE# 53 + C:37C0H LINE# 54 + C:37CEH LINE# 55 + C:37CEH LINE# 56 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 77 + + + C:37D1H LINE# 57 + C:37EEH LINE# 58 + C:37F0H LINE# 60 + C:37F0H LINE# 61 + C:37F3H LINE# 62 + C:3818H LINE# 63 + C:3818H LINE# 64 + C:3818H LINE# 66 + C:3821H LINE# 67 + C:3824H LINE# 68 + C:3826H LINE# 70 + C:3829H LINE# 71 + ------- ENDPROC _MCUTIMER3SET + ------- PROC _MCUCLOCKSET + D:0007H SYMBOL SysClock + ------- DO + D:0006H SYMBOL ea + ------- ENDDO + C:579DH LINE# 80 + C:579DH LINE# 81 + C:579DH LINE# 84 + C:57A2H LINE# 85 + C:57A4H LINE# 87 + C:57B4H LINE# 89 + C:57B4H LINE# 90 + C:57B9H LINE# 91 + C:57BBH LINE# 92 + C:57C4H LINE# 93 + C:57C4H LINE# 94 + C:57C7H LINE# 95 + C:57C8H LINE# 96 + C:57CBH LINE# 97 + C:57CBH LINE# 98 + C:57CCH LINE# 99 + C:57CDH LINE# 100 + C:57CEH LINE# 101 + C:57CFH LINE# 102 + C:57D0H LINE# 103 + C:57D1H LINE# 104 + C:57D2H LINE# 105 + C:57D3H LINE# 106 + C:57E3H LINE# 108 + C:57E3H LINE# 109 + C:57E6H LINE# 110 + C:57E6H LINE# 112 + C:57EDH LINE# 113 + ------- ENDPROC _MCUCLOCKSET + ------- PROC _MCUPWM0SET + X:0392H SYMBOL PwmFreq + X:0394H SYMBOL DutyRatio + C:4C72H LINE# 122 + C:4C7DH LINE# 123 + C:4C7DH LINE# 124 + C:4C80H LINE# 125 + C:4C9AH LINE# 126 + C:4CB9H LINE# 127 + C:4CD7H LINE# 128 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 78 + + + C:4CF2H LINE# 129 + ------- ENDPROC _MCUPWM0SET + ------- PROC _MCUPWM1SET + X:0395H SYMBOL PwmFreq + X:0397H SYMBOL DutyRatio + C:4CF3H LINE# 131 + C:4CFEH LINE# 132 + C:4CFEH LINE# 133 + C:4D01H LINE# 134 + C:4D1BH LINE# 135 + C:4D3AH LINE# 136 + C:4D58H LINE# 137 + C:4D73H LINE# 138 + ------- ENDPROC _MCUPWM1SET + ------- PROC _MCUPWM2SET + X:02B9H SYMBOL PwmFreq + X:02BBH SYMBOL DutyRatio + C:4D74H LINE# 140 + C:4D7FH LINE# 141 + C:4D7FH LINE# 142 + C:4D82H LINE# 143 + C:4D9CH LINE# 144 + C:4DBBH LINE# 145 + C:4DD9H LINE# 146 + C:4DF4H LINE# 147 + ------- ENDPROC _MCUPWM2SET + ------- PROC _DELAY1MS + D:0007H SYMBOL Xms + ------- DO + D:0006H SYMBOL i + D:0002H SYMBOL j + D:0004H SYMBOL Tcnt + ------- ENDDO + C:5C1AH LINE# 160 + C:5C1AH LINE# 161 + C:5C1AH LINE# 165 + C:5C20H LINE# 166 + C:5C20H LINE# 167 + C:5C24H LINE# 168 + C:5C26H LINE# 169 + C:5C2EH LINE# 170 + C:5C2EH LINE# 171 + C:5C32H LINE# 172 + C:5C34H LINE# 173 + C:5C3CH LINE# 174 + C:5C3CH LINE# 175 + C:5C40H LINE# 176 + C:5C42H LINE# 178 + C:5C42H LINE# 179 + C:5C46H LINE# 180 + C:5C46H LINE# 183 + C:5C4DH LINE# 184 + C:5C4DH LINE# 185 + C:5C57H LINE# 186 + C:5C57H LINE# 187 + C:5C5EH LINE# 188 + C:5C61H LINE# 189 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 79 + + + ------- ENDPROC _DELAY1MS + ------- PROC CLRRAM + ------- DO + D:0000H SYMBOL ptr1 + D:0006H SYMBOL ptr2 + D:0007H SYMBOL i + I:001EH SYMBOL j + ------- ENDDO + C:62B3H LINE# 199 + C:62B3H LINE# 200 + C:62B3H LINE# 206 + C:62B5H LINE# 207 + C:62B5H LINE# 208 + C:62B9H LINE# 209 + C:62BBH LINE# 210 + C:62C2H LINE# 212 + C:62D7H LINE# 213 + C:62D7H LINE# 214 + C:62D7H LINE# 215 + C:62DDH LINE# 216 + C:62E5H LINE# 217 + ------- ENDPROC CLRRAM + ------- PROC RAMCHECKPROCESS + C:51F5H LINE# 226 + C:51F5H LINE# 227 + C:51F5H LINE# 228 + C:5257H LINE# 240 + C:5257H LINE# 241 + C:5259H LINE# 242 + C:5259H LINE# 244 + C:5259H LINE# 245 + C:525AH LINE# 246 + C:525AH LINE# 247 + ------- ENDPROC RAMCHECKPROCESS + ------- PROC _MEMORYSET + X:02C5H SYMBOL pt + D:0005H SYMBOL setval + D:0003H SYMBOL length + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:6376H LINE# 258 + C:637EH LINE# 259 + C:637EH LINE# 261 + C:6385H LINE# 262 + C:6385H LINE# 263 + C:6392H LINE# 264 + C:639CH LINE# 265 + C:639FH LINE# 266 + ------- ENDPROC _MEMORYSET + ------- PROC _MEMORYCOPY + X:02DBH SYMBOL source + D:0004H SYMBOL target + D:0003H SYMBOL length + ------- DO + D:0007H SYMBOL i + ------- ENDDO + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 80 + + + C:62E6H LINE# 277 + C:62EEH LINE# 278 + C:62EEH LINE# 280 + C:62F5H LINE# 281 + C:62F5H LINE# 282 + C:6306H LINE# 283 + C:630BH LINE# 284 + C:6315H LINE# 285 + C:6318H LINE# 286 + ------- ENDPROC _MEMORYCOPY + ------- PROC MCUINTOIDLE + C:677CH LINE# 295 + C:677CH LINE# 296 + C:677CH LINE# 297 + C:677FH LINE# 298 + C:6782H LINE# 299 + C:6783H LINE# 300 + C:6784H LINE# 301 + C:6785H LINE# 302 + C:6786H LINE# 303 + C:6787H LINE# 304 + ------- ENDPROC MCUINTOIDLE + ------- PROC MCUINTOPD + C:6788H LINE# 306 + C:6788H LINE# 307 + C:6788H LINE# 308 + C:678BH LINE# 309 + C:678EH LINE# 310 + C:678FH LINE# 311 + C:6790H LINE# 312 + C:6791H LINE# 313 + C:6792H LINE# 314 + C:6793H LINE# 315 + ------- ENDPROC MCUINTOPD + ------- PROC SYSTEMRESETPROCESS + C:6460H LINE# 324 + C:6460H LINE# 325 + C:6460H LINE# 326 + C:6471H LINE# 328 + C:6471H LINE# 329 + C:6473H LINE# 330 + C:6475H LINE# 331 + C:6477H LINE# 332 + C:6479H LINE# 333 + C:647BH LINE# 335 + C:647DH LINE# 336 + C:647FH LINE# 337 + C:6481H LINE# 339 + C:6484H LINE# 340 + C:6484H LINE# 341 + ------- ENDPROC SYSTEMRESETPROCESS + ------- ENDMOD MCULIB + + ------- MODULE MOSCTRL + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 81 + + + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:5AAEH PUBLIC MosStatusCheck + C:6349H PUBLIC MosCtrl + B:002DH.5 PUBLIC bCHGMOSBk + B:002DH.6 PUBLIC bDSGMOSBk + ------- PROC MOSSTATUSCHECK + C:5AAEH LINE# 20 + C:5AAEH LINE# 21 + C:5AAEH LINE# 22 + C:5AB0H LINE# 23 + C:5AB2H LINE# 25 + C:5AB8H LINE# 26 + C:5AB8H LINE# 27 + C:5ABAH LINE# 28 + C:5ABAH LINE# 30 + C:5ACCH LINE# 31 + C:5ACCH LINE# 32 + C:5ACEH LINE# 33 + C:5ACEH LINE# 35 + C:5AD1H LINE# 36 + C:5AD1H LINE# 37 + C:5ADDH LINE# 38 + C:5ADDH LINE# 39 + C:5ADFH LINE# 40 + C:5ADFH LINE# 41 + C:5ADFH LINE# 43 + C:5AE2H LINE# 44 + C:5AE2H LINE# 45 + C:5AE5H LINE# 46 + C:5AE5H LINE# 47 + C:5AE7H LINE# 48 + C:5AE7H LINE# 49 + C:5AE7H LINE# 51 + C:5AF0H LINE# 52 + C:5AF0H LINE# 53 + C:5AF2H LINE# 54 + C:5AF2H LINE# 56 + C:5AF5H LINE# 57 + C:5AF5H LINE# 58 + C:5AF7H LINE# 59 + C:5AF7H LINE# 60 + ------- ENDPROC MOSSTATUSCHECK + ------- PROC MOSCTRL + C:6349H LINE# 70 + C:6349H LINE# 71 + C:6349H LINE# 72 + C:634CH LINE# 74 + C:635CH LINE# 75 + C:635CH LINE# 76 + C:6360H LINE# 77 + C:6364H LINE# 79 + C:6375H LINE# 80 + C:6375H LINE# 81 + ------- ENDPROC MOSCTRL + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 82 + + + ------- ENDMOD MOSCTRL + + ------- MODULE PORSELFTEST + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + C:588EH PUBLIC PorProtectOTC + D:0090H PUBLIC P1 + C:592CH PUBLIC PorProtectOTD + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:58DDH PUBLIC PorProtectUTC + C:597BH PUBLIC PorProtectUTD + C:5C62H PUBLIC PorProtectOV + C:5CAAH PUBLIC PorProtectUV + X:03A1H PUBLIC ucPorSelfTestDelayCnt + B:002EH.5 PUBLIC bPorSelfTestFlg + C:60C9H PUBLIC PorSelfTest + ------- PROC PORPROTECTOV + C:5C62H LINE# 20 + C:5C62H LINE# 21 + C:5C62H LINE# 22 + C:5C65H LINE# 23 + C:5C65H LINE# 24 + C:5C74H LINE# 25 + C:5C74H LINE# 26 + C:5C89H LINE# 27 + C:5C89H LINE# 28 + C:5C8BH LINE# 29 + C:5C92H LINE# 30 + C:5C92H LINE# 31 + C:5C93H LINE# 32 + C:5CA2H LINE# 33 + C:5CA2H LINE# 34 + C:5CA9H LINE# 35 + C:5CA9H LINE# 36 + C:5CA9H LINE# 37 + ------- ENDPROC PORPROTECTOV + ------- PROC PORPROTECTUV + C:5CAAH LINE# 46 + C:5CAAH LINE# 47 + C:5CAAH LINE# 48 + C:5CADH LINE# 49 + C:5CADH LINE# 50 + C:5CBCH LINE# 51 + C:5CBCH LINE# 52 + C:5CD1H LINE# 53 + C:5CD1H LINE# 54 + C:5CD3H LINE# 55 + C:5CDAH LINE# 56 + C:5CDAH LINE# 57 + C:5CDBH LINE# 58 + C:5CEAH LINE# 59 + C:5CEAH LINE# 60 + C:5CF1H LINE# 61 + C:5CF1H LINE# 62 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 83 + + + C:5CF1H LINE# 63 + ------- ENDPROC PORPROTECTUV + ------- PROC PORPROTECTOTC + C:588EH LINE# 72 + C:588EH LINE# 73 + C:588EH LINE# 74 + C:5891H LINE# 75 + C:5891H LINE# 76 + C:58A7H LINE# 77 + C:58A7H LINE# 78 + C:58BCH LINE# 79 + C:58BCH LINE# 80 + C:58BEH LINE# 81 + C:58C5H LINE# 82 + C:58C5H LINE# 83 + C:58C6H LINE# 84 + C:58D5H LINE# 85 + C:58D5H LINE# 86 + C:58DCH LINE# 87 + C:58DCH LINE# 88 + C:58DCH LINE# 89 + ------- ENDPROC PORPROTECTOTC + ------- PROC PORPROTECTUTC + C:58DDH LINE# 98 + C:58DDH LINE# 99 + C:58DDH LINE# 100 + C:58E0H LINE# 101 + C:58E0H LINE# 102 + C:58F6H LINE# 103 + C:58F6H LINE# 104 + C:590BH LINE# 105 + C:590BH LINE# 106 + C:590DH LINE# 107 + C:5914H LINE# 108 + C:5914H LINE# 109 + C:5915H LINE# 110 + C:5924H LINE# 111 + C:5924H LINE# 112 + C:592BH LINE# 113 + C:592BH LINE# 114 + C:592BH LINE# 115 + ------- ENDPROC PORPROTECTUTC + ------- PROC PORPROTECTOTD + C:592CH LINE# 124 + C:592CH LINE# 125 + C:592CH LINE# 126 + C:592FH LINE# 127 + C:592FH LINE# 128 + C:5945H LINE# 129 + C:5945H LINE# 130 + C:595AH LINE# 131 + C:595AH LINE# 132 + C:595CH LINE# 133 + C:5963H LINE# 134 + C:5963H LINE# 135 + C:5964H LINE# 136 + C:5973H LINE# 137 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 84 + + + C:5973H LINE# 138 + C:597AH LINE# 139 + C:597AH LINE# 140 + C:597AH LINE# 141 + ------- ENDPROC PORPROTECTOTD + ------- PROC PORPROTECTUTD + C:597BH LINE# 150 + C:597BH LINE# 151 + C:597BH LINE# 152 + C:597EH LINE# 153 + C:597EH LINE# 154 + C:5994H LINE# 155 + C:5994H LINE# 156 + C:59A9H LINE# 157 + C:59A9H LINE# 158 + C:59ABH LINE# 159 + C:59B2H LINE# 160 + C:59B2H LINE# 161 + C:59B3H LINE# 162 + C:59C2H LINE# 163 + C:59C2H LINE# 164 + C:59C9H LINE# 165 + C:59C9H LINE# 166 + C:59C9H LINE# 167 + ------- ENDPROC PORPROTECTUTD + ------- PROC PORSELFTEST + C:60C9H LINE# 176 + C:60C9H LINE# 177 + C:60C9H LINE# 178 + C:60CCH LINE# 179 + C:60CCH LINE# 180 + C:60CFH LINE# 181 + C:60D2H LINE# 182 + C:60D5H LINE# 183 + C:60D8H LINE# 185 + C:60DBH LINE# 186 + C:60DEH LINE# 187 + C:60E1H LINE# 188 + C:60E4H LINE# 190 + C:60EFH LINE# 191 + C:60EFH LINE# 192 + C:60F1H LINE# 193 + C:60FDH LINE# 194 + C:60FDH LINE# 195 + C:60FFH LINE# 196 + C:6100H LINE# 198 + C:6100H LINE# 199 + C:6103H LINE# 200 + C:6103H LINE# 201 + C:6103H LINE# 202 + C:6103H LINE# 203 + ------- ENDPROC PORSELFTEST + ------- ENDMOD PORSELFTEST + + ------- MODULE PROTECT + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 85 + + + D:0090H PUBLIC P1 + X:0325H PUBLIC uiOCD1DelayCnt + D:00A0H PUBLIC P2 + X:0327H PUBLIC uiOCD2DelayCnt + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:3DA1H PUBLIC ProtectOV + C:3E5DH PUBLIC ProtectUV + B:002DH.7 PUBLIC bOVLock + B:002EH.0 PUBLIC bUVLock + X:0329H PUBLIC uiOVDelayCnt + X:032BH PUBLIC uiUVDelayCnt + X:032DH PUBLIC uiOTCRDelayCnt + X:032FH PUBLIC uiOTDRDelayCnt + X:0331H PUBLIC uiUTCRDelayCnt + X:0333H PUBLIC uiUTDRDelayCnt + C:5541H PUBLIC ProtectOCC + C:64ECH PUBLIC ProtectProcess + C:3F19H PUBLIC ProtectOTC + C:4091H PUBLIC ProtectOTD + X:0335H PUBLIC uiOCCRcnt + X:0337H PUBLIC uiOCCDelayCnt + X:0339H PUBLIC uiOCDRcnt + C:3FD5H PUBLIC ProtectUTC + C:414DH PUBLIC ProtectUTD + C:4F63H PUBLIC ProtectOCRecover + X:033BH PUBLIC uiOTCDelayCnt + X:033DH PUBLIC uiOTDDelayCnt + X:033FH PUBLIC uiUTCDelayCnt + X:0341H PUBLIC uiUTDDelayCnt + C:559AH PUBLIC ProtectOCD1 + C:55F3H PUBLIC ProtectOCD2 + X:0343H PUBLIC uiOVRDelayCnt + X:0345H PUBLIC uiUVRDelayCnt + ------- PROC PROTECTOV + C:3DA1H LINE# 39 + C:3DA1H LINE# 40 + C:3DA1H LINE# 41 + C:3DA4H LINE# 42 + C:3DA4H LINE# 43 + C:3DB3H LINE# 44 + C:3DB3H LINE# 45 + C:3DD4H LINE# 46 + C:3DD4H LINE# 47 + C:3DD6H LINE# 48 + C:3DD8H LINE# 49 + C:3DDFH LINE# 50 + C:3DE5H LINE# 51 + C:3DE5H LINE# 52 + C:3DE6H LINE# 53 + C:3DF5H LINE# 54 + C:3DF5H LINE# 55 + C:3DFCH LINE# 56 + C:3DFCH LINE# 57 + C:3DFDH LINE# 58 + C:3E00H LINE# 59 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 86 + + + C:3E00H LINE# 60 + C:3E0FH LINE# 61 + C:3E0FH LINE# 62 + C:3E2DH LINE# 63 + C:3E2DH LINE# 64 + C:3E30H LINE# 65 + C:3E30H LINE# 66 + C:3E32H LINE# 67 + C:3E34H LINE# 68 + C:3E36H LINE# 70 + C:3E36H LINE# 71 + C:3E38H LINE# 72 + C:3E38H LINE# 73 + C:3E3FH LINE# 74 + C:3E45H LINE# 75 + C:3E45H LINE# 76 + C:3E46H LINE# 77 + C:3E55H LINE# 78 + C:3E55H LINE# 79 + C:3E5CH LINE# 80 + C:3E5CH LINE# 81 + C:3E5CH LINE# 82 + ------- ENDPROC PROTECTOV + ------- PROC PROTECTUV + C:3E5DH LINE# 90 + C:3E5DH LINE# 91 + C:3E5DH LINE# 92 + C:3E60H LINE# 93 + C:3E60H LINE# 94 + C:3E6FH LINE# 95 + C:3E6FH LINE# 96 + C:3E90H LINE# 97 + C:3E90H LINE# 98 + C:3E92H LINE# 99 + C:3E94H LINE# 100 + C:3E9BH LINE# 101 + C:3EA1H LINE# 102 + C:3EA1H LINE# 103 + C:3EA2H LINE# 104 + C:3EB1H LINE# 105 + C:3EB1H LINE# 106 + C:3EB8H LINE# 107 + C:3EB8H LINE# 108 + C:3EB9H LINE# 109 + C:3EBCH LINE# 110 + C:3EBCH LINE# 111 + C:3ECBH LINE# 112 + C:3ECBH LINE# 113 + C:3EE9H LINE# 114 + C:3EE9H LINE# 115 + C:3EECH LINE# 116 + C:3EECH LINE# 117 + C:3EEEH LINE# 118 + C:3EF0H LINE# 119 + C:3EF2H LINE# 121 + C:3EF2H LINE# 122 + C:3EF4H LINE# 123 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 87 + + + C:3EF4H LINE# 124 + C:3EFBH LINE# 125 + C:3F01H LINE# 126 + C:3F01H LINE# 127 + C:3F02H LINE# 128 + C:3F11H LINE# 129 + C:3F11H LINE# 130 + C:3F18H LINE# 131 + C:3F18H LINE# 132 + C:3F18H LINE# 133 + ------- ENDPROC PROTECTUV + ------- PROC PROTECTOTC + C:3F19H LINE# 141 + C:3F19H LINE# 142 + C:3F19H LINE# 143 + C:3F1CH LINE# 144 + C:3F1CH LINE# 145 + C:3F32H LINE# 146 + C:3F32H LINE# 147 + C:3F53H LINE# 148 + C:3F53H LINE# 149 + C:3F55H LINE# 150 + C:3F5CH LINE# 151 + C:3F62H LINE# 152 + C:3F62H LINE# 153 + C:3F63H LINE# 154 + C:3F72H LINE# 155 + C:3F72H LINE# 156 + C:3F79H LINE# 157 + C:3F79H LINE# 158 + C:3F7AH LINE# 160 + C:3F7AH LINE# 161 + C:3F90H LINE# 162 + C:3F90H LINE# 163 + C:3FAEH LINE# 164 + C:3FAEH LINE# 165 + C:3FB0H LINE# 166 + C:3FB7H LINE# 167 + C:3FBDH LINE# 168 + C:3FBDH LINE# 169 + C:3FBEH LINE# 170 + C:3FCDH LINE# 171 + C:3FCDH LINE# 172 + C:3FD4H LINE# 173 + C:3FD4H LINE# 174 + C:3FD4H LINE# 175 + ------- ENDPROC PROTECTOTC + ------- PROC PROTECTUTC + C:3FD5H LINE# 184 + C:3FD5H LINE# 185 + C:3FD5H LINE# 186 + C:3FD8H LINE# 187 + C:3FD8H LINE# 188 + C:3FEEH LINE# 189 + C:3FEEH LINE# 190 + C:400FH LINE# 191 + C:400FH LINE# 192 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 88 + + + C:4011H LINE# 193 + C:4018H LINE# 194 + C:401EH LINE# 195 + C:401EH LINE# 196 + C:401FH LINE# 197 + C:402EH LINE# 198 + C:402EH LINE# 199 + C:4035H LINE# 200 + C:4035H LINE# 201 + C:4036H LINE# 203 + C:4036H LINE# 204 + C:404CH LINE# 205 + C:404CH LINE# 206 + C:406AH LINE# 207 + C:406AH LINE# 208 + C:406CH LINE# 209 + C:4073H LINE# 210 + C:4079H LINE# 211 + C:4079H LINE# 212 + C:407AH LINE# 213 + C:4089H LINE# 214 + C:4089H LINE# 215 + C:4090H LINE# 216 + C:4090H LINE# 217 + C:4090H LINE# 218 + ------- ENDPROC PROTECTUTC + ------- PROC PROTECTOTD + C:4091H LINE# 227 + C:4091H LINE# 228 + C:4091H LINE# 229 + C:4094H LINE# 230 + C:4094H LINE# 231 + C:40AAH LINE# 232 + C:40AAH LINE# 233 + C:40CBH LINE# 234 + C:40CBH LINE# 235 + C:40CDH LINE# 236 + C:40D4H LINE# 237 + C:40DAH LINE# 238 + C:40DAH LINE# 239 + C:40DBH LINE# 240 + C:40EAH LINE# 241 + C:40EAH LINE# 242 + C:40F1H LINE# 243 + C:40F1H LINE# 244 + C:40F2H LINE# 246 + C:40F2H LINE# 247 + C:4108H LINE# 248 + C:4108H LINE# 249 + C:4126H LINE# 250 + C:4126H LINE# 251 + C:4128H LINE# 252 + C:412FH LINE# 253 + C:4135H LINE# 254 + C:4135H LINE# 255 + C:4136H LINE# 256 + C:4145H LINE# 257 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 89 + + + C:4145H LINE# 258 + C:414CH LINE# 259 + C:414CH LINE# 260 + C:414CH LINE# 261 + ------- ENDPROC PROTECTOTD + ------- PROC PROTECTUTD + C:414DH LINE# 270 + C:414DH LINE# 271 + C:414DH LINE# 272 + C:4150H LINE# 273 + C:4150H LINE# 274 + C:4166H LINE# 275 + C:4166H LINE# 276 + C:4187H LINE# 277 + C:4187H LINE# 278 + C:4189H LINE# 279 + C:4190H LINE# 280 + C:4196H LINE# 281 + C:4196H LINE# 282 + C:4197H LINE# 283 + C:41A6H LINE# 284 + C:41A6H LINE# 285 + C:41ADH LINE# 286 + C:41ADH LINE# 287 + C:41AEH LINE# 289 + C:41AEH LINE# 290 + C:41C4H LINE# 291 + C:41C4H LINE# 292 + C:41E2H LINE# 293 + C:41E2H LINE# 294 + C:41E4H LINE# 295 + C:41EBH LINE# 296 + C:41F1H LINE# 297 + C:41F1H LINE# 298 + C:41F2H LINE# 299 + C:4201H LINE# 300 + C:4201H LINE# 301 + C:4208H LINE# 302 + C:4208H LINE# 303 + C:4208H LINE# 304 + ------- ENDPROC PROTECTUTD + ------- PROC PROTECTOCC + C:5541H LINE# 314 + C:5541H LINE# 315 + C:5541H LINE# 316 + C:5544H LINE# 317 + C:5544H LINE# 318 + C:5556H LINE# 319 + C:5556H LINE# 320 + C:5574H LINE# 321 + C:5574H LINE# 322 + C:5576H LINE# 323 + C:5578H LINE# 324 + C:557FH LINE# 325 + C:557FH LINE# 326 + C:5580H LINE# 327 + C:5583H LINE# 328 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 90 + + + C:5583H LINE# 329 + C:5592H LINE# 330 + C:5592H LINE# 331 + C:5599H LINE# 332 + C:5599H LINE# 333 + C:5599H LINE# 334 + C:5599H LINE# 335 + ------- ENDPROC PROTECTOCC + ------- PROC PROTECTOCD1 + C:559AH LINE# 344 + C:559AH LINE# 345 + C:559AH LINE# 346 + C:559DH LINE# 347 + C:559DH LINE# 348 + C:55AFH LINE# 349 + C:55AFH LINE# 350 + C:55CDH LINE# 351 + C:55CDH LINE# 352 + C:55D4H LINE# 353 + C:55D6H LINE# 354 + C:55D8H LINE# 355 + C:55D8H LINE# 356 + C:55D9H LINE# 357 + C:55DCH LINE# 358 + C:55DCH LINE# 359 + C:55EBH LINE# 360 + C:55EBH LINE# 361 + C:55F2H LINE# 362 + C:55F2H LINE# 363 + C:55F2H LINE# 364 + C:55F2H LINE# 365 + ------- ENDPROC PROTECTOCD1 + ------- PROC PROTECTOCD2 + C:55F3H LINE# 374 + C:55F3H LINE# 375 + C:55F3H LINE# 376 + C:55F6H LINE# 377 + C:55F6H LINE# 378 + C:5608H LINE# 379 + C:5608H LINE# 380 + C:5626H LINE# 381 + C:5626H LINE# 382 + C:562DH LINE# 383 + C:562FH LINE# 384 + C:5631H LINE# 385 + C:5631H LINE# 386 + C:5632H LINE# 387 + C:5635H LINE# 388 + C:5635H LINE# 389 + C:5644H LINE# 390 + C:5644H LINE# 391 + C:564BH LINE# 392 + C:564BH LINE# 393 + C:564BH LINE# 394 + C:564BH LINE# 395 + ------- ENDPROC PROTECTOCD2 + ------- PROC PROTECTPROCESS + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 91 + + + C:64ECH LINE# 404 + C:64ECH LINE# 405 + C:64ECH LINE# 406 + C:64EFH LINE# 407 + C:64EFH LINE# 408 + C:64F2H LINE# 409 + C:64F5H LINE# 411 + C:64F8H LINE# 412 + C:64FBH LINE# 413 + C:64FEH LINE# 414 + C:6501H LINE# 416 + C:6504H LINE# 417 + C:6507H LINE# 418 + C:650AH LINE# 419 + C:650AH LINE# 420 + ------- ENDPROC PROTECTPROCESS + ------- PROC PROTECTOCRECOVER + C:4F63H LINE# 429 + C:4F63H LINE# 430 + C:4F63H LINE# 431 + C:4F66H LINE# 432 + C:4F66H LINE# 433 + C:4F6FH LINE# 434 + C:4F6FH LINE# 435 + C:4F8DH LINE# 436 + C:4F8DH LINE# 437 + C:4F92H LINE# 438 + C:4F98H LINE# 439 + C:4F9AH LINE# 440 + C:4F9CH LINE# 441 + C:4F9EH LINE# 442 + C:4FA0H LINE# 443 + C:4FA3H LINE# 444 + C:4FA3H LINE# 445 + C:4FA5H LINE# 446 + C:4FA8H LINE# 447 + C:4FA8H LINE# 448 + C:4FA8H LINE# 449 + C:4FA8H LINE# 451 + C:4FABH LINE# 452 + C:4FABH LINE# 453 + C:4FC9H LINE# 454 + C:4FC9H LINE# 455 + C:4FD0H LINE# 456 + C:4FD2H LINE# 457 + C:4FD6H LINE# 458 + C:4FD8H LINE# 459 + C:4FD8H LINE# 460 + C:4FD8H LINE# 461 + C:4FD8H LINE# 462 + ------- ENDPROC PROTECTOCRECOVER + ------- ENDMOD PROTECT + + ------- MODULE RTC + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 92 + + + C:6546H PUBLIC RTCTwiCheck + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:49C5H PUBLIC _RTCInitTime + B:002EH.1 PUBLIC bRTCTwiRWErr + C:548CH PUBLIC _RTCRead + C:476AH PUBLIC _RTCModifyTime + X:0377H PUBLIC ucRTCTwiRWErrDelayCnt + X:0378H PUBLIC RTC + B:002EH.2 PUBLIC bRTCErr + C:5431H PUBLIC _RTCWrite + C:2B88H PUBLIC _RTCReadTime + ------- PROC RTCTWICHECK + C:6546H LINE# 23 + C:6546H LINE# 24 + C:6546H LINE# 25 + C:6549H LINE# 26 + C:6549H LINE# 27 + C:654CH LINE# 28 + C:654CH LINE# 29 + C:6557H LINE# 30 + C:6557H LINE# 31 + C:6559H LINE# 32 + C:655CH LINE# 33 + C:655CH LINE# 34 + C:655DH LINE# 36 + C:655DH LINE# 37 + C:6562H LINE# 38 + C:6562H LINE# 39 + C:6562H LINE# 40 + ------- ENDPROC RTCTWICHECK + ------- PROC _RTCWRITE + X:02F0H SYMBOL WrAddr + X:02F1H SYMBOL Length + X:02F2H SYMBOL WrBuf + ------- DO + B:0029H.0 SYMBOL Result + X:02F4H SYMBOL i + ------- ENDDO + C:5431H LINE# 49 + C:543FH LINE# 50 + C:543FH LINE# 51 + C:5441H LINE# 54 + C:5444H LINE# 55 + C:5444H LINE# 56 + C:5447H LINE# 57 + C:5447H LINE# 58 + C:546FH LINE# 59 + C:546FH LINE# 60 + C:5471H LINE# 61 + C:5473H LINE# 62 + C:5473H LINE# 63 + C:5478H LINE# 64 + C:5484H LINE# 65 + C:5484H LINE# 66 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 93 + + + C:5489H LINE# 68 + C:548BH LINE# 69 + ------- ENDPROC _RTCWRITE + ------- PROC _RTCREAD + X:02E6H SYMBOL RdAddr + X:02E7H SYMBOL Length + X:02E8H SYMBOL RdBuf + ------- DO + B:0028H.7 SYMBOL Result + X:02EAH SYMBOL i + ------- ENDDO + C:548CH LINE# 78 + C:549AH LINE# 79 + C:549AH LINE# 80 + C:549CH LINE# 83 + C:549FH LINE# 84 + C:549FH LINE# 85 + C:54A2H LINE# 86 + C:54A2H LINE# 87 + C:54CAH LINE# 88 + C:54CAH LINE# 89 + C:54CCH LINE# 90 + C:54CEH LINE# 91 + C:54CEH LINE# 92 + C:54D3H LINE# 93 + C:54DFH LINE# 94 + C:54DFH LINE# 95 + C:54E4H LINE# 97 + C:54E6H LINE# 98 + ------- ENDPROC _RTCREAD + ------- PROC _RTCREADTIME + X:02DBH SYMBOL RtcRdVal + ------- DO + X:02DDH SYMBOL rtcbuf + B:0028H.6 SYMBOL Result + ------- ENDDO + C:2B88H LINE# 106 + C:2B90H LINE# 107 + C:2B90H LINE# 109 + C:2B92H LINE# 111 + C:2BA2H LINE# 112 + C:2BA2H LINE# 113 + C:2BACH LINE# 114 + C:2BACH LINE# 115 + C:2C59H LINE# 123 + C:2C59H LINE# 124 + C:2C6AH LINE# 125 + C:2C74H LINE# 126 + C:2C85H LINE# 127 + C:2C91H LINE# 128 + C:2CA4H LINE# 129 + C:2CB2H LINE# 130 + C:2CC5H LINE# 132 + C:2CCEH LINE# 133 + C:2CD0H LINE# 135 + C:2CD0H LINE# 136 + C:2CE3H LINE# 137 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 94 + + + C:2CEDH LINE# 138 + C:2CFAH LINE# 139 + C:2D06H LINE# 140 + C:2D16H LINE# 141 + C:2D26H LINE# 142 + C:2D36H LINE# 144 + C:2D38H LINE# 145 + C:2D38H LINE# 146 + C:2D3AH LINE# 148 + C:2D3AH LINE# 149 + C:2D47H LINE# 150 + C:2D47H LINE# 151 + C:2D47H LINE# 153 + C:2D49H LINE# 154 + ------- ENDPROC _RTCREADTIME + ------- PROC _RTCMODIFYTIME + X:02E6H SYMBOL RtcMdyVal + ------- DO + B:0028H.7 SYMBOL Result + X:02E8H SYMBOL rtcdata + X:02E9H SYMBOL rtctemp + ------- ENDDO + C:476AH LINE# 163 + C:4772H LINE# 164 + C:4772H LINE# 165 + C:4774H LINE# 169 + C:4778H LINE# 170 + C:4785H LINE# 172 + C:4796H LINE# 173 + C:47A0H LINE# 174 + C:47B5H LINE# 175 + C:47C1H LINE# 176 + C:47D5H LINE# 177 + C:47E3H LINE# 178 + C:47F6H LINE# 180 + C:4803H LINE# 182 + C:4805H LINE# 183 + ------- ENDPROC _RTCMODIFYTIME + ------- PROC _RTCINITTIME + X:02B9H SYMBOL RtcInitVal + ------- DO + B:0028H.5 SYMBOL Result + X:02BBH SYMBOL rtcbuf + D:0007H SYMBOL i + X:02C4H SYMBOL checksum + ------- ENDDO + C:49C5H LINE# 192 + C:49CDH LINE# 193 + C:49CDH LINE# 194 + C:49CFH LINE# 197 + C:49D4H LINE# 199 + C:49DEH LINE# 201 + C:49EBH LINE# 202 + C:49EDH LINE# 203 + C:49EDH LINE# 204 + C:49FFH LINE# 205 + C:4A04H LINE# 207 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 95 + + + C:4A16H LINE# 208 + C:4A16H LINE# 209 + C:4A1BH LINE# 210 + C:4A1DH LINE# 211 + C:4A21H LINE# 212 + C:4A25H LINE# 213 + C:4A29H LINE# 214 + C:4A2DH LINE# 215 + C:4A31H LINE# 216 + C:4A31H LINE# 218 + C:4A42H LINE# 219 + C:4A4FH LINE# 221 + C:4A51H LINE# 222 + ------- ENDPROC _RTCINITTIME + ------- ENDMOD RTC + + ------- MODULE TWI + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + D:008AH PUBLIC TWIBR + D:00C6H PUBLIC TWICR + D:0089H PUBLIC TWTFREE + C:29B0H PUBLIC _TwiRead + D:00B1H PUBLIC RSTSTAT + C:6563H PUBLIC _CRC8cal + D:00E6H PUBLIC TWITOUT + C:3324H PUBLIC _TwiWrite + C:6104H PUBLIC _TwiInit + D:008DH PUBLIC TWIDAT + D:00C8H PUBLIC TWICON + D:00D1H PUBLIC TWISTA + C:63C7H PUBLIC _TWICheckStatus + C:3962H PUBLIC CRC8Table + ------- PROC _CRC8CAL + D:0001H SYMBOL p + D:0005H SYMBOL counter + ------- DO + D:0007H SYMBOL crc8 + ------- ENDDO + C:6563H LINE# 37 + C:6563H LINE# 38 + C:6563H LINE# 39 + C:6565H LINE# 41 + C:656BH LINE# 42 + C:656BH LINE# 43 + C:6574H LINE# 44 + C:657BH LINE# 45 + C:657EH LINE# 46 + C:657EH LINE# 47 + ------- ENDPROC _CRC8CAL + ------- PROC _TWICHECKSTATUS + D:0007H SYMBOL Status + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 96 + + + ------- DO + B:0029H.2 SYMBOL Result + D:0004H SYMBOL timeoutcount + ------- ENDDO + C:63C7H LINE# 58 + C:63C7H LINE# 59 + C:63C7H LINE# 60 + C:63C9H LINE# 61 + C:63CDH LINE# 63 + C:63D2H LINE# 64 + C:63D2H LINE# 65 + C:63D5H LINE# 66 + C:63D9H LINE# 67 + C:63D9H LINE# 68 + C:63DEH LINE# 69 + C:63E0H LINE# 71 + C:63E0H LINE# 72 + C:63E0H LINE# 73 + C:63E0H LINE# 74 + C:63E2H LINE# 75 + C:63E9H LINE# 76 + C:63E9H LINE# 77 + C:63EBH LINE# 78 + C:63EBH LINE# 80 + C:63EDH LINE# 81 + ------- ENDPROC _TWICHECKSTATUS + ------- PROC _TWIWRITE + X:02F5H SYMBOL SlaveID + X:02F6H SYMBOL WrAddr + X:02F8H SYMBOL AddrType + X:02F9H SYMBOL Length + X:02FAH SYMBOL CrcFlg + X:02FBH SYMBOL WrBuf + ------- DO + D:0006H SYMBOL i + X:02FDH SYMBOL TempBuf + B:0029H.1 SYMBOL Result + X:0301H SYMBOL timeoutcount + C:3445H SYMBOL WrErr + ------- ENDDO + C:3324H LINE# 97 + C:3334H LINE# 98 + C:3334H LINE# 101 + C:3336H LINE# 102 + C:3340H LINE# 104 + C:3345H LINE# 105 + C:3348H LINE# 106 + C:3358H LINE# 107 + C:3368H LINE# 109 + C:3374H LINE# 110 + C:3374H LINE# 111 + C:337DH LINE# 112 + C:3380H LINE# 113 + C:338EH LINE# 114 + C:338EH LINE# 115 + C:3390H LINE# 116 + C:3393H LINE# 117 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 97 + + + C:3393H LINE# 119 + C:3399H LINE# 120 + C:339CH LINE# 121 + C:33A3H LINE# 122 + C:33A3H LINE# 123 + C:33A5H LINE# 124 + C:33A8H LINE# 125 + C:33A8H LINE# 127 + C:33AFH LINE# 128 + C:33AFH LINE# 129 + C:33B5H LINE# 130 + C:33B8H LINE# 131 + C:33BFH LINE# 132 + C:33BFH LINE# 133 + C:33C1H LINE# 134 + C:33C4H LINE# 135 + C:33C4H LINE# 136 + C:33C4H LINE# 138 + C:33CCH LINE# 139 + C:33CFH LINE# 140 + C:33D6H LINE# 141 + C:33D6H LINE# 142 + C:33D8H LINE# 143 + C:33DAH LINE# 144 + C:33DAH LINE# 146 + C:33E2H LINE# 147 + C:33E2H LINE# 148 + C:33EEH LINE# 149 + C:33F1H LINE# 150 + C:33F8H LINE# 151 + C:33F8H LINE# 152 + C:33FAH LINE# 153 + C:33FCH LINE# 154 + C:33FCH LINE# 156 + C:3402H LINE# 157 + C:3405H LINE# 158 + C:340CH LINE# 159 + C:340CH LINE# 160 + C:340EH LINE# 161 + C:3410H LINE# 162 + C:3410H LINE# 163 + C:3410H LINE# 165 + C:3410H LINE# 166 + C:341CH LINE# 167 + C:341CH LINE# 168 + C:342AH LINE# 169 + C:342DH LINE# 170 + C:3434H LINE# 171 + C:3434H LINE# 172 + C:3436H LINE# 173 + C:3438H LINE# 174 + C:3438H LINE# 175 + C:3442H LINE# 176 + C:3445H LINE# 177 + C:3445H LINE# 178 + C:3445H LINE# 179 + C:3448H LINE# 180 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 98 + + + C:344DH LINE# 181 + C:344DH LINE# 182 + C:3450H LINE# 183 + C:345AH LINE# 184 + C:345AH LINE# 185 + C:3464H LINE# 186 + C:3466H LINE# 188 + C:3466H LINE# 189 + C:3466H LINE# 190 + C:3466H LINE# 191 + C:3468H LINE# 192 + C:3468H LINE# 194 + C:346AH LINE# 195 + ------- ENDPROC _TWIWRITE + ------- PROC _TWIREAD + D:0002H SYMBOL SlaveID + X:02ECH SYMBOL RdAddr + D:0003H SYMBOL AddrType + X:02EFH SYMBOL Length + X:02F0H SYMBOL CrcFlg + X:02F1H SYMBOL RdBuf + ------- DO + B:0029H.0 SYMBOL Result + X:02F3H SYMBOL i + X:02F4H SYMBOL TempBuf + X:0322H SYMBOL RdCrc + X:0323H SYMBOL timeoutcount + C:2B62H SYMBOL RdErr + ------- ENDDO + C:29B0H LINE# 209 + C:29BAH LINE# 210 + C:29BAH LINE# 211 + C:29BCH LINE# 214 + C:29C1H LINE# 215 + C:29C9H LINE# 217 + C:29CEH LINE# 218 + C:29D1H LINE# 219 + C:29DAH LINE# 220 + C:29DFH LINE# 222 + C:29E8H LINE# 223 + C:29E8H LINE# 224 + C:29F1H LINE# 225 + C:29F4H LINE# 226 + C:2A02H LINE# 227 + C:2A02H LINE# 228 + C:2A04H LINE# 229 + C:2A07H LINE# 230 + C:2A07H LINE# 232 + C:2A09H LINE# 233 + C:2A0CH LINE# 234 + C:2A13H LINE# 235 + C:2A13H LINE# 236 + C:2A15H LINE# 237 + C:2A18H LINE# 238 + C:2A18H LINE# 240 + C:2A1CH LINE# 241 + C:2A1CH LINE# 242 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 99 + + + C:2A22H LINE# 243 + C:2A25H LINE# 244 + C:2A2CH LINE# 245 + C:2A2CH LINE# 246 + C:2A2EH LINE# 247 + C:2A31H LINE# 248 + C:2A31H LINE# 249 + C:2A31H LINE# 251 + C:2A39H LINE# 252 + C:2A3CH LINE# 253 + C:2A43H LINE# 254 + C:2A43H LINE# 255 + C:2A45H LINE# 256 + C:2A48H LINE# 257 + C:2A48H LINE# 259 + C:2A4CH LINE# 260 + C:2A4CH LINE# 261 + C:2A52H LINE# 262 + C:2A55H LINE# 263 + C:2A5CH LINE# 264 + C:2A5CH LINE# 265 + C:2A5EH LINE# 266 + C:2A61H LINE# 267 + C:2A61H LINE# 268 + C:2A61H LINE# 270 + C:2A64H LINE# 271 + C:2A72H LINE# 272 + C:2A72H LINE# 273 + C:2A74H LINE# 274 + C:2A77H LINE# 275 + C:2A77H LINE# 277 + C:2A7CH LINE# 278 + C:2A7FH LINE# 279 + C:2A86H LINE# 280 + C:2A86H LINE# 281 + C:2A88H LINE# 282 + C:2A8BH LINE# 283 + C:2A8BH LINE# 285 + C:2A9EH LINE# 286 + C:2A9EH LINE# 287 + C:2AA4H LINE# 288 + C:2AA4H LINE# 289 + C:2AA9H LINE# 290 + C:2AA9H LINE# 291 + C:2AACH LINE# 292 + C:2AB1H LINE# 293 + C:2AB3H LINE# 295 + C:2AB3H LINE# 296 + C:2AB6H LINE# 297 + C:2ABBH LINE# 298 + C:2ABBH LINE# 299 + C:2AC9H LINE# 300 + C:2AD3H LINE# 301 + C:2AD5H LINE# 303 + C:2AD5H LINE# 304 + C:2AD8H LINE# 305 + C:2ADDH LINE# 306 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 100 + + + C:2AEDH LINE# 307 + C:2AEDH LINE# 308 + C:2AF5H LINE# 310 + C:2AFDH LINE# 311 + C:2AFDH LINE# 312 + C:2B00H LINE# 313 + C:2B05H LINE# 314 + C:2B0BH LINE# 315 + C:2B22H LINE# 316 + C:2B22H LINE# 317 + C:2B35H LINE# 318 + C:2B35H LINE# 319 + C:2B4EH LINE# 320 + C:2B58H LINE# 321 + C:2B60H LINE# 322 + C:2B60H LINE# 324 + C:2B60H LINE# 325 + C:2B62H LINE# 326 + C:2B62H LINE# 327 + C:2B62H LINE# 328 + C:2B62H LINE# 329 + C:2B62H LINE# 330 + C:2B65H LINE# 331 + C:2B6AH LINE# 332 + C:2B6AH LINE# 333 + C:2B6DH LINE# 334 + C:2B77H LINE# 335 + C:2B77H LINE# 336 + C:2B81H LINE# 337 + C:2B83H LINE# 339 + C:2B83H LINE# 340 + C:2B83H LINE# 341 + C:2B83H LINE# 342 + C:2B85H LINE# 343 + C:2B85H LINE# 345 + C:2B87H LINE# 346 + ------- ENDPROC _TWIREAD + ------- PROC _TWIINIT + D:0007H SYMBOL FreqKHz + C:6104H LINE# 355 + C:6104H LINE# 356 + C:6104H LINE# 357 + C:6107H LINE# 358 + C:610AH LINE# 359 + C:6130H LINE# 360 + C:6133H LINE# 361 + C:6136H LINE# 362 + C:6139H LINE# 363 + C:613CH LINE# 364 + ------- ENDPROC _TWIINIT + ------- ENDMOD TWI + + ------- MODULE UART + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 101 + + + D:00B0H PUBLIC P3 + D:00C4H PUBLIC UART0CR + D:00C0H PUBLIC P4 + C:4934H PUBLIC _UART0Init + D:009DH PUBLIC SBRTH + D:0080H PUBLIC P5 + D:009CH PUBLIC SBRTL + B:0098H.0 PUBLIC RI + B:0098H.1 PUBLIC TI + C:57EEH PUBLIC InterruptUart0 + D:0099H PUBLIC SBUF + D:0087H PUBLIC PCON + D:0098H PUBLIC SCON + D:0086H PUBLIC INSCON + D:009BH PUBLIC SADEN + D:009AH PUBLIC SADDR + D:009EH PUBLIC SFINE + ------- PROC _UART0INIT + X:02B9H SYMBOL Bps + ------- DO + D:0004H SYMBOL TempVal + ------- ENDDO + C:4934H LINE# 19 + C:493CH LINE# 20 + C:493CH LINE# 23 + C:493FH LINE# 24 + C:4942H LINE# 25 + C:4945H LINE# 26 + C:495FH LINE# 27 + C:4961H LINE# 28 + C:4963H LINE# 29 + C:49BBH LINE# 30 + C:49BEH LINE# 31 + C:49C1H LINE# 32 + C:49C4H LINE# 33 + ------- ENDPROC _UART0INIT + ------- PROC INTERRUPTUART0 + ------- DO + D:0007H SYMBOL RxData + ------- ENDDO + C:57EEH LINE# 44 + C:580BH LINE# 48 + C:580DH LINE# 49 + C:5810H LINE# 51 + C:5813H LINE# 52 + C:5813H LINE# 53 + C:5815H LINE# 54 + C:5817H LINE# 55 + C:581AH LINE# 56 + C:581AH LINE# 58 + C:581DH LINE# 59 + C:581DH LINE# 60 + C:581FH LINE# 61 + C:5822H LINE# 62 + C:5822H LINE# 64 + C:5824H LINE# 65 + ------- ENDPROC INTERRUPTUART0 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 102 + + + ------- ENDMOD UART + + ------- MODULE THERMISTOR + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:35AFH PUBLIC NTC103AT + ------- ENDMOD THERMISTOR + + ------- MODULE ?C_STARTUP + C:661AH SEGMENT ?C_C51STARTUP + C:1000H PUBLIC ?C_STARTUP + N:00B2H SYMBOL CLKCON + D:0081H SYMBOL SP + C:661AH SYMBOL STARTUP1 + C:1000H LINE# 12 + C:661AH LINE# 18 + C:661DH LINE# 19 + C:6620H LINE# 20 + C:6621H LINE# 21 + C:6622H LINE# 22 + C:6623H LINE# 23 + C:6624H LINE# 24 + C:6625H LINE# 25 + C:6626H LINE# 26 + C:6627H LINE# 27 + C:6628H LINE# 28 + C:662BH LINE# 29 + ------- ENDMOD ?C_STARTUP + + ------- MODULE GASGAUGE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + I:0017H PUBLIC uiRCDischarge + I:0019H PUBLIC uiTempBK + X:0368H PUBLIC slCur + C:230FH PUBLIC GasGaugeInit + X:036CH PUBLIC uiDfRC + B:002CH.1 PUBLIC bRSOCFast + B:002CH.2 PUBLIC bDsgEndFlg + X:036EH PUBLIC ucCHGEndDelay + X:036FH PUBLIC ucRSOCCnt + I:001BH PUBLIC uiRCCharge + B:002CH.3 PUBLIC bRSOCSlow + X:0370H PUBLIC uiDfRSOC + X:0372H PUBLIC ucDSGEndDelay + B:00A8H.4 PUBLIC ES0 + I:001DH PUBLIC ucCycleGain + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 103 + + + C:1FE9H PUBLIC GasGaugeManage + X:0373H PUBLIC uiDfFCC + X:0375H PUBLIC ucDSGDelay1 + X:0376H PUBLIC ucDSGDelay2 + B:002CH.4 PUBLIC bCHGEndFlg + ------- PROC GASGAUGEINIT + ------- DO + X:02B9H SYMBOL i + D:0006H SYMBOL RSOCtemp + ------- ENDDO + C:230FH LINE# 40 + C:230FH LINE# 41 + C:230FH LINE# 43 + C:2313H LINE# 46 + C:2315H LINE# 47 + C:231BH LINE# 48 + C:2320H LINE# 49 + C:2324H LINE# 50 + C:2327H LINE# 51 + C:232DH LINE# 52 + C:2333H LINE# 53 + C:2339H LINE# 54 + C:233BH LINE# 55 + C:233FH LINE# 56 + C:2343H LINE# 57 + C:2345H LINE# 58 + C:2347H LINE# 59 + C:2349H LINE# 61 + C:235AH LINE# 62 + C:235AH LINE# 63 + C:2375H LINE# 64 + C:2375H LINE# 65 + C:237BH LINE# 66 + C:237BH LINE# 67 + C:238EH LINE# 68 + C:238EH LINE# 69 + C:2391H LINE# 70 + C:2394H LINE# 72 + C:2394H LINE# 73 + C:23CAH LINE# 74 + C:23CAH LINE# 75 + C:23CDH LINE# 76 + C:23CDH LINE# 78 + C:23CDH LINE# 79 + C:2447H LINE# 80 + C:2449H LINE# 81 + C:2449H LINE# 82 + C:2449H LINE# 83 + C:2452H LINE# 85 + C:2461H LINE# 86 + C:2461H LINE# 87 + C:2465H LINE# 88 + C:2465H LINE# 90 + C:2473H LINE# 91 + C:2473H LINE# 92 + C:2477H LINE# 93 + C:2479H LINE# 95 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 104 + + + C:2479H LINE# 96 + C:2489H LINE# 97 + C:2489H LINE# 98 + C:248EH LINE# 99 + C:2490H LINE# 101 + C:2490H LINE# 102 + C:2497H LINE# 103 + C:2497H LINE# 104 + C:2497H LINE# 106 + C:249FH LINE# 107 + C:24ABH LINE# 108 + C:24CEH LINE# 110 + C:24DCH LINE# 111 + C:24EAH LINE# 112 + C:2501H LINE# 114 + C:2511H LINE# 115 + C:2511H LINE# 116 + C:2515H LINE# 117 + C:2517H LINE# 118 + C:2520H LINE# 119 + C:2520H LINE# 120 + C:252EH LINE# 121 + C:2530H LINE# 122 + C:2540H LINE# 123 + C:2540H LINE# 124 + C:254EH LINE# 125 + C:2550H LINE# 127 + C:2550H LINE# 128 + C:2554H LINE# 129 + C:2554H LINE# 131 + C:255AH LINE# 132 + C:255EH LINE# 133 + C:2562H LINE# 134 + C:2564H LINE# 135 + C:2566H LINE# 136 + C:256AH LINE# 137 + ------- ENDPROC GASGAUGEINIT + ------- PROC GASGAUGEMANAGE + ------- DO + X:02B9H SYMBOL chgdffcc + ------- ENDDO + C:1FE9H LINE# 146 + C:1FE9H LINE# 147 + C:1FE9H LINE# 148 + C:1FF0H LINE# 150 + C:1FFAH LINE# 152 + C:2017H LINE# 153 + C:2017H LINE# 154 + C:201CH LINE# 155 + C:2020H LINE# 156 + C:2022H LINE# 157 + C:2024H LINE# 159 + C:2046H LINE# 161 + C:2052H LINE# 162 + C:2052H LINE# 163 + C:2074H LINE# 164 + C:2076H LINE# 165 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 105 + + + C:207FH LINE# 166 + C:2081H LINE# 167 + C:2081H LINE# 168 + C:2090H LINE# 170 + C:209FH LINE# 171 + C:20ABH LINE# 172 + C:20ABH LINE# 173 + C:20B5H LINE# 174 + C:20CAH LINE# 175 + C:20CAH LINE# 176 + C:20D1H LINE# 177 + C:20D3H LINE# 179 + C:20D3H LINE# 180 + C:20DBH LINE# 181 + C:20E1H LINE# 182 + C:20E1H LINE# 183 + C:20E3H LINE# 185 + C:20F9H LINE# 186 + C:20F9H LINE# 187 + C:2121H LINE# 188 + C:2123H LINE# 190 + C:2123H LINE# 191 + C:212DH LINE# 192 + C:212DH LINE# 194 + C:2147H LINE# 195 + C:2147H LINE# 196 + C:2156H LINE# 197 + C:2156H LINE# 198 + C:2165H LINE# 199 + C:2165H LINE# 200 + C:2167H LINE# 201 + C:2169H LINE# 202 + C:2169H LINE# 203 + C:2169H LINE# 204 + C:2169H LINE# 206 + C:216CH LINE# 208 + C:216FH LINE# 209 + C:2192H LINE# 210 + C:2192H LINE# 211 + C:2197H LINE# 212 + C:2199H LINE# 214 + C:21A5H LINE# 215 + C:21AFH LINE# 216 + C:21AFH LINE# 217 + C:21B9H LINE# 218 + C:21B9H LINE# 219 + C:21C5H LINE# 220 + C:21C5H LINE# 221 + C:21D1H LINE# 222 + C:21D1H LINE# 223 + C:21DBH LINE# 224 + C:21F4H LINE# 225 + C:2203H LINE# 226 + C:2203H LINE# 227 + C:220AH LINE# 228 + C:220AH LINE# 229 + C:220CH LINE# 230 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 106 + + + C:221EH LINE# 231 + C:221EH LINE# 232 + C:2233H LINE# 233 + C:223DH LINE# 234 + C:223DH LINE# 235 + C:223DH LINE# 237 + C:2240H LINE# 238 + C:2240H LINE# 240 + C:2243H LINE# 241 + C:2243H LINE# 242 + C:2245H LINE# 243 + C:2255H LINE# 244 + C:225EH LINE# 245 + C:226AH LINE# 246 + C:2273H LINE# 247 + C:2275H LINE# 248 + C:2275H LINE# 250 + C:228BH LINE# 251 + C:228BH LINE# 252 + C:2293H LINE# 253 + C:2295H LINE# 254 + C:22AAH LINE# 255 + C:22AAH LINE# 256 + C:22B2H LINE# 257 + C:22B2H LINE# 258 + C:22E2H LINE# 260 + C:22E5H LINE# 262 + C:22E7H LINE# 263 + C:22F1H LINE# 264 + C:22FDH LINE# 265 + C:230CH LINE# 266 + C:230EH LINE# 267 + ------- ENDPROC GASGAUGEMANAGE + ------- ENDMOD GASGAUGE + + ------- MODULE GASGAUGELIB + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:256BH PUBLIC CorrectCHGSOC + C:1B8BH PUBLIC CorrectDSGSOC + C:16B1H PUBLIC DataFilter + ------- PROC CORRECTCHGSOC + ------- DO + X:02BBH SYMBOL i + ------- ENDDO + C:256BH LINE# 17 + C:256BH LINE# 18 + C:256BH LINE# 20 + C:257AH LINE# 21 + C:257AH LINE# 22 + C:2592H LINE# 23 + C:2592H LINE# 24 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 107 + + + C:2592H LINE# 25 + C:2592H LINE# 26 + C:259AH LINE# 27 + C:259DH LINE# 28 + C:259DH LINE# 29 + C:25ACH LINE# 30 + C:25ACH LINE# 31 + C:25BAH LINE# 32 + C:25F5H LINE# 33 + C:25F5H LINE# 34 + C:25F5H LINE# 35 + C:25FBH LINE# 36 + C:25FBH LINE# 37 + C:260DH LINE# 38 + C:260DH LINE# 39 + C:2614H LINE# 40 + C:2614H LINE# 41 + C:2615H LINE# 42 + C:263FH LINE# 43 + C:263FH LINE# 44 + C:2650H LINE# 45 + C:2650H LINE# 46 + C:2699H LINE# 47 + C:26BEH LINE# 48 + C:26BEH LINE# 49 + C:26BFH LINE# 50 + C:26C5H LINE# 51 + C:26C5H LINE# 52 + C:26F4H LINE# 53 + C:26F4H LINE# 54 + C:2723H LINE# 55 + C:2723H LINE# 56 + C:279AH LINE# 57 + C:27BFH LINE# 58 + C:27BFH LINE# 59 + C:27BFH LINE# 60 + C:27BFH LINE# 61 + ------- ENDPROC CORRECTCHGSOC + ------- PROC CORRECTDSGSOC + ------- DO + X:02BBH SYMBOL DfRCtemp + X:02BDH SYMBOL j + X:02BFH SYMBOL c_cur + X:02C0H SYMBOL vol5per + X:02C2H SYMBOL tempfcc + ------- ENDDO + C:1B8BH LINE# 70 + C:1B8BH LINE# 71 + C:1B8BH LINE# 73 + C:1B92H LINE# 74 + C:1B96H LINE# 75 + C:1B98H LINE# 76 + C:1B9CH LINE# 77 + C:1BA0H LINE# 79 + C:1BCCH LINE# 80 + C:1BCCH LINE# 81 + C:1BDBH LINE# 82 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 108 + + + C:1BE9H LINE# 83 + C:1C4EH LINE# 84 + C:1C65H LINE# 85 + C:1C65H LINE# 86 + C:1C78H LINE# 87 + C:1C7AH LINE# 88 + C:1CB7H LINE# 89 + C:1CB7H LINE# 90 + C:1CDFH LINE# 91 + C:1CDFH LINE# 92 + C:1D01H LINE# 94 + C:1D0FH LINE# 95 + C:1D0FH LINE# 96 + C:1D28H LINE# 97 + C:1D2AH LINE# 98 + C:1D4CH LINE# 99 + C:1D4CH LINE# 100 + C:1D56H LINE# 101 + C:1D58H LINE# 103 + C:1D58H LINE# 104 + C:1D74H LINE# 105 + C:1D74H LINE# 106 + C:1D83H LINE# 107 + C:1D83H LINE# 108 + C:1D92H LINE# 109 + C:1D92H LINE# 110 + C:1D92H LINE# 111 + C:1DDFH LINE# 112 + C:1DDFH LINE# 113 + C:1DFBH LINE# 114 + C:1E2BH LINE# 115 + C:1E5AH LINE# 117 + C:1E90H LINE# 118 + C:1E90H LINE# 119 + C:1EA2H LINE# 120 + C:1EA2H LINE# 121 + C:1EA4H LINE# 122 + C:1EA6H LINE# 123 + C:1EA8H LINE# 124 + C:1EA8H LINE# 125 + C:1EABH LINE# 126 + C:1EE2H LINE# 127 + C:1EE2H LINE# 128 + C:1EF4H LINE# 129 + C:1EF4H LINE# 130 + C:1EF6H LINE# 131 + C:1EF8H LINE# 132 + C:1EFAH LINE# 133 + C:1EFAH LINE# 134 + C:1EFDH LINE# 135 + C:1F2CH LINE# 136 + C:1F2CH LINE# 137 + C:1F3BH LINE# 138 + C:1F3BH LINE# 139 + C:1F3DH LINE# 140 + C:1F3FH LINE# 141 + C:1F41H LINE# 142 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 109 + + + C:1F41H LINE# 143 + C:1F43H LINE# 144 + C:1F78H LINE# 145 + C:1F78H LINE# 146 + C:1F87H LINE# 147 + C:1F87H LINE# 148 + C:1F89H LINE# 149 + C:1F8BH LINE# 150 + C:1F8DH LINE# 151 + C:1F8DH LINE# 152 + C:1F8FH LINE# 154 + C:1F8FH LINE# 155 + C:1F91H LINE# 156 + C:1F93H LINE# 157 + C:1F93H LINE# 159 + C:1FA2H LINE# 160 + C:1FA2H LINE# 161 + C:1FB0H LINE# 162 + C:1FB0H LINE# 163 + C:1FB2H LINE# 164 + C:1FB4H LINE# 165 + C:1FBCH LINE# 166 + C:1FBCH LINE# 167 + C:1FD8H LINE# 168 + C:1FD9H LINE# 170 + C:1FD9H LINE# 171 + C:1FE8H LINE# 172 + C:1FE8H LINE# 173 + C:1FE8H LINE# 174 + C:1FE8H LINE# 175 + C:1FE8H LINE# 176 + ------- ENDPROC CORRECTDSGSOC + ------- PROC DATAFILTER + ------- DO + X:02BBH SYMBOL dsoc + X:02BCH SYMBOL Filter_dsoc + X:02C0H SYMBOL k + X:02C4H SYMBOL difvol + D:0003H SYMBOL difsoc + D:0004H SYMBOL curspeed + D:0006H SYMBOL ucrsocdectime + X:02C5H SYMBOL curratio + ------- ENDDO + C:16B1H LINE# 184 + C:16B1H LINE# 185 + C:16B1H LINE# 187 + C:16BBH LINE# 188 + C:16C5H LINE# 195 + C:16D9H LINE# 197 + C:16F0H LINE# 198 + C:16F0H LINE# 199 + C:1721H LINE# 200 + C:1721H LINE# 201 + C:1740H LINE# 202 + C:1740H LINE# 203 + C:1756H LINE# 204 + C:1785H LINE# 205 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 110 + + + C:17B3H LINE# 206 + C:17C4H LINE# 207 + C:180CH LINE# 208 + C:180CH LINE# 209 + C:183CH LINE# 210 + C:183CH LINE# 211 + C:183FH LINE# 213 + C:183FH LINE# 214 + C:1850H LINE# 215 + C:1861H LINE# 216 + C:186EH LINE# 217 + C:186EH LINE# 218 + C:1871H LINE# 219 + C:189EH LINE# 220 + C:189EH LINE# 221 + C:18ADH LINE# 222 + C:18ADH LINE# 223 + C:18BEH LINE# 224 + C:18CFH LINE# 225 + C:18D9H LINE# 226 + C:18D9H LINE# 227 + C:18ECH LINE# 228 + C:18ECH LINE# 229 + C:191AH LINE# 230 + C:191AH LINE# 231 + C:1952H LINE# 232 + C:1952H LINE# 233 + C:1985H LINE# 234 + C:1987H LINE# 236 + C:1987H LINE# 237 + C:198FH LINE# 238 + C:198FH LINE# 239 + C:199FH LINE# 240 + C:199FH LINE# 241 + C:19B4H LINE# 242 + C:19B6H LINE# 244 + C:19B6H LINE# 245 + C:19BCH LINE# 246 + C:19BCH LINE# 247 + C:1A0FH LINE# 248 + C:1A20H LINE# 249 + C:1A3BH LINE# 251 + C:1A47H LINE# 252 + C:1A47H LINE# 253 + C:1A55H LINE# 254 + C:1A5AH LINE# 255 + C:1A5AH LINE# 256 + C:1A71H LINE# 257 + C:1A96H LINE# 258 + C:1A98H LINE# 260 + C:1A98H LINE# 261 + C:1AA6H LINE# 262 + C:1AABH LINE# 263 + C:1AABH LINE# 264 + C:1AABH LINE# 265 + C:1ABCH LINE# 266 + C:1AE7H LINE# 267 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 111 + + + C:1AE9H LINE# 268 + C:1AFBH LINE# 269 + C:1AFBH LINE# 270 + C:1B0CH LINE# 271 + C:1B1DH LINE# 272 + C:1B25H LINE# 273 + C:1B27H LINE# 275 + C:1B27H LINE# 276 + C:1B38H LINE# 277 + C:1B63H LINE# 278 + C:1B63H LINE# 279 + C:1B63H LINE# 280 + C:1B73H LINE# 281 + C:1B73H LINE# 282 + C:1B7CH LINE# 283 + C:1B7DH LINE# 284 + C:1B83H LINE# 285 + C:1B83H LINE# 286 + C:1B8AH LINE# 287 + C:1B8AH LINE# 288 + ------- ENDPROC DATAFILTER + ------- ENDMOD GASGAUGELIB + + ------- MODULE BOOTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + C:6725H PUBLIC ISPProcess + ------- PROC ISPPROCESS + C:6725H LINE# 18 + C:6725H LINE# 19 + C:6725H LINE# 20 + C:672BH LINE# 21 + C:672BH LINE# 22 + C:672DH LINE# 23 + C:672FH LINE# 24 + C:6731H LINE# 25 + C:6734H LINE# 26 + C:6737H LINE# 27 + C:6737H LINE# 28 + ------- ENDPROC ISPPROCESS + ------- ENDMOD BOOTAPP + + ------- MODULE DATAFLASH + C:0000H SYMBOL _ICE_DUMMY_ + C:8400H PUBLIC dataflash + ------- ENDMOD DATAFLASH + + ------- MODULE ?C?FPADD + C:105DH PUBLIC ?C?FPADD + C:1059H PUBLIC ?C?FPSUB + ------- ENDMOD ?C?FPADD + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 112 + + + + ------- MODULE ?C?FPMUL + C:114EH PUBLIC ?C?FPMUL + ------- ENDMOD ?C?FPMUL + + ------- MODULE ?C?FPDIV + C:1257H PUBLIC ?C?FPDIV + ------- ENDMOD ?C?FPDIV + + ------- MODULE ?C?FCAST + C:12FEH PUBLIC ?C?FCASTC + C:12F9H PUBLIC ?C?FCASTI + C:12F4H PUBLIC ?C?FCASTL + ------- ENDMOD ?C?FCAST + + ------- MODULE ?C?CASTF + C:1332H PUBLIC ?C?CASTF + ------- ENDMOD ?C?CASTF + + ------- MODULE ?C?CLDPTR + C:13B3H PUBLIC ?C?CLDPTR + ------- ENDMOD ?C?CLDPTR + + ------- MODULE ?C?IMUL + C:13CCH PUBLIC ?C?IMUL + ------- ENDMOD ?C?IMUL + + ------- MODULE ?C?UIDIV + C:13DEH PUBLIC ?C?UIDIV + ------- ENDMOD ?C?UIDIV + + ------- MODULE ?C?IILDX + C:1433H PUBLIC ?C?IILDX + ------- ENDMOD ?C?IILDX + + ------- MODULE ?C?LADD + C:1449H PUBLIC ?C?LADD + ------- ENDMOD ?C?LADD + + ------- MODULE ?C?LSUB + C:1456H PUBLIC ?C?LSUB + ------- ENDMOD ?C?LSUB + + ------- MODULE ?C?LMUL + C:1464H PUBLIC ?C?LMUL + ------- ENDMOD ?C?LMUL + + ------- MODULE ?C?ULDIV + C:14EFH PUBLIC ?C?ULDIV + ------- ENDMOD ?C?ULDIV + + ------- MODULE ?C?SLDIV + C:5E8FH PUBLIC ?C?SLDIV + ------- ENDMOD ?C?SLDIV + + ------- MODULE ?C?LOR + C:1581H PUBLIC ?C?LOR + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 113 + + + ------- ENDMOD ?C?LOR + + ------- MODULE ?C?LNEG + C:158EH PUBLIC ?C?LNEG + ------- ENDMOD ?C?LNEG + + ------- MODULE ?C?SLCMP + C:159CH PUBLIC ?C?SLCMP + ------- ENDMOD ?C?SLCMP + + ------- MODULE ?C?ULCMP + C:15B2H PUBLIC ?C?ULCMP + ------- ENDMOD ?C?ULCMP + + ------- MODULE ?C?ULSHR + C:15C3H PUBLIC ?C?ULSHR + ------- ENDMOD ?C?ULSHR + + ------- MODULE ?C?SLSHR + C:15D6H PUBLIC ?C?SLSHR + ------- ENDMOD ?C?SLSHR + + ------- MODULE ?C?LSHL + C:15EAH PUBLIC ?C?LSHL + ------- ENDMOD ?C?LSHL + + ------- MODULE ?C?LLDXDATA + C:15FDH PUBLIC ?C?LLDXDATA + ------- ENDMOD ?C?LLDXDATA + + ------- MODULE ?C?LLDXDATA0 + C:1609H PUBLIC ?C?LLDXDATA0 + ------- ENDMOD ?C?LLDXDATA0 + + ------- MODULE ?C?LSTXDATA + C:1615H PUBLIC ?C?LSTXDATA + ------- ENDMOD ?C?LSTXDATA + + ------- MODULE ?C?LSTKXDATA + C:1621H PUBLIC ?C?LSTKXDATA + ------- ENDMOD ?C?LSTKXDATA + + ------- MODULE ?C?OFFXADD + C:1652H PUBLIC ?C?OFFXADD + ------- ENDMOD ?C?OFFXADD + + ------- MODULE ?C?CCASE + C:165EH PUBLIC ?C?CCASE + ------- ENDMOD ?C?CCASE + + ------- MODULE ?C?LIMUL + C:1684H PUBLIC ?C?LIMUL + ------- ENDMOD ?C?LIMUL + + ------- MODULE LABS + C:679EH PUBLIC _LABS + ------- ENDMOD LABS + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 114 + + + + + +FUNCTION REGISTER MASKS + + +FUNCTION . . . . . . . . . REG MASK +----------------------------------- + +AFEADCDIS. . . . . . . . . @0xf7ff +AFEADCEN . . . . . . . . . @0xf7ff +AFECADCDIS . . . . . . . . @0xf7ff +AFECADCEN. . . . . . . . . @0xf7ff +AFECHGERCHECKDIS . . . . . @0xf7ff +AFECHGERCHECKEN. . . . . . @0xf7ff +AFECLRFLG. . . . . . . . . @0xf7ff +AFEENTERPD . . . . . . . . @0xf7ff +AFEGETTEMPE. . . . . . . . @0xf7ff +AFEGETVOL. . . . . . . . . @0xf7ff +AFEINIT. . . . . . . . . . @0xf7ff +AFELOADCHECKDIS. . . . . . @0xf7ff +AFELOADCHECKEN . . . . . . @0xf7ff +AFERAMCHECK. . . . . . . . @0xf7ff +AFERDFLG . . . . . . . . . @0xf7ff +AFERDSTATUS. . . . . . . . @0xf7ff +AFETEMPADCDIS. . . . . . . @0xf7ff +AFETEMPADCEN . . . . . . . @0xf7ff +AFETWICHECK. . . . . . . . @0xf300 +AFEWDTDIS. . . . . . . . . @0xf7ff +AFEWDTEN . . . . . . . . . @0xf7ff +BALPROCESS . . . . . . . . @0xf7ff +CALICURZERO. . . . . . . . @0xe301 +CALIRTCTIME. . . . . . . . @0xf7ff +CHGERCHECK . . . . . . . . @0xf7ff +CLRRAM . . . . . . . . . . @0xf383 +CTOCHECKVOL. . . . . . . . @0xf300 +CTOTURNONCHECK . . . . . . @0xf300 +E2PROMBKBOOT . . . . . . . @0xf7ff +E2PROMINIT . . . . . . . . @0xf7ff +E2PROMTWICHECK . . . . . . @0xf300 +IAPCHECKHANDSHAKE. . . . . @0xf7bf +INITGPIO . . . . . . . . . @0x8000 +INITIRQ. . . . . . . . . . @0xe000 +INITVAR. . . . . . . . . . @0xf797 +INTERRUPTINT4. . . . . . . @0xf003 +INTERRUPTTIMER3. . . . . . @0xf300 +INTERRUPTTIMER3APP . . . . @0xf300 +INTERRUPTUARTAPPTX . . . . @0xf38f +KEYSCAN. . . . . . . . . . @0xf000 +LEDAUTOOFF . . . . . . . . @0xf300 +LEDDISPLAY . . . . . . . . @0xf303 +LOADCHECK. . . . . . . . . @0xf7ff +LOWPOWERCHECK. . . . . . . @0xf301 +LOWPOWERPROCESS. . . . . . @0xf7ff +MCUFLASHPROCESS. . . . . . @0xf7bf +MCUFLASHWRWAITCHECK. . . . @0xf300 +MCUINTOIDLE. . . . . . . . @0xc000 + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 115 + + +MCUINTOPD. . . . . . . . . @0xc000 +MOSCTRL. . . . . . . . . . @0xf7ff +MOSSTATUSCHECK . . . . . . @0xc000 +PORPROTECTOTC. . . . . . . @0xf78f +PORPROTECTOTD. . . . . . . @0xf78f +PORPROTECTOV . . . . . . . @0xf782 +PORPROTECTUTC. . . . . . . @0xf78f +PORPROTECTUTD. . . . . . . @0xf78f +PORPROTECTUV . . . . . . . @0xf782 +PROTECTOCRECOVER . . . . . @0xf7ff +PROTECTOTC . . . . . . . . @0xf7af +PROTECTOTD . . . . . . . . @0xf7af +PROTECTOV. . . . . . . . . @0xf78b +PROTECTUTC . . . . . . . . @0xf7af +PROTECTUTD . . . . . . . . @0xf7af +PROTECTUV. . . . . . . . . @0xf78b +RAMCHECKPROCESS. . . . . . @0xf300 +READSUBCLASSID . . . . . . @0xf375 +RTCTWICHECK. . . . . . . . @0xf300 +SYSPARAINIT. . . . . . . . @0xffbf +SYSTEMINTOPD . . . . . . . @0xf7ff +SYSTEMINTOSLEEP. . . . . . @0xf7ff +UARTCALICUROFFSET. . . . . @0xf375 +UARTCALIRTC. . . . . . . . @0xf377 +UARTCALITS1. . . . . . . . @0xf377 +UARTCALITS2. . . . . . . . @0xf377 +UARTCALIVOLTAGE. . . . . . @0xf377 +UARTCHECK. . . . . . . . . @0xf300 +UARTHANDSHAKE. . . . . . . @0xe300 +UARTRDCMDPROCESS . . . . . @0xf3ff +UARTRDE2PROM . . . . . . . @0xf7ff +WAKEUPPROCESS. . . . . . . @0xf7ff +WRITEMANUFACTURE . . . . . @0xf375 +_AFEALARMDIS . . . . . . . @0xf7ff +_AFEALARMEN. . . . . . . . @0xf7ff +_AFEBALCTL . . . . . . . . @0xf7ff +_AFEMOSCTL . . . . . . . . @0xf7ff +_AFEREADREG. . . . . . . . @0xf7ff +_AFEWRITEREG . . . . . . . @0xf7ff +_CRC8CAL . . . . . . . . . @0xf365 +_DELAY1MS. . . . . . . . . @0xf03e +_E2PROMREAD. . . . . . . . @0xf7ff +_E2PROMWRITE . . . . . . . @0xf7ff +_INTERRUPTINT4APP. . . . . @0xf003 +_LEDGETDISNUM. . . . . . . @0xf001 +_MCUCLOCKSET . . . . . . . @0xf003 +_MCUFLASHBLANKCHECK. . . . @0xf31c +_MCUFLASHCHECKFLG. . . . . @0xf303 +_MCUFLASHDATACHECK . . . . @0xf7af +_MCUFLASHREAD. . . . . . . @0xf307 +_MCUFLASHWRITE . . . . . . @0xf7bf +_MCUFLASHWRONEBYTE . . . . @0xf035 +_MCUFLASHWRSECTOR. . . . . @0xf33f +_MEMORYCOPY. . . . . . . . @0xf78d +_MEMORYSET . . . . . . . . @0xf781 +_RTCMODIFYTIME . . . . . . @0xf7ff +_RTCREAD . . . . . . . . . @0xf7ff + BL51 BANKED LINKER/LOCATER V6.22 06/21/2022 07:40:42 PAGE 116 + + +_RTCWRITE. . . . . . . . . @0xf7ff +_TWICHECKSTATUS. . . . . . @0xf00c +_TWIINIT . . . . . . . . . @0xf48f +_TWIREAD . . . . . . . . . @0xf7ff +_TWIWRITE. . . . . . . . . @0xf7ff +_UARTREADINFO. . . . . . . @0xf37f +_UARTWRITEINFO . . . . . . @0xf7ff + +Program Size: data=143.6 xdata=1080 code=23457 +LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/McuFlash_ISP b/output/McuFlash_ISP new file mode 100644 index 0000000..b045a90 Binary files /dev/null and b/output/McuFlash_ISP differ diff --git a/output/McuFlash_ISP.ORC b/output/McuFlash_ISP.ORC new file mode 100644 index 0000000..269c7fa --- /dev/null +++ b/output/McuFlash_ISP.ORC @@ -0,0 +1,117 @@ +F7FF AFEADCDIS +F7FF AFEADCEN +F7FF AFECADCDIS +F7FF AFECADCEN +F7FF AFECHGERCHECKDIS +F7FF AFECHGERCHECKEN +F7FF AFECLRFLG +F7FF AFEENTERPD +F7FF AFEGETTEMPE +F7FF AFEGETVOL +F7FF AFEINIT +F7FF AFELOADCHECKDIS +F7FF AFELOADCHECKEN +F7FF AFERAMCHECK +F7FF AFERDFLG +F7FF AFERDSTATUS +F7FF AFETEMPADCDIS +F7FF AFETEMPADCEN +F300 AFETWICHECK +F7FF AFEWDTDIS +F7FF AFEWDTEN +F7FF BALPROCESS +E301 CALICURZERO +F7FF CALIRTCTIME +F7FF CHGERCHECK +F300 CTOCHECKVOL +F300 CTOTURNONCHECK +F7FF E2PROMBKBOOT +F7FF E2PROMINIT +F300 E2PROMTWICHECK +FFBF GASGAUGEVARIN +FF8F GASGAUGEVAROUT +C000 INITGPIO +E000 INITIRQ +F797 INITVAR +F003 INTERRUPTINT4 +F300 INTERRUPTTIMER3 +F300 INTERRUPTTIMER3APP +F38F INTERRUPTUART0APPTX +F000 KEYSCAN +F300 LEDAUTOOFF +F303 LEDDISPLAY +F7FF LOADCHECK +F301 LOWPOWERCHECK +F7FF LOWPOWERPROCESS +F7BF MCUFLASHPROCESS +F300 MCUFLASHWRWAITCHECK +C000 MCUINTOIDLE +C000 MCUINTOPD +F7FF MOSCTRL +C000 MOSSTATUSCHECK +F78F PORPROTECTOTC +F78F PORPROTECTOTD +F782 PORPROTECTOV +F78F PORPROTECTUTC +F78F PORPROTECTUTD +F782 PORPROTECTUV +F7FF PROTECTOCRECOVER +F7AF PROTECTOTC +F7AF PROTECTOTD +F7FF PROTECTOV +F7AF PROTECTUTC +F7AF PROTECTUTD +F78B PROTECTUV +F300 RAMCHECKPROCESS +F300 RTCTWICHECK +FFBF SYSPARAINIT +F7FF SYSTEMINTOPD +F7FF SYSTEMINTOSLEEP +E000 TWIINIT +F375 UART0CALICUROFFSET +F377 UART0CALIRTC +F377 UART0CALITS1 +F377 UART0CALITS2 +F377 UART0CALIVOLTAGE +F300 UART0CHECK +E300 UART0HANDSHAKE +F7BF UART0IAPCHECKHANDSHAKE +E000 UART0INIT +F3FF UART0RDCMDPROCESS +F7FF UART0RDE2PROM +F375 UART0READSUBCLASSID +F375 UART0WRITEMANUFACTURE +F7FF UART1RDE2PROM +F7FF UART2RDE2PROM +F7FF WAKEUPPROCESS +F7FF _AFEALARMDIS +F7FF _AFEALARMEN +F7FF _AFEBALCTL +F7FF _AFEMOSCTL +F7FF _AFEREADREG +F7FF _AFEWRITEREG +F365 _CRC8CAL +F03E _DELAY1MS +F7FF _E2PROMREAD +F7FF _E2PROMWRITE +F7CF _GETCYCLEGAIN +F003 _INTERRUPTINT4APP +F001 _LEDGETDISNUM +F003 _MCUCLOCKSET +F31C _MCUFLASHBLANKCHECK +F303 _MCUFLASHCHECKFLG +F7AF _MCUFLASHDATACHECK +F307 _MCUFLASHREAD +F7BF _MCUFLASHWRITE +F035 _MCUFLASHWRONEBYTE +F33F _MCUFLASHWRSECTOR +F78D _MEMORYCOPY +F781 _MEMORYSET +F7FF _RTCMODIFYTIME +F7FF _RTCREAD +F7FF _RTCWRITE +F00C _TWICHECKSTATUS +F7FF _TWIREAD +F7FF _TWIWRITE +F37F _UART0READINFO +F7FF _UART0WRITEINFO diff --git a/output/McuFlash_ISP.build_log.htm b/output/McuFlash_ISP.build_log.htm new file mode 100644 index 0000000..613509d --- /dev/null +++ b/output/McuFlash_ISP.build_log.htm @@ -0,0 +1,66 @@ + + +
+

礦ision Build Log

+

Tool Versions:

+IDE-Version: μVision V5.22.0.0 +Copyright (C) 2016 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: yang Microsoft, Microsoft, LIC=58E4T-RQU60-GVC1T-RJBYK-PG19C-5N7J7 + +Tool Versions: +Toolchain: PK51 Prof. Developers Kit Version: 9.01 +Toolchain Path: C:\Keil_v5\C51\BIN +C Compiler: C51.exe V9.01 +Assembler: A51.exe V8.02 +Linker/Locator: BL51.exe V6.22 +Library Manager: LIB51.exe V4.24 +Hex Converter: OH51.exe V2.6 +CPU DLL: S8051.DLL V3.72 +Dialog DLL: DP51.DLL V2.59 +Target DLL: SH51A.dll V1.0.0.0 +Dialog DLL: TP51.DLL V2.58 + +

Project:

+C:\Users\wenhua.wang\Desktop\demo方案&user guide优化\SH39F003&F004_DemoCode_V2.15_20231213\SH39F003&F004_DemoCode_V2.15_20231222\SH39F003&F004_DemoCode_V2.15_20231213\MCUCore.uvproj +Project File Date: 12/22/2023 + +

Output:

+Rebuild target 'McuFlahs_ISP' +compiling Main.c... +compiling Initial.c... +compiling InterruptApp.c... +compiling Led.c... +compiling KeyApp.c... +compiling LowPower.c... +compiling UartApp.c... +compiling Memory.c... +compiling AFE.c... +compiling Balance.c... +compiling Calculate.c... +compiling Calibrate.c... +compiling ChargerLoad.c... +compiling ExtE2PRom.c... +compiling Interrupt.c... +compiling KeyScan.c... +compiling McuFlash.c... +compiling McuLib.c... +compiling MosCtrl.c... +compiling PorSelfTest.c... +compiling Protect.c... +compiling RTC.c... +compiling TWI.c... +compiling Uart.c... +compiling Thermistor.c... +compiling TwiIO.c... +assembling STARTUP.A51... +compiling GasGaugeInter_V4_13.c... +compiling BootApp.c... +compiling DataFlash.c... +linking... +Program Size: data=151.4 xdata=1528 code=26615 +creating hex file from ".\output\McuFlash_ISP"... +".\output\McuFlash_ISP" - 0 Error(s), 0 Warning(s). +Build Time Elapsed: 00:00:03 +
+ + diff --git a/output/McuFlash_ISP.hex b/output/McuFlash_ISP.hex new file mode 100644 index 0000000..32505dd --- /dev/null +++ b/output/McuFlash_ISP.hex @@ -0,0 +1,1827 @@ +:10587600126561126F2B306D2353B1F8C26D12722F +:10588600961273ED12712C126D7D1265131267B7A5 +:10589600126F5B1258EE124D5F127282306C22C28A +:1058A6006C121C7A125DF91271F812716912718606 +:1058B600125D30400312515712726D124531125368 +:1058C600C2126F881271A31263881246C8124E0C58 +:1058D600126C0B900206E524F0A3E525F0A3E52261 +:0858E600F0A3E523F0808C2201 +:106B48009005367401F07E027F3C7B40E4FD126FB5 +:106B5800DF7E027F0A7B14E4126FDF900224740A3E +:106B6800F0A374ABF0A3740AF0A374ABF0C22CC208 +:106B78002D90053F7402F0D22ED27B90027C745087 +:026B8800F022F9 +:105157007FFE7E01127009501F7B007A02E4FDFC7E +:10516700FFFE125F187FFE7E03127009402CE4FDDC +:10517700FF7E0212532B80227FFE7E03127009509E +:10518700167B007A02E4FDFCFF7E02125F18E4FD45 +:10519700FFFE12532B8003D26E22900000E0F52011 +:1051A700A3E0F521900238E520F0A3E521F0900077 +:1051B7001A12259A90022C122600900022E0FFA3D3 +:1051C700E0900236CFF0A3EFF0E52154072403F572 +:1051D7001364056005E513B40A04E4F51422E51326 +:1051E70064046005E513B4090475140122751402FB +:0151F7002295 +:10714B00C2AFD2ACC086758640C28FD086D2AD435B +:0E715B00BA6043E840E4F5D843A908D2AF2259 +:106FB40075803875E10F75E90875908075E27F7505 +:106FC400EA8075A0E075E33F75EBC075B01975E410 +:0B6FD400E675EC194380C043E9802201 +:10656100E4FF126295126FB4125157126B487D0508 +:106571007C007F44123EEC1271DC1272417D647F1B +:10658100A07E0F1257781255F01255694002D25A67 +:10659100126D063007121257F94002D2397E047F7C +:0C65A100971254504002D27812714B2225 +:10102E00EFB4200E206303306619E4FF126295D2EE +:10103E006522EFB4400D206303306607E4FF1262B1 +:04104E0095D26522B0 +:1070C900D26B9003FFE004F0C3940A4004E4F0D2C9 +:1070D9006D9003FEE004F0C394C84004E4F0D26C60 +:0470E9001250B5226A +:106C4B00D3EF9450EE940040037F0522D3EF943C96 +:106C5B00EE940040037F0422D3EF9428EE9400407F +:106C6B00037F0322D3EF9414EE940040037F0222A0 +:0F6C7B00D3EF9400EE940040037F01227F0022AC +:1072AA0030710F90053EE004F0C394644004E4F0AA +:0372BA00C271227C +:104D5F00302A1490053CE004F0C3940A400BE4F0B1 +:104D6F00A2B5B392B58002C2B530721490053DE082 +:104D7F0004F0C39405400BE4F0A2A0B392A080020C +:104D8F00C2A0307167900234E0FEA3E0FF126C4BBB +:104D9F00EF700D207202C2A0C2A1C2A2C2A3C2A410 +:104DAF00EFB40107207252D2A0804EEFB402092057 +:104DBF007202D2A0D2A18041EFB4030B207202D2B3 +:104DCF00A0D2A1D2A28032EFB4040D207202D2A0E1 +:104DDF00D2A1D2A2D2A38021EF6405701C2072024F +:104DEF00D2A0D2A1D2A2D2A3D2A4800D207202C28D +:0C4DFF00A0C2A1C2A2C2A3C2A41272AA48 +:014E0B002284 +:105CCA00C22CC22DC22E302B5690053FE07018040C +:105CDA00F0D22D900089E0FEA3E0FF90008CE0FD59 +:105CEA0012577843B7012290053FE0B401167402B7 +:105CFA00F0D22E900089E0FEA3E0FF7D641257786F +:105D0A0043B70122E490053FF0D22C900089E0FECF +:105D1A00A3E0FF90008BE0FD12577843B70122C23F +:065D2A002CC22DC22E2246 +:106F2B00307A2CC27AE50824FE600F24F160161427 +:106F3B00601024117019125CCA22D271E490053EC4 +:106F4B00F022D26322B272307203C28322D2832226 +:106BCB0030653CC265306624E4FF126295D2AFC2D9 +:106BDB0066E49005E8F07F01126890D2ACD2ADD29A +:106BEB00CE7F7012722A12737B127309E49005E840 +:106BFB00F0A3F09003F6F09003F7F09003F8F02277 +:10710D0053B1F8C2AF207202C2A0C2A1C2A2C2A3E3 +:0F711D00C2A4D283E4FF12725812705780E2228C +:106B0500207202C2A0C2A1C2A2C2A3C2A4D283C2E1 +:106B15007212731C12738E7F701273B3C2CE53B789 +:106B25007E302904D2A58002C2A57F01126890C2D9 +:106B3500AFC2ACC2ADE4F5D87F80126295D2AF1278 +:036B450073E122D7 +:1053C20030640E204306204403304505C264D26394 +:1053D2002230161490002AE0FF9005E9E004F0C3A1 +:1053E2009F406AEFF0D2632220715B202A50202B6B +:1053F2004D30191490002AE0FF9005E9E004F0C353 +:105402009F404AEFF0D26322E49005E9F0A21272C3 +:10541200107218721A721172137219721B721C7244 +:10542200157272401390002AE0FF9005E8E004F044 +:105432009F401AEFF0D26622E49005E8F022E49051 +:0E54420005E8F0A3F022E49005E8F0A3F022C4 +:106C0B00206626206323C2AFA279727A726F7265F7 +:106C1B00724C726D726C400D9005EAE06412600567 +:106C2B00D2AF1273D5D2AF801330630AD26F124634 +:106C3B00C812710D8006306603126B05126BCB22E6 +:10680000000000300062007400000089008E0099D2 +:1068100000A200AA00BB00BF00FE000000000000B4 +:10682000000000000020005000820094000000A939 +:1068300000AE00B900C200CA00DB00DF011E00008C +:08684000000000000000000050 +:1073A100900402E07006C29C75995A22C29C75999C +:0273B100FF22B9 +:085964009002B7EEF0A3EFF092 +:10596C007B017A047900900402E02403FD1271C0DB +:10597C00900402E02403F582E43404F583E06F70B4 +:10598C0041FF900402E0FEEFC39E502953B1F8741E +:10599C00032FF582E43404F583E0FE9002B7E0FCBB +:1059AC00A3E0F5828C83EEF09002B7E475F001125F +:1059BC0023C40F80CDD270E49005F3F0C29C75998E +:0759CC005A22C29C7599FFED +:0159D30022B1 +:105D9600900402E0D3948C4002E4F0E4FD90040207 +:105DA600E0FCEDC39C501D53B1F88F828E83E0FB5F +:105DB60074032DF582E43404F583EBF00FBF000184 +:105DC6000E0D80D97B017A047900EC2403FD127153 +:105DD600C0900402E02403F582E43404F583EFF076 +:105DE600C29C9003F9E02400F582E43404F583E0D4 +:025DF600F5991D +:015DF8002288 +:1069AE007B017A047900900402E02403FD1271C089 +:1069BE00900402E02403F582E43404F583E0B50785 +:1069CE001E900404E0FFB441089005EA7412F080B2 +:1069DE0006EFB40502D264C243C29C75995A22C214 +:0569EE009C7599FF22D9 +:106DB8007B017A047900900402E02403FD1271C07B +:106DC800900402E02403F582E43404F583E0B50777 +:106DD80010900403E09003F1F0C243C29C75995AE5 +:076DE80022C29C7599FF22F5 +:1039CF00900401E0FF1226623A23013A23023A23C0 +:1039DF00033A23043A23053A23063A23073A2308E6 +:1039EF003A23093A230A3A340B3A440C3A4C0D3A2B +:1039FF00540E3A5C0F3A3C103A64113A6C123A7416 +:103A0F00133A7C143A84153A8C163A94173A9C1848 +:103A1F0000003AA4EF25E02408F582E43402AF82D7 +:103A2F00FE125D96227E027F1E125D96227E027F1F +:103A3F0020125D96227E027F24125D96227E027FE7 +:103A4F0026125D96227E027F28125D96227E027FCD +:103A5F002A125D96227E027F2C125D96227E027FB5 +:103A6F0030125D96227E027F34125D96227E027F97 +:103A7F0036125D96227E027F06125D96227E027FAF +:103A8F0008125D96227E027F38125D96227E027F9B +:103A9F003A125D9622900402E0C394804009D23A14 +:103AAF009003E17401F022900401E0B478109003C8 +:103ABF00F1E0B40C09D23A9003EE7401F0229004B5 +:103ACF0001E0B478229003F1E025E02400F582E4D0 +:103ADF003468F583E493FE740193FF9002B5EEF022 +:103AEF00A3EFF0125D9622900401E0B479219003C8 +:103AFF00F1E025E02424F582E43468F583E493FEB5 +:0F3B0F00740193FF9002B5EEF0A3EFF0125D96F4 +:013B1E002284 +:106243007B017A047900900402E02403FD1271C0FB +:10625300900402E02403F582E43404F583E06F70D4 +:106263002B900403E0FEA3E0FDEEEDFF9005DFEECF +:10627300F0A3EFF04E7006C29C7599FF22D279907D +:1062830005DAE04401F0C29C75995A22C29C7599C3 +:02629300FF22E8 +:104789007B017A047900900402E02403FD1271C0D0 +:10479900900402E02403F582E43404F583E06F60B9 +:1047A90003024840900404E0FFE4FCFDFE78101287 +:1047B900257BC004C005C006C007900403E0FFE4E0 +:1047C900FCFDFE781812257BD003D002D001D00061 +:1047D900122512C004C005C006C007900405E0FFF9 +:1047E900E4FCFDFE780812257BD003D002D001D06D +:1047F90000122512A804A905AA06AB07A3E0FFE445 +:10480900FCFDFE1225129005D61226009002A1E0A9 +:104819007002A3E0600C9005D612259AEC4D4E4F1C +:104829007006C29C7599FF22D2799005DAE044108E +:0D483900F0C29C75995A22C29C7599FF220D +:106DEF007B017A047900900402E02403FD1271C044 +:106DFF00900402E02403F582E43404F583E0B50740 +:106E0F000FD2799005DAE04420F0C29C75995A228E +:066E1F00C29C7599FF22E0 +:106725007B017A047900900402E02403FD1271C014 +:10673500900402E02403F582E43404F583E06F70ED +:1067450022D279900403E0FEA3E0FDEEEDFF900573 +:10675500DBEEF0A3EFF09005DAE04404F0C29C759F +:09676500995A22C29C7599FF2289 +:10676E007B017A047900900402E02403FD1271C0CB +:10677E00900402E02403F582E43404F583E06F70A4 +:10678E0022D279900403E0FEA3E0FDEEEDFF90052A +:10679E00DDEEF0A3EFF09005DAE04408F0C29C7550 +:0967AE00995A22C29C7599FF2240 +:1061EF007B017A047900900402E02403FD1271C050 +:1061FF00900402E02403F582E43404F583E06F7029 +:10620F002DFF74032FF582E43404F583E0FE74E16F +:10621F002FF582E43405F583EEF00FEFB407E3D2E8 +:10622F00799005DAE04480F0C29C75995A22C29C9D +:03623F007599FF4F +:016242002239 +:10500E00900401E0122662503A18503E77505A78BA +:10501E00507C795046A0504EA15052A25042A350FF +:10502E004AA45056AF509EB0000050B41269AE2242 +:10503E00126DB8221247892212624322126DEF229C +:10504E001267252212676E221261EF229003F1E0A1 +:10505E0025E02400F582E43468F583E493FE7401C0 +:10506E0093FF9002B5EEF0A3EFF012596422900375 +:10507E00F1E025E02424F582E43468F583E493FE20 +:10508E00740193FF9002B5EEF0A3EFF01259642273 +:10509E00900403E0B4550AD23AD238C29C75995A9C +:0650AE0022C29C7599FF6F +:0150B40022D9 +:10386800E49002B5F0A3F09003F9E0FFB4021A90D7 +:103878000401E064A56006E49003F9F022E49003F3 +:10388800FCF0A3F09003F2F022900402E0FD7C002B +:103898002409FBEC33FA7E00C3EF9BEA6480F874DA +:1038A8008098505FED2407FDEC33FCD3EF9DEC646A +:1038B80080F874809850189003F9E024FFF582E4AA +:1038C8003403F583E0FF9003FCEE8FF01223C490DD +:1038D80003F9E0FFB40511900404E06407700302E3 +:1038E80039CEE49003F9F022EF640660030239CE82 +:1038F800900405E0640670030239CE9003F2E044B8 +:1039080020F022E49003F9F0900402E0FD2408F589 +:1039180082E43404F583E0FE74072DF582E4340470 +:10392800F583E07C002400FFEC3EFE9003FCE06E93 +:103938007003A3E06F60079003F2E04480F0900307 +:10394800F2E0FF6006900406F08007D24CE4900491 +:1039580006F0E4900402F0900405740BF090040360 +:10396800E0FFA3E0900403F0A3EFF07F02900402CD +:10397800E0FE2407FDE433FCEFC39DEC6480F8749B +:103988008098501874002FF582E43404F583E0FD24 +:103998009002B5E48DF01223C40F80D19002B5E0F7 +:1039A800FCA3E0FF74072EF582E43404F583EFF0FE +:1039B800ECFF900402E02408F582E43404F583EF78 +:0639C800F0C29C75995A43 +:0139CE0022D6 +:105294009003F9E02400F582E43404F583EFF09000 +:1052A40003F9E004F0E0C3948C4002E4F09003F9C5 +:1052B400E064017027900400E0FF54FEB59A10EFFB +:1052C40020E006D246C2498013D249C246800D90DE +:1052D4000400E0645A6005E49003F9F030460D9050 +:1052E40003F9E0640370301239CF802B30492590E4 +:1052F4000402E02403FFE433FE9003F9E0D39FEEBD +:105304006480F8748098400F12500EC249E49003F0 +:10531400F9F08003123868C243E49005E8F0900580 +:07532400E9F09003F6F0220E +:104EB800900400E0B45A06A3E064A56003304C44B3 +:104EC800900402E02408FFE433FE9003F9E0C39F56 +:104ED800EE6480F87480984014D29CE4F0C2469046 +:104EE8000400F0A3F0A3F0A3F0D24380609003F98C +:104EF800E004F0C29CE02400F582E43404F583E089 +:104F0800F59980499003F9E0FF6016900402E024C7 +:104F180003FDE433FCC3EF9DEC6480F87480984093 +:104F280017D29CE49003F9F0C246900400F0A3F075 +:104F3800A3F0A3F0D24380159003F9E004F0C29CDB +:104F4800E02400F582E43404F583E0F599E4900563 +:0B4F5800E8F09005E9F09003F6F0226D +:107282009003F6E004F0C394044008E4F09003F99C +:04729200F0D29C2278 +:1071F800305C119002B1E004F0C39405400BD25A00 +:0A7208007405F022E49002B1F022B8 +:0E4F63009002C0EFF0A3EDF0A3EAF0A3EBF094 +:104F7100C254E4A3F0305A03025006A3F09002C1D8 +:104F8100E0FF9002C5E0C39F507B9002C4E0FF04A4 +:104F9100F0EFC39405503E9002C0E0FD7C0090020A +:104FA100F97401F0A3F09002C2E0FFA3E09002FBCC +:104FB100CFF0A3EFF0E4FB7F36123B1F9254305445 +:104FC10004801280C5E4F5C87F0112689012724115 +:104FD10012689080B59002C4E0C394054004802516 +:104FE1008015E49002C4F09002C0E004F09002C287 +:104FF100E475F0011223C47F011268909002C5E0AC +:0C50010004F0024F7EA254B3925CA25453 +:01500D002280 +:0E5B8B009002C3EFF0A3EDF0A3EAF0A3EBF05D +:105B9900C254E4A3F0205A4D9002C7E0FF04F0EF8D +:105BA900C3940550409002C3E0FD7C00A3E090023D +:105BB900EFF0A37401F09002C5E0FFA3E09002F1B9 +:105BC900CFF0A3EFF0E4FB7F361230A492543054A7 +:105BD90004801280C3E4F5C87F01126890127241F3 +:0C5BE90012689080B3A254B3925CA254E6 +:015BF500228D +:106D06007A027BA37D02E4FF125B8B502E9002A3D6 +:106D1600E07004A3E060249002A7E04480F07A02C9 +:106D26007BA77D017F04124F639002A7E0547FF09A +:0C6D36007A027BA77D017F04124F6322CC +:1055F000E49002A6F0A37450F0E4A3F0A374F8F0D2 +:10560000E4A3F0A3F0A37470F0A37401F0A37403F7 +:10561000F0A374FFF0E4A3F03000199002A7E04477 +:1056200008F09002ACE0FF9000BBE0540FFEEF4E9C +:105630009002ACF030013E9002A7E04404F09002EA +:10564000ADE0FF9000BBE054F0FEEF4E9002ADF0F5 +:105650009000BCE0FEA3E0FF7C007D32122688E4CF +:105660007B257A01F9F8122480AD07AC06EC900294 +:05567000AEF0A3EFF015 +:015675002212 +:10556900D2539002BF7403F09002BFE0FF14F0EF32 +:1055790060727A027BA67D0B7F03124F63505C90A9 +:1055890002BE7403F09002BEE0FFD3940B504E7A32 +:10559900027BBC7D02125B8B9002BEE0FF7E007B2A +:1055A9000124A3F9EE3402FA122344FD9002BCE06F +:1055B900B5051374A42FF9EE3402FA122344FF90AF +:1055C90002BDE06F600C9002BEE064076004C25344 +:1055D900800B9002BEE02402F080AAC253305388A7 +:0655E90080028084A25341 +:0155EF002299 +:106CC9007A027BA37D02E4FF125B8B502F9002A412 +:106CD900E0FF30E102D259EF30E002D25B9002A32B +:106CE900E0FF30E307206804D215D26AEF30E202F0 +:0D6CF900D2149002A4E030E203125569228B +:107212007A027BB97D027F02125B8B500A9002B91F +:07722200E09002A5F0F52643 +:017229002242 +:105DF9009002BB7403F09002BBE0FFD3940B5050A8 +:105E09007A027BB97D02125B8B9002BBE0FF7E00B8 +:105E19007B0124A3F9EE3402FA122344FD9002B95E +:105E2900E0B5051374A42FF9EE3402FA122344FFE6 +:105E39009002BAE06F60109002BBE064076008123C +:105E49005569400CD263229002BBE02402F080A67F +:015E59002226 +:107057009002B07433F07A027BB07D017F0D124F3E +:107067006350129002A7E04420F07A027BA77D01CB +:067077007F04124F6322AA +:107258009002A8E054FCF04FF07A027BA87D017FF1 +:0572680005124F632236 +:1072BD009002A7E04401F07A027BA77D017F0412C2 +:0372CD004F6322EA +:1072D0009002A7E054FEF07A027BA77D017F0412A2 +:0372E0004F6322D7 +:1072E3009002A7E04402F07A027BA77D017F04129B +:0372F3004F6322C4 +:1072F6009002A7E054FDF07A027BA77D017F04127D +:037306004F6322B0 +:106C8A009002BBEEF0A3EFF09002BBE0FEA3E07827 +:106C9A0005CEC313CE13D8F99002AAF07A027BAAC2 +:106CAA007D017F07124F6350159002BBE0A3E0906D +:0F6CBA0002ABF07A027BAB7D017F08124F6322A1 +:107309009002A7E04410F07A027BA77D017F041266 +:037319004F63229D +:10731C009002A7E054EFF07A027BA77D017F041264 +:03732C004F63228A +:10732F009002A9E044F8F07A027BA97D017F061252 +:03733F004F632277 +:107342009002A9E05407F07A027BA97D017F061220 +:037352004F632264 +:107355009002A9E044E0F07A027BA97D017F061244 +:037365004F632251 +:107368009002A9E0541FF07A027BA97D017F0612E2 +:037378004F63223E +:10737B009002A9E04408F07A027BA97D017F0612F6 +:03738B004F63222B +:10738E009002A9E054F7F07A027BA97D017F0612E4 +:03739E004F632218 +:1073B3009002A6E04FF07A027BA67D017F03124F75 +:0273C300632243 +:10722A009002A6E0FEEFF4FFEE5FF07A027BA67D05 +:07723A00017F03124F6322E4 +:103C6600305E03023DA9305F03023DA92003030233 +:103C76003DA9E490053AF0A3F0C3900063E09512E5 +:103C8600900062E09511500330181ED3900065E055 +:103C96009512900064E09511400320180C2010093D +:103CA600201206201103301308C260E4900539F093 +:103CB60022C39000A3E095129000A2E09511400364 +:103CC600023DA2C3E5129510FFE511950FFED390B4 +:103CD60000A5E09F9000A4E09E4003023DA2900054 +:103CE600A6E0FEA3E0FFEE3395E0FDFC9002201275 +:103CF60025B3C312252D5003023DA2206006900570 +:103D060039E004F09000A8E075F00AA4FF900539A8 +:103D1600E0C39FE5F06480F87480985003023DA9E3 +:103D2600AD14E5142513FFE433FEEDC39FEE648066 +:103D3600F87480985063ED25E0240AF582E4340295 +:103D4600F583E0FEA3E0C39510FFEE950FFED3903A +:103D560000A5E09F9000A4E09E503BED25E0240ADC +:103D6600F582E43402F583E0FEA3E0FF9000A2E0D2 +:103D7600FAA3E0FBC3EF9BEE9A401B74017E00A8FA +:103D860005088005C333CE33CED8F9FF90053AE057 +:103D96004EF0A3E04FF00D8089D26022C260E4901D +:033DA6000539F0EC +:013DA90022F7 +:106E2500C25330052D20162A306227C39002B4E0E4 +:106E350094B49002B3E094005011D253900538E019 +:106E450004F0C3940A400BD2168007C262E4900591 +:046E550038F0A2531C +:016E59002216 +:104BF200C3E5129510FFE511950FFEC3EF94B0EED9 +:104C02009404500AE5129464E51194055002D262AC +:104C1200900536E024FE605514605914606A1460F1 +:104C22007C24046003024CAB205F0330607B306164 +:104C32001590053AE05455FFA3E054559002B9CFC0 +:104C4200F0A3EFF0801390053AE054AAFFA3E054DA +:104C5200AA9002B9CFF0A3EFF09002B9E0FEA3E070 +:104C6200FF126C8A9005367402F0D25E22900536ED +:104C72007403F022126E254030E4FFFE126C8A901B +:104C820005367404F0B26122126E25400790053693 +:104C92007405F0229005367401F0B2612290053657 +:094CA2007401F0C25FC260C25E41 +:014CAB0022E6 +:10707D0030052220161F900537E004F0C3942D40F3 +:10708D0014742DF0205E0EE4F0D25F90053A740377 +:06709D00F0A374FFF022D5 +:0A73ED00123C6612707D124BF22272 +:106EC400FFD8FFE2FFECFFF60000000A00190023E0 +:106ED400002D00370041004B0055FFFBFFFCFFFD78 +:106EE400FFFEFFFFFFFF000000010001000200039E +:046EF4000004000591 +:042B2D008F828E8382 +:102B31007E037FE8AD82AC83122688C006C007AE53 +:102B410083AF82C3E49FFF74109EFEAB07FAE4F9E2 +:102B5100F8D007D0061224809002BC122600E47F30 +:102B61000AFEFDFC9002BC1225B3D3122543401D81 +:102B71009002BC12259AC3EF940AFFEE9400FEED79 +:102B81009400FDEC9400FC9002BC122600903DAA3A +:102B9100E493FE740193FFE4FCFD9002BC1225B3A3 +:102BA100C3122543400D9002BA7408F0A374B7F024 +:102BB100022D14903EEAE493FE740193FFE4FCFDC0 +:102BC1009002BC1225B3D3122543500D9002BA7462 +:102BD1000EF0A374F7F0022D1490027CE09002B97C +:102BE100F075F002903DAA122656E493FE7401930B +:102BF100FFE4FCFD9002BC1225B3D3122543403BF8 +:102C010090027CE0149002B9F09002B9E0FFC39405 +:102C110000406975F002EF903DAA122656E493FE3A +:102C2100740193FFE4FCFD9002BC1225B3D312257D +:102C31004340499002B9E014F080CE90027CE00458 +:102C41009002B9F09002B9E0FFC394A0502875F04A +:102C510002EF903DAA122656E493FE740193FFE41D +:102C6100FCFD9002BC1225B3D312254350089002FB +:102C7100B9E004F080CE9002B9E014F09002B9E01E +:102C810090027CF075F002903DAA122656E493FE64 +:102C9100740193FFE4FCFD9002BC1225B31223E7FB +:102CA100E47B0AFAF9F81223F5C004C005C006C096 +:102CB100079002B9E0FF75F002903DAC122656E490 +:102CC10093FC740193FD75F002EF903DAA12265614 +:102CD100C37401939DFFE4939CFEAB07FAE4F9F8FA +:102CE100D007D006D005D004122480AB07AA0690E5 +:102CF100027CE024CEFFE434FFFE7C007D0A122337 +:102D01005DEF2BFFEE3ACF24ABCF340A9002BAF03D +:0B2D1100A3EFF09002BAE0FEA3E0FF89 +:012D1C002294 +:10669100D2539002C2E514F0E5132514FFE433FE52 +:1066A1009002C2E0C39FEE6480F87480985028E0A5 +:1066B100FF25E02485F582E43402AB82FAEF25E080 +:1066C100240EFF7D02125B8B4005C253A253229020 +:0966D10002C2E004F080C1A253F2 +:0166DA00229D +:10684800D2537A027B997D027F22125B8B4002C26F +:10685800537A027B9B7D027F24125B8B4002C253DA +:106868007A027B9D7D027F26125B8B4002C253E534 +:1068780013D39405400F7A027B9F7D027F28125B19 +:076888008B4002C253A25332 +:01688F0022E6 +:10437C001268484003024459900299E0FEA3E0FF02 +:10438C00122B2D9000C6E02FFF9000C5E03EFEC220 +:10439C00AC900224F0A3EFF0D2AC90029DE0FEA30F +:1043AC00E0FF7C007D11122688E47B0AFAF9F812F2 +:1043BC002480EF241FFFE43EFEC2AC900228F0A341 +:1043CC00EFF0D2ACE513D39405402A90029FE0FEA7 +:1043DC00A3E0FF7C007D11122688E47B0AFAF9F831 +:1043EC00122480EF241FFFE43EFEC2AC90022AF0A0 +:1043FC00A3EFF0D2AC900224E0FCA3E0FD9002020B +:10440C00ECF0A3EDF0900204ECF0A3EDF0300D3DD8 +:10441C0090029BE0FEA3E0FF122B2D9000C8E02F32 +:10442C00FF9000C7E03EFEC2AC900226F0A3EFF076 +:10443C00D2ACD3900203E09F900202E09E4006EEC5 +:0D444C00F0A3EFF022900204EEF0A3EFF0D9 +:014459002240 +:104025009002BA122625000000009002BE12262535 +:1040350000000000E4900200F0A3F09002B37417B2 +:10404500F0A37470F0126691400302415C9002B9CE +:10405500E514F0E5132514FFE433FE9002B9E0FD05 +:10406500C39FEE6480F87480984003024133ED25C8 +:10407500E02485F582E43402F583E0FEA3E0FF7CCD +:104085000E7DD8122688C006C0079000BFE0FEA3AB +:10409500E0FFFBAA06E4F9F8D007D00612248090C9 +:1040A50002BE122600900200E0FEA3E0FFE4FCFD44 +:1040B5009002BE1225B3D3122543400E9002BE12C4 +:1040C500259A900200EEF0A3EFF09002B3E0FEA374 +:1040D500E0FFE4FCFD9002BE1225B3C31225435058 +:1040E5000E9002BE12259A9002B3EEF0A3EFF020D7 +:1040F5005E33C2AC9002BE12259A9002B9E025E06B +:10410500240AF582E43402F583EEF0A3EFF0D2AC95 +:104115009002BA12259A9002BE1225B31223DA90A4 +:1041250002BA1226009002B9E004F0024058205E5F +:1041350026900200E0F511A3E0F5129002B3E0F538 +:104145000FA3E0F510C2AC9002BA12259A90021E98 +:07415500EEF0A3EFF0D2AC85 +:01415C002240 +:104CAC00E49002BEF0A3F0A3F09002C0E0FFC39426 +:104CBC000C4003024D56EF25E024C4F582E4346E1B +:104CCC00F583E493FE740193FFFBAA06EA3395E0A7 +:104CDC00F9F89002C0E025E024C6F582E4346EF5C4 +:104CEC0083E493FE740193FFEE3395E0FDFC1223F5 +:104CFC00DAE47B02FAF9F8126AC1E47B0AFAF9F8F1 +:104D0C001223F5EF24ABFBEE340AFAE43DF9E43C54 +:104D1C00F8900228E0FEA3E0FFE4FCFDC312252D71 +:104D2C00401F9002C0E025E024DEF582E4346EF5ED +:104D3C0083E493FF7401939002BECFF0A3EFF08055 +:104D4C00099002C0E004F0024CB59002BEE0FEA354 +:024D5C00E0FF76 +:014D5E002232 +:103410009002BA122625000000007A027BA17D02EC +:103420007F2A125B8B9002A1E0FEA3E0FFEE30E466 +:103430000944E09002A1F0A3EFF0124CAC9000C35D +:10344000E0FCA3E0FDC39002A2E09DFD9002A1E09C +:103450009CCD2FFFED3EFE3395E0FDFC7B187AFC02 +:1034600079FF78FF1223F5C006C0079000C1E0FE87 +:10347000A3E0FFFBAA06EA3395E0F9F8D007D006EF +:10348000126AC190027D12260090027D12259A9048 +:1034900002B2E025E025E0243CF582E43402F58325 +:1034A0001226009002B2E004F0C394104002E4F04F +:1034B000E49002B9F09002B9E0FFC394105026A343 +:1034C0001225B3EF25E025E0243CF582E43402F533 +:1034D0008312259A1223DA9002BA1226009002B9BA +:1034E000E004F080D0E47B10FAF9F89002BA1225DB +:1034F0009A126AC1900281122600C22BC22A900041 +:1035000028E0FEA3E0FFC3E49FFFE49EFE3395E0C6 +:10351000FDFC9002811225B3C312252D5021900489 +:103520009FE004F0C3940A4067740AF0D22BC2AC47 +:1035300090028112259A900220122600D2AC22908D +:103540000028E0FEA3E0FFEE3395E0FDFC90028151 +:103550001225B3D312252D402990049EE004F09447 +:103560000A402D740AF0D22A7D647FA07E0F125784 +:1035700078C2AC90028112259A900220122600D2C5 +:10358000AC22C2AC90022012262500000000D2AC72 +:013590002218 +:10729600126CC9C25B12402512437C305905C25993 +:0472A600123410226C +:105AB200E49002B9F0A3F0AF14E513FDE5142DFD57 +:105AC200E433FCEFC39DEC6480F8748098501DEFC2 +:105AD20025E02485F582E43402F583E0FCA3E0FDB1 +:105AE2009002B9EC8DF01223C40F80CD9002B9E080 +:105AF200FEA3E0FF7C0E7DD8122688C006C0079068 +:105B020005DFE0FEA3E0FFFBAA06E4F9F8D007D028 +:0C5B1200061224809000BFEEF0A3EFF01C +:015B1E002264 +:106D42009000C3E0FEA3E0FFC39002A2E09FFF9089 +:106D520002A1E09EFE3395E0FDFC7B187AFC79FFF0 +:106D620078FF1223F59005D61225B3126AC1EF4EB1 +:0A6D720060089000C1EEF0A3EFF0FE +:016D7C0022F4 +:1073C5009002A1E0FFA3E09000C3CFF0A3EFF0226D +:1069F300900299E0FEA3E0FF122B2DC39005DCE08B +:106A03009FFF9005DBE09EFE9000C5E0FCA3E0FD48 +:106A1300C3EF9DFDEE9CFCC3ED9496EC64809480E3 +:106A23005012ED946AEC6480947F40089000C5EEA8 +:046A3300F0A3EFF0ED +:016A3700223C +:106A380090029BE0FEA3E0FF122B2DC39005DEE041 +:106A48009FFF9005DDE09EFE9000C7E0FCA3E0FDFF +:106A5800C3EF9DFDEE9CFCC3ED9496EC648094809E +:106A68005012ED946AEC6480947F40089000C7EE61 +:046A7800F0A3EFF0A8 +:016A7C0022F7 +:106A7D009005E1E0900497F09005E2E0900498F025 +:106A8D009005E3E0900499F09005E4E090049AF00D +:106A9D009005E5E090049BF09005E6E090049CF0F5 +:106AAD009005E7E090049DF07E047F971251F8D297 +:046ABD003AD23D226A +:1063880030794BC2799005DAE030E003125AB290C6 +:1063980005DAE030E403126D429005DAE030E503F7 +:1063A8001273C59005DAE030E2031269F39005DA5A +:1063B800E030E303126A389005DAE030E703126A46 +:0F63C8007DE49005DAF0D2709005F37402F022B4 +:10651300306A0DC26AD268E49005F2F01272E32287 +:1065230030683A127212203134900087E075F0021D +:10653300A4FFAEF09005F2E004F0C39FEE6480F890 +:106543007480984018C268E4F01272F6307602C282 +:0E65530019C21BC21C301505C215126D06229E +:1067B70030690DC269D267E49005F1F01272BD220B +:1067C70030673512721220302F900087E075F00283 +:1067D700A4FFAEF09005F1E004F0C39FEE6480F8EB +:1067E7007480984013C267E4F01272D0307507C204 +:0967F70018C214126D06C21A2228 +:10716900300719303B119003E6E004F0C394054061 +:0D7179000BD2397405F022E49003E6F022F9 +:105E5A009002E3EEF0A3EFF0A3EDF0A3EAF0A3EBD8 +:015E6A00F047 +:105E6B00C253203941E4A3F09002E3E0FCA3E0FD30 +:105E7B00A3E09002F9F0E4A3F09002E6E0FFA3E0C8 +:105E8B009002FBCFF0A3EFF07B017FA0123B1F50E2 +:105E9B0004D25380117F011268909002E8E004F065 +:0D5EAB00E0C3940540C2A253B3923BA25342 +:015EB80022C7 +:105EB9009002C5EEF0A3EFF0A3EDF0A3EAF0A3EB97 +:015EC900F0E8 +:105ECA00C254203941E4A3F09002C5E0FCA3E0FDEE +:105EDA00A3E09002EFF0E4A3F09002C8E0FFA3E091 +:105EEA009002F1CFF0A3EFF07B017FA01230A45013 +:105EFA0004D25480117F011268909002CAE004F023 +:0D5F0A00E0C3940540C2A254B3923BA254E0 +:015F17002267 +:105B1F007E027FBC7B08E4FD126FDFE49002BAF0D7 +:105B2F00A3F09002BAE0FEA3E0FFE4FCFD7BFF7A56 +:105B3F0007F9F8D312252D402E53B1F89002BAE091 +:105B4F00FEA3E07805C333CE33CED8F9241FFFE48C +:105B5F003EFE7A027BBC7D01125E5A9002BAE4755A +:105B6F00F0011223C480BB7A027BBC7D087FE07EEC +:0B5B7F00FF125E5AE49003DFF0A3F079 +:015B8A0022F8 +:1057F900C2537A027BB97D087FE07EFF125EB992BF +:10580900539002BAE0FF9002B9E02F9002BBF090EA +:1058190002BEE0FF9002BDE02F9002BFF09002BCF3 +:10582900E0FF9002BBE0B507179002B9E0FEA3E0E4 +:105839007C002400FFEC3E9003DFF0A3EFF0802A08 +:105849009002C0E0FF9002BFE0B507179002BDE0EB +:10585900FEA3E07C002400FFEC3E9003DFF0A3EF01 +:0C586900F08007E49003DFF0A3F0A253EE +:015875002210 +:1065AD00E49002C3F07E047F97122EE27E047F9763 +:1065BD007C027DBA7B07126EF8E4FF74BA2FF58268 +:1065CD00E43402F583E0FE9002C3E02EF00FEFB449 +:1065DD0007E99002C3E09002C1F0A3745AF07A0269 +:0B65ED007BBA7D097FF07EFF125E5A32 +:0165F8002280 +:106B8A009003DFE0FCA3E0FDEC9002DBF0AF05A38D +:106B9A00EFF09002DBE02F9002DEF09002DBE09053 +:106BAA0002DFF09002DCE09002E0F09002DEE0907A +:106BBA0002E2F07A027BDB7D087FE07EFF125E5AFA +:016BCA0022A8 +:05325D009002BAEFF041 +:103262006410701A7E037FE77C027DBB7B03126EC3 +:10327200F87E037FEB7C027DBE126EF8801F7E0417 +:103282007F97122EE27E047F977C027DBB7B031226 +:103292006EF87E047F9A7C027DBE126EF890020662 +:1032A200E0FCA3E0FDEC9002C1F0A3EDF090020877 +:1032B200E0FCA3E0FDEC9002C3F0A3EDF090022C41 +:1032C20012259A78181225549002C5EFF090022C1C +:1032D20012259A78101225549002C6EFF090022C13 +:1032E20012259A78081225549002C7EFF090022C0A +:1032F20012259A9002C8EFF090023012259A78189F +:103302001225549002C9EFF090023012259A7810DB +:103312001225549002CAEFF090023012259A7808D2 +:103322001225549002CBEFF090023012259A9002AF +:10333200CCEFF090021EE0FCA3E0FDAE047818CEC4 +:10334200C313CE13D8F99002CDF0EDAE047810CEAF +:10335200C313CE13D8F99002CEF090021EE0FCA364 +:10336200E0FDEC9002CFF0A3EDF090022012259A3E +:1033720078181225679002D1EFF090022012259A58 +:1033820078101225679002D2EFF090022012259A4F +:1033920078081225679002D3EFF090022012259A46 +:1033A2009002D4EFF0900224E0FCA3E0FDEC900246 +:1033B200D5F0A3EDF0900236E0FCA3E0FDEC900224 +:1033C200D7F0A3EDF09002BAE09002D9F0A3745ABC +:1033D200F09003DFE0FEA3E0FF7A027BBB7D2012C8 +:1033E2005E5A9003DFE475F0201223C49003DFE0FD +:1033F200FEA3E0FFE4FCFD7BE07AFFF9F8D312259F +:0D3402002D5007E49003DFF0A3F0126B8A59 +:01340F00229A +:105C61009003F1E02480FFE434FFEF7D00C454F0A1 +:105C7100FC900401E02488FFE434FFFEEF7807C3C1 +:105C810033CE33CED8F92DFFEE3CFE900402E0FD79 +:105C91007A047B03125EB97B017A047900900402D5 +:105CA100E02403FD1271C0900402E02403F582E4B4 +:105CB1003404F583EFF0C29C9003F9E02400F582EF +:085CC100E43404F583E0F599D9 +:015CC90022B8 +:1059D4009003F1E02480FFE434FFEF7D00C454F031 +:1059E400FC9004A1E02488FFE434FFFEEF7807C3B1 +:1059F40033CE33CED8F92DFFEE3CFE9004A2E0FD69 +:105A04007A047BA3125EB97B017A0479A09004A284 +:105A1400E02403FD1271C09004A2E024A3F582E403 +:105A24003404F583EFF0758640C2A49003FAE024B1 +:0E5A3400A0F582E43404F583E0F5A1E4F586E4 +:015A42002241 +:105A43009003F1E02480FFE434FFEF7D00C454F0C1 +:105A5300FC900541E02488FFE434FFFEEF7807C3A0 +:105A630033CE33CED8F92DFFEE3CFE900542E0FD58 +:105A73007A057B43125EB97B017A05794090054232 +:105A8300E02403FD1271C0900542E02443F582E453 +:105A93003405F583EFF0758640C2949003FBE02450 +:0E5AA30040F582E43405F583E0F591E4F586E4 +:015AB10022D2 +:106968007E047F97122EE27E047F977C047D037B52 +:1069780007126EF87B017A047900900402E0240380 +:10698800FD1271C0900402E02403F582E43404F59A +:1069980083EFF0C29C9003F9E02400F582E434040C +:0669A800F583E0F59922E1 +:1065F9007E047F97122EE27E047F977C047DA37B25 +:1066090007126EF87B017A0479A09004A2E02403B2 +:10661900FD1271C09004A2E024A3F582E43404F5CC +:1066290083EFF0758640C2A49003FAE024A0F582B6 +:0C663900E43404F583E0F5A1E4F58622CA +:106645007E047F97122EE27E047F977C057D437B37 +:1066550007126EF87B017A057940900542E0240324 +:10666500FD1271C0900542E02443F582E43405F53E +:1066750083EFF0758640C2949003FBE02440F582D9 +:0C668500E43405F583E0F591E4F586228D +:104E0C00200703024EB7203A03024EB7C23A30389D +:104E1C0005C238125B1F9003E1E0FF7008A3E0703D +:104E2C0004A3E06021EF6008E49003E1F0125C6100 +:104E3C009003E2E06005E4F0125A439003E3E06073 +:104E4C0005E4F0125A439003EEE0FF7008A3E07003 +:104E5C0004A3E06021EF6008E49003EEF0126968AF +:104E6C009003EFE06005E4F01265F99003F0E06068 +:104E7C0005E4F0126645303D05C23D1265AD303C8F +:104E8C000CC23C9002B97410F0FF12325D30420C2F +:104E9C00C2429002B97401F0FF12325D303F0CC275 +:0B4EAC003F9002B97402F0FF12325D6B +:014EB70022D8 +:1045310020070302460390002EE0FF9003DCE00415 +:10454100F0C39F4009E4F07E047F97122EE29003AE +:10455100DDE475F0011223C4FEC3E5F09410EE947E +:104561000E400BE49003DDF0A3F0D23AD23D202AB5 +:104571001ED241304006C240D23AD24230190B30ED +:104581003E08C23ED23AD23F8005201902D23E30C7 +:10459100416990002CE0FEA3E0FFEE3395E0FDFCC5 +:1045A1009002201225B3C312252D404F9003E4E061 +:1045B1007002A3E070147E047F97122EE27E047FC6 +:1045C100977C037DE77B07126EF890002BE0FF7E5E +:1045D100007C007D3C12235D9003E4E475F0011240 +:1045E10023C4FCD3E5F09FEC9E4017E49003E4F074 +:1045F100A3F0D240C241D23AD23C22E49003E4F08B +:03460100A3F02201 +:03105300025BF647 +:105BF600C0E0C0D075D000C006C007C0867586005C +:105C060030D807C2D87F0112102E30D907C2D97FEB +:105C16000212102E30DA07C2DA7F0412102E30DBA1 +:105C260007C2DB7F0812102E30DC07C2DC7F1012A1 +:105C3600102E30DD07C2DD7F2012102E30DE07C2A7 +:105C4600DE7F4012102E30DF07C2DF7F8012102E5B +:0B5C5600D086D007D006D0D0D0E032BE +:03102B00021003AD +:10100300C0E0C083C082C0D0C086758640C28F75E1 +:1010130086001270C9D086D0D0D082D083D0E0327F +:1050B500307A0302515675090F20A705750901803D +:1050C5000620B003750902E509650C6038050EE593 +:1050D5000E7002050DC3E50B940AE50A94004065C0 +:1050E500E50E940AE50D94004067E50B9490E50AFA +:1050F50094014008E50C4440F5088003850C08D26E +:105105007A80428040E509640F6037E4F50DF50EBD +:10511500050BE50B7002050AB4900EE50AB401090A +:10512500E50C4410F508D27A22E50BB4B023E50A64 +:10513500B4041E750A01750B90E50C4420F508D2E0 +:105145007A2275080FE4F50AF50BF50DF50E8509BC +:015155000C4D +:015156002236 +:106E5A00AB07AA06C2AF43A701EAF5F7AF038FFB58 +:106E6A00AF058FFC75F26E75F30575F40A75F509B1 +:106E7A00EAADF7B50509E475F6060000000000530F +:056E8A00A7FED2AF22BB +:1070A300D256E4FDFCEF2DFBEE3C8B82F583E4939B +:1070B3006004C256800D0DBD00010CE4B505E6EC7D +:0570C300B402E2A25638 +:0170C80022A5 +:08608A009002BFEEF0A3EFF05D +:10609200D256AE04AF05E4A3F0A3F09002C1E0FC37 +:1060A200A3E0FDC3EC940250369002C0E02DFD90B7 +:1060B20002BFE03C8D82F583E493FD9002C1E0FAD9 +:1060C200A3E02FF582EE3AF583E0FCED6C6004C2AA +:1060D20056800C9002C1E475F0011223C480BCA268 +:0160E2005667 +:0160E300229A +:0854DD009002BFEEF0A3EFF016 +:1054E500C256AF05A3ECF0A3EFF0E4FDFC9002BFBC +:1054F500E0FAA3E0FB2DF5FBEB2DEA3CF5F7A3E085 +:10550500FEA3E02DF582EE3CF583E0F5FC75F26E29 +:1055150020AF3D75F305E5A7603275F40A9005F4F3 +:10552500E06455702375F5099002C0E02D9002BF27 +:10553500E03CABF7B5030DE475F60600000000008E +:10554500D2568010C2568019C2568015C256801197 +:10555500C256800D0DBD00010CED7003EC640270A8 +:035565008CA256BF +:015568002220 +:0E532B009002BBEEF0A3EFF0A3ECF0A3EDF0C8 +:10533900C25553B1F8C2AF43A7019002BBE0FF7E4B +:1053490000F5F775F2E620AF5B75F305E5A7605444 +:1053590075F40A9005F4E06455704975F509ADF7DF +:10536900EF6D7001EE703D75F606000000000090CB +:1053790002BBE0FEA3E0FF1270A350289002BBE03D +:10538900FEA3E0FFA3E0FCA3E0FD1254DD5015905D +:1053990002BBE0FEA3E0FFA3E0FCA3E0FD12608AEC +:1053A9005002D255E4F5F2F5F3F5F4F5F5F5F653B7 +:0853B900A7FEF5F7D2AFA255E3 +:0153C10022C9 +:1046C800C253C254206F03024788C26F9005F47426 +:1046D80055F0E513D39405400C9002B97427F0A364 +:1046E8007410F0800A9002B97413F0A37488F090E3 +:1046F80002B9E0FEA3E0FFC390021FE09F90021EF4 +:10470800E09E406B9001FEE0645A7004A3E064A54B +:10471800705DFDFCFFFE12532B4023E4FDFCFFFE01 +:1047280012532B4019D25374FF9001FEF0A3F0FDF1 +:104738007FFE7E01126E5A7DFF7FFF126E5AE4FDE6 +:10474800FCFF7E0212532B402AE4FDFCFF7E02127E +:10475800532B401FD25474FF9001FEF0A3F0FD7F4D +:10476800FE7E03126E5A7DFF7FFF126E5A8004D2BE +:1047780053D254E49005F4F0305305305402D26E0D +:01478800220E +:0E5F18009002B9EEF0A3EFF0A3EAF0A3EBF0D5 +:105F2600D253AE04AF058E198F1AC2AF43A70153E1 +:105F3600B1F8E4FFFED39002BCE09F9002BBE09E66 +:105F460040279002BAE02FFD9002B9E03E8D82F51F +:105F560083E493851A82851983F0051AE51A70027F +:105F660005190FBF00010E80CC53A7FED2AFA25376 +:015F76002208 +:10726D003070119005F3E004F0C394024006C27033 +:05727D00E4F0D26F22D5 +:10700900C25343A701EEC313FEEF1325E0FFEE338E +:107019008F82F583740193B4A507E493B45A02D21D +:067029005353A7FEA25321 +:01702F00223E +:0D3EEC009002BAECF0A3EDF09002B9EFF0F7 +:103EF900758640EF64557051A3E0FEA3E0FFC394BB +:103F0900E8EE940350187588027C007D20122688FB +:103F1900C3E49FFFE49EA3F0A3EFF002401375886A +:103F2900229002BAE0FEA3E0FF7C007D20122688E1 +:103F3900E47B40FAF9F8122480C3E49FFFE49E90E1 +:103F490002BCF0A3EFF00240139002B9E0644470A0 +:103F59005BA3E0FEA3E0FFC394A0EE940F5023758A +:103F690088127C007D80122688E47B08FAF9F81211 +:103F79002480C3E49FFFE49E9002BCF0A3EFF0020B +:103F890040137588329002BAE0FEA3E0FF7C007D01 +:103F990080122688E4FB7A01F9F8122480C3E49F91 +:103FA900FFE49E9002BCF0A3EFF0805E9002B9E0BE +:103FB9007058A3E0FEA3E0FFC394F4EE94015022ED +:103FC9007588307C5D7DC0122688E4FB7A01F9F89A +:103FD900122480C3E49FFFE49E9002BCF0A3EFF09B +:103FE90080287588329002BAE0FEA3E0FF7C007D4C +:103FF90080122688E4FB7A01F9F8122480C3E49F31 +:10400900FFE49E9002BCF0A3EFF09002BCE0FEA397 +:0B401900E0F58CEEF58DD28AE4F58610 +:014024002279 +:10629500A2AFE433FEC2AFEF600D64206009EF6486 +:1062A500406004EFB46007EF4408F5B28010EF6476 +:1062B500806004EFB4A00753B2FB0053B2F70000AF +:1062C500000000000000EF600D64206009EF6440ED +:1062D5006004EFB4600343B204AF06EE24FF92AF4F +:0162E5002296 +:105676009005EBEEF0A3EFF0A3EDF075C7B0900543 +:10568600EBE0FEA3E0FFFBAA06E4F9F87FD87EB8BC +:105696007D05FC126AC18FCC9005EBE0FEA3E0FF0E +:1056A600FBAA06E4F9F87FD87EB87D05FC126AC12C +:1056B60078081225678FCDAFCDEFFEADCC7C00E428 +:1056C6002DFFEC3EFE9005EDE0FBFD12235D7D64B3 +:1056D60012236F8FCEAFCDEFFEADCC7C00E42DFF55 +:1056E600EC3EFEAD0312235D7D6412236FEEF5CF13 +:0156F6002291 +:1056F7009005EEEEF0A3EFF0A3EDF075B6B09005D0 +:10570700EEE0FEA3E0FFFBAA06E4F9F87FD87EB837 +:105717007D05FC126AC18FAE9005EEE0FEA3E0FFA7 +:10572700FBAA06E4F9F87FD87EB87D05FC126AC1AA +:1057370078081225678FAFAFAFEFFEADAE7C00E400 +:105747002DFFEC3EFE9005F0E0FBFD12235D7D642E +:1057570012236F8FA4AFAFEFFEADAE7C00E42DFF39 +:10576700EC3EFEAD0312235D7D6412236FEEF5A5BB +:01577700220F +:105778009002BEEEF0A3EFF0A3EDF075B7B0900283 +:10578800BEE0FEA3E0FFFBAA06E4F9F87FD87EB8E6 +:105798007D05FC126AC18FBC9002BEE0FEA3E0FF4B +:1057A800FBAA06E4F9F87FD87EB87D05FC126AC129 +:1057B80078081225678FBDAFBDEFFEADBC7C00E455 +:1057C8002DFFEC3EFE9002C0E0FBFD12235D7D64E0 +:1057D80012236F8FBEAFBDEFFEADBC7C00E42DFF82 +:1057E800EC3EFEAD0312235D7D6412236FEEF5BF20 +:0157F800228E +:10689000E5B2547070067C067D868020E5B25470A7 +:1068A000FEBE20067C037D438012E5B25470FEBE1E +:1068B00040067C017DA180047C007D8BE4FEEEC35C +:1068C0009F5014E4FBFAC3EB9DEA9C50070BBB00FE +:0768D000010A80F20E80E7CF +:0168D700229E +:105D300090002FE0645A705A900061E0645A7052EB +:105D4000900073E0645A704A900088E0645A704290 +:105D500090008DE0645A703A900098E0645A703276 +:105D60009000A1E0645A702A9000A9E0B45A2390F0 +:105D700000BAE0B45A1C9000BEE0B45A159000CAB4 +:105D8000E0B45A0E9001FEE0645A7004A3E064A5EA +:065D90006002C322D322D1 +:086FDF009002C5EEF0A3EFF0F3 +:106FE700E4FFEFC39B501A9002C5E0F8A3E0F582D7 +:106FF7008883EDF09002C5E475F0011223C40F8079 +:01700700E1A7 +:017008002265 +:086EF8009002DBEEF0A3EFF0C5 +:106F0000E4FFEFC39B50239002DBE0F8A3E0F5829F +:106F10008883E08D828C83F00DBD00010C9002DB34 +:0A6F2000E475F0011223C40F80D8BD +:016F2A002244 +:0C73D500758E5543870100000000002267 +:0C73E100758E554387020000000000225A +:106F88009005EAE06412702320430620440330454C +:106F98001A207017206F14C2AFE4F5A8F5A9F58878 +:0C6FA800F5E8F59DF59CF598120000221C +:1066DB00D228D229201403301602C22820110F20F1 +:1066EB00130C201B09201C06201503301602C2298F +:1066FB00202B0E201009201206201803301A02C27C +:10670B0028202A05301902C229201B06201C033021 +:0A671B001502C228301A02C229221A +:106F5B001266DBA273302801B34008A274302901FA +:106F6B00B35019A2289273A2299274A229E433FF79 +:0D6F7B0025E0FFA228E4334FFF12725822D8 +:1068D800201844C3900063E09512900062E095117F +:1068E800501F9003BEE475F0011223C4FEC3E5F007 +:1068F8009401EE94004020D218E49003BEF0A3F077 +:1069080022D3900065E09512900064E0951140074D +:08691800E49003BEF0A3F0229D +:10692000201944D3900075E09510900074E0950F05 +:10693000401F9003C0E475F0011223C4FEC3E5F0CC +:106940009401EE94004020D219E49003C0F0A3F02B +:1069500022C3900077E09510900076E0950F5007E5 +:08696000E49003C0F0A3F02253 +:1063D70020104B90008EE0FEA3E0FF900204E0FC4B +:1063E700A3E0FDD39FEC9E401F9003D0E475F0011E +:1063F7001223C4FEC3E5F09401EE94004020D210AE +:10640700E49003D0F0A3F022900090E0FEA3E0FF19 +:0F641700C3ED9FEC9E5007E49003D0F0A3F0225A +:1064260020124B900092E0FEA3E0FF900202E0FCF7 +:10643600A3E0FDC39FEC9E501F9003D4E475F001CA +:106446001223C4FEC3E5F09401EE94004020D2125C +:10645600E49003D4F0A3F022900094E0FEA3E0FFC2 +:0F646600D3ED9FEC9E4007E49003D4F0A3F02207 +:1064750020114B900099E0FEA3E0FF900204E0FCA0 +:10648500A3E0FDD39FEC9E401F9003D2E475F0017D +:106495001223C4FEC3E5F09401EE94004020D2110E +:1064A500E49003D2F0A3F02290009BE0FEA3E0FF6E +:0F64B500C3ED9FEC9E5007E49003D2F0A3F022BA +:1064C40020134B90009DE0FEA3E0FF900202E0FC4D +:1064D400A3E0FDC39FEC9E501F9003D6E475F0012A +:1064E4001223C4FEC3E5F09401EE94004020D213BD +:1064F400E49003D6F0A3F02290009FE0FEA3E0FF17 +:0F650400D3ED9FEC9E4007E49003D6F0A3F02266 +:106D7D00307B3712402512437C1268D812692012DD +:106D8D0063D71264261264751264C49005F7E0048B +:106D9D00F0C394024014C27B205A09203906207892 +:0B6DAD0003306E03D263221237002275 +:1046040020185C201459C3900063E0951290006256 +:10461400E095115033900066E075F00AA4FFAEF007 +:104624009003BEE475F0011223C4FCC3E5F09FECD3 +:104634009E50030246C7D218C275E49003BEF0A38D +:10464400F09003D8F0A3F022D3900065E095129087 +:104654000064E09511406CE49003BEF0A3F02220C6 +:104664007561D3900065E09512900064E095114067 +:104674003C900067E075F00AA4FFAEF09003D8E424 +:1046840075F0011223C4FCC3E5F09FEC9E40343066 +:104694000E06D275D2698007C218C214126D06E4E0 +:1046A4009003BEF0A3F09003D8F0A3F022C39000CF +:1046B40063E09512900062E095115007E49003D8EE +:0446C400F0A3F0224D +:10484600201959D3900075E09510900074E0950FEB +:104856004033900078E075F00AA4FFAEF09003C0F4 +:10486600E475F0011223C4FCC3E5F09FEC9E5003EF +:10487600024901D219C276E49003C0F0A3F0900376 +:10488600DAF0A3F022C3900077E09510900076E06E +:10489600950F5067E49003C0F0A3F02220765CC326 +:1048A600900077E09510900076E0950F50379000D5 +:1048B60079E075F00AA4FFAEF09003DAE475F00132 +:1048C6001223C4FCC3E5F09FEC9E402F300F06D2A6 +:1048D60076D26A8002C219E49003C0F0A3F0900376 +:1048E600DAF0A3F022D3900075E09510900074E002 +:0C48F600950F4007E49003DAF0A3F022D5 +:1049020020105E90008EE0FEA3E0FF900204E0FC27 +:10491200A3E0FDD39FEC9E4031900096E075F01429 +:10492200A4FFAEF09003D0E475F0011223C4FAC3E1 +:10493200E5F09FEA9E50030249BDD210E49003D0F5 +:10494200F0A3F09003C2F0A3F022900090E0FEA347 +:10495200E0FFC3ED9FEC9E5062E49003D0F0A3F021 +:1049620022900090E0FEA3E0FF900204E0FCA3E0AE +:10497200FDC39FEC9E502E900096E075F014A4FFAC +:10498200AEF09003C2E475F0011223C4FAC3E5F05D +:104992009FEA9E4026C210E49003D0F0A3F0900359 +:1049A200C2F0A3F02290008EE0FEA3E0FFD3ED9FC1 +:0C49B200EC9E4007E49003C2F0A3F0224A +:1049BE0020125E900092E0FEA3E0FF900202E0FC67 +:1049CE00A3E0FDC39FEC9E5031900096E075F0146D +:1049DE00A4FFAEF09003D4E475F0011223C4FAC321 +:1049EE00E5F09FEA9E5003024A79D212E49003D476 +:1049FE00F0A3F09003C6F0A3F022900094E0FEA383 +:104A0E00E0FFD3ED9FEC9E4062E49003D4F0A3F060 +:104A1E0022900094E0FEA3E0FF900202E0FCA3E0EF +:104A2E00FDD39FEC9E402E900096E075F014A4FFEF +:104A3E00AEF09003C6E475F0011223C4FAC3E5F09C +:104A4E009FEA9E4026C212E49003D4F0A3F0900396 +:104A5E00C6F0A3F022900092E0FEA3E0FFC3ED9F0C +:0C4A6E00EC9E5007E49003C6F0A3F02279 +:104A7A0020115E900099E0FEA3E0FF900204E0FCA2 +:104A8A00A3E0FDD39FEC9E4031900096E075F014B0 +:104A9A00A4FFAEF09003D2E475F0011223C4FAC366 +:104AAA00E5F09FEA9E5003024B35D211E49003D2FF +:104ABA00F0A3F09003C4F0A3F02290009BE0FEA3C1 +:104ACA00E0FFC3ED9FEC9E5062E49003D2F0A3F0A6 +:104ADA002290009BE0FEA3E0FF900204E0FCA3E02A +:104AEA00FDC39FEC9E502E900096E075F014A4FF33 +:104AFA00AEF09003C4E475F0011223C4FAC3E5F0E2 +:104B0A009FEA9E4026C211E49003D2F0A3F09003DC +:104B1A00C4F0A3F022900099E0FEA3E0FFD3ED9F3A +:0C4B2A00EC9E4007E49003C4F0A3F022CE +:104B360020135E90009DE0FEA3E0FF900202E0FCE1 +:104B4600A3E0FDC39FEC9E5031900096E075F014F3 +:104B5600A4FFAEF09003D6E475F0011223C4FAC3A5 +:104B6600E5F09FEA9E5003024BF1D213E49003D680 +:104B7600F0A3F09003C8F0A3F02290009FE0FEA3FC +:104B8600E0FFD3ED9FEC9E4062E49003D6F0A3F0E5 +:104B96002290009FE0FEA3E0FF900202E0FCA3E06B +:104BA600FDD39FEC9E402E900096E075F014A4FF76 +:104BB600AEF09003C8E475F0011223C4FAC3E5F021 +:104BC6009FEA9E4026C213E49003D6F0A3F090031A +:104BD600C8F0A3F02290009DE0FEA3E0FFC3ED9F86 +:0C4BE600EC9E5007E49003C8F0A3F022FE +:1060E400201A5590006D12259A90027D1225B3D383 +:1060F40012252D402A900071E075F00AA4FFAEF03D +:106104009003CCE475F0011223C4FCC3E5F09FECCA +:106114009E4025D21AD269E49003CCF0A3F0222049 +:106124006716D39003CDE094009003CCE094004034 +:096134000774FFF5F01223C422E8 +:10613D00201B5590007D12259A90027D1225B3C328 +:10614D0012252D502A900081E075F00AA4FFAEF0C3 +:10615D009003BAE475F0011223C4FCC3E5F09FEC83 +:10616D009E4025E49003BAF0A3F0D21BD26A222000 +:10617D006816D39003BBE094009003BAE0940040FE +:09618D000774FFF5F01223C4228F +:10619600201C5590008212259A90027D1225B3C3C9 +:1061A60012252D502A900086E075F002A4FFAEF06D +:1061B6009003BCE475F0011223C4FCD3E5F09FEC18 +:1061C6009E4025E49003BCF0A3F0D21CD26A2220A4 +:1061D6006816D39003BDE094009003BCE0940040A1 +:0961E6000774FFF5F01223C42236 +:10712C00207B1B1246041248461249021249BE1219 +:0F713C004A7A124B361260E412613D12619622BC +:1058EE00300272201B06201C03301539900072E026 +:1058FE0075F014A4FFAEF09003CEE475F001122300 +:10590E00C4FCC3E5F09FEC9E401BE49005F2F090C2 +:10591E0003CEF0A3F0C21BC21CC26AC268301505CA +:10592E00C215126D06301A2D900072E075F014A497 +:10593E00FFAEF09003CAE475F0011223C4FCD3E568 +:10594E00F09FEC9E400FE49003CAF0A3F0C21A90B1 +:06595E0005F1F0C2672212 +:10718600300719307711900496E004F0C394054057 +:0D7196000BD2787405F022E4900496F022EC +:0E5FD4009002F0EFF0A3EDF0A3EAF0A3EBF0E3 +:105FE200C256207840E4A3F09002F0E0FD7C00A3CA +:105FF200E09002F9F0E4A3F09002F2E0FFA3E09057 +:1060020002FBCFF0A3EFF0E4FB7FDE123B1F500454 +:10601200D25680117F011268909002F4E004F0E001 +:0C602200C3940540C3A256B39277A25667 +:01602E00224F +:0E602F009002E6EFF0A3EDF0A3EAF0A3EBF091 +:10603D00C255207840E4A3F09002E6E0FD7C00A379 +:10604D00E09002EFF0E4A3F09002E8E0FFA3E0900F +:10605D0002F1CFF0A3EFF0E4FB7FDE1230A4500489 +:10606D00D25580117F011268909002EAE004F0E0B1 +:0C607D00C3940540C3A255B39277A2550E +:0160890022F4 +:082EE2009002DBEEF0A3EFF01B +:102EEA00C2547A027BDD7D09E4FF12602F4003029F +:102EFA0030A19002E4E030E0030230949002DFE077 +:102F0A0020E703022FB39002DDE0FF547094504093 +:102F1A0003022FB3EF540F94094003022FB3E05476 +:102F2A007F94594003022FB3A3E0FF54709450508A +:102F3A0078EF540F94095071E0547F9459506AA362 +:102F4A00E0FF543094205061EF540F9409505AE036 +:102F5A00542F94245053A3E0FF54309430504AEF36 +:102F6A00540F94095043E0543FFF9431503BEF60B3 +:102F7A0038A3E0FF54109410502FEF540F940950C7 +:102F8A0028E0541FFF94125020EF601DA3E0FF5465 +:102F9A00F094905014EF540F9409500DE094995006 +:102FAA0008A3E05407940640779002DBE0FEA3E012 +:102FBA00FFF5828E83E09002DDF08F828E83A3E09C +:102FCA009002DEF09002DBE0A3E0F5828E83A3A3F9 +:102FDA00E09002DFF08F828E83A3A3A3E09002E049 +:102FEA00F09002DBE0A3E02404F582E43EF583E0FE +:102FFA009002E1F0EF2405F582E43EF583E09002C9 +:10300A00E2F09002DBE0A3E02406F582E43EF583D9 +:10301A00E09002E3F07E027FDD1251F8925480774D +:10302A009002DDE0FF9002DBE0FCA3E0FDF5828C7C +:10303A0083EFF09002DEE08D828C83A3F09002DFB2 +:10304A00E0541F8D828C83A3A3F09002E0E08D826E +:10305A008C83A3A3A3F09002E1E0FFED2404F582A0 +:10306A00E43CF583EFF09002E2E0FFED2405F582FF +:10307A00E43CF583EFF09002E3E0FFED2406F582ED +:10308A00E43CF583EFF0D254800D9002DBE0FEA31E +:09309A00E0FF1251F89254A25417 +:0130A300220A +:0851F8009002E6EEF0A3EFF0D7 +:10520000C255A37490F07A027BE87D017F07125F9C +:10521000D492559002E6E0FEA3E0FFF5828E83E093 +:105220009002E9F08F828E83A3E09002EAF0900270 +:10523000E6E0FCA3E0FDF5828C83A3A3E04480902C +:1052400002EBF08D828C83A3A3A3E09002ECF0909C +:1052500002E6E0A3E0FF2404F582E43EF583E0905B +:1052600002EDF0EF2405F582E43EF583E09002EED6 +:10527000F09002E6E0A3E02406F582E43EF583E048 +:105280009002EFF07A027BE97D07E4FF125FD4928F +:0352900055A255CF +:0152930022F8 +:085450009002B9EEF0A3EFF0A9 +:10545800C253E49002C4F07E027FBB7B09FD126F49 +:10546800DF7A027BBB7D097FF07EFF125EB9E4FF25 +:1054780074BB2FF582E43402F583E0FE9002C4E0A9 +:105488002EF00FEFB407E99002C4E0FF9002C2E0EB +:10549800B50706A3E0645A601BE49002BBF0A3F0D2 +:1054A800A37412F0A37401F0A37405F0A37420F0A0 +:1054B800A37405F07E027FBB9002B9E0FCA3E0FD77 +:1054C8007B07126EF89002B9E0FEA3E0FF122EE20D +:0454D8009253A253F6 +:0154DC0022AD +:10427C0000070E091C1B1215383F363124232A2D3A +:10428C0070777E796C6B6265484F464154535A5D2A +:10429C00E0E7EEE9FCFBF2F5D8DFD6D1C4C3CACD1A +:1042AC0090979E998C8B8285A8AFA6A1B4B3BABD0A +:1042BC00C7C0C9CEDBDCD5D2FFF8F1F6E3E4EDEAFA +:1042CC00B7B0B9BEABACA5A28F88818693949D9AEA +:1042DC002720292E3B3C35321F18111603040D0ADA +:1042EC005750595E4B4C45426F68616673747D7ACA +:1042FC00898E878095929B9CB1B6BFB8ADAAA3A4BA +:10430C00F9FEF7F0E5E2EBECC1C6CFC8DDDAD3D4A9 +:10431C00696E676075727B7C51565F584D4A434499 +:10432C00191E171005020B0C21262F283D3A333489 +:10433C004E49404752555C5B7671787F6A6D646379 +:10434C003E39303722252C2B0601080F1A1D141369 +:10435C00AEA9A0A7B2B5BCBB9691989F8A8D848359 +:10436C00DED9D0D7C2C5CCCBE6E1E8EFFAFDF4F349 +:1071C000E4FFEDD3940040131223446F90427C936C +:0B71D000FF740129F9E43AFA1D80E782 +:0171DB002291 +:10703000D2587D807CBBE5C820E31053B1F8ED4CFD +:107040006009ED1D70011C80ED80EBE5D154F86FF7 +:067050006002C258A258C4 +:017056002217 +:103B1F009002F8EBF09002F5EFF0A3ECF0A3EDF0CC +:103B2F00D25790030174BBF0A37480F09002FDEFA5 +:103B3F00F0A3EDF09002FBE0FEA3E0F5828E83E0B0 +:103B4F009002FFF07B017A0279FD7D031271C09024 +:103B5F000300EFF09002F9E0D394005003023C63AE +:103B6F0043E6C043D10143C80175C8607F08127096 +:103B7F0030400C7F101270304005C257023C40900D +:103B8F0002F5E0F58D75C8407F181270304005C200 +:103B9F0057023C409002F8E0B401159002F6E0F5B0 +:103BAF008D75C8407F281270304005C257023C40C7 +:103BBF009002F6E0A3E0F58D75C8407F28127030B3 +:103BCF004004C257806B9002FAE06401702EA3E0AC +:103BDF00FEA3E0F5828E83E0F58D75C8407F281235 +:103BEF0070304004C2578049900300E0F58D75C8CE +:103BFF00407F281270304039C2578035E4FE900262 +:103C0F00F9E0FFEEC39F50299002FBE0FCA3E0F523 +:103C1F00828C83E0F58D75C8407F28127030400488 +:103C2F00C257800D9002FBE475F0011223C40E8081 +:103C3F00CD75C850E5C830E41B53B1F8900301E0CF +:103C4F007002A3E0600E90030174FFF5F01223C41D +:063C5F0080E280E0A257A4 +:013C6500223C +:0A30A400AA079002ECECF0A3EDF097 +:1030AE00D256E4900322F0A374BBF0A37480F09088 +:1030BE0002F4EAF0A3EDF0EA4401A3F09002EFE08F +:1030CE00D39400500302325A43E6C043D10143C8A1 +:1030DE000175C8607F08127030400C7F101270307E +:1030EE004005C2560232378A8D75C8407F1812705D +:1030FE00304005C256023237EBB401159002ECE0B7 +:10310E00F58D75C8407F281270304005C2560232C8 +:10311E00379002ECE0A3E0F58D75C8407F28127061 +:10312E00304005C25602323775C8607F08127030C3 +:10313E00400C7F101270304005C256023237EA44FE +:10314E0001F58D75C8407F401270304005C25602A1 +:10315E003237E49002F3F09002EFE0FF9002F3E0DA +:10316E00FEC39F50579002F0E07031EF14B5060A7F +:10317E0075C8407F58127030800875C8447F501251 +:10318E0070309002F1E0FEA3E0F5828E83E58DF0C3 +:10319E009002F1E475F0011223C4801875C8447FC3 +:1031AE00501270309002F3E024F7F582E43402F509 +:1031BE0083E58DF09002F3E004F0809B9002F0E046 +:1031CE006401706575C8407F58127030900322E517 +:1031DE008DF07B017A0279F49002EFE02403FD1268 +:1031EE0071C0900322E0B5073EE49002F3F0900226 +:1031FE00EFE0FF9002F3E0FEC39F502D74F72EF523 +:10320E0082E43402F583E0FF9002F1E0FCA3E0F5E6 +:10321E00828C83EFF09002F1E475F0011223C490DA +:10322E0002F3E004F080C7C25675C850E5C830E41A +:10323E001B53B1F8900323E07002A3E0600E9003DD +:0E324E002374FFF5F01223C480E280E0A25644 +:01325C00224F +:1072410075C632E4F5E6F5D1758A7043D10675C885 +:07725100407589FFF58D2255 +:1071DC0075C432E4F587759850759D7F759C647500 +:0C71EC009E04439D80759A0A759BFF224B +:031023000262E680 +:1062E600C0E0C0F0C083C082C0D075D000C000C07E +:0D62F60001C002C003C004C005C006C007FF +:10630300C086758600309807C298AF9912529430B0 +:096313009905C299124EB8D0861A +:10631C00D007D006D005D004D003D002D001D000D5 +:0B632C00D0D0D082D083D0F0D0E0327F +:103DAA00FFFFFFFFF07FDFCDD0DAC222B4F4A8C252 +:103DBA009D769300894E804F77F770386906625670 +:103DCA005C1F565650F44BF1474642EC3EDD3B141D +:103DDA003728343F312A2E462B97291226B62481BA +:103DEA002270207F1EAE1CFA1B6119E11878172673 +:103DFA0015E714BC13A2129911A010B50FD80F0819 +:103E0A000E440D8A0CDC0C370B9C0B090A7E09FB4D +:103E1A00097E090A089B083207CF0770071706C3ED +:103E2A000673062705DF059B055A051D04E204AB48 +:103E3A0004770445041503E803BC0393036C0346A3 +:103E4A000325030302E302C502A8028C0271025889 +:103E5A0002400229021301FE01EA01D701C501B39A +:103E6A0001A301930183017501670159014D0140C5 +:103E7A0001350129011F0114010A010100F800EFAF +:103E8A0000E600DE00D700CF00C800C100BA00B4C7 +:103E9A0000AE00A800A2009D00980092008E008942 +:103EAA0000840080007C007800740070006D006956 +:103EBA00006600630060005D005A0057005400521B +:103ECA00004F004D004A00480046004400420040AE +:103EDA00003E003C003B0039003700360035003414 +:023EEA000032A4 +:031000000270ED8E +:1070ED0075819F007808760008B8A0FAE49000003A +:1070FD00F0A3A882A983B8DCF7B907F4000258768B +:102D1D00A2AF9253C2AF900234E0FFA3E09003271D +:102D2D00CFF0A3EFF090022C12259A9003451226B6 +:102D3D000090023012259A900378122600900236E8 +:102D4D00E0FFA3E0900366CFF0A3EFF09002201216 +:102D5D00259A90037D122600900224E0FFA3E090B7 +:102D6D000376CFF0A3EFF090021EE0FEA3E0FFE4A8 +:102D7D00FCFD90034F122600851117851218850F43 +:102D8D001585101690036112262500000000E490B1 +:102D9D000374F0A3F0A25392AF90034E741EF09003 +:102DAD00036D745AF0A3740BF0A3740FF0900368C5 +:102DBD00122625FFFF7748E490036CF09003710411 +:102DCD00F09003897414F090033E743EF0A3748068 +:102DDD00F0A3E4F0A37411F09003727406F0A374E1 +:102DED0022F090038B743CF0900003E02438FE90A9 +:102DFD000002E034FF900325F0A3CEF09003597448 +:102E0D000FF0900360740AF0900014E0FFA3E090BF +:102E1D000381CFF0A3EFF090034D745AF0E513FB4F +:102E2D007A007C117D94FF7E0012235DE4FCFD9001 +:102E3D00032F1226007C0B7DB8AF037E0012235D9D +:102E4D00E4FCFD900355122600900365743CF09050 +:102E5D00038A7414F0900333740FF090037C741490 +:102E6D00F0900370740AF0900329122625000000DB +:102E7D0028900344741EF0900342740BF0A3744128 +:102E8D00F0900353740BF0A37441F0900383E4F0BE +:102E9D00A37432F0900349E4F0A37405F090033A63 +:102EAD00E4F0A37469F0900385E4F0A37464F090EA +:102EBD00034BE4F0A3741EF090033CE4F0A37462A2 +:102ECD00F09003877401F0A37490F090035EE4F02A +:042EDD00A3744BF09F +:012EE10022CE +:10633700A2AF9253C2AF900327E0FFA3E0900234CD +:10634700CFF0A3EFF090034512259A90022C122666 +:106357000090037812259A90023012260090036667 +:10636700E0FFA3E0900236CFF0A3EFF0A251922214 +:10637700A25292209000B9E024FF9221A25392AF3B +:0163870022F3 +:0673F7005AA569963CC393 +:10415D007F647E00E49002BBF09002BBE0FDC3944F +:10416D000A400302427BED25E02402F582E434008F +:10417D00F583E0FCA3E0D39518EC951750030242AC +:10418D00729002BBE0705790007AE0FCA3E0FDD383 +:10419D009518EC95175003301906E4FEFF02427B8B +:1041AD00C3E5189DFFE5179CFE7C007D0A1226884D +:1041BD00EEC0E0EFC0E090007AE0FEA3E0FFC39018 +:1041CD000003E09FFF900002E09EFECBEFCBFAE4F0 +:1041DD00F9F8D0E0FFD0E0FE12248002427B90027D +:1041ED00BBE025E02400F582E43400F583E0FEA376 +:1041FD00E0FFC3E5189FFFE5179EFE7C007D0A12C8 +:10420D002688ECC0E0EDC0E0EEC0E0EFC0E090022B +:10421D00BBE0FF25E02400F582E43400F583E0FCEB +:10422D00A3E0FDEF25E02402F582E43400F583E000 +:10423D00FEA3E0C39DFFEE9CFECBEFCBFAE4F9F8B5 +:10424D00D0E0FFD0E0FED0E0FDD0E0FC122480CD28 +:10425D00EFCDCCEECC9002BBE075F00AA42DFFE5BE +:0F426D00F03CFE80099002BBE004F002416622A3 +:103591009002BBEEF0A3EFF09000AAE0F9FDD3EFAB +:1035A1009DEE9400500302366A90036DE0FF900295 +:1035B100BBE0FCA3E0FDD39FEC94004078ED946464 +:1035C100EC940050709002BBE0FAA3E0FBC374647A +:1035D1009BFFE49AFE7C007D0A12235DE9FDC3EBAB +:1035E1009DFDEA9CFCD3ED9FEC9E50030236FF90BB +:1035F10002BBE0FEA3E0FF9000AAF07C007D0A126E +:10360100235D9003AAEEF0A3EFF09002BBE0FEA3CE +:10361100E0FFE4FD90001AE0F8A3E0F9A3E0FAA3CB +:10362100E0FB1223F5E47B64FAF9F81224809000A0 +:10363100AB122600229002BBE07004A3E064646038 +:10364100030236FF9000AA7464F09003AA7403F099 +:10365100A374E8F090001AE0FCA3E0FDA3E0FEA350 +:10366100E0FF9000AB122600229000AAE0FD90023C +:10367100BBE0FEA3E0FFC3ED9FFDE49EFC90034E83 +:10368100E0FBD3ED9BEC9400403F9000AAEFF07C6F +:10369100007D0A12235D9003AAEEF0A3EFF09002E1 +:1036A100BBE0FEA3E0FFE4FD90001AE0F8A3E0F91F +:1036B100A3E0FAA3E0FB1223F5E47B64FAF9F81224 +:1036C10024809000AB122600229002BBE07002A37E +:1036D100E0702B9000AA04F09003AAE4F0A3740A0E +:1036E100F0E47B64FAF9F890001AE0FCA3E0FDA392 +:0F36F100E0FEA3E0FF1224809000AB122600221F +:10370000122D1D12415D9002B9EEF0A3EFF0E47F9F +:10371000E87E03FDFC9000ABE0F8A3E0F9A3E0FA3B +:10372000A3E0FB1223F590001AE0F8A3E0F9A3E070 +:10373000FAA3E0FB1224809003AAEEF0A3EFF0902E +:1037400002B9E0FEA3E0FF1235919000AAE0FF7EEF +:1037500000900327EEF0FAA3EFF0FB90001AE0FCD4 +:10376000A3E0FDA3E0FEA3E0FF900345122600CFF7 +:10377000EBCF7E00E4FCFD900345E0F8A3E0F9A365 +:10378000E0FAA3E0FB1223F5E47B64FAF9F81224D3 +:10379000809003781226009000ABE0FCA3E0FDA32C +:1037A000E0FEA3E0FF90035A122600900336122693 +:1037B00025000000009003A8E0FFA3E090032DCFB8 +:1037C000F0A3EFF0E47830F608F67838F608F678EB +:1037D0003412260C000000009003AE1226250000D3 +:1037E0000000E490039EF0A3F09003B4F0A3F090E7 +:1037F00003ACF0A3F0C252C24EC2509003A7F090A7 +:1038000003A6F0783AF608F67832F608F69003AA9E +:10381000E0FFA3E09003B2CFF0A3EFF0C251C24D9E +:103820009003B612262500000000E49003A8F0A340 +:10383000F0900390122625000000009003991226B4 +:10384000250000000090039412262500000000E4EB +:1038500090039DF0900398F0C24F90038C122625A0 +:08386000000000001263372292 +:10445A0012415D9002B9EEF0A3EFF0900333E0FF52 +:10446A00E4FCFDFE90001AE0F8A3E0F9A3E0FAA349 +:10447A00E0FB1223F5E47B0AFAF9F8122480C8EC6F +:10448A00C8C9EDC9CAEECACBEFCB90037DE0FCA345 +:10449A00E0FDA3E0FEA3E0FFD3122543500302454B +:1044AA003090037CE0FF7E009002B9E0FCA3E0FDBF +:1044BA00D39FEC9E4070D3900382E09518900381BD +:1044CA00E095174061ED9FFBEC9EFA9003AAE0FE8F +:1044DA00A3E0FF7C007D0A12236FC3EF9BEE9A5084 +:1044EA0045900370E0FFC39002BAE09FFF9002B9C3 +:1044FA00E09400FE7C007D0A12235D9003AAEEF090 +:10450A00A3EFF0E4FD90001AE0F8A3E0F9A3E0FAC3 +:10451A00A3E0FB1223F5E47BE87A03F9F81224807E +:07452A009000AB12260022F5 +:101C7A00122D1D900342E0FEA3E0FFD3900377E00C +:101C8A009F900376E09E401EE4FFFEFDFC900399C0 +:101C9A00E0F8A3E0F9A3E0FAA3E0FBD312252D4074 +:101CAA0005301802D252C3900382E095189003813E +:101CBA00E095175012900398E004F0E09405400E66 +:101CCA007405F0D24E8007C24EE4900398F090005B +:101CDA0028E0FEA3E0FFEE3395E0FDFC90037DE0F3 +:101CEA00F8A3E0F9A3E0FAA3E0FBD312252D5003F1 +:101CFA00021EE2E49003B4F0A3F09003ACF0A3F068 +:101D0A0090039DE004F0E0D3940540057405F0D2F9 +:101D1A004F9000B9E06010D251E4F09003B6122659 +:101D2A002500000000C24D900374E0FEA3E0FFEE20 +:101D3A003395E0FDFC900281E0F8A3E0F9A3E0FA14 +:101D4A00A3E02FFFEA3EFEE93DFDE83CFC9003904C +:101D5A00122600E4FFFEFDFC900390E0F8A3E0F9F0 +:101D6A00A3E0FAA3E0FBD312252D4021900281E0E3 +:101D7A00A3E0A3E0FEA3E0FF900375E02FFF90032A +:101D8A0074E03EFE783BEF26F618EE36F6C3783B53 +:101D9A00E6941018E6940E5003021E2C0874F026DE +:101DAA00F61874F136F690001AE0FCA3E0FDA3E001 +:101DBA00FEA3E0FF9000ABE0F8A3E0F9A3E0FAA3EA +:101DCA00E0FBC312254350219000ABE0FCA3E0FDE9 +:101DDA00A3E0FEA3E02401FFE43EFEE43DFDE43C73 +:101DEA00FC9000AB122600801490001AE0FCA3E0DD +:101DFA00FDA3E0FEA3E0FF9000AB12260030518D58 +:101E0A009003B6E0FCA3E0FDA3E0FEA3E02401FFFB +:101E1A00E43EFEE43DFDE43CFC9003B612260002DB +:101E2A001D97900342E0FEA3E0FFD3900377E09F63 +:101E3A00900376E09E404490006AE0FEA3E0FFEE45 +:101E4A003395E0FDFC900281E0F8A3E0F9A3E0FA03 +:101E5A00A3E0FBC312252D5022C3900069E0951818 +:101E6A00900068E09517501390006CE0FF9003A76C +:101E7A00E004F0C39F4004EFF0D25290006AE0FE03 +:101E8A00A3E0FFEE3395E0FDFC900281E0F8A3E0C9 +:101E9A00F9A3E0FAA3E0FBC312252D503590034FB6 +:101EAA00E0FCA3E0FDA3E0FEA3E0FF90032FE0F82F +:101EBA00A3E0F9A3E0FAA3E0FBC312254350139071 +:101ECA000365E0FF9003A6E004F0C39F4004EFF02F +:101EDA00D25012445A022220900028E0FEA3E0FFCA +:101EEA00C3E49FFFE49EFE3395E0FDFC90037DE092 +:101EFA00F8A3E0F9A3E0FAA3E0FBC312252D4003FF +:101F0A000220D7E49003A7F09003A6F0C250C25271 +:101F1A009003ACF0A3F09003B5F090039DF0C24F8C +:101F2A00900361E0FCA3E0FDA3E0FEA3E0FF9002C2 +:101F3A0081E0F8A3E0F9A3E0FAA3E02FFBEA3EFA76 +:101F4A00E93DF9E83CF8900374E0FEA3E0FFEE33C4 +:101F5A0095E0FDFCEB2FFFEA3EFEE93DFDE83CFC87 +:101F6A00900390122600900390E0FCA3E0FDA3E00A +:101F7A00FEA3E0FFEC33500AC37833E69FF618E677 +:101F8A009EF6C37833E6941018E6940E50030220A6 +:101F9A006CC37833E6941018E6940E40670874F020 +:101FAA0026F61874F136F69000B3E0FCA3E0FDA320 +:101FBA00E0FEA3E02401FFE43EFEE43DFDE43CFC38 +:101FCA009000B3122600E47F01FEFDFC9000ABE016 +:101FDA00F8A3E0F9A3E0FAA3E0FBD312254340B14A +:101FEA009000ABE0FCA3E0FDA3E0FEA3E024FFFF2A +:101FFA00EE34FFFEED34FFFDEC34FFFC9000AB1233 +:10200A002600808D90001EE0FCA3E0FDA3E0FEA365 +:10201A00E0FF9000B3E0F8A3E0F9A3E0FAA3E0FB45 +:10202A00C3122543403C9000B3E0FCA3E0FDA3E0CB +:10203A00FEA3E0FF90001EE0F8A3E0F9A3E0FAA3F4 +:10204A00E0FBEF9BFFEE9AFEED99FDEC98FC900009 +:10205A00B3122600900023E004F07006900022E0FC +:10206A0004F0900353E0FEA3E0FFD3900377E09FD0 +:10207A00900376E09E50030222209000AFE0FCA37A +:10208A00E0FDA3E0FEA3E0FF900281E0F8A3E0F9FF +:10209A00A3E0FAA3E0FBD312252D5003022220D39A +:1020AA0090007BE0951690007AE095155003022285 +:1020BA002090007CE0FF9003B4E004F09F500302FC +:1020CA002220EFF09000B97401F0022220900374EC +:1020DA00E0FAA3E0FBFFCEEACEEE3395E0FDFC3357 +:1020EA0040030221CAC37833E69BFF18E69AFEF63C +:1020FA0008EFF6C39410EE940E50030221CA74F04E +:10210A0026F61874F136F69000B3E0FCA3E0FDA3BE +:10211A00E0FEA3E02401FFE43EFEE43DFDE43CFCD6 +:10212A009000B3122600E47F01FEFDFC9000ABE0B4 +:10213A00F8A3E0F9A3E0FAA3E0FBD3122543402277 +:10214A009000ABE0FCA3E0FDA3E0FEA3E024FFFFC8 +:10215A00EE34FFFEED34FFFDEC34FFFC9000AB12D1 +:10216A00260090001EE0FCA3E0FDA3E0FEA3E0FF32 +:10217A009000B3E0F8A3E0F9A3E0FAA3E0FBC312EE +:10218A002543403C9000B3E0FCA3E0FDA3E0FEA39E +:10219A00E0FF90001EE0F8A3E0F9A3E0FAA3E0FB59 +:1021AA00EF9BFFEE9AFEED99FDEC98FC9000B312BE +:1021BA002600900023E004F07006900022E004F06C +:1021CA0090038BE0FF9003ACE475F0011223C4FC8A +:1021DA00C3E5F09FEC9400403A900353E0FEA3E07D +:1021EA00FFD3900377E09F900376E09E4025D3903B +:1021FA00007BE0951690007AE09515401690007CD9 +:10220A00E0FF9003B5E004F09F4008EFF09000B9BA +:10221A007401F01226B5E47FE87E03FDFC9000AB62 +:10222A00E0F8A3E0F9A3E0FAA3E0FB1223F590009B +:10223A001AE0F8A3E0F9A3E0FAA3E0FB12248090E5 +:10224A0003AAEEF0A3EFF0900028E0FEA3E0FFC39C +:10225A00E49FFFE49EFE3395E0FDFC90037DE0F8E9 +:10226A00A3E0F9A3E0FAA3E0FBC312252D400C205A +:10227A001509201A06201B03301C02C251121056DF +:10228A009000AAE0FF7E00900327EEF0FAA3EFF099 +:10229A00FB90001AE0FCA3E0FDA3E0FEA3E0FF90A0 +:1022AA000345122600CFEBCF7E00E4FCFD900345E8 +:1022BA00E0F8A3E0F9A3E0FAA3E0FB1223F5E47B3C +:1022CA0064FAF9F81224809003781226009000220A +:1022DA00E0FFA3E0900366CFF0A3EFF09003AAE03B +:1022EA00FFA3E09003B2CFF0A3EFF0900390E0FCDD +:1022FA00A3E0FDA3E0FEA3E0FF900399122600905D +:10230A0000ABE0FCA3E0FDA3E0FEA3E0FF90035ACC +:10231A001226009003AEE0FCA3E0FDA3E0FEA3E0DA +:10232A00FF9003361226009003A8E0FFA3E0900373 +:0A233A002DCFF0A3EFF0126337225D +:106E8F00122D1D90038C1225BF900329E0F8A3E06B +:106E9F00F9A3E0FAA3E0FBC3122543501490032992 +:106EAF00E0FCA3E0FDA3E0FEA3E0FF90038C12261D +:056EBF00001263372200 +:10290D009005F5E4F0A37464F0122D1D12415D9055 +:10291D0005F5EEF0A3EFF04E702E9000AA04F090A6 +:10292D0003AAE4F0A3740AF0E47B64FAF9F89000CA +:10293D001AE0FCA3E0FDA3E0FEA3E0FF12248090CB +:10294D0000AB122600022A17900329E0FCA3E0FD3C +:10295D00A3E0FEA3E0FF90038CE0F8A3E0F9A3E071 +:10296D00FAA3E0FBC3122543400E9005F5E0FEA34C +:10297D00E0FF123591022A17E47F64FEFDFC900002 +:10298D001AE0F8A3E0F9A3E0FAA3E0FB1223F59017 +:10299D0000ABE0F8A3E0F9A3E0FAA3E0FB1224807A +:1029AD00C8ECC8C9EDC9CAEECACBEFCB90034EE057 +:1029BD00FF9005F6E02FFF9005F5E03400FEE4FCF6 +:1029CD00FDD312254340439005F5E0FAA3E0FB7CCF +:1029DD00007D0AFFCEEACE12235D9003AAEEF0A38E +:1029ED00EFF0CFEBCFCEEACEE4FD90001AE0F8A3E6 +:1029FD00E0F9A3E0FAA3E0FB1223F5E47B64FAF916 +:102A0D00F81224809000AB122600E47830F608F618 +:102A1D007838F608F6783412260C00000000900382 +:102A2D00AE12262500000000E490039EF0A3F09066 +:102A3D0003B4F0A3F09003ACF0A3F0C252C24EC2A7 +:102A4D00509003A7F09003A6F0783AF608F6783286 +:102A5D00F608F69003AAE0FFA3E09003B2CFF0A32F +:102A6D00EFF0C251C24D9003B612262500000000B2 +:102A7D00E49003A8F0A3F090039012262500000027 +:102A8D000090039912262500000000900394122651 +:102A9D002500000000E490039DF0900398F0C24FD4 +:102AAD0090038C122625000000009000AAE0FF7E06 +:102ABD0000900327EEF0FAA3EFF0FB90001AE0FC74 +:102ACD00A3E0FDA3E0FEA3E0FF900345122600CF97 +:102ADD00EBCF7E00E4FCFD900345E0F8A3E0F9A305 +:102AED00E0FAA3E0FB1223F5E47B64FAF9F8122473 +:102AFD00809003781226009000ABE0FCA3E0FDA3CC +:102B0D00E0FEA3E0FF90035A122600900336122632 +:102B1D002500000000E490032DF0A3F0126337228E +:1026B500305109305206C251D24D802130521E9000 +:1026C50003AA7403F0A374E8F090001AE0FCA3E0F9 +:1026D500FDA3E0FEA3E0FF9000AB122600304D0302 +:1026E5000227659000B7E0FCA3E0FD900022E0FE24 +:1026F500A3E0FFC39DFDEE9CFCC390035FE09D90AE +:10270500035EE09C400302290C20520302290C12AF +:102715005F77E4FCFDFE90001AE0F8A3E0F9A3E082 +:10272500FAA3E0FB1223F5ECC0E0EDC0E0EEC0E05B +:10273500EFC0E09000B7E0FEA3E0FF125F77CBEFBC +:10274500CBE4FAF9F8D0E0FFD0E0FED0E0FDD0E030 +:10275500FC1224809003B61226000228C10228C16B +:10276500C24DE47F32FEFDFC900016E0F8A3E0F9CF +:10277500A3E0FAA3E0FB1223F5E47B64FAF9F8126F +:1027850024809002B91226009002B9E0FCA3E0FD76 +:10279500A3E0FEA3E0FF9003B6E0F8A3E0F9A3E011 +:1027A500FAA3E02FFFEA3EFEE93DFDE83CFC900080 +:1027B50016E0F8A3E0F9A3E0FAA3E0FBC312254372 +:1027C500400302290C900344E0FFE4FCFDFE900069 +:1027D5001AE0F8A3E0F9A3E0FAA3E0FB1223F5E47D +:1027E5007B64FAF9F81224809002B912260090024F +:1027F500B9E0FCA3E0FDA3E0FEA3E0FF90001AE032 +:10280500F8A3E0F9A3E0FAA3E02FFFEA3EFEE93DD5 +:10281500FDE83CFC9003B6E0F8A3E0F9A3E0FAA3D9 +:10282500E0FBD3122543402E9002B9E0FCA3E0FD66 +:10283500A3E0FEA3E0FF90001AE0F8A3E0F9A3E00F +:10284500FAA3E02FFFEA3EFEE93DFDE83CFC9003DC +:10285500B612260080669002B9E0FCA3E0FDA3E075 +:10286500FEA3E0FF9003B6E0F8A3E0F9A3E0FAA326 +:10287500E02FFFEA3EFEE93DFDE83CFC90001AE052 +:10288500F8A3E0F9A3E0FAA3E0FBD3122543402C1B +:102895009002B9E0F8A3E0F9A3E0FAA3E0FB900009 +:1028A5001AE0FCA3E0FDA3E0FEA3E09BFFEE9AFE89 +:1028B500ED99FDEC98FC9003B61226009003B6E066 +:1028C500FCA3E0FDA3E0FEA3E0FF90001A122600A2 +:1028D5009003AA7403F0A374E8F090001AE0FCA337 +:1028E500E0FDA3E0FEA3E0FF9000AB122600900000 +:1028F50022E0FFA3E09000B7CFF0A3EFF09003B67E +:0829050012262500000000224B +:105F7700C3900388E09F900387E09E500479558083 +:105F870048C3900386E09F900385E09E50169003D8 +:105F97004BE0FCA3E0FD12236F90033CE0A3E0C3BA +:105FA7009FF98025C3900384E09F900383E09E5070 +:105FB70016900349E0FCA3E0FD12236F90033AE03B +:0D5FC700A3E0C39FF980027964CFE9CF22E7 +:10105600E49002B9F0A3F0FFA3F0A3F0A3F090038D +:10106600A0E0645A6028A2AF9253C2AF75A701E40C +:10107600EF90124093FE74A02FF582E43403F583BB +:10108600EEF00FEFB406E9E4F5A7A25392AF900392 +:10109600A5E064C36003021C48FF74A02FF582E438 +:1010A6003403F583E0FEEF9073F7936E6003021C42 +:1010B600480FEFB406E48003021C48900028E0FEC7 +:1010C600A3E0FFEE3395E0FDFC90037DE0F8A3E09E +:1010D600F9A3E0FAA3E0FBD312252D50030214F185 +:1010E600204F030214F1E47830F608F67838F60853 +:1010F600F69000AAE0D394634003021C48C3900311 +:1011060082E09518900381E09517401E90034DE00C +:10111600FF7E007C007D0A12235DD39003ABE09F27 +:101126009003AAE09E50030213C9304E5A90034D15 +:10113600E0FBFF7E007C007D0A12235D9003ABE09E +:101146002496FD9003AAE03400FCC3ED9FEC9E506C +:1011560036EBFF7E007C007D0A12235DEEF0A3EFE6 +:10116600F0CFEBCFE4FDFE90001AE0F8A3E0F9A380 +:10117600E0FAA3E0FB1223F5E47B64FAF9F8122403 +:10118600809000AB12260090034FE0FCA3E0FDA385 +:10119600E0FEA3E0FF90032FE0F8A3E0F9A3E0FA56 +:1011A600A3E0FBD3122543500302123090034FE015 +:1011B600F8A3E0F9A3E0FAA3E0FB90032FE0FCA379 +:1011C600E0FDA3E0FEA3E09BFBEE9AFAED99F9ECB5 +:1011D60098F8900389E0FFE4FCFDFE1223F5E47B1A +:1011E6000AFAF9F81223F5EEC0E0EFC0E090001419 +:1011F600E0FEA3E0FFC3900069E09FFF900068E077 +:101206009EFECBEFCBFAE4F9F8D0E0FFD0E0FE1279 +:101216002480EFC0E0AF13CBEFCBE4FAF9F8D0E0CF +:10122600FF122480900394122600C3900063E09579 +:1012360018FF900062E09517FE900389E0FD7C00A0 +:10124600122688E47B0AFAF9F81223F5EEC0E0EFDD +:10125600C0E0900014E0FEA3E0FFC3900069E09FA9 +:10126600FF900068E09EFECBEFCBFAE4F9F8D0E001 +:10127600FFD0E0FE1224809002BE12260090039456 +:10128600E0FCA3E0FDA3E0FEA3E0FF9002BEE0F8D1 +:10129600A3E0F9A3E0FAA3E0FBC3122543501490A0 +:1012A60002BEE0FCA3E0FDA3E0FEA3E0FF900394F2 +:1012B600122600E47F24FEFDFC90001AE0F8A3E06D +:1012C600F9A3E0FAA3E0FB1223F5900394E0F8A358 +:1012D600E0F9A3E0FAA3E0FB1223F5EEC0E0EFC0CD +:1012E600E09000AAE0FFC374659FFFE49400FECB84 +:1012F600EFCBFAE4F9F8D0E0FFD0E0FE122480E468 +:101306007B0AFAF9F81224809003941226009000C2 +:101316006AE0FEA3E0FFEE3395E0FDFC900390E06B +:10132600F8A3E0F9A3E0FAA3E0FBD312252D406C65 +:10133600900390E0FCA3E0FDA3E0FEA3E0FFC8EC71 +:10134600C8A3E0FCA3E0FDA3E0FEA3E0FF12248017 +:10135600ECC0E0EDC0E0EEC0E0EFC0E090006AE077 +:10136600FEA3E0FFFBCAEECAEA3395E0F9F8900364 +:1013760090E0FCA3E0FDA3E0FEA3E0C39BFFEE9A92 +:10138600FEED99FDEC98FCD0E0FBD0E0FAD0E0F958 +:10139600D0E0F81223F5900394122600900063E043 +:1013A60024FFFF900062E034FFFEC3E5189FE517B7 +:1013B6009E50030214839003941226250000000019 +:1013C6000214839003AAE0FEA3E0FF7C007D0A12CC +:1013D600236FEF2401FFE43EFE9000AAE0FB7A00B3 +:1013E600C39FEA9E503C9003AAE0FEA3E0FF7C0068 +:1013F6007D0A12236FEB2401FDEA33FCD3ED9FEC4B +:101406009E401FE47F24FEFDFC90001AE0F8A3E056 +:10141600F9A3E0FAA3E0FB1223F590039412260049 +:10142600805B9000ABE0F8A3E0F9A3E0FAA3E0FB51 +:1014360090001AE0FCA3E0FDA3E0FEA3E0C39BFF3F +:10144600EE9AFEED99FDEC98FCE47B107A0EF9F825 +:101456001223F5EEC0E0EFC0E09000AAE0FFC374EF +:10146600649FFFE49400FECBEFCBFAE4F9F8D0E0FA +:10147600FFD0E0FE12248090039412260090039081 +:10148600E0FCA3E0FDA3E0FEA3E0FFFBCAEECAC9B1 +:10149600EDC9C8ECC8A3E0FCA3E0FDA3E0FEA3E011 +:1014A600FF1224809002BCEEF0A3EFF02050033030 +:1014B600520D90038AE0FF9002BCE4F0A3EFF09097 +:1014C60003A8E475F0011223C4FEC39002BDE095A3 +:1014D600F09002BCE09E4003021C489000AAE00483 +:1014E600F0E49003A8F0A3F0021C48900028E0FE68 +:1014F600A3E0FFC3E49FFFE49EFE3395E0FDFC906E +:10150600037DE0F8A3E0F9A3E0FAA3E0FBC312250C +:101516002D4003021BE89000AAE094015003021C30 +:1015260048900325E0FEA3E0FFAD137C0012268859 +:1015360090034FE0F8A3E0F9A3E0FAA3E0FBC3129F +:101546002543402DD390007BE0951690007AE095D8 +:1015560015501E900359E0FF7E007C007D0A122381 +:101566005DC39003ABE09F9003AAE09E4003021880 +:101576000B90036EE0FEA3E0FFD3900377E09F900D +:101586000376E09E500302180B900368E0FCA3E08C +:10159600FDA3E0FEA3E0FF90037DE0F8A3E0F9A33E +:1015A600E0FAA3E0FBD312252D500302180B78397D +:1015B600E61846700302180B900399E0FCA3E0FDC1 +:1015C600A3E0FEA3E024D0FFEE3407FEE43DFDE4F5 +:1015D6003CFC900390E0F8A3E0F9A3E0FAA3E0FB5B +:1015E600C312252D400302180B900399E0FCA3E0DB +:1015F600FDA3E0FEA3E02430FFEE34F8FEED34FF59 +:10160600FDEC34FFFC900390E0F8A3E0A3E0A3E038 +:10161600D312252D500302180B900360E07E00259F +:1016260016FFEE3515FEC3EF783996EE1896400391 +:101636000217FA90039EE0FEA3E0FF9400EE9400EA +:1016460050030217FAEF9401EE9400500890039E9F +:10165600E4F0A304F090034FE0FCA3E0FDA3E0FE5A +:10166600A3E0FF78341225A6D312254350030217B0 +:1016760013900355E0F8A3E0F9A3E0FAA3E0FB908A +:10168600034FE0FCA3E0FDA3E0FEA3E09BFBEE9A84 +:10169600FAED99F9EC98F890039EE0FEA3E0FFE4DA +:1016A600FCFD1223F5ECC0E0EDC0E0EEC0E0EFC0BB +:1016B600E090034FE0F8A3E0F9A3E0FAA3E0FBE82B +:1016C600C0E0783412258ED0E0F8C3EF9BFBEE9A8B +:1016D600FAED99F9EC98F8D0E0FFD0E0FED0E0FD05 +:1016E600D0E0FC122480EEC0E0EFC0E09000AAE05B +:1016F60024FFFFE434FFFECBEFCBFAE4F9F8D0E0A9 +:10170600FFD0E0FE1224809003941226009000740D +:10171600E0FEA3E0FFC3E5169FFFE5159EFE9003DE +:101726009EE0FCA3E0FD122688EEC0E0EFC0E0C319 +:101736007839E69516FF18E69515FECBEFCBFAE459 +:10174600F9F8D0E0FFD0E0FE122480EEC0E0EFC052 +:10175600E09000AAE024FFFFE434FFFECBEFCBFAD3 +:10176600E4F9F8D0E0FFD0E0FE1224809002BE1229 +:101776002600900394E0FCA3E0FDA3E0FEA3E0FFB7 +:101786009002BEE0F8A3E0F9A3E0FAA3E0FBC312DF +:10179600254350149002BEE0FCA3E0FDA3E0FEA3A7 +:1017A600E0FF9003941226007838A61508A6169036 +:1017B600034FE0FCA3E0FDA3E0FEA3E0FF783412B4 +:1017C60025F4E490039EF0A3F0900394E0F8A3E0E0 +:1017D600F9A3E0FAA3E0FB900390E0FCA3E0FDA3ED +:1017E600E0FEA3E0FF12251F1223F59003941226B4 +:1017F60000021B7690039FE004F0700690039EE0C3 +:1018060004F0021B767838A61508A61690034FE05A +:10181600FCA3E0FDA3E0FEA3E0FF78341225F4E488 +:1018260090039EF0A3F090036EE0FEA3E0FFC3904A +:101836000377E09F900376E09E4021900368E0FCEA +:10184600A3E0FDA3E0FEA3E0FF90037DE0F8A3E0A4 +:10185600F9A3E0FAA3E0FB12252D501D90001AE033 +:10186600FCA3E0FDA3E0FEA3E0FF9003AE1226007A +:10187600E47830F608F60219FA7830E6FE08E6FF54 +:101886002414FDE43EFC900376E0FAA3E0FBD39D2E +:10189600EA9C5011EB2414FDE43AFCD3EF9DEE9C38 +:1018A60050030219FA900376E0FEA3E0FF7830EECB +:1018B600F608EFF62487FFEE34F59002B9F0A3EFB1 +:1018C600F0900340E0FEA3E0FFFBCAEECAE4F9F89D +:1018D6009002B9E0FEA3E0FFEE3395E0FDFC122393 +:1018E600F5C8ECC8C9EDC9CAEECACBEFCB90033E2A +:1018F600E0FEA3E0FFE4C3EF9BFBEE9AFAE499F95E +:10190600E498F89002B9E0FEA3E0FFEE3395E0FD1F +:10191600FC1223F5E47B107A27F9F8126AC1C8ECA9 +:10192600C8C9EDC9CAEECACBEFCB900372E0FEA3DD +:10193600E0FFE4FCFDEB2FFFEA3EFEED39FDEC385F +:10194600FC90001AE0F8A3E0F9A3E0FAA3E0FB128A +:1019560023F5E47BD07A07F9F81224809003AE12BF +:10196600260090001AE0FCA3E0FDA3E0FEA3E0FF42 +:101976009003AEE0F8A3E0F9A3E0FAA3E0FBD312EC +:101986002543401690001AE0FCA3E0FDA3E0FEA369 +:10199600E0FF9003AE122600805AE47F06FEFDFCAF +:1019A60090001AE0F8A3E0F9A3E0FAA3E0FB122303 +:1019B600F5E47B0AFAF9F81224809003AEE0F8A366 +:1019C600E0F9A3E0FAA3E0FBC31225435026E47F27 +:1019D60006FEFDFC90001AE0F8A3E0F9A3E0FAA3E6 +:1019E600E0FB1223F5E47B0AFAF9F812248090034F +:1019F600AE1226009003AEE0F8A3E0F9A3E0FAA346 +:101A0600E0FB90001AE0FCA3E0FDA3E0FEA3E0C328 +:101A16009BFFEE9AFEED99FDEC98FCE47B0DFAF93E +:101A2600F81223F5E47B0AFAF9F81224809000AB49 +:101A3600E0F8A3E0F9A3E0FAA3E0FBC312254350C4 +:101A460020E47F24FEFDFC90001AE0F8A3E0F9A351 +:101A5600E0FAA3E0FB1223F5900394122600021B82 +:101A6600769000ABE0FCA3E0FDA3E0FEA3E0FF90D0 +:101A760003AEE0F8A3E0F9A3E0FAA3E02FFFEA3E05 +:101A8600FEE93DFDE83CFC90001AE0F8A3E0F9A36E +:101A9600E0FAA3E0FBC3EF9BFFEE9AFEED99FDECA7 +:101AA60098FCE47B64FAF9F81223F59003AEE0F8AB +:101AB600A3E0F9A3E0FAA3E0FB1224809002BBEFB7 +:101AC600F02401FFE433FE9000AAE0FDC39FEE641C +:101AD60080F87480985035ED2401FFE433FE9002BF +:101AE600BBE0FDD3EF9D7480F86E98401FE47F2421 +:101AF600FEFDFC9003AEE0F8A3E0F9A3E0FAA3E054 +:101B0600FB1223F590039412260080649000ABE04C +:101B1600FCA3E0FDA3E0FEA3E0FF9003AEE0F8A384 +:101B2600E0F9A3E0FAA3E02FFFEA3EFEE93DFDE877 +:101B36003CFC90001AE0F8A3E0F9A3E0FAA3E0FB6E +:101B4600C3EF9BFFEE9AFEED99FDEC98FCE47B104B +:101B56007A0EF9F81223F5EFC0E09000AAE0FFFB39 +:101B6600E4FAF9F8D0E0FF122480900394122600DC +:101B7600900390E0FCA3E0FDA3E0FEA3E0FF1225A6 +:101B86001FCBEFCBCAEECAC9EDC9C8ECC8A3E0FCAF +:101B9600A3E0FDA3E0FEA3E0FF1224809002BCEECA +:101BA600F0A3EFF09003A8E475F0011223C4FCD370 +:101BB600E5F09FEC9E400D9000AAE014F0E490033F +:101BC600A8F0A3F030197B900371E0FF9000AAE023 +:101BD600D39F506E90036CE060689000AA7401F089 +:101BE6008060E47838F608F6783412260C00000097 +:101BF60000E47830F608F69000AAE0D3940140425B +:101C0600900374E0FEA3E0FFEE3395E0FDFC335055 +:101C1600319003AAE0FEA3E0FF7C007D0A12236F49 +:101C2600CAEECACBEFCB9003B2E0FEA3E0FF7C0086 +:101C36007D0A12236FD3EF9BEE9A40069000AAE02E +:101C460014F0E4FFFEFDFC900399E0F8A3E0F9A38D +:101C5600E0FAA3E0FBD312252D40093018069000C8 +:101C6600AA7464F09002BCE0FFA3E0900334CFF0C6 +:041C7600A3EFF022C6 +:1071A300304C19204306204403304510C24CC243DF +:0D71B300C244C245C2AF12731C1200A622D6 +:10F8000033270C800D480DDE0E740ED80F3C0FA070 +:10F8100010041036106800000FA000000FA00000B8 +:10F820000BB800000B410000006414010064055A8D +:10F83000021501300073696E6F7765616C74680042 +:10F840000020231222000053483339463030340060 +:10F850000000004C494F4E00000000000000000076 +:10F86000005A109A10360202104000640500000B86 +:10F87000B802025A0A8C0BB802020B5405FFFFB102 +:10F88000E002FFFF63C002045A0FA01E465A0C9FFD +:10F890000C6D0AAB0ADD03035A0D670CD10A470A47 +:10F8A000795A105400140064025A6400000BB8FF27 +:10F8B000FFEC78000000000000005A7411305A0A72 +:10F8C00022FFAE000100000000005A00000000000E +:10F8D0000000000000000000000000000000000028 +:10F8E0000000000000000000000000000000000018 +:10F8F0000000000000000000000000000000000008 +:10F9000000000000000000000000000000000000F7 +:10F9100000000000000000000000000000000000E7 +:10F9200000000000000000000000000000000000D7 +:10F9300000000000000000000000000000000000C7 +:10F9400000000000000000000000000000000000B7 +:10F9500000000000000000000000000000000000A7 +:10F960000000000000000000000000000000000097 +:10F970000000000000000000000000000000000087 +:10F980000000000000000000000000000000000077 +:10F990000000000000000000000000000000000067 +:10F9A0000000000000000000000000000000000057 +:10F9B0000000000000000000000000000000000047 +:10F9C0000000000000000000000000000000000037 +:10F9D0000000000000000000000000000000000027 +:10F9E0000000000000000000000000000000000017 +:10F9F00000000000000000000000000000005AA508 +:10FA000033270C800D480DDE0E740ED80F3C0FA06E +:10FA100010041036106800000FA000000FA00000B6 +:10FA20000BB800000B410000006414010064055A8B +:10FA3000021501300073696E6F7765616C74680040 +:10FA4000002023122200005348333946303034005E +:10FA50000000004C494F4E00000000000000000074 +:10FA6000005A109A10360202104000640500000B84 +:10FA7000B802025A0A8C0BB802020B5405FFFFB100 +:10FA8000E002FFFF63C002045A0FA01E465A0C9FFB +:10FA90000C6D0AAB0ADD03035A0D670CD10A470A45 +:10FAA000795A105400140064025A6400000BB8FF25 +:10FAB000FFEC78000000000000005A7411305A0A70 +:10FAC00022FFAE000100000000005A00000000000C +:10FAD0000000000000000000000000000000000026 +:10FAE0000000000000000000000000000000000016 +:10FAF0000000000000000000000000000000000006 +:10FB000000000000000000000000000000000000F5 +:10FB100000000000000000000000000000000000E5 +:10FB200000000000000000000000000000000000D5 +:10FB300000000000000000000000000000000000C5 +:10FB400000000000000000000000000000000000B5 +:10FB500000000000000000000000000000000000A5 +:10FB60000000000000000000000000000000000095 +:10FB70000000000000000000000000000000000085 +:10FB80000000000000000000000000000000000075 +:10FB90000000000000000000000000000000000065 +:10FBA0000000000000000000000000000000000055 +:10FBB0000000000000000000000000000000000045 +:10FBC0000000000000000000000000000000000035 +:10FBD0000000000000000000000000000000000025 +:10FBE0000000000000000000000000000000000015 +:10FBF00000000000000000000000000000005AA506 +:10234400BB010689828A83E0225002E722BBFE0297 +:09235400E32289828A83E49322CA +:10235D00EF8DF0A4A8F0CF8CF0A428CE8DF0A42E94 +:02236D00FE224E +:10236F00BC000BBE0029EF8DF084FFADF022E4CC52 +:10237F00F875F008EF2FFFEE33FEEC33FCEE9DEC1B +:10238F00984005FCEE9DFE0FD5F0E9E4CEFD22ED61 +:10239F00F8F5F0EE8420D21CFEADF075F008EF2FAB +:1023AF00FFED33FD4007985006D5F0F222C398FD9C +:0523BF000FD5F0EA2239 +:1023C400C5F0F8A3E028F0C5F0F8E58215827002A4 +:0623D4001583E038F02241 +:0D23DA00EF2BFFEE3AFEED39FDEC38FC2252 +:0E23E700C3EF9BFFEE9AFEED99FDEC98FC22F1 +:1023F500E88FF0A4CC8BF0A42CFCE98EF0A42CFC87 +:102405008AF0EDA42CFCEA8EF0A4CDA8F08BF0A404 +:102415002DCC3825F0FDE98FF0A42CCD35F0FCEB63 +:102425008EF0A4FEA9F0EB8FF0A4CFC5F02ECD3928 +:0F243500FEE43CFCEAA42DCE35F0FDE43CFC2295 +:1024440075F008758200EF2FFFEE33FECD33CDCC4F +:1024540033CCC58233C5829BED9AEC99E5829840D2 +:102464000CF582EE9BFEED9AFDEC99FC0FD5F0D6AF +:10247400E4CEFBE4CDFAE4CCF9A88222B800C1B9D9 +:102484000059BA002DEC8BF084CFCECDFCE5F0CB17 +:10249400F97818EF2FFFEE33FEED33FDEC33FCEB50 +:1024A40033FB10D703994004EB99FB0FD8E5E4F90B +:1024B400FA227818EF2FFFEE33FEED33FDEC33FCF8 +:1024C400C933C910D7059BE99A4007EC9BFCE99AEC +:1024D400F90FD8E0E4C9FAE4CCFB2275F010EF2F31 +:1024E400FFEE33FEED33FDCC33CCC833C810D70731 +:1024F4009BEC9AE899400AED9BFDEC9AFCE899F86C +:0E2504000FD5F0DAE4CDFBE4CCFAE4C8F922FE +:106AC100C2D5E830E70FB2D5E4C39BFBE49AFAE400 +:106AD10099F9E498F8EC30E717B2D5126AF7122465 +:106AE10080E4C39BFBE49AFAE499F9E498F8800303 +:106AF10012248030D50DE4C39FFFE49EFEE49DFD8A +:046B0100E49CFC22F2 +:0D251200EF4BFFEE4AFEED49FDEC48FC22C8 +:0E251F00C3E49FFFE49EFEE49DFDE49CFC22CD +:10252D00EB9FF5F0EA9E42F0E99D42F0EC6480C825 +:06253D0064809845F022C5 +:10254300EB9FF5F0EA9E42F0E99D42F0E89C45F0EE +:012553002265 +:10255400E8600FECC313FCED13FDEE13FEEF13FF65 +:03256400D8F12289 +:10256700E86010ECA2E713FCED13FDEE13FEEF138A +:04257700FFD8F02277 +:10257B00E8600FEFC333FFEE33FEED33FDEC33FCBE +:03258B00D8F12262 +:0C258E00E6FC08E6FD08E6FE08E6FF2279 +:0C259A00E0FCA3E0FDA3E0FEA3E0FF22B4 +:0D25A600E6FB08E6F908E6FA08E6CBF822A5 +:0C25B300E0F8A3E0F9A3E0FAA3E0FB22AB +:1025BF007401FF3395E0FEFDFCA3A3A3E02FFFF012 +:1025CF00E582158270021583E03EFEF0E5821582EA +:1025DF0070021583E03DFDF0E582158270021583D0 +:0525EF00E03CFCF022BD +:0C25F400ECF608EDF608EEF608EFF62213 +:0C260000ECF0A3EDF0A3EEF0A3EFF0224D +:10260C00D083D082E493F608740193F60874029395 +:09261C00F608740393F6740473CC +:10262500A8828583F0D083D08212263C12263C12E4 +:10263500263C12263CE473E493A3C583C5F0C58309 +:10264500C8C582C8F0A3C583C5F0C583C8C582C8FF +:012655002262 +:0C265600A42582F582E5F03583F583228F +:10266200D083D082F8E4937012740193700DA3A307 +:1026720093F8740193F5828883E47374029368601B +:06268200EFA3A3A380DF1B +:10268800EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02DDF +:10269800FDE43CFCE8A42EC8C5F03DFDE43CFCEF9D +:0D26A800A4FFE5F028FEE43DFDE43CFC222B +:00000001FF diff --git a/output/McuFlash_ISP.lnp b/output/McuFlash_ISP.lnp new file mode 100644 index 0000000..5dd26e0 --- /dev/null +++ b/output/McuFlash_ISP.lnp @@ -0,0 +1,36 @@ +".\output\Main.obj", +".\output\Initial.obj", +".\output\InterruptApp.obj", +".\output\Led.obj", +".\output\KeyApp.obj", +".\output\LowPower.obj", +".\output\UartApp.obj", +".\output\Memory.obj", +".\output\AFE.obj", +".\output\Balance.obj", +".\output\Calculate.obj", +".\output\Calibrate.obj", +".\output\ChargerLoad.obj", +".\output\ExtE2PRom.obj", +".\output\Interrupt.obj", +".\output\KeyScan.obj", +".\output\McuFlash.obj", +".\output\McuLib.obj", +".\output\MosCtrl.obj", +".\output\PorSelfTest.obj", +".\output\Protect.obj", +".\output\RTC.obj", +".\output\TWI.obj", +".\output\Uart.obj", +".\output\Thermistor.obj", +".\output\TwiIO.obj", +".\output\STARTUP.obj", +".\output\GasGaugeInter_V4_13.obj", +".\code_gasguage\GasGaugeV4_13.LIB", +".\output\BootApp.obj", +".\output\DataFlash.obj" +TO ".\output\McuFlash_ISP" REGFILE (.\output\McuFlash_ISP.ORC) +PRINT(".\output\McuFlash_ISP.m51") RAMSIZE(256) +DISABLEWARNING (16) +CODE( 0X1000-0XFBFF , ?CO?DATAFLASH(0xF800) ) +XDATA( 0X0200-0X0AFE ) diff --git a/output/McuFlash_ISP.m51 b/output/McuFlash_ISP.m51 new file mode 100644 index 0000000..85fcc35 --- /dev/null +++ b/output/McuFlash_ISP.m51 @@ -0,0 +1,6696 @@ +BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 1 + + +BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: +C:\KEIL_V5\C51\BIN\BL51.EXE .\output\Main.obj, .\output\Initial.obj, .\output\InterruptApp.obj, .\output\Led.obj, .\outp +>> ut\KeyApp.obj, .\output\LowPower.obj, .\output\UartApp.obj, .\output\Memory.obj, .\output\AFE.obj, .\output\Balance.o +>> bj, .\output\Calculate.obj, .\output\Calibrate.obj, .\output\ChargerLoad.obj, .\output\ExtE2PRom.obj, .\output\Interr +>> upt.obj, .\output\KeyScan.obj, .\output\McuFlash.obj, .\output\McuLib.obj, .\output\MosCtrl.obj, .\output\PorSelfTest +>> .obj, .\output\Protect.obj, .\output\RTC.obj, .\output\TWI.obj, .\output\Uart.obj, .\output\Thermistor.obj, .\output\ +>> TwiIO.obj, .\output\STARTUP.obj, .\output\GasGaugeInter_V4_13.obj, .\code_gasguage\GasGaugeV4_13.LIB, .\output\BootAp +>> p.obj, .\output\DataFlash.obj TO .\output\McuFlash_ISP REGFILE (.\output\McuFlash_ISP.ORC) PRINT (.\output\McuFlash_I +>> SP.m51) RAMSIZE (256) DISABLEWARNING (16) CODE (0X1000-0XFBFF, ?CO?DATAFLASH (0XF800)) XDATA (0X0200-0X0AFE) + + +MEMORY MODEL: LARGE + + +INPUT MODULES INCLUDED: + .\output\Main.obj (MAIN) + .\output\Initial.obj (INITIAL) + .\output\InterruptApp.obj (INTERRUPTAPP) + .\output\Led.obj (LED) + .\output\KeyApp.obj (KEYAPP) + .\output\LowPower.obj (LOWPOWER) + .\output\UartApp.obj (UARTAPP) + .\output\Memory.obj (MEMORY) + .\output\AFE.obj (AFE) + .\output\Balance.obj (BALANCE) + .\output\Calculate.obj (CALCULATE) + .\output\Calibrate.obj (CALIBRATE) + .\output\ChargerLoad.obj (CHARGERLOAD) + .\output\ExtE2PRom.obj (EXTE2PROM) + .\output\Interrupt.obj (INTERRUPT) + .\output\KeyScan.obj (KEYSCAN) + .\output\McuFlash.obj (MCUFLASH) + .\output\McuLib.obj (MCULIB) + .\output\MosCtrl.obj (MOSCTRL) + .\output\PorSelfTest.obj (PORSELFTEST) + .\output\Protect.obj (PROTECT) + .\output\RTC.obj (RTC) + .\output\TWI.obj (TWI) + .\output\Uart.obj (UART) + .\output\Thermistor.obj (THERMISTOR) + .\output\TwiIO.obj (TWIIO) + .\output\STARTUP.obj (?C_STARTUP) + .\output\GasGaugeInter_V4_13.obj (GASGAUGEINTER_V4_13) + .\code_gasguage\GasGaugeV4_13.LIB (GASGAUGEV4_12) + .\output\BootApp.obj (BOOTAPP) + .\output\DataFlash.obj (DATAFLASH) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?CLDPTR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?IMUL) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?UIDIV) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?IILDX) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LADD) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSUB) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LMUL) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?ULDIV) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SLDIV) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LOR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LNEG) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SLCMP) + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 2 + + + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?ULCMP) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?ULSHR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?SLSHR) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSHL) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDIDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDIDATA0) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LLDXDATA0) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LILDXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTIDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTKIDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LSTKXDATA) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?OFFXADD) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?CCASE) + C:\KEIL_V5\C51\LIB\C51L.LIB (?C?LIMUL) + + +LINK MAP OF MODULE: .\output\McuFlash_ISP (MAIN) + + + TYPE BASE LENGTH RELOCATION SEGMENT NAME + ----------------------------------------------------- + + * * * * * * * D A T A M E M O R Y * * * * * * * + REG 0000H 0008H ABSOLUTE "REG BANK 0" + DATA 0008H 0007H UNIT ?DT?KEYSCAN + DATA 000FH 0006H UNIT ?DT?AFE + DATA 0015H 0004H UNIT ?DT?GASGAUGEINTER_V4_13 + DATA 0019H 0002H UNIT _DATA_GROUP_ + IDATA 001BH 0001H UNIT ?ID?EXTE2PROM + 001CH 0004H *** GAP *** + DATA 0020H 0007H BIT_ADDR ?BA?MEMORY + BIT 0027H.0 0001H.3 UNIT ?BI?EXTE2PROM + BIT 0028H.3 0001H.2 UNIT ?BI?UARTAPP + BIT 0029H.5 0000H.6 UNIT ?BI?GASGAUGEV4_12 + BIT 002AH.3 0000H.6 UNIT _BIT_GROUP_ + BIT 002BH.1 0000H.5 UNIT ?BI?AFE + BIT 002BH.6 0000H.5 UNIT ?BI?BALANCE + BIT 002CH.3 0000H.4 UNIT ?BI?LOWPOWER + BIT 002CH.7 0000H.4 UNIT ?BI?CHARGERLOAD + BIT 002DH.3 0000H.3 UNIT ?BI?INTERRUPTAPP + BIT 002DH.6 0000H.3 UNIT ?BI?MCUFLASH + BIT 002EH.1 0000H.2 UNIT ?BI?LED + BIT 002EH.3 0000H.2 UNIT ?BI?MOSCTRL + BIT 002EH.5 0000H.2 UNIT ?BI?PROTECT + BIT 002EH.7 0000H.2 UNIT ?BI?RTC + BIT 002FH.1 0000H.1 UNIT ?BI?CALIBRATE + BIT 002FH.2 0000H.1 UNIT ?BI?KEYSCAN + BIT 002FH.3 0000H.1 UNIT ?BI?PORSELFTEST + 002FH.4 0000H.4 *** GAP *** + IDATA 0030H 000CH UNIT ?ID?GASGAUGEV4_12 + 003CH 0064H *** GAP *** + IDATA 00A0H 0060H ABSOLUTE + + * * * * * * * X D A T A M E M O R Y * * * * * * * + XDATA 0000H 0002H ABSOLUTE + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 3 + + + XDATA 0002H 0014H ABSOLUTE + XDATA 0016H 0004H ABSOLUTE + XDATA 001AH 0004H ABSOLUTE + XDATA 001EH 0004H ABSOLUTE + XDATA 0022H 0002H ABSOLUTE + XDATA 0024H 0002H ABSOLUTE + XDATA 0026H 0002H ABSOLUTE + XDATA 0028H 0002H ABSOLUTE + XDATA 002AH 0001H ABSOLUTE + XDATA 002BH 0001H ABSOLUTE + XDATA 002CH 0002H ABSOLUTE + XDATA 002EH 0001H ABSOLUTE + XDATA 002FH 0001H ABSOLUTE + XDATA 0030H 0002H ABSOLUTE + XDATA 0032H 0002H ABSOLUTE + XDATA 0034H 0001H ABSOLUTE + XDATA 0035H 000CH ABSOLUTE + XDATA 0041H 0004H ABSOLUTE + XDATA 0045H 0002H ABSOLUTE + XDATA 0047H 000CH ABSOLUTE + XDATA 0053H 000CH ABSOLUTE + XDATA 005FH 0002H ABSOLUTE + XDATA 0061H 0001H ABSOLUTE + XDATA 0062H 0002H ABSOLUTE + XDATA 0064H 0002H ABSOLUTE + XDATA 0066H 0001H ABSOLUTE + XDATA 0067H 0001H ABSOLUTE + XDATA 0068H 0002H ABSOLUTE + XDATA 006AH 0002H ABSOLUTE + XDATA 006CH 0001H ABSOLUTE + XDATA 006DH 0004H ABSOLUTE + XDATA 0071H 0001H ABSOLUTE + XDATA 0072H 0001H ABSOLUTE + XDATA 0073H 0001H ABSOLUTE + XDATA 0074H 0002H ABSOLUTE + XDATA 0076H 0002H ABSOLUTE + XDATA 0078H 0001H ABSOLUTE + XDATA 0079H 0001H ABSOLUTE + XDATA 007AH 0002H ABSOLUTE + XDATA 007CH 0001H ABSOLUTE + XDATA 007DH 0004H ABSOLUTE + XDATA 0081H 0001H ABSOLUTE + XDATA 0082H 0004H ABSOLUTE + XDATA 0086H 0001H ABSOLUTE + XDATA 0087H 0001H ABSOLUTE + XDATA 0088H 0001H ABSOLUTE + XDATA 0089H 0002H ABSOLUTE + XDATA 008BH 0001H ABSOLUTE + XDATA 008CH 0001H ABSOLUTE + XDATA 008DH 0001H ABSOLUTE + XDATA 008EH 0002H ABSOLUTE + XDATA 0090H 0002H ABSOLUTE + XDATA 0092H 0002H ABSOLUTE + XDATA 0094H 0002H ABSOLUTE + XDATA 0096H 0001H ABSOLUTE + XDATA 0097H 0001H ABSOLUTE + XDATA 0098H 0001H ABSOLUTE + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 4 + + + XDATA 0099H 0002H ABSOLUTE + XDATA 009BH 0002H ABSOLUTE + XDATA 009DH 0002H ABSOLUTE + XDATA 009FH 0002H ABSOLUTE + XDATA 00A1H 0001H ABSOLUTE + XDATA 00A2H 0002H ABSOLUTE + XDATA 00A4H 0002H ABSOLUTE + XDATA 00A6H 0002H ABSOLUTE + XDATA 00A8H 0001H ABSOLUTE + XDATA 00A9H 0001H ABSOLUTE + XDATA 00AAH 0001H ABSOLUTE + XDATA 00ABH 0004H ABSOLUTE + XDATA 00AFH 0004H ABSOLUTE + XDATA 00B3H 0004H ABSOLUTE + XDATA 00B7H 0002H ABSOLUTE + XDATA 00B9H 0001H ABSOLUTE + XDATA 00BAH 0001H ABSOLUTE + XDATA 00BBH 0001H ABSOLUTE + XDATA 00BCH 0002H ABSOLUTE + XDATA 00BEH 0001H ABSOLUTE + XDATA 00BFH 0002H ABSOLUTE + XDATA 00C1H 0002H ABSOLUTE + XDATA 00C3H 0002H ABSOLUTE + XDATA 00C5H 0002H ABSOLUTE + XDATA 00C7H 0002H ABSOLUTE + XDATA 00C9H 0001H ABSOLUTE + XDATA 00CAH 0001H ABSOLUTE + XDATA 00CBH 0133H ABSOLUTE + XDATA 01FEH 0002H ABSOLUTE + XDATA 0200H 00B5H UNIT ?XD?AFE + XDATA 02B5H 0070H UNIT _XDATA_GROUP_ + XDATA 0325H 0067H UNIT ?XD?GASGAUGEINTER_V4_13 + XDATA 038CH 002EH UNIT ?XD?GASGAUGEV4_12 + XDATA 03BAH 0022H UNIT ?XD?PROTECT + XDATA 03DCH 0015H UNIT ?XD?EXTE2PROM + XDATA 03F1H 000DH UNIT ?XD?UARTAPP + XDATA 03FEH 0002H UNIT ?XD?INTERRUPTAPP + XDATA 0400H 0096H ABSOLUTE + XDATA 0496H 0008H UNIT ?XD?RTC + XDATA 049EH 0002H UNIT ?XD?CALCULATE + XDATA 04A0H 0096H ABSOLUTE + XDATA 0536H 0006H UNIT ?XD?BALANCE + XDATA 053CH 0003H UNIT ?XD?LED + XDATA 053FH 0001H UNIT ?XD?KEYAPP + XDATA 0540H 0096H ABSOLUTE + XDATA 05D6H 0012H UNIT ?XD?CALIBRATE + XDATA 05E8H 0003H UNIT ?XD?LOWPOWER + XDATA 05EBH 0003H UNIT ?XD?_MCUPWM0SET?MCULIB + XDATA 05EEH 0003H UNIT ?XD?_MCUPWM1SET?MCULIB + XDATA 05F1H 0002H UNIT ?XD?CHARGERLOAD + XDATA 05F3H 0002H UNIT ?XD?MCUFLASH + XDATA 05F5H 0002H UNIT ?XD?GASGAUGEWKUP?GASGAUGEV4_12 + XDATA 05F7H 0001H UNIT ?XD?PORSELFTEST + + * * * * * * * C O D E M E M O R Y * * * * * * * + 0000H 1000H *** GAP *** + CODE 1000H 0003H ABSOLUTE + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 5 + + + CODE 1003H 0020H UNIT ?PR?INTERRUPTTIMER3?INTERRUPT + CODE 1023H 0003H ABSOLUTE + 1026H 0005H *** GAP *** + CODE 102BH 0003H ABSOLUTE + CODE 102EH 0024H UNIT ?PR?_INTERRUPTINT4APP?INTERRUPTAPP + 1052H 0001H *** GAP *** + CODE 1053H 0003H ABSOLUTE + CODE 1056H 0C24H UNIT ?PR?DATAFILTER?GASGAUGEV4_12 + CODE 1C7AH 06CAH UNIT ?PR?GASGAUGEMANAGE?GASGAUGEV4_12 + CODE 2344H 0371H UNIT ?C?LIB_CODE + CODE 26B5H 0258H UNIT ?PR?FCCUPDATE?GASGAUGEV4_12 + CODE 290DH 0220H UNIT ?PR?GASGAUGEWKUP?GASGAUGEV4_12 + CODE 2B2DH 01F0H UNIT ?PR?_CALCUTEMP?CALCULATE + CODE 2D1DH 01C5H UNIT ?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 + CODE 2EE2H 01C2H UNIT ?PR?_RTCREADTIME?RTC + CODE 30A4H 01B9H UNIT ?PR?_TWIREAD?TWI + CODE 325DH 01B3H UNIT ?PR?_E2PROMBKDATA?EXTE2PROM + CODE 3410H 0181H UNIT ?PR?AFECALCUCURR?CALCULATE + CODE 3591H 016FH UNIT ?PR?_GASGAUGEINITSOC?GASGAUGEV4_12 + CODE 3700H 0168H UNIT ?PR?GASGAUGEINIT?GASGAUGEV4_12 + CODE 3868H 0167H UNIT ?PR?UART0IAPCHECKHANDSHAKE?UARTAPP + CODE 39CFH 0150H UNIT ?PR?UART0RDCMDPROCESS?UARTAPP + CODE 3B1FH 0147H UNIT ?PR?_TWIWRITE?TWI + CODE 3C66H 0144H UNIT ?PR?BALTURNONCHECK?BALANCE + CODE 3DAAH 0142H UNIT ?CO?THERMISTOR + CODE 3EECH 0139H UNIT ?PR?_MCUTIMER3SET?MCULIB + CODE 4025H 0138H UNIT ?PR?AFECALCUVOL?CALCULATE + CODE 415DH 011FH UNIT ?PR?GASGAUGEGETOCV?GASGAUGEV4_12 + CODE 427CH 0100H UNIT ?CO?TWI + CODE 437CH 00DEH UNIT ?PR?AFECALCUTEMPE?CALCULATE + CODE 445AH 00D7H UNIT ?PR?CORRECTCHGDFRC?GASGAUGEV4_12 + CODE 4531H 00D3H UNIT ?PR?E2PROMBKCHECK?EXTE2PROM + CODE 4604H 00C4H UNIT ?PR?PROTECTOV?PROTECT + CODE 46C8H 00C1H UNIT ?PR?MCUFLASHPROCESS?MCUFLASH + CODE 4789H 00BDH UNIT ?PR?UART0CALICURRENT?UARTAPP + CODE 4846H 00BCH UNIT ?PR?PROTECTUV?PROTECT + CODE 4902H 00BCH UNIT ?PR?PROTECTOTC?PROTECT + CODE 49BEH 00BCH UNIT ?PR?PROTECTUTC?PROTECT + CODE 4A7AH 00BCH UNIT ?PR?PROTECTOTD?PROTECT + CODE 4B36H 00BCH UNIT ?PR?PROTECTUTD?PROTECT + CODE 4BF2H 00BAH UNIT ?PR?BALPROCESS?BALANCE + CODE 4CACH 00B3H UNIT ?PR?OFFSETCALCULATE?CALCULATE + CODE 4D5FH 00ADH UNIT ?PR?LEDDISPLAY?LED + CODE 4E0CH 00ACH UNIT ?PR?E2PROMBKPROCESS?EXTE2PROM + CODE 4EB8H 00ABH UNIT ?PR?INTERRUPTUART0APPTX?UARTAPP + CODE 4F63H 00ABH UNIT ?PR?_AFEWRITEREG?AFE + CODE 500EH 00A7H UNIT ?PR?UART0WRCMDPROCESS?UARTAPP + CODE 50B5H 00A2H UNIT ?PR?KEYSCAN?KEYSCAN + CODE 5157H 00A1H UNIT ?PR?SYSPARAINIT?INITIAL + CODE 51F8H 009CH UNIT ?PR?_RTCMODIFYTIME?RTC + CODE 5294H 0097H UNIT ?PR?_INTERRUPTUART0APPRX?UARTAPP + CODE 532BH 0097H UNIT ?PR?_MCUFLASHWRITE?MCUFLASH + CODE 53C2H 008EH UNIT ?PR?LOWPOWERCHECK?LOWPOWER + CODE 5450H 008DH UNIT ?PR?_RTCINITTIME?RTC + CODE 54DDH 008CH UNIT ?PR?_MCUFLASHWRSECTOR?MCUFLASH + CODE 5569H 0087H UNIT ?PR?AFEINIT?AFE + CODE 55F0H 0086H UNIT ?PR?AFEINITREG?AFE + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 6 + + + CODE 5676H 0081H UNIT ?PR?_MCUPWM0SET?MCULIB + CODE 56F7H 0081H UNIT ?PR?_MCUPWM1SET?MCULIB + CODE 5778H 0081H UNIT ?PR?_MCUPWM2SET?MCULIB + CODE 57F9H 007DH UNIT ?PR?E2PROMINIT?EXTE2PROM + CODE 5876H 0078H UNIT ?PR?MAIN?MAIN + CODE 58EEH 0076H UNIT ?PR?PROTECTOCRECOVER?PROTECT + CODE 5964H 0070H UNIT ?PR?_UART0WRITEINFO?UARTAPP + CODE 59D4H 006FH UNIT ?PR?UART1RDE2PROM?EXTE2PROM + CODE 5A43H 006FH UNIT ?PR?UART2RDE2PROM?EXTE2PROM + CODE 5AB2H 006DH UNIT ?PR?CALIVOLTAGE?CALIBRATE + CODE 5B1FH 006CH UNIT ?PR?E2PROMERASE?EXTE2PROM + CODE 5B8BH 006BH UNIT ?PR?_AFEREADREG?AFE + CODE 5BF6H 006BH UNIT ?PR?INTERRUPTINT4?INTERRUPT + CODE 5C61H 0069H UNIT ?PR?UART0RDE2PROM?EXTE2PROM + CODE 5CCAH 0066H UNIT ?PR?KEYSWITCHSPEED?KEYAPP + CODE 5D30H 0066H UNIT ?PR?RAMCHECKPROCESS?MCULIB + CODE 5D96H 0063H UNIT ?PR?_UART0READINFO?UARTAPP + CODE 5DF9H 0061H UNIT ?PR?AFERAMCHECK?AFE + CODE 5E5AH 005FH UNIT ?PR?_E2PROMWRITE?EXTE2PROM + CODE 5EB9H 005FH UNIT ?PR?_E2PROMREAD?EXTE2PROM + CODE 5F18H 005FH UNIT ?PR?_MCUFLASHREAD?MCUFLASH + CODE 5F77H 005DH UNIT ?PR?_GETCYCLEGAIN?GASGAUGEV4_12 + CODE 5FD4H 005BH UNIT ?PR?_RTCWRITE?RTC + CODE 602FH 005BH UNIT ?PR?_RTCREAD?RTC + CODE 608AH 005AH UNIT ?PR?_MCUFLASHDATACHECK?MCUFLASH + CODE 60E4H 0059H UNIT ?PR?PROTECTOCC?PROTECT + CODE 613DH 0059H UNIT ?PR?PROTECTOCD1?PROTECT + CODE 6196H 0059H UNIT ?PR?PROTECTOCD2?PROTECT + CODE 61EFH 0054H UNIT ?PR?UART0CALIRTC?UARTAPP + CODE 6243H 0052H UNIT ?PR?UART0CALIVOLTAGE?UARTAPP + CODE 6295H 0051H UNIT ?PR?_MCUCLOCKSET?MCULIB + CODE 62E6H 0051H UNIT ?PR?INTERRUPTUART0?UART + CODE 6337H 0051H UNIT ?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 + CODE 6388H 004FH UNIT ?PR?CALIPROCESS?CALIBRATE + CODE 63D7H 004FH UNIT ?PR?PORPROTECTOTC?PORSELFTEST + CODE 6426H 004FH UNIT ?PR?PORPROTECTUTC?PORSELFTEST + CODE 6475H 004FH UNIT ?PR?PORPROTECTOTD?PORSELFTEST + CODE 64C4H 004FH UNIT ?PR?PORPROTECTUTD?PORSELFTEST + CODE 6513H 004EH UNIT ?PR?LOADCHECK?CHARGERLOAD + CODE 6561H 004CH UNIT ?PR?INITIAL?INITIAL + CODE 65ADH 004CH UNIT ?PR?E2PROMBKRTC?EXTE2PROM + CODE 65F9H 004CH UNIT ?PR?UART1RDRTC?EXTE2PROM + CODE 6645H 004CH UNIT ?PR?UART2RDRTC?EXTE2PROM + CODE 6691H 004AH UNIT ?PR?AFEGETVOL?CALCULATE + CODE 66DBH 004AH UNIT ?PR?MOSSTATUSCHECK?MOSCTRL + CODE 6725H 0049H UNIT ?PR?UART0CALITS1?UARTAPP + CODE 676EH 0049H UNIT ?PR?UART0CALITS2?UARTAPP + CODE 67B7H 0049H UNIT ?PR?CHGERCHECK?CHARGERLOAD + CODE 6800H 0048H UNIT ?CO?UARTAPP + CODE 6848H 0048H UNIT ?PR?AFEGETTEMPE?CALCULATE + CODE 6890H 0048H UNIT ?PR?_DELAY1MS?MCULIB + CODE 68D8H 0048H UNIT ?PR?PORPROTECTOV?PORSELFTEST + CODE 6920H 0048H UNIT ?PR?PORPROTECTUV?PORSELFTEST + CODE 6968H 0046H UNIT ?PR?UART0RDRTC?EXTE2PROM + CODE 69AEH 0045H UNIT ?PR?UART0WRITEMANUFACTURE?UARTAPP + CODE 69F3H 0045H UNIT ?PR?CALITS1?CALIBRATE + CODE 6A38H 0045H UNIT ?PR?CALITS2?CALIBRATE + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 7 + + + CODE 6A7DH 0044H UNIT ?PR?CALIRTCTIME?CALIBRATE + CODE 6AC1H 0044H UNIT ?C?LDIV + CODE 6B05H 0043H UNIT ?PR?SYSTEMINTOSLEEP?LOWPOWER + CODE 6B48H 0042H UNIT ?PR?INITVAR?INITIAL + CODE 6B8AH 0041H UNIT ?PR?E2PROMBKBOOT?EXTE2PROM + CODE 6BCBH 0040H UNIT ?PR?WAKEUPPROCESS?LOWPOWER + CODE 6C0BH 0040H UNIT ?PR?LOWPOWERPROCESS?LOWPOWER + CODE 6C4BH 003FH UNIT ?PR?_LEDGETDISNUM?LED + CODE 6C8AH 003FH UNIT ?PR?_AFEBALCTL?AFE + CODE 6CC9H 003DH UNIT ?PR?AFERDFLG?AFE + CODE 6D06H 003CH UNIT ?PR?AFECLRFLG?AFE + CODE 6D42H 003BH UNIT ?PR?CALICURRENTGAIN?CALIBRATE + CODE 6D7DH 003BH UNIT ?PR?PORSELFTEST?PORSELFTEST + CODE 6DB8H 0037H UNIT ?PR?UART0READSUBCLASSID?UARTAPP + CODE 6DEFH 0036H UNIT ?PR?UART0CALICUROFFSET?UARTAPP + CODE 6E25H 0035H UNIT ?PR?CTOCHECKVOL?BALANCE + CODE 6E5AH 0035H UNIT ?PR?_MCUFLASHWRONEBYTE?MCUFLASH + CODE 6E8FH 0035H UNIT ?PR?GASGAUGEIDLE?GASGAUGEV4_12 + CODE 6EC4H 0034H UNIT ?CO?CALCULATE + CODE 6EF8H 0033H UNIT ?PR?_MEMORYCOPY?MCULIB + CODE 6F2BH 0030H UNIT ?PR?KEYPROCESS?KEYAPP + CODE 6F5BH 002DH UNIT ?PR?MOSCTRL?MOSCTRL + CODE 6F88H 002CH UNIT ?PR?SYSTEMRESETPROCESS?MCULIB + CODE 6FB4H 002BH UNIT ?PR?INITGPIO?INITIAL + CODE 6FDFH 002AH UNIT ?PR?_MEMORYSET?MCULIB + CODE 7009H 0027H UNIT ?PR?_MCUFLASHCHECKFLG?MCUFLASH + CODE 7030H 0027H UNIT ?PR?_TWICHECKSTATUS?TWI + CODE 7057H 0026H UNIT ?PR?AFEENTERPD?AFE + CODE 707DH 0026H UNIT ?PR?CTOTURNONCHECK?BALANCE + CODE 70A3H 0026H UNIT ?PR?_MCUFLASHBLANKCHECK?MCUFLASH + CODE 70C9H 0024H UNIT ?PR?INTERRUPTTIMER3APP?INTERRUPTAPP + CODE 70EDH 0020H UNIT ?C_C51STARTUP + CODE 710DH 001FH UNIT ?PR?SYSTEMINTOPD?LOWPOWER + CODE 712CH 001FH UNIT ?PR?PROTECTPROCESS?PROTECT + CODE 714BH 001EH UNIT ?PR?INITIRQ?INITIAL + CODE 7169H 001DH UNIT ?PR?E2PROMTWICHECK?EXTE2PROM + CODE 7186H 001DH UNIT ?PR?RTCTWICHECK?RTC + CODE 71A3H 001DH UNIT ?PR?ISPPROCESS?BOOTAPP + CODE 71C0H 001CH UNIT ?PR?_CRC8CAL?TWI + CODE 71DCH 001CH UNIT ?PR?UART0INIT?UART + CODE 71F8H 001AH UNIT ?PR?AFETWICHECK?AFE + CODE 7212H 0018H UNIT ?PR?AFERDSTATUS?AFE + CODE 722AH 0017H UNIT ?PR?_AFEALARMDIS?AFE + CODE 7241H 0017H UNIT ?PR?TWIINIT?TWI + CODE 7258H 0015H UNIT ?PR?_AFEMOSCTL?AFE + CODE 726DH 0015H UNIT ?PR?MCUFLASHWRWAITCHECK?MCUFLASH + CODE 7282H 0014H UNIT ?PR?UART0CHECK?UARTAPP + CODE 7296H 0014H UNIT ?PR?AFEINFOPROCESS?CALCULATE + CODE 72AAH 0013H UNIT ?PR?LEDAUTOOFF?LED + CODE 72BDH 0013H UNIT ?PR?AFECHGERCHECKEN?AFE + CODE 72D0H 0013H UNIT ?PR?AFECHGERCHECKDIS?AFE + CODE 72E3H 0013H UNIT ?PR?AFELOADCHECKEN?AFE + CODE 72F6H 0013H UNIT ?PR?AFELOADCHECKDIS?AFE + CODE 7309H 0013H UNIT ?PR?AFEWDTEN?AFE + CODE 731CH 0013H UNIT ?PR?AFEWDTDIS?AFE + CODE 732FH 0013H UNIT ?PR?AFEADCEN?AFE + CODE 7342H 0013H UNIT ?PR?AFEADCDIS?AFE + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 8 + + + CODE 7355H 0013H UNIT ?PR?AFECADCEN?AFE + CODE 7368H 0013H UNIT ?PR?AFECADCDIS?AFE + CODE 737BH 0013H UNIT ?PR?AFETEMPADCEN?AFE + CODE 738EH 0013H UNIT ?PR?AFETEMPADCDIS?AFE + CODE 73A1H 0012H UNIT ?PR?UART0HANDSHAKE?UARTAPP + CODE 73B3H 0012H UNIT ?PR?_AFEALARMEN?AFE + CODE 73C5H 0010H UNIT ?PR?CALICURZERO?CALIBRATE + CODE 73D5H 000CH UNIT ?PR?MCUINTOIDLE?MCULIB + CODE 73E1H 000CH UNIT ?PR?MCUINTOPD?MCULIB + CODE 73EDH 000AH UNIT ?PR?BALANCEPROCESS?BALANCE + CODE 73F7H 0006H UNIT ?CO?GASGAUGEV4_12 + 73FDH 8403H *** GAP *** + CODE F800H 0400H UNIT ?CO?DATAFLASH + + + +OVERLAY MAP OF MODULE: .\output\McuFlash_ISP (MAIN) + + +SEGMENT BIT_GROUP DATA_GROUP XDATA_GROUP + +--> CALLED SEGMENT START LENGTH START LENGTH START LENGTH +------------------------------------------------------------------------------------------------------ +?PR?INTERRUPTINT4?INTERRUPT ----- ----- ----- ----- ----- ----- + +--> ?PR?_INTERRUPTINT4APP?INTERRUPTAPP + +?PR?_INTERRUPTINT4APP?INTERRUPTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUCLOCKSET?MCULIB + +*** NEW ROOT *************************************************** + +?PR?INTERRUPTTIMER3?INTERRUPT ----- ----- ----- ----- ----- ----- + +--> ?PR?INTERRUPTTIMER3APP?INTERRUPTAPP + +?PR?INTERRUPTTIMER3APP?INTERRUPTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?KEYSCAN?KEYSCAN + +*** NEW ROOT *************************************************** + +?PR?INTERRUPTUART0?UART ----- ----- ----- ----- ----- ----- + +--> ?PR?_INTERRUPTUART0APPRX?UARTAPP + +--> ?PR?INTERRUPTUART0APPTX?UARTAPP + +?PR?_INTERRUPTUART0APPRX?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?UART0RDCMDPROCESS?UARTAPP + +--> ?PR?UART0WRCMDPROCESS?UARTAPP + +--> ?PR?UART0IAPCHECKHANDSHAKE?UARTAPP + +?PR?UART0RDCMDPROCESS?UARTAPP ----- ----- ----- ----- 02B5H 0002H + +--> ?PR?_UART0READINFO?UARTAPP + +--> ?CO?UARTAPP + +?PR?_UART0READINFO?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?_CRC8CAL?TWI ----- ----- ----- ----- ----- ----- + +--> ?CO?TWI + + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 9 + + +?PR?UART0WRCMDPROCESS?UARTAPP ----- ----- ----- ----- 02B5H 0002H + +--> ?PR?UART0WRITEMANUFACTURE?UARTAPP + +--> ?PR?UART0READSUBCLASSID?UARTAPP + +--> ?PR?UART0CALICURRENT?UARTAPP + +--> ?PR?UART0CALIVOLTAGE?UARTAPP + +--> ?PR?UART0CALICUROFFSET?UARTAPP + +--> ?PR?UART0CALITS1?UARTAPP + +--> ?PR?UART0CALITS2?UARTAPP + +--> ?PR?UART0CALIRTC?UARTAPP + +--> ?CO?UARTAPP + +--> ?PR?_UART0WRITEINFO?UARTAPP + +?PR?UART0WRITEMANUFACTURE?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0READSUBCLASSID?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0CALICURRENT?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0CALIVOLTAGE?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0CALICUROFFSET?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0CALITS1?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0CALITS2?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0CALIRTC?UARTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_CRC8CAL?TWI + +?PR?_UART0WRITEINFO?UARTAPP ----- ----- ----- ----- 02B7H 0002H + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0IAPCHECKHANDSHAKE?UARTAPP ----- ----- ----- ----- 02B5H 0002H + +*** NEW ROOT *************************************************** + +?C_C51STARTUP ----- ----- ----- ----- ----- ----- + +--> ?PR?MAIN?MAIN + +?PR?MAIN?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?INITIAL?INITIAL + +--> ?PR?KEYPROCESS?KEYAPP + +--> ?PR?AFEINFOPROCESS?CALCULATE + +--> ?PR?BALANCEPROCESS?BALANCE + +--> ?PR?PROTECTPROCESS?PROTECT + +--> ?PR?PORSELFTEST?PORSELFTEST + +--> ?PR?LOADCHECK?CHARGERLOAD + +--> ?PR?CHGERCHECK?CHARGERLOAD + +--> ?PR?MOSCTRL?MOSCTRL + +--> ?PR?PROTECTOCRECOVER?PROTECT + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 10 + + + +--> ?PR?LEDDISPLAY?LED + +--> ?PR?UART0CHECK?UARTAPP + +--> ?PR?GASGAUGEMANAGE?GASGAUGEV4_12 + +--> ?PR?AFERAMCHECK?AFE + +--> ?PR?AFETWICHECK?AFE + +--> ?PR?E2PROMTWICHECK?EXTE2PROM + +--> ?PR?RTCTWICHECK?RTC + +--> ?PR?RAMCHECKPROCESS?MCULIB + +--> ?PR?SYSPARAINIT?INITIAL + +--> ?PR?MCUFLASHWRWAITCHECK?MCUFLASH + +--> ?PR?E2PROMBKCHECK?EXTE2PROM + +--> ?PR?LOWPOWERCHECK?LOWPOWER + +--> ?PR?SYSTEMRESETPROCESS?MCULIB + +--> ?PR?ISPPROCESS?BOOTAPP + +--> ?PR?CALIPROCESS?CALIBRATE + +--> ?PR?MCUFLASHPROCESS?MCUFLASH + +--> ?PR?E2PROMBKPROCESS?EXTE2PROM + +--> ?PR?LOWPOWERPROCESS?LOWPOWER + +?PR?INITIAL?INITIAL ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?INITGPIO?INITIAL + +--> ?PR?SYSPARAINIT?INITIAL + +--> ?PR?INITVAR?INITIAL + +--> ?PR?_MCUTIMER3SET?MCULIB + +--> ?PR?UART0INIT?UART + +--> ?PR?TWIINIT?TWI + +--> ?PR?_MCUPWM2SET?MCULIB + +--> ?PR?AFEINITREG?AFE + +--> ?PR?AFEINIT?AFE + +--> ?PR?AFECLRFLG?AFE + +--> ?PR?E2PROMINIT?EXTE2PROM + +--> ?PR?_RTCINITTIME?RTC + +--> ?PR?INITIRQ?INITIAL + +?PR?SYSPARAINIT?INITIAL ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUFLASHCHECKFLG?MCUFLASH + +--> ?PR?_MCUFLASHREAD?MCUFLASH + +--> ?PR?_MCUFLASHWRITE?MCUFLASH + +?PR?_MCUFLASHCHECKFLG?MCUFLASH 002AH.3 0000H.1 ----- ----- ----- ----- + +?PR?_MCUFLASHREAD?MCUFLASH 002AH.3 0000H.1 0019H 0002H 02B9H 0004H + +?PR?_MCUFLASHWRITE?MCUFLASH 002AH.5 0000H.1 ----- ----- 02BBH 0004H + +--> ?PR?_MCUFLASHBLANKCHECK?MCUFLASH + +--> ?PR?_MCUFLASHWRSECTOR?MCUFLASH + +--> ?PR?_MCUFLASHDATACHECK?MCUFLASH + +?PR?_MCUFLASHBLANKCHECK?MCUFLASH 002AH.6 0000H.1 ----- ----- ----- ----- + +?PR?_MCUFLASHWRSECTOR?MCUFLASH 002AH.6 0000H.1 ----- ----- 02BFH 0004H + +?PR?_MCUFLASHDATACHECK?MCUFLASH 002AH.6 0000H.1 ----- ----- 02BFH 0004H + +?PR?INITVAR?INITIAL ----- ----- ----- ----- ----- ----- + +--> ?PR?_MEMORYSET?MCULIB + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 11 + + + +?PR?_MEMORYSET?MCULIB ----- ----- ----- ----- 02C5H 0002H + +?PR?_MCUTIMER3SET?MCULIB ----- ----- ----- ----- 02B9H 0005H + +?PR?_MCUPWM2SET?MCULIB ----- ----- ----- ----- 02BEH 0003H + +?PR?AFEINIT?AFE 002AH.3 0000H.1 ----- ----- 02BCH 0004H + +--> ?PR?_AFEWRITEREG?AFE + +--> ?PR?_AFEREADREG?AFE + +?PR?_AFEWRITEREG?AFE 002AH.4 0000H.1 ----- ----- 02C0H 0006H + +--> ?PR?_TWIWRITE?TWI + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?TWIINIT?TWI + +?PR?_TWIWRITE?TWI 002AH.7 0000H.1 ----- ----- 02F5H 000EH + +--> ?PR?_CRC8CAL?TWI + +--> ?PR?_TWICHECKSTATUS?TWI + +?PR?_TWICHECKSTATUS?TWI 002BH.0 0000H.1 ----- ----- ----- ----- + +?PR?_AFEREADREG?AFE 002AH.4 0000H.1 ----- ----- 02C3H 0005H + +--> ?PR?_TWIREAD?TWI + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?TWIINIT?TWI + +?PR?_TWIREAD?TWI 002AH.6 0000H.1 ----- ----- 02EBH 003AH + +--> ?PR?_TWICHECKSTATUS?TWI + +--> ?PR?_CRC8CAL?TWI + +?PR?AFECLRFLG?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?_AFEWRITEREG?AFE + +?PR?E2PROMINIT?EXTE2PROM 002AH.3 0000H.1 ----- ----- 02B9H 0008H + +--> ?PR?_E2PROMREAD?EXTE2PROM + +?PR?_E2PROMREAD?EXTE2PROM 002AH.4 0000H.1 ----- ----- 02C5H 0006H + +--> ?PR?_TWIREAD?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?_RTCINITTIME?RTC 002AH.3 0000H.1 ----- ----- 02B9H 000CH + +--> ?PR?_MEMORYSET?MCULIB + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_RTCREADTIME?RTC + +?PR?_MEMORYCOPY?MCULIB ----- ----- ----- ----- 02DBH 0002H + +?PR?_RTCREADTIME?RTC 002AH.4 0000H.1 ----- ----- 02DBH 000BH + +--> ?PR?_RTCREAD?RTC + +--> ?PR?_RTCMODIFYTIME?RTC + +?PR?_RTCREAD?RTC 002AH.5 0000H.1 ----- ----- 02E6H 0005H + +--> ?PR?_TWIREAD?TWI + +--> ?PR?_DELAY1MS?MCULIB + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 12 + + + +?PR?_RTCMODIFYTIME?RTC 002AH.5 0000H.1 ----- ----- 02E6H 000AH + +--> ?PR?_RTCWRITE?RTC + +?PR?_RTCWRITE?RTC 002AH.6 0000H.1 ----- ----- 02F0H 0005H + +--> ?PR?_TWIWRITE?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?KEYPROCESS?KEYAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?KEYSWITCHSPEED?KEYAPP + +?PR?KEYSWITCHSPEED?KEYAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUPWM2SET?MCULIB + +?PR?AFEINFOPROCESS?CALCULATE ----- ----- ----- ----- ----- ----- + +--> ?PR?AFERDFLG?AFE + +--> ?PR?AFECALCUVOL?CALCULATE + +--> ?PR?AFECALCUTEMPE?CALCULATE + +--> ?PR?AFECALCUCURR?CALCULATE + +?PR?AFERDFLG?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?AFEINIT?AFE + +?PR?AFECALCUVOL?CALCULATE ----- ----- ----- ----- 02B9H 0009H + +--> ?PR?AFEGETVOL?CALCULATE + +?PR?AFEGETVOL?CALCULATE 002AH.3 0000H.1 ----- ----- 02C2H 0001H + +--> ?PR?_AFEREADREG?AFE + +?PR?AFECALCUTEMPE?CALCULATE ----- ----- ----- ----- ----- ----- + +--> ?PR?AFEGETTEMPE?CALCULATE + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?AFEGETTEMPE?CALCULATE 002AH.3 0000H.1 ----- ----- ----- ----- + +--> ?PR?_AFEREADREG?AFE + +?PR?_CALCUTEMP?CALCULATE ----- ----- ----- ----- 02B9H 0007H + +--> ?CO?THERMISTOR + +?PR?AFECALCUCURR?CALCULATE ----- ----- ----- ----- 02B9H 0005H + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?OFFSETCALCULATE?CALCULATE + +--> ?PR?_MCUPWM2SET?MCULIB + +?PR?OFFSETCALCULATE?CALCULATE ----- ----- ----- ----- 02BEH 0003H + +--> ?CO?CALCULATE + +?PR?BALANCEPROCESS?BALANCE ----- ----- ----- ----- ----- ----- + +--> ?PR?BALTURNONCHECK?BALANCE + +--> ?PR?CTOTURNONCHECK?BALANCE + +--> ?PR?BALPROCESS?BALANCE + +?PR?BALPROCESS?BALANCE ----- ----- ----- ----- 02B9H 0002H + +--> ?PR?_AFEBALCTL?AFE + +--> ?PR?CTOCHECKVOL?BALANCE + + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 13 + + +?PR?_AFEBALCTL?AFE ----- ----- ----- ----- 02BBH 0002H + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CTOCHECKVOL?BALANCE 002AH.3 0000H.1 ----- ----- ----- ----- + +?PR?PROTECTPROCESS?PROTECT ----- ----- ----- ----- ----- ----- + +--> ?PR?PROTECTOV?PROTECT + +--> ?PR?PROTECTUV?PROTECT + +--> ?PR?PROTECTOTC?PROTECT + +--> ?PR?PROTECTUTC?PROTECT + +--> ?PR?PROTECTOTD?PROTECT + +--> ?PR?PROTECTUTD?PROTECT + +--> ?PR?PROTECTOCC?PROTECT + +--> ?PR?PROTECTOCD1?PROTECT + +--> ?PR?PROTECTOCD2?PROTECT + +?PR?PROTECTOV?PROTECT ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECLRFLG?AFE + +?PR?PORSELFTEST?PORSELFTEST ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECALCUVOL?CALCULATE + +--> ?PR?AFECALCUTEMPE?CALCULATE + +--> ?PR?PORPROTECTOV?PORSELFTEST + +--> ?PR?PORPROTECTUV?PORSELFTEST + +--> ?PR?PORPROTECTOTC?PORSELFTEST + +--> ?PR?PORPROTECTUTC?PORSELFTEST + +--> ?PR?PORPROTECTOTD?PORSELFTEST + +--> ?PR?PORPROTECTUTD?PORSELFTEST + +--> ?PR?GASGAUGEINIT?GASGAUGEV4_12 + +?PR?GASGAUGEINIT?GASGAUGEV4_12 ----- ----- ----- ----- 02B9H 0002H + +--> ?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 + +--> ?PR?GASGAUGEGETOCV?GASGAUGEV4_12 + +--> ?PR?_GASGAUGEINITSOC?GASGAUGEV4_12 + +--> ?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 + +?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 002AH.3 0000H.1 ----- ----- ----- ----- + +?PR?GASGAUGEGETOCV?GASGAUGEV4_12 ----- ----- ----- ----- 02BBH 0001H + +?PR?_GASGAUGEINITSOC?GASGAUGEV4_12 ----- ----- ----- ----- 02BBH 0002H + +?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 002AH.3 0000H.1 ----- ----- ----- ----- + +?PR?LOADCHECK?CHARGERLOAD ----- ----- ----- ----- ----- ----- + +--> ?PR?AFELOADCHECKEN?AFE + +--> ?PR?AFERDSTATUS?AFE + +--> ?PR?AFELOADCHECKDIS?AFE + +--> ?PR?AFECLRFLG?AFE + +?PR?AFELOADCHECKEN?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFERDSTATUS?AFE ----- ----- ----- ----- 02B9H 0002H + +--> ?PR?_AFEREADREG?AFE + +?PR?AFELOADCHECKDIS?AFE ----- ----- ----- ----- ----- ----- + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 14 + + + +--> ?PR?_AFEWRITEREG?AFE + +?PR?CHGERCHECK?CHARGERLOAD ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECHGERCHECKEN?AFE + +--> ?PR?AFERDSTATUS?AFE + +--> ?PR?AFECHGERCHECKDIS?AFE + +--> ?PR?AFECLRFLG?AFE + +?PR?AFECHGERCHECKEN?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFECHGERCHECKDIS?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?MOSCTRL?MOSCTRL ----- ----- ----- ----- ----- ----- + +--> ?PR?MOSSTATUSCHECK?MOSCTRL + +--> ?PR?_AFEMOSCTL?AFE + +?PR?_AFEMOSCTL?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?PROTECTOCRECOVER?PROTECT ----- ----- ----- ----- ----- ----- + +--> ?PR?AFECLRFLG?AFE + +?PR?LEDDISPLAY?LED ----- ----- ----- ----- ----- ----- + +--> ?PR?_LEDGETDISNUM?LED + +--> ?PR?LEDAUTOOFF?LED + +?PR?GASGAUGEMANAGE?GASGAUGEV4_12 ----- ----- ----- ----- ----- ----- + +--> ?PR?GASGAUGEVARIN?GASGAUGEINTER_V4_13 + +--> ?PR?CORRECTCHGDFRC?GASGAUGEV4_12 + +--> ?PR?FCCUPDATE?GASGAUGEV4_12 + +--> ?PR?DATAFILTER?GASGAUGEV4_12 + +--> ?PR?GASGAUGEVAROUT?GASGAUGEINTER_V4_13 + +?PR?CORRECTCHGDFRC?GASGAUGEV4_12 ----- ----- ----- ----- 02B9H 0002H + +--> ?PR?GASGAUGEGETOCV?GASGAUGEV4_12 + +?PR?FCCUPDATE?GASGAUGEV4_12 ----- ----- ----- ----- 02B9H 0004H + +--> ?PR?_GETCYCLEGAIN?GASGAUGEV4_12 + +?PR?DATAFILTER?GASGAUGEV4_12 002AH.3 0000H.1 ----- ----- 02B9H 0009H + +--> ?CO?GASGAUGEV4_12 + +?PR?AFERAMCHECK?AFE ----- ----- ----- ----- 02B9H 0003H + +--> ?PR?_AFEREADREG?AFE + +--> ?PR?AFEINIT?AFE + +?PR?E2PROMBKCHECK?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +?PR?ISPPROCESS?BOOTAPP ----- ----- ----- ----- ----- ----- + +--> ?PR?AFEWDTDIS?AFE + +?PR?AFEWDTDIS?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 15 + + + +?PR?CALIPROCESS?CALIBRATE ----- ----- ----- ----- ----- ----- + +--> ?PR?CALIVOLTAGE?CALIBRATE + +--> ?PR?CALICURRENTGAIN?CALIBRATE + +--> ?PR?CALICURZERO?CALIBRATE + +--> ?PR?CALITS1?CALIBRATE + +--> ?PR?CALITS2?CALIBRATE + +--> ?PR?CALIRTCTIME?CALIBRATE + +?PR?CALIVOLTAGE?CALIBRATE ----- ----- ----- ----- 02B9H 0002H + +?PR?CALITS1?CALIBRATE ----- ----- ----- ----- ----- ----- + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?CALITS2?CALIBRATE ----- ----- ----- ----- ----- ----- + +--> ?PR?_CALCUTEMP?CALCULATE + +?PR?CALIRTCTIME?CALIBRATE ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCMODIFYTIME?RTC + +?PR?MCUFLASHPROCESS?MCUFLASH 002AH.3 0000H.2 ----- ----- 02B9H 0002H + +--> ?PR?_MCUFLASHWRITE?MCUFLASH + +--> ?PR?_MCUFLASHWRONEBYTE?MCUFLASH + +?PR?E2PROMBKPROCESS?EXTE2PROM ----- ----- ----- ----- 02B9H 0001H + +--> ?PR?E2PROMERASE?EXTE2PROM + +--> ?PR?UART0RDE2PROM?EXTE2PROM + +--> ?PR?UART2RDE2PROM?EXTE2PROM + +--> ?PR?UART0RDRTC?EXTE2PROM + +--> ?PR?UART1RDRTC?EXTE2PROM + +--> ?PR?UART2RDRTC?EXTE2PROM + +--> ?PR?E2PROMBKRTC?EXTE2PROM + +--> ?PR?_E2PROMBKDATA?EXTE2PROM + +?PR?E2PROMERASE?EXTE2PROM ----- ----- ----- ----- 02BAH 000AH + +--> ?PR?_MEMORYSET?MCULIB + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?_E2PROMWRITE?EXTE2PROM 002AH.3 0000H.1 ----- ----- 02E3H 0006H + +--> ?PR?_TWIWRITE?TWI + +--> ?PR?_DELAY1MS?MCULIB + +?PR?UART0RDE2PROM?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_CRC8CAL?TWI + +?PR?UART2RDE2PROM?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_E2PROMREAD?EXTE2PROM + +--> ?PR?_CRC8CAL?TWI + +?PR?UART0RDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWI + +?PR?UART1RDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 16 + + + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWI + +?PR?UART2RDRTC?EXTE2PROM ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_CRC8CAL?TWI + +?PR?E2PROMBKRTC?EXTE2PROM ----- ----- ----- ----- 02BAH 000AH + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?_E2PROMBKDATA?EXTE2PROM ----- ----- ----- ----- 02BAH 0021H + +--> ?PR?_MEMORYCOPY?MCULIB + +--> ?PR?_RTCREADTIME?RTC + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +--> ?PR?E2PROMBKBOOT?EXTE2PROM + +?PR?E2PROMBKBOOT?EXTE2PROM ----- ----- ----- ----- 02DBH 0008H + +--> ?PR?_E2PROMWRITE?EXTE2PROM + +?PR?LOWPOWERPROCESS?LOWPOWER ----- ----- ----- ----- ----- ----- + +--> ?PR?MCUINTOIDLE?MCULIB + +--> ?PR?MCUFLASHPROCESS?MCUFLASH + +--> ?PR?SYSTEMINTOPD?LOWPOWER + +--> ?PR?SYSTEMINTOSLEEP?LOWPOWER + +--> ?PR?WAKEUPPROCESS?LOWPOWER + +?PR?SYSTEMINTOPD?LOWPOWER ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEMOSCTL?AFE + +--> ?PR?AFEENTERPD?AFE + +?PR?AFEENTERPD?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?SYSTEMINTOSLEEP?LOWPOWER ----- ----- ----- ----- ----- ----- + +--> ?PR?AFEWDTDIS?AFE + +--> ?PR?AFETEMPADCDIS?AFE + +--> ?PR?_AFEALARMEN?AFE + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?MCUINTOPD?MCULIB + +?PR?AFETEMPADCDIS?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?_AFEALARMEN?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?WAKEUPPROCESS?LOWPOWER ----- ----- ----- ----- ----- ----- + +--> ?PR?_MCUCLOCKSET?MCULIB + +--> ?PR?_DELAY1MS?MCULIB + +--> ?PR?_AFEALARMDIS?AFE + +--> ?PR?AFETEMPADCEN?AFE + +--> ?PR?AFEWDTEN?AFE + + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 17 + + +?PR?_AFEALARMDIS?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFETEMPADCEN?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + +?PR?AFEWDTEN?AFE ----- ----- ----- ----- ----- ----- + +--> ?PR?_AFEWRITEREG?AFE + + + +SYMBOL TABLE OF MODULE: .\output\McuFlash_ISP (MAIN) + + VALUE TYPE NAME + ---------------------------------- + + ------- MODULE MAIN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:5876H PUBLIC main + D:00B1H PUBLIC RSTSTAT + ------- PROC MAIN + C:5876H LINE# 21 + C:5876H LINE# 22 + C:5876H LINE# 23 + C:5879H LINE# 25 + C:5879H LINE# 26 + C:5879H LINE# 27 + C:587CH LINE# 29 + C:587FH LINE# 30 + C:587FH LINE# 31 + C:5882H LINE# 33 + C:5884H LINE# 34 + C:5887H LINE# 36 + C:588AH LINE# 38 + C:588DH LINE# 40 + C:5890H LINE# 42 + C:5893H LINE# 44 + C:5896H LINE# 46 + C:5899H LINE# 48 + C:589CH LINE# 50 + C:589FH LINE# 53 + C:58A2H LINE# 63 + C:58A2H LINE# 65 + C:58A5H LINE# 66 + C:58A5H LINE# 67 + C:58A7H LINE# 68 + C:58AAH LINE# 70 + C:58ADH LINE# 72 + C:58B0H LINE# 73 + C:58B3H LINE# 74 + C:58B6H LINE# 76 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 18 + + + C:58BBH LINE# 77 + C:58BBH LINE# 78 + C:58BEH LINE# 79 + C:58BEH LINE# 81 + C:58C1H LINE# 83 + C:58C4H LINE# 85 + C:58C7H LINE# 88 + C:58C7H LINE# 90 + C:58CAH LINE# 92 + C:58CDH LINE# 94 + C:58D0H LINE# 96 + C:58D3H LINE# 98 + C:58D6H LINE# 100 + C:58D9H LINE# 102 + C:58E3H LINE# 103 + C:58EBH LINE# 105 + ------- ENDPROC MAIN + ------- ENDMOD MAIN + + ------- MODULE INITIAL + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:714BH PUBLIC InitIRQ + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00A9H PUBLIC IEN1 + D:00E8H PUBLIC EXF0 + D:00D8H PUBLIC EXF1 + D:00E1H PUBLIC P0CR + D:00E2H PUBLIC P1CR + D:00E3H PUBLIC P2CR + D:00E4H PUBLIC P3CR + D:00BAH PUBLIC IENC + C:6B48H PUBLIC InitVar + C:6FB4H PUBLIC InitGPIO + B:00A8H.4 PUBLIC ES0 + B:00A8H.5 PUBLIC ET3 + D:0086H PUBLIC INSCON + B:0088H.7 PUBLIC TF3 + C:6561H PUBLIC Initial + C:5157H PUBLIC SysParaInit + D:00E9H PUBLIC P0PCR + D:00EAH PUBLIC P1PCR + D:00EBH PUBLIC P2PCR + D:00ECH PUBLIC P3PCR + ------- PROC INITVAR + C:6B48H LINE# 18 + C:6B48H LINE# 19 + C:6B48H LINE# 20 + C:6B4EH LINE# 21 + C:6B59H LINE# 22 + C:6B63H LINE# 23 + C:6B6DH LINE# 24 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 19 + + + C:6B75H LINE# 26 + C:6B77H LINE# 27 + C:6B79H LINE# 28 + C:6B7FH LINE# 29 + C:6B81H LINE# 30 + C:6B83H LINE# 32 + C:6B89H LINE# 33 + ------- ENDPROC INITVAR + ------- PROC SYSPARAINIT + C:5157H LINE# 41 + C:5157H LINE# 42 + C:5157H LINE# 43 + C:5160H LINE# 44 + C:5160H LINE# 45 + C:516CH LINE# 46 + C:5175H LINE# 47 + C:5175H LINE# 48 + C:517DH LINE# 49 + C:517DH LINE# 50 + C:517FH LINE# 51 + C:5188H LINE# 52 + C:5188H LINE# 53 + C:5195H LINE# 54 + C:519CH LINE# 55 + C:519EH LINE# 57 + C:519EH LINE# 58 + C:51A1H LINE# 60 + C:51A1H LINE# 62 + C:51ABH LINE# 63 + C:51B5H LINE# 64 + C:51C1H LINE# 65 + C:51D0H LINE# 67 + C:51D8H LINE# 69 + C:51E1H LINE# 70 + C:51E1H LINE# 71 + C:51E4H LINE# 72 + C:51E5H LINE# 73 + C:51F0H LINE# 74 + C:51F0H LINE# 75 + C:51F3H LINE# 76 + C:51F4H LINE# 78 + C:51F4H LINE# 79 + C:51F7H LINE# 80 + C:51F7H LINE# 81 + ------- ENDPROC SYSPARAINIT + ------- PROC INITIRQ + C:714BH LINE# 89 + C:714BH LINE# 90 + C:714BH LINE# 91 + C:714DH LINE# 93 + C:714FH LINE# 102 + C:7158H LINE# 103 + C:715AH LINE# 105 + C:715DH LINE# 106 + C:7160H LINE# 107 + C:7163H LINE# 108 + C:7166H LINE# 110 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 20 + + + C:7168H LINE# 111 + ------- ENDPROC INITIRQ + ------- PROC INITGPIO + C:6FB4H LINE# 139 + C:6FB4H LINE# 140 + C:6FB4H LINE# 142 + C:6FB7H LINE# 143 + C:6FBAH LINE# 144 + C:6FBDH LINE# 146 + C:6FC0H LINE# 147 + C:6FC3H LINE# 148 + C:6FC6H LINE# 150 + C:6FC9H LINE# 151 + C:6FCCH LINE# 152 + C:6FCFH LINE# 154 + C:6FD2H LINE# 155 + C:6FD5H LINE# 156 + C:6FD8H LINE# 160 + C:6FDBH LINE# 161 + C:6FDEH LINE# 505 + ------- ENDPROC INITGPIO + ------- PROC INITIAL + C:6561H LINE# 513 + C:6561H LINE# 514 + C:6561H LINE# 515 + C:6566H LINE# 517 + C:6569H LINE# 521 + C:656CH LINE# 523 + C:656FH LINE# 525 + C:6578H LINE# 528 + C:657BH LINE# 539 + C:657EH LINE# 541 + C:6587H LINE# 543 + C:658AH LINE# 544 + C:658FH LINE# 545 + C:658FH LINE# 546 + C:6591H LINE# 547 + C:6591H LINE# 548 + C:6594H LINE# 550 + C:6597H LINE# 551 + C:6597H LINE# 552 + C:659CH LINE# 553 + C:659CH LINE# 554 + C:659EH LINE# 555 + C:659EH LINE# 557 + C:65A7H LINE# 558 + C:65A7H LINE# 559 + C:65A9H LINE# 560 + C:65A9H LINE# 561 + C:65A9H LINE# 563 + C:65ACH LINE# 564 + ------- ENDPROC INITIAL + ------- ENDMOD INITIAL + + ------- MODULE INTERRUPTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 21 + + + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + X:03FEH PUBLIC ucTimer1s + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:102EH PUBLIC _InterruptINT4App + B:002DH.3 PUBLIC bTimer5msFlg + X:03FFH PUBLIC ucTimer50ms + B:002DH.4 PUBLIC bTimer1sFlg + C:70C9H PUBLIC InterruptTimer3App + B:002DH.5 PUBLIC bTimer50msFlg + ------- PROC _INTERRUPTINT4APP + D:0007H SYMBOL IntSource + C:102EH LINE# 24 + C:102EH LINE# 25 + C:102EH LINE# 26 + C:1032H LINE# 27 + C:1032H LINE# 28 + C:1038H LINE# 29 + C:1038H LINE# 30 + C:103DH LINE# 31 + C:103FH LINE# 32 + C:103FH LINE# 33 + C:1040H LINE# 34 + C:1044H LINE# 35 + C:1044H LINE# 36 + C:104AH LINE# 37 + C:104AH LINE# 38 + C:104FH LINE# 39 + C:1051H LINE# 40 + C:1051H LINE# 41 + C:1051H LINE# 42 + ------- ENDPROC _INTERRUPTINT4APP + ------- PROC INTERRUPTTIMER3APP + C:70C9H LINE# 51 + C:70C9H LINE# 52 + C:70C9H LINE# 54 + C:70CBH LINE# 56 + C:70D6H LINE# 57 + C:70D6H LINE# 58 + C:70D8H LINE# 59 + C:70DAH LINE# 60 + C:70DAH LINE# 62 + C:70E5H LINE# 63 + C:70E5H LINE# 64 + C:70E7H LINE# 65 + C:70E9H LINE# 66 + C:70E9H LINE# 68 + C:70ECH LINE# 69 + ------- ENDPROC INTERRUPTTIMER3APP + ------- ENDMOD INTERRUPTAPP + + ------- MODULE LED + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 22 + + + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:6C4BH PUBLIC _LedGetDisNum + B:00A0H.0 PUBLIC P2_0 + B:00A0H.1 PUBLIC P2_1 + B:00A0H.2 PUBLIC P2_2 + B:00A0H.3 PUBLIC P2_3 + B:00A0H.4 PUBLIC P2_4 + X:053CH PUBLIC ucLedChgFlickCnt + B:00B0H.5 PUBLIC P3_5 + X:053DH PUBLIC ucLedBleFlickCnt + X:053EH PUBLIC ucLedTimeCnt + B:002EH.1 PUBLIC bLedDisFlg + B:002EH.2 PUBLIC bLedDisBleFlg + C:72AAH PUBLIC LedAutoOff + C:4D5FH PUBLIC LedDisplay + ------- PROC _LEDGETDISNUM + D:0006H SYMBOL Rsoc + C:6C4BH LINE# 24 + C:6C4BH LINE# 25 + C:6C4BH LINE# 26 + C:6C54H LINE# 27 + C:6C54H LINE# 28 + C:6C57H LINE# 29 + C:6C57H LINE# 30 + C:6C60H LINE# 31 + C:6C60H LINE# 32 + C:6C63H LINE# 33 + C:6C63H LINE# 34 + C:6C6CH LINE# 35 + C:6C6CH LINE# 36 + C:6C6FH LINE# 37 + C:6C6FH LINE# 38 + C:6C78H LINE# 39 + C:6C78H LINE# 40 + C:6C7BH LINE# 41 + C:6C7BH LINE# 42 + C:6C84H LINE# 43 + C:6C84H LINE# 44 + C:6C87H LINE# 45 + C:6C87H LINE# 47 + C:6C87H LINE# 48 + C:6C89H LINE# 49 + C:6C89H LINE# 50 + ------- ENDPROC _LEDGETDISNUM + ------- PROC LEDAUTOOFF + C:72AAH LINE# 59 + C:72AAH LINE# 60 + C:72AAH LINE# 61 + C:72ADH LINE# 62 + C:72ADH LINE# 63 + C:72B8H LINE# 64 + C:72B8H LINE# 65 + C:72BAH LINE# 66 + C:72BCH LINE# 67 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 23 + + + C:72BCH LINE# 68 + C:72BCH LINE# 69 + ------- ENDPROC LEDAUTOOFF + ------- PROC LEDDISPLAY + ------- DO + D:0007H SYMBOL LedDisNum + ------- ENDDO + C:4D5FH LINE# 80 + C:4D5FH LINE# 81 + C:4D5FH LINE# 84 + C:4D62H LINE# 85 + C:4D62H LINE# 86 + C:4D6DH LINE# 87 + C:4D6DH LINE# 88 + C:4D6FH LINE# 89 + C:4D74H LINE# 90 + C:4D74H LINE# 91 + C:4D76H LINE# 93 + C:4D76H LINE# 94 + C:4D78H LINE# 95 + C:4D78H LINE# 97 + C:4D7BH LINE# 98 + C:4D7BH LINE# 99 + C:4D86H LINE# 100 + C:4D86H LINE# 101 + C:4D88H LINE# 102 + C:4D8DH LINE# 103 + C:4D8DH LINE# 104 + C:4D8FH LINE# 106 + C:4D8FH LINE# 107 + C:4D91H LINE# 108 + C:4D91H LINE# 110 + C:4D94H LINE# 111 + C:4D94H LINE# 112 + C:4D9FH LINE# 113 + C:4DA2H LINE# 114 + C:4DA2H LINE# 115 + C:4DAFH LINE# 116 + C:4DAFH LINE# 117 + C:4DB3H LINE# 118 + C:4DB3H LINE# 119 + C:4DB8H LINE# 120 + C:4DBAH LINE# 121 + C:4DBEH LINE# 122 + C:4DBEH LINE# 123 + C:4DC3H LINE# 124 + C:4DC5H LINE# 125 + C:4DC7H LINE# 126 + C:4DCBH LINE# 127 + C:4DCBH LINE# 128 + C:4DD0H LINE# 129 + C:4DD2H LINE# 130 + C:4DD4H LINE# 131 + C:4DD6H LINE# 132 + C:4DDAH LINE# 133 + C:4DDAH LINE# 134 + C:4DDFH LINE# 135 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 24 + + + C:4DE1H LINE# 136 + C:4DE3H LINE# 137 + C:4DE5H LINE# 138 + C:4DE7H LINE# 139 + C:4DECH LINE# 140 + C:4DECH LINE# 141 + C:4DF9H LINE# 142 + C:4DF9H LINE# 143 + C:4DFBH LINE# 145 + C:4DFBH LINE# 146 + C:4E08H LINE# 147 + C:4E08H LINE# 149 + C:4E0BH LINE# 150 + ------- ENDPROC LEDDISPLAY + ------- ENDMOD LED + + ------- MODULE KEYAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + D:00B7H PUBLIC PWM2CON + C:6F2BH PUBLIC KeyProcess + B:0080H.3 PUBLIC P0_3 + C:5CCAH PUBLIC KeySwitchSpeed + X:053FH PUBLIC ucDsgingSpeed + ------- PROC KEYSWITCHSPEED + C:5CCAH LINE# 20 + C:5CCAH LINE# 21 + C:5CCAH LINE# 22 + C:5CCCH LINE# 23 + C:5CCEH LINE# 24 + C:5CD0H LINE# 25 + C:5CD3H LINE# 26 + C:5CD3H LINE# 27 + C:5CD9H LINE# 28 + C:5CD9H LINE# 29 + C:5CDBH LINE# 30 + C:5CDDH LINE# 31 + C:5CEDH LINE# 32 + C:5CF0H LINE# 33 + C:5CF1H LINE# 34 + C:5CF8H LINE# 35 + C:5CF8H LINE# 36 + C:5CFBH LINE# 37 + C:5CFDH LINE# 38 + C:5D0AH LINE# 39 + C:5D0DH LINE# 40 + C:5D0EH LINE# 42 + C:5D0EH LINE# 43 + C:5D13H LINE# 44 + C:5D15H LINE# 45 + C:5D25H LINE# 46 + C:5D28H LINE# 47 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 25 + + + C:5D28H LINE# 48 + C:5D29H LINE# 50 + C:5D29H LINE# 51 + C:5D2BH LINE# 52 + C:5D2DH LINE# 53 + C:5D2FH LINE# 54 + C:5D2FH LINE# 55 + ------- ENDPROC KEYSWITCHSPEED + ------- PROC KEYPROCESS + C:6F2BH LINE# 64 + C:6F2BH LINE# 65 + C:6F2BH LINE# 66 + C:6F2EH LINE# 67 + C:6F2EH LINE# 68 + C:6F30H LINE# 69 + C:6F41H LINE# 70 + C:6F41H LINE# 71 + C:6F41H LINE# 72 + C:6F44H LINE# 73 + C:6F45H LINE# 75 + C:6F45H LINE# 76 + C:6F47H LINE# 77 + C:6F4CH LINE# 78 + C:6F4DH LINE# 80 + C:6F4DH LINE# 81 + C:6F4FH LINE# 82 + C:6F50H LINE# 84 + C:6F50H LINE# 85 + C:6F52H LINE# 86 + C:6F55H LINE# 87 + C:6F55H LINE# 88 + C:6F57H LINE# 89 + C:6F58H LINE# 91 + C:6F58H LINE# 92 + C:6F5AH LINE# 93 + C:6F5AH LINE# 94 + C:6F5AH LINE# 96 + C:6F5AH LINE# 97 + C:6F5AH LINE# 98 + C:6F5AH LINE# 99 + C:6F5AH LINE# 100 + ------- ENDPROC KEYPROCESS + ------- ENDMOD KEYAPP + + ------- MODULE LOWPOWER + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:05E8H PUBLIC ucSleepTimerCnt + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + B:00C8H.6 PUBLIC ENTWI + D:00B7H PUBLIC PWM2CON + B:002CH.3 PUBLIC bPDFlg + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 26 + + + B:00A0H.0 PUBLIC P2_0 + B:0080H.3 PUBLIC P0_3 + B:00A0H.1 PUBLIC P2_1 + B:00A0H.2 PUBLIC P2_2 + B:00A0H.3 PUBLIC P2_3 + D:00D8H PUBLIC EXF1 + B:00A0H.4 PUBLIC P2_4 + B:00A0H.5 PUBLIC P2_5 + X:05E9H PUBLIC ucPDTimerCnt + C:6B05H PUBLIC SystemIntoSleep + C:53C2H PUBLIC LowPowerCheck + B:002CH.4 PUBLIC bPCEnterPDFlg + C:6C0BH PUBLIC LowPowerProcess + C:6BCBH PUBLIC WakeUpProcess + D:00B1H PUBLIC RSTSTAT + C:710DH PUBLIC SystemIntoPD + B:00A8H.4 PUBLIC ES0 + B:00A8H.5 PUBLIC ET3 + X:05EAH PUBLIC ucResetFlag + B:002CH.5 PUBLIC bWakeupFlg + B:002CH.6 PUBLIC bSleepFlg + ------- PROC WAKEUPPROCESS + C:6BCBH LINE# 26 + C:6BCBH LINE# 27 + C:6BCBH LINE# 28 + C:6BCEH LINE# 29 + C:6BCEH LINE# 30 + C:6BD0H LINE# 31 + C:6BD3H LINE# 32 + C:6BD3H LINE# 33 + C:6BD8H LINE# 34 + C:6BDAH LINE# 36 + C:6BDCH LINE# 37 + C:6BE1H LINE# 38 + C:6BE6H LINE# 41 + C:6BE8H LINE# 43 + C:6BEAH LINE# 44 + C:6BECH LINE# 46 + C:6BF1H LINE# 47 + C:6BF4H LINE# 48 + C:6BF7H LINE# 49 + C:6BF7H LINE# 50 + C:6BFCH LINE# 51 + C:6BFEH LINE# 52 + C:6C02H LINE# 53 + C:6C06H LINE# 54 + C:6C0AH LINE# 55 + C:6C0AH LINE# 56 + ------- ENDPROC WAKEUPPROCESS + ------- PROC SYSTEMINTOPD + C:710DH LINE# 65 + C:710DH LINE# 66 + C:710DH LINE# 67 + C:710DH LINE# 68 + C:710DH LINE# 69 + C:7110H LINE# 71 + C:7112H LINE# 72 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 27 + + + C:711FH LINE# 73 + C:7121H LINE# 74 + C:7126H LINE# 76 + C:7129H LINE# 77 + ------- ENDPROC SYSTEMINTOPD + ------- PROC SYSTEMINTOSLEEP + C:6B05H LINE# 87 + C:6B05H LINE# 88 + C:6B05H LINE# 89 + C:6B12H LINE# 90 + C:6B14H LINE# 91 + C:6B16H LINE# 93 + C:6B19H LINE# 94 + C:6B1CH LINE# 95 + C:6B21H LINE# 96 + C:6B23H LINE# 97 + C:6B26H LINE# 98 + C:6B29H LINE# 99 + C:6B29H LINE# 100 + C:6B2BH LINE# 101 + C:6B2DH LINE# 103 + C:6B2DH LINE# 104 + C:6B2FH LINE# 105 + C:6B2FH LINE# 106 + C:6B34H LINE# 108 + C:6B36H LINE# 110 + C:6B38H LINE# 118 + C:6B3AH LINE# 119 + C:6B3DH LINE# 120 + C:6B42H LINE# 121 + C:6B44H LINE# 123 + C:6B47H LINE# 124 + ------- ENDPROC SYSTEMINTOSLEEP + ------- PROC LOWPOWERCHECK + C:53C2H LINE# 135 + C:53C2H LINE# 136 + C:53C2H LINE# 137 + C:53CEH LINE# 138 + C:53CEH LINE# 139 + C:53D0H LINE# 140 + C:53D2H LINE# 141 + C:53D3H LINE# 142 + C:53D6H LINE# 143 + C:53D6H LINE# 144 + C:53E5H LINE# 145 + C:53E5H LINE# 146 + C:53E7H LINE# 147 + C:53E9H LINE# 148 + C:53E9H LINE# 149 + C:53EAH LINE# 150 + C:53EDH LINE# 151 + C:53EDH LINE# 152 + C:53F3H LINE# 153 + C:53F3H LINE# 154 + C:53F6H LINE# 155 + C:53F6H LINE# 156 + C:5405H LINE# 157 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 28 + + + C:5405H LINE# 158 + C:5407H LINE# 159 + C:5409H LINE# 160 + C:5409H LINE# 161 + C:540AH LINE# 163 + C:540AH LINE# 164 + C:540FH LINE# 165 + C:5427H LINE# 166 + C:5427H LINE# 167 + C:5435H LINE# 168 + C:5435H LINE# 169 + C:5437H LINE# 170 + C:5439H LINE# 171 + C:5439H LINE# 172 + C:543AH LINE# 174 + C:543AH LINE# 175 + C:543FH LINE# 176 + C:543FH LINE# 177 + C:543FH LINE# 178 + C:5440H LINE# 180 + C:5440H LINE# 181 + C:5445H LINE# 182 + C:5447H LINE# 183 + C:5447H LINE# 184 + C:5448H LINE# 186 + C:5448H LINE# 187 + C:544DH LINE# 188 + C:544FH LINE# 189 + C:544FH LINE# 190 + ------- ENDPROC LOWPOWERCHECK + ------- PROC LOWPOWERPROCESS + C:6C0BH LINE# 199 + C:6C0BH LINE# 200 + C:6C0BH LINE# 201 + C:6C11H LINE# 202 + C:6C11H LINE# 203 + C:6C13H LINE# 204 + C:6C2BH LINE# 205 + C:6C2BH LINE# 206 + C:6C2DH LINE# 207 + C:6C30H LINE# 208 + C:6C30H LINE# 209 + C:6C32H LINE# 210 + C:6C34H LINE# 211 + C:6C37H LINE# 212 + C:6C37H LINE# 213 + C:6C39H LINE# 214 + C:6C3CH LINE# 215 + C:6C3FH LINE# 216 + C:6C41H LINE# 217 + C:6C44H LINE# 218 + C:6C44H LINE# 219 + C:6C47H LINE# 220 + C:6C47H LINE# 222 + C:6C4AH LINE# 223 + ------- ENDPROC LOWPOWERPROCESS + ------- ENDMOD LOWPOWER + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 29 + + + + ------- MODULE UARTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + C:39CFH PUBLIC Uart0RdCmdProcess + D:0090H PUBLIC P1 + C:6DB8H PUBLIC Uart0ReadSubClassID + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + B:0028H.3 PUBLIC bUart0SndAckFlg + D:0080H PUBLIC P5 + B:0028H.4 PUBLIC bUart1SndAckFlg + B:0028H.5 PUBLIC bUart2SndAckFlg + X:03F1H PUBLIC ucSubClassID + C:5294H PUBLIC _InterruptUart0AppRx + C:500EH PUBLIC Uart0WrCmdProcess + C:4EB8H PUBLIC InterruptUart0AppTx + X:03F2H PUBLIC ucUartErrCode + C:6243H PUBLIC Uart0CaliVoltage + C:6725H PUBLIC Uart0CaliTS1 + C:676EH PUBLIC Uart0CaliTS2 + C:6800H PUBLIC Page1WrRdFuncTable + C:6824H PUBLIC Page2WrRdFuncTable + C:7282H PUBLIC Uart0Check + D:0099H PUBLIC SBUF + C:4789H PUBLIC Uart0CaliCurrent + C:61EFH PUBLIC Uart0CaliRTC + X:03F3H PUBLIC ucUart0SndLength + X:03F4H PUBLIC ucUart1SndLength + X:03F5H PUBLIC ucUart2SndLength + D:00B1H PUBLIC RSTSTAT + X:03F6H PUBLIC ucUart0TimeoutCnt + X:03F7H PUBLIC ucUart1TimeoutCnt + X:03F8H PUBLIC ucUart2TimeoutCnt + X:0400H PUBLIC ucUart0Buf + X:04A0H PUBLIC ucUart1Buf + X:0540H PUBLIC ucUart2Buf + B:0028H.6 PUBLIC bUart0ReadFlg + B:0028H.7 PUBLIC bUart1ReadFlg + B:0029H.0 PUBLIC bUart2ReadFlg + C:3868H PUBLIC Uart0IapCheckHandshake + B:0029H.1 PUBLIC bUart0WriteFlg + C:5D96H PUBLIC _Uart0ReadInfo + C:73A1H PUBLIC Uart0Handshake + B:0029H.2 PUBLIC bUart1WriteFlg + B:0029H.3 PUBLIC bUart2WriteFlg + C:69AEH PUBLIC Uart0WriteManufacture + C:6DEFH PUBLIC Uart0CaliCurOffset + B:0098H.4 PUBLIC REN + B:0029H.4 PUBLIC bISPFlg + C:5964H PUBLIC _Uart0WriteInfo + X:03F9H PUBLIC ucUart0BufPT + X:03FAH PUBLIC ucUart1BufPT + X:03FBH PUBLIC ucUart2BufPT + D:009AH PUBLIC SADDR + X:03FCH PUBLIC uiReceCheckSum + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 30 + + + ------- PROC UART0HANDSHAKE + C:73A1H LINE# 110 + C:73A1H LINE# 111 + C:73A1H LINE# 112 + C:73A7H LINE# 113 + C:73A7H LINE# 114 + C:73ACH LINE# 115 + C:73ADH LINE# 117 + C:73ADH LINE# 118 + C:73B2H LINE# 119 + C:73B2H LINE# 120 + ------- ENDPROC UART0HANDSHAKE + ------- PROC _UART0WRITEINFO + X:02B7H SYMBOL ptr + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:5964H LINE# 170 + C:596CH LINE# 171 + C:596CH LINE# 174 + C:598DH LINE# 175 + C:598DH LINE# 176 + C:5998H LINE# 177 + C:5998H LINE# 178 + C:599BH LINE# 179 + C:59B4H LINE# 180 + C:59BEH LINE# 181 + C:59C1H LINE# 182 + C:59C3H LINE# 183 + C:59C8H LINE# 185 + C:59CDH LINE# 186 + C:59CEH LINE# 188 + C:59CEH LINE# 189 + C:59D3H LINE# 190 + C:59D3H LINE# 191 + ------- ENDPROC _UART0WRITEINFO + ------- PROC _UART0READINFO + D:0006H SYMBOL ptr + ------- DO + D:0005H SYMBOL i + ------- ENDDO + C:5D96H LINE# 263 + C:5D96H LINE# 264 + C:5D96H LINE# 267 + C:5D9FH LINE# 268 + C:5D9FH LINE# 269 + C:5DA1H LINE# 270 + C:5DA1H LINE# 271 + C:5DADH LINE# 272 + C:5DADH LINE# 273 + C:5DB0H LINE# 274 + C:5DC2H LINE# 275 + C:5DC7H LINE# 276 + C:5DCAH LINE# 277 + C:5DE6H LINE# 279 + C:5DF8H LINE# 280 + ------- ENDPROC _UART0READINFO + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 31 + + + ------- PROC UART0WRITEMANUFACTURE + C:69AEH LINE# 346 + C:69AEH LINE# 347 + C:69AEH LINE# 348 + C:69CFH LINE# 349 + C:69CFH LINE# 350 + C:69D7H LINE# 351 + C:69D7H LINE# 352 + C:69DDH LINE# 353 + C:69DFH LINE# 354 + C:69E3H LINE# 355 + C:69E3H LINE# 356 + C:69E5H LINE# 357 + C:69E5H LINE# 358 + C:69E7H LINE# 359 + C:69ECH LINE# 360 + C:69EDH LINE# 362 + C:69EDH LINE# 363 + C:69F2H LINE# 364 + C:69F2H LINE# 365 + ------- ENDPROC UART0WRITEMANUFACTURE + ------- PROC UART0READSUBCLASSID + C:6DB8H LINE# 437 + C:6DB8H LINE# 438 + C:6DB8H LINE# 439 + C:6DD9H LINE# 440 + C:6DD9H LINE# 441 + C:6DE1H LINE# 443 + C:6DE3H LINE# 444 + C:6DE8H LINE# 445 + C:6DE9H LINE# 447 + C:6DE9H LINE# 448 + C:6DEEH LINE# 449 + C:6DEEH LINE# 450 + ------- ENDPROC UART0READSUBCLASSID + ------- PROC UART0RDCMDPROCESS + ------- DO + X:02B5H SYMBOL rdaddr + ------- ENDDO + C:39CFH LINE# 506 + C:39CFH LINE# 507 + C:39CFH LINE# 510 + C:3A23H LINE# 511 + C:3A23H LINE# 512 + C:3A23H LINE# 513 + C:3A23H LINE# 514 + C:3A23H LINE# 515 + C:3A23H LINE# 516 + C:3A23H LINE# 517 + C:3A23H LINE# 518 + C:3A23H LINE# 519 + C:3A23H LINE# 520 + C:3A23H LINE# 521 + C:3A23H LINE# 522 + C:3A33H LINE# 523 + C:3A34H LINE# 525 + C:3A34H LINE# 526 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 32 + + + C:3A3BH LINE# 527 + C:3A3CH LINE# 529 + C:3A3CH LINE# 530 + C:3A43H LINE# 531 + C:3A44H LINE# 533 + C:3A44H LINE# 534 + C:3A4BH LINE# 535 + C:3A4CH LINE# 537 + C:3A4CH LINE# 538 + C:3A53H LINE# 539 + C:3A54H LINE# 541 + C:3A54H LINE# 542 + C:3A5BH LINE# 543 + C:3A5CH LINE# 545 + C:3A5CH LINE# 546 + C:3A63H LINE# 547 + C:3A64H LINE# 549 + C:3A64H LINE# 550 + C:3A6BH LINE# 551 + C:3A6CH LINE# 553 + C:3A6CH LINE# 554 + C:3A73H LINE# 555 + C:3A74H LINE# 557 + C:3A74H LINE# 558 + C:3A7BH LINE# 559 + C:3A7CH LINE# 561 + C:3A7CH LINE# 562 + C:3A83H LINE# 563 + C:3A84H LINE# 565 + C:3A84H LINE# 566 + C:3A8BH LINE# 567 + C:3A8CH LINE# 569 + C:3A8CH LINE# 570 + C:3A93H LINE# 571 + C:3A94H LINE# 573 + C:3A94H LINE# 574 + C:3A9BH LINE# 575 + C:3A9CH LINE# 577 + C:3A9CH LINE# 578 + C:3AA3H LINE# 579 + C:3AA4H LINE# 581 + C:3AA4H LINE# 582 + C:3AADH LINE# 583 + C:3AADH LINE# 584 + C:3AAFH LINE# 585 + C:3AB5H LINE# 586 + C:3AB6H LINE# 587 + C:3AC4H LINE# 588 + C:3AC4H LINE# 589 + C:3AC6H LINE# 590 + C:3ACCH LINE# 591 + C:3ACDH LINE# 592 + C:3AD4H LINE# 593 + C:3AD4H LINE# 594 + C:3AF2H LINE# 595 + C:3AF5H LINE# 596 + C:3AF6H LINE# 597 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 33 + + + C:3AFDH LINE# 598 + C:3AFDH LINE# 599 + C:3B1BH LINE# 600 + C:3B1EH LINE# 601 + C:3B1EH LINE# 602 + C:3B1EH LINE# 603 + C:3B1EH LINE# 604 + ------- ENDPROC UART0RDCMDPROCESS + ------- PROC UART0CALIVOLTAGE + C:6243H LINE# 830 + C:6243H LINE# 831 + C:6243H LINE# 832 + C:6264H LINE# 833 + C:6264H LINE# 834 + C:6277H LINE# 836 + C:627AH LINE# 837 + C:627AH LINE# 838 + C:627FH LINE# 839 + C:6280H LINE# 841 + C:6280H LINE# 842 + C:6282H LINE# 843 + C:6289H LINE# 844 + C:628EH LINE# 845 + C:628EH LINE# 846 + C:628FH LINE# 848 + C:628FH LINE# 849 + C:6294H LINE# 850 + C:6294H LINE# 851 + ------- ENDPROC UART0CALIVOLTAGE + ------- PROC UART0CALICURRENT + C:4789H LINE# 923 + C:4789H LINE# 924 + C:4789H LINE# 925 + C:47ADH LINE# 926 + C:47ADH LINE# 930 + C:4815H LINE# 932 + C:482BH LINE# 933 + C:482BH LINE# 934 + C:4830H LINE# 935 + C:4831H LINE# 937 + C:4831H LINE# 938 + C:4833H LINE# 939 + C:483AH LINE# 940 + C:483FH LINE# 941 + C:483FH LINE# 942 + C:4840H LINE# 944 + C:4840H LINE# 945 + C:4845H LINE# 946 + C:4845H LINE# 947 + ------- ENDPROC UART0CALICURRENT + ------- PROC UART0CALICUROFFSET + C:6DEFH LINE# 950 + C:6DEFH LINE# 951 + C:6DEFH LINE# 952 + C:6E10H LINE# 953 + C:6E10H LINE# 954 + C:6E12H LINE# 955 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 34 + + + C:6E19H LINE# 957 + C:6E1EH LINE# 958 + C:6E1FH LINE# 960 + C:6E1FH LINE# 961 + C:6E24H LINE# 962 + C:6E24H LINE# 963 + ------- ENDPROC UART0CALICUROFFSET + ------- PROC UART0CALITS1 + C:6725H LINE# 1073 + C:6725H LINE# 1074 + C:6725H LINE# 1075 + C:6746H LINE# 1076 + C:6746H LINE# 1077 + C:6748H LINE# 1078 + C:675BH LINE# 1079 + C:6762H LINE# 1081 + C:6767H LINE# 1082 + C:6768H LINE# 1084 + C:6768H LINE# 1085 + C:676DH LINE# 1086 + C:676DH LINE# 1087 + ------- ENDPROC UART0CALITS1 + ------- PROC UART0CALITS2 + C:676EH LINE# 1090 + C:676EH LINE# 1091 + C:676EH LINE# 1092 + C:678FH LINE# 1093 + C:678FH LINE# 1094 + C:6791H LINE# 1095 + C:67A4H LINE# 1096 + C:67ABH LINE# 1098 + C:67B0H LINE# 1099 + C:67B1H LINE# 1101 + C:67B1H LINE# 1102 + C:67B6H LINE# 1103 + C:67B6H LINE# 1104 + ------- ENDPROC UART0CALITS2 + ------- PROC UART0CALIRTC + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:61EFH LINE# 1196 + C:61EFH LINE# 1197 + C:61EFH LINE# 1200 + C:6210H LINE# 1201 + C:6210H LINE# 1202 + C:6211H LINE# 1203 + C:6211H LINE# 1204 + C:6229H LINE# 1205 + C:622EH LINE# 1206 + C:6230H LINE# 1207 + C:6237H LINE# 1208 + C:623CH LINE# 1209 + C:623DH LINE# 1211 + C:623DH LINE# 1212 + C:6242H LINE# 1213 + C:6242H LINE# 1214 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 35 + + + ------- ENDPROC UART0CALIRTC + ------- PROC UART0WRCMDPROCESS + ------- DO + X:02B5H SYMBOL rdaddr + ------- ENDDO + C:500EH LINE# 1280 + C:500EH LINE# 1281 + C:500EH LINE# 1283 + C:503AH LINE# 1284 + C:503AH LINE# 1285 + C:503AH LINE# 1286 + C:503DH LINE# 1287 + C:503EH LINE# 1288 + C:503EH LINE# 1289 + C:5041H LINE# 1290 + C:5042H LINE# 1291 + C:5042H LINE# 1292 + C:5045H LINE# 1293 + C:5046H LINE# 1294 + C:5046H LINE# 1295 + C:5049H LINE# 1296 + C:504AH LINE# 1297 + C:504AH LINE# 1298 + C:504DH LINE# 1299 + C:504EH LINE# 1300 + C:504EH LINE# 1301 + C:5051H LINE# 1302 + C:5052H LINE# 1303 + C:5052H LINE# 1304 + C:5055H LINE# 1305 + C:5056H LINE# 1307 + C:5056H LINE# 1308 + C:5059H LINE# 1309 + C:505AH LINE# 1310 + C:505AH LINE# 1311 + C:5078H LINE# 1312 + C:507BH LINE# 1313 + C:507CH LINE# 1314 + C:507CH LINE# 1315 + C:509AH LINE# 1316 + C:509DH LINE# 1317 + C:509EH LINE# 1319 + C:509EH LINE# 1320 + C:50A5H LINE# 1321 + C:50A5H LINE# 1322 + C:50A7H LINE# 1323 + C:50A9H LINE# 1324 + C:50AEH LINE# 1325 + C:50AFH LINE# 1327 + C:50AFH LINE# 1328 + C:50B4H LINE# 1329 + C:50B4H LINE# 1330 + C:50B4H LINE# 1331 + C:50B4H LINE# 1332 + ------- ENDPROC UART0WRCMDPROCESS + ------- PROC UART0IAPCHECKHANDSHAKE + ------- DO + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 36 + + + D:0007H SYMBOL i + D:0007H SYMBOL databak + X:02B5H SYMBOL checksum + ------- ENDDO + C:3868H LINE# 1466 + C:3868H LINE# 1467 + C:3868H LINE# 1469 + C:386FH LINE# 1471 + C:3877H LINE# 1472 + C:3877H LINE# 1473 + C:387FH LINE# 1474 + C:387FH LINE# 1475 + C:3884H LINE# 1476 + C:3885H LINE# 1478 + C:3885H LINE# 1479 + C:388CH LINE# 1480 + C:3890H LINE# 1481 + C:3890H LINE# 1482 + C:3891H LINE# 1484 + C:3891H LINE# 1485 + C:38ACH LINE# 1486 + C:38ACH LINE# 1487 + C:38BFH LINE# 1488 + C:38BFH LINE# 1489 + C:38D7H LINE# 1490 + C:38D7H LINE# 1491 + C:38DFH LINE# 1492 + C:38DFH LINE# 1493 + C:38EAH LINE# 1494 + C:38EAH LINE# 1495 + C:38EFH LINE# 1496 + C:38EFH LINE# 1497 + C:38F0H LINE# 1498 + C:38F8H LINE# 1499 + C:38F8H LINE# 1500 + C:3903H LINE# 1501 + C:3903H LINE# 1502 + C:390AH LINE# 1503 + C:390AH LINE# 1504 + C:390AH LINE# 1505 + C:390BH LINE# 1507 + C:390BH LINE# 1508 + C:3910H LINE# 1509 + C:393FH LINE# 1510 + C:393FH LINE# 1511 + C:3946H LINE# 1512 + C:3946H LINE# 1514 + C:394DH LINE# 1515 + C:394DH LINE# 1516 + C:3951H LINE# 1517 + C:3953H LINE# 1519 + C:3953H LINE# 1520 + C:3955H LINE# 1521 + C:395AH LINE# 1522 + C:395AH LINE# 1524 + C:395FH LINE# 1525 + C:3965H LINE# 1527 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 37 + + + C:396AH LINE# 1528 + C:3970H LINE# 1529 + C:3973H LINE# 1531 + C:398CH LINE# 1532 + C:398CH LINE# 1533 + C:39A1H LINE# 1534 + C:39A4H LINE# 1536 + C:39B8H LINE# 1537 + C:39C9H LINE# 1539 + C:39CEH LINE# 1540 + C:39CEH LINE# 1541 + C:39CEH LINE# 1542 + ------- ENDPROC UART0IAPCHECKHANDSHAKE + ------- PROC _INTERRUPTUART0APPRX + D:0007H SYMBOL RxData + C:5294H LINE# 1729 + C:5294H LINE# 1730 + C:5294H LINE# 1731 + C:52A3H LINE# 1732 + C:52A9H LINE# 1733 + C:52AFH LINE# 1734 + C:52AFH LINE# 1735 + C:52B1H LINE# 1736 + C:52B1H LINE# 1737 + C:52B9H LINE# 1738 + C:52B9H LINE# 1739 + C:52C3H LINE# 1740 + C:52C3H LINE# 1741 + C:52C7H LINE# 1742 + C:52C7H LINE# 1743 + C:52C9H LINE# 1744 + C:52CBH LINE# 1745 + C:52CDH LINE# 1747 + C:52CDH LINE# 1748 + C:52CFH LINE# 1749 + C:52D1H LINE# 1750 + C:52D1H LINE# 1751 + C:52D3H LINE# 1752 + C:52DBH LINE# 1753 + C:52DBH LINE# 1754 + C:52E0H LINE# 1755 + C:52E0H LINE# 1756 + C:52E0H LINE# 1758 + C:52E3H LINE# 1759 + C:52E3H LINE# 1760 + C:52EBH LINE# 1761 + C:52EBH LINE# 1762 + C:52EEH LINE# 1763 + C:52EEH LINE# 1764 + C:52F0H LINE# 1765 + C:52F3H LINE# 1766 + C:52F3H LINE# 1767 + C:530CH LINE# 1768 + C:530CH LINE# 1769 + C:530FH LINE# 1770 + C:5311H LINE# 1771 + C:5316H LINE# 1772 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 38 + + + C:5316H LINE# 1773 + C:5318H LINE# 1775 + C:5318H LINE# 1776 + C:531BH LINE# 1777 + C:531BH LINE# 1778 + C:531DH LINE# 1780 + C:5322H LINE# 1781 + C:5326H LINE# 1782 + C:532AH LINE# 1783 + ------- ENDPROC _INTERRUPTUART0APPRX + ------- PROC INTERRUPTUART0APPTX + C:4EB8H LINE# 1792 + C:4EB8H LINE# 1793 + C:4EB8H LINE# 1794 + C:4EC8H LINE# 1795 + C:4EC8H LINE# 1796 + C:4EE1H LINE# 1797 + C:4EE1H LINE# 1798 + C:4EE3H LINE# 1799 + C:4EE5H LINE# 1800 + C:4EE7H LINE# 1801 + C:4EEBH LINE# 1802 + C:4EEDH LINE# 1803 + C:4EEFH LINE# 1804 + C:4EF1H LINE# 1805 + C:4EF3H LINE# 1806 + C:4EF5H LINE# 1808 + C:4EF5H LINE# 1809 + C:4EFBH LINE# 1810 + C:4F0AH LINE# 1811 + C:4F0AH LINE# 1812 + C:4F0CH LINE# 1813 + C:4F29H LINE# 1814 + C:4F29H LINE# 1815 + C:4F2BH LINE# 1816 + C:4F30H LINE# 1817 + C:4F32H LINE# 1818 + C:4F36H LINE# 1819 + C:4F38H LINE# 1820 + C:4F3AH LINE# 1821 + C:4F3CH LINE# 1822 + C:4F3EH LINE# 1823 + C:4F40H LINE# 1825 + C:4F40H LINE# 1826 + C:4F46H LINE# 1827 + C:4F55H LINE# 1828 + C:4F55H LINE# 1830 + C:4F5AH LINE# 1831 + C:4F5EH LINE# 1832 + C:4F62H LINE# 1833 + ------- ENDPROC INTERRUPTUART0APPTX + ------- PROC UART0CHECK + C:7282H LINE# 1842 + C:7282H LINE# 1843 + C:7282H LINE# 1844 + C:728DH LINE# 1845 + C:728DH LINE# 1846 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 39 + + + C:728FH LINE# 1847 + C:7293H LINE# 1848 + C:7295H LINE# 1849 + C:7295H LINE# 1850 + ------- ENDPROC UART0CHECK + ------- ENDMOD UARTAPP + + ------- MODULE MEMORY + C:0000H SYMBOL _ICE_DUMMY_ + B:0020H.2 PUBLIC bOCRC_EN + X:0024H PUBLIC E2uiLearnLowTempe + D:0080H PUBLIC P0 + D:0022H PUBLIC uiBatStatus + D:0090H PUBLIC P1 + X:001EH PUBLIC E2ulCycleThreshold + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + B:0025H.6 PUBLIC bFastDischarge + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:0023H.0 PUBLIC bOV + X:002AH PUBLIC E2ucLowPowerDeley + B:0023H.1 PUBLIC bUV + X:00B3H PUBLIC E2ulCycleThresholdCount + B:0025H.5 PUBLIC bMidDischarge + B:0020H.6 PUBLIC bOCPM + B:0025H.2 PUBLIC bCHGING + X:006DH PUBLIC E2slOCCCurrent + X:00C5H PUBLIC E2siTS0Offset + X:0087H PUBLIC E2ucLoadRDelay + X:00C7H PUBLIC E2siTS1Offset + X:0071H PUBLIC E2ucOCCDelay + X:00ABH PUBLIC E2ulDfRC + B:0025H.4 PUBLIC bSlowDischarge + B:0021H.3 PUBLIC bLEDNum0 + B:0021H.4 PUBLIC bLEDNum1 + X:00BCH PUBLIC E2uiAFEOVvol + X:002FH PUBLIC E2ucRamCheckFlg0 + X:006AH PUBLIC E2siChgEndCurr + X:0061H PUBLIC E2ucRamCheckFlg1 + B:0025H.3 PUBLIC bDSGING + X:0073H PUBLIC E2ucRamCheckFlg2 + X:008CH PUBLIC E2ucDSG1PWMRatioH + X:0088H PUBLIC E2ucRamCheckFlg3 + X:0064H PUBLIC E2uiOVRvol + X:002CH PUBLIC E2siChgBKCur + X:00B9H PUBLIC E2ucDsgEndFlg + X:008DH PUBLIC E2ucRamCheckFlg5 + X:0053H PUBLIC E2ucDeviceChem + X:0098H PUBLIC E2ucRamCheckFlg6 + B:0022H.5 PUBLIC bAFE_SC + B:0025H.0 PUBLIC bCHGMOS + B:0020H.3 PUBLIC bBAL_EN + X:001AH PUBLIC E2ulFCC + X:00A1H PUBLIC E2ucRamCheckFlg7 + X:008BH PUBLIC E2ucDSG1PWMRatioL + X:00A9H PUBLIC E2ucRamCheckFlg8 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 40 + + + X:00BAH PUBLIC E2ucRamCheckFlg9 + X:0076H PUBLIC E2uiUVRvol + X:0047H PUBLIC E2ucDeviceName + X:0090H PUBLIC E2uiTempOTCR + X:009BH PUBLIC E2uiTempOTDR + B:0021H.5 PUBLIC bTempNum + X:00C3H PUBLIC E2siCadcOffset + X:0097H PUBLIC E2ucTempRDelay + D:0026H PUBLIC ucAFEStatus + X:00AFH PUBLIC E2slDsgEndCurr + X:0094H PUBLIC E2uiTempUTCR + B:0020H.7 PUBLIC bEnEEPRomBK + X:00BFH PUBLIC E2uiVPackGain + X:00BEH PUBLIC E2ucRamCheckFlgA + X:00A4H PUBLIC E2uiBalanceVolDiff + X:009FH PUBLIC E2uiTempUTDR + X:00CAH PUBLIC E2ucRamCheckFlgB + B:0025H.1 PUBLIC bDSGMOS + X:01FEH PUBLIC E2uiCheckFlag + X:00A2H PUBLIC E2uiBalanceVol + B:0022H.4 PUBLIC bAFE_OV + X:0068H PUBLIC E2uiChgEndVol + X:00AAH PUBLIC E2ucSOC + X:0035H PUBLIC E2ucMNFName + B:0023H.2 PUBLIC bOCC + D:0020H PUBLIC uiPackConfig + X:0067H PUBLIC E2ucOVRDelay + X:002EH PUBLIC E2ucRTCBKDelay + X:0041H PUBLIC E2ulMNFDate + B:0020H.5 PUBLIC bCTO_EN + X:00B7H PUBLIC E2uiLastCCount + X:0002H PUBLIC E2uiVOC + X:0079H PUBLIC E2ucUVRDelay + X:007AH PUBLIC E2uiDsgEndVol + X:00C9H PUBLIC E2ucCalibrated + B:0026H.4 PUBLIC bAfeCHG + X:00C1H PUBLIC E2siCadcGain + B:0026H.2 PUBLIC bAfeChging + X:00CBH PUBLIC Reserved + B:0021H.0 PUBLIC bCellNum1 + X:007DH PUBLIC E2slOCD1Current + B:0022H.6 PUBLIC bCTO + B:0022H.0 PUBLIC bOTC + B:0021H.1 PUBLIC bCellNum2 + X:0082H PUBLIC E2slOCD2Current + B:0022H.1 PUBLIC bOTD + B:0021H.2 PUBLIC bCellNum3 + X:0081H PUBLIC E2ucOCD1Delay + X:0086H PUBLIC E2ucOCD2Delay + X:00A6H PUBLIC E2siBalCurrent + B:0024H.2 PUBLIC bVDQ + B:0026H.5 PUBLIC bAfeDSG + B:0022H.2 PUBLIC bUTC + X:0062H PUBLIC E2uiOVvol + X:0028H PUBLIC E2siDfilterCur + B:0026H.3 PUBLIC bAfeDsging + B:0022H.3 PUBLIC bUTD + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 41 + + + X:0000H PUBLIC E2uiPackConfigMap + X:0074H PUBLIC E2uiUVvol + X:0022H PUBLIC E2uiCycleCount + X:008EH PUBLIC E2uiTempOTC + X:0099H PUBLIC E2uiTempOTD + X:0026H PUBLIC E2Reserve + B:0021H.6 PUBLIC bChgerLock + X:0096H PUBLIC E2ucTempDelay + B:0026H.0 PUBLIC bAfeChger + X:0092H PUBLIC E2uiTempUTC + X:009DH PUBLIC E2uiTempUTD + X:0034H PUBLIC E2ucID + X:00BBH PUBLIC E2ucAFEProtectConfig + X:0032H PUBLIC E2uiHWVersion + X:005FH PUBLIC E2uiChemID + X:002BH PUBLIC E2ucChgBKDelay + X:0066H PUBLIC E2ucOVDelay + D:0024H PUBLIC uiPackStatus + B:0023H.3 PUBLIC bOCD1 + B:0023H.4 PUBLIC bOCD2 + B:0024H.0 PUBLIC bFC + B:0020H.4 PUBLIC bPF_EN + X:0072H PUBLIC E2ucOCCRDelay + X:0016H PUBLIC E2ulDesignCapacity + B:0024H.1 PUBLIC bFD + B:0020H.0 PUBLIC bSC_EN + X:0045H PUBLIC E2uiSerialNum + X:0030H PUBLIC E2uiSWVersion + X:00A8H PUBLIC E2ucBalanceDelay + X:0089H PUBLIC E2uiDSG1PWMFreq + X:0078H PUBLIC E2ucUVDelay + X:006CH PUBLIC E2ucChgEndDelay + B:0021H.7 PUBLIC bLoadLock + B:0026H.1 PUBLIC bAfeLoad + I:00A0H PUBLIC STACK + B:0020H.1 PUBLIC bOV_EN + X:007CH PUBLIC E2ucDsgEndDelay + ------- ENDMOD MEMORY + + ------- MODULE AFE + C:0000H SYMBOL _ICE_DUMMY_ + X:0200H PUBLIC uiVadcVmax + D:000FH PUBLIC uiCellVmin + D:0080H PUBLIC P0 + D:0011H PUBLIC uiCellVmax + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:55F0H PUBLIC AFEInitReg + X:0202H PUBLIC uiTempeMin + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:0204H PUBLIC uiTempeMax + B:002BH.1 PUBLIC bCADCFlg + C:732FH PUBLIC AfeADCEn + C:6D06H PUBLIC AFEClrFlg + C:7212H PUBLIC AFERdStatus + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 42 + + + D:0013H PUBLIC ucCellNum + X:0206H PUBLIC Info + C:738EH PUBLIC AfeTempADCDis + X:023CH PUBLIC slCadcCurBuf + B:002BH.2 PUBLIC bAfeErr + B:002BH.3 PUBLIC bVADCFlg + C:6CC9H PUBLIC AFERdFlg + C:722AH PUBLIC _AfeAlarmDis + C:731CH PUBLIC AfeWDTDis + B:002BH.4 PUBLIC bAfeI2CRWErrFlg + C:7258H PUBLIC _AFEMosCtl + C:737BH PUBLIC AfeTempADCEn + X:027CH PUBLIC ucTempeMiddle + C:73B3H PUBLIC _AfeAlarmEn + C:7309H PUBLIC AfeWDTEn + X:027DH PUBLIC slCadcCurrent + X:0281H PUBLIC slCadcCurAverage + C:7368H PUBLIC AfeCADCDis + C:72D0H PUBLIC AFEChgerCheckDis + C:6C8AH PUBLIC _AfeBalCtl + X:0285H PUBLIC AFE + C:7355H PUBLIC AfeCADCEn + C:72BDH PUBLIC AFEChgerCheckEn + C:5DF9H PUBLIC AFERamCheck + C:72F6H PUBLIC AFELoadCheckDis + D:00C8H PUBLIC TWICON + X:02A3H PUBLIC REG + C:7057H PUBLIC AFEEnterPD + C:5569H PUBLIC AFEInit + C:71F8H PUBLIC AFETwiCheck + C:72E3H PUBLIC AFELoadCheckEn + C:5B8BH PUBLIC _AFEReadReg + X:02B1H PUBLIC ucAfeI2CErrDelayCnt + X:02B2H PUBLIC ucCadcCnt + C:7342H PUBLIC AfeADCDis + D:0014H PUBLIC ucCellNumOffset + C:4F63H PUBLIC _AFEWriteReg + B:002BH.5 PUBLIC bAfeAlarmFlg + X:02B3H PUBLIC uiVadcVmin + ------- PROC AFETWICHECK + C:71F8H LINE# 43 + C:71F8H LINE# 44 + C:71F8H LINE# 45 + C:71FBH LINE# 46 + C:71FBH LINE# 47 + C:7206H LINE# 48 + C:7206H LINE# 49 + C:7208H LINE# 50 + C:720BH LINE# 51 + C:720BH LINE# 52 + C:720CH LINE# 54 + C:720CH LINE# 55 + C:7211H LINE# 56 + C:7211H LINE# 57 + ------- ENDPROC AFETWICHECK + ------- PROC _AFEWRITEREG + X:02C0H SYMBOL Reg + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 43 + + + X:02C1H SYMBOL Length + X:02C2H SYMBOL WrBuf + ------- DO + B:002AH.4 SYMBOL Result + X:02C4H SYMBOL Times + X:02C5H SYMBOL i + ------- ENDDO + C:4F63H LINE# 67 + C:4F71H LINE# 68 + C:4F71H LINE# 69 + C:4F73H LINE# 70 + C:4F76H LINE# 73 + C:4F7CH LINE# 74 + C:4F7CH LINE# 75 + C:4F8BH LINE# 76 + C:4F8BH LINE# 77 + C:4F98H LINE# 78 + C:4F98H LINE# 80 + C:4F98H LINE# 81 + C:4FBFH LINE# 82 + C:4FBFH LINE# 88 + C:4FC2H LINE# 89 + C:4FC2H LINE# 90 + C:4FC4H LINE# 91 + C:4FC6H LINE# 93 + C:4FC6H LINE# 94 + C:4FC9H LINE# 95 + C:4FCEH LINE# 96 + C:4FD1H LINE# 97 + C:4FD4H LINE# 98 + C:4FD4H LINE# 99 + C:4FD6H LINE# 100 + C:4FDFH LINE# 101 + C:4FDFH LINE# 102 + C:4FE1H LINE# 103 + C:4FE3H LINE# 105 + C:4FE3H LINE# 106 + C:4FE8H LINE# 107 + C:4FEEH LINE# 108 + C:4FF8H LINE# 109 + C:4FF8H LINE# 110 + C:4FFDH LINE# 111 + C:5006H LINE# 112 + C:5006H LINE# 113 + C:500BH LINE# 115 + C:500DH LINE# 116 + ------- ENDPROC _AFEWRITEREG + ------- PROC _AFEREADREG + X:02C3H SYMBOL Reg + X:02C4H SYMBOL Length + X:02C5H SYMBOL RdBuf + ------- DO + B:002AH.4 SYMBOL Result + X:02C7H SYMBOL Times + ------- ENDDO + C:5B8BH LINE# 126 + C:5B99H LINE# 127 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 44 + + + C:5B99H LINE# 128 + C:5B9BH LINE# 129 + C:5B9EH LINE# 131 + C:5BA1H LINE# 132 + C:5BA1H LINE# 133 + C:5BAEH LINE# 134 + C:5BAEH LINE# 136 + C:5BD7H LINE# 140 + C:5BDAH LINE# 141 + C:5BDAH LINE# 142 + C:5BDCH LINE# 143 + C:5BDEH LINE# 145 + C:5BDEH LINE# 146 + C:5BE1H LINE# 147 + C:5BE6H LINE# 148 + C:5BE9H LINE# 149 + C:5BECH LINE# 150 + C:5BECH LINE# 151 + C:5BEEH LINE# 152 + C:5BEEH LINE# 153 + C:5BF3H LINE# 155 + C:5BF5H LINE# 156 + ------- ENDPROC _AFEREADREG + ------- PROC AFECLRFLG + C:6D06H LINE# 165 + C:6D06H LINE# 166 + C:6D06H LINE# 167 + C:6D13H LINE# 168 + C:6D13H LINE# 169 + C:6D1DH LINE# 170 + C:6D1DH LINE# 171 + C:6D24H LINE# 172 + C:6D2FH LINE# 173 + C:6D36H LINE# 174 + C:6D41H LINE# 175 + C:6D41H LINE# 176 + C:6D41H LINE# 177 + ------- ENDPROC AFECLRFLG + ------- PROC AFEINITREG + ------- DO + D:0004H SYMBOL TempVar + ------- ENDDO + C:55F0H LINE# 186 + C:55F0H LINE# 187 + C:55F0H LINE# 190 + C:55F5H LINE# 191 + C:55F9H LINE# 192 + C:55FCH LINE# 193 + C:5600H LINE# 194 + C:5603H LINE# 195 + C:5605H LINE# 196 + C:5609H LINE# 197 + C:560DH LINE# 198 + C:5611H LINE# 199 + C:5615H LINE# 200 + C:5618H LINE# 202 + C:561BH LINE# 203 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 45 + + + C:561BH LINE# 204 + C:5622H LINE# 205 + C:5634H LINE# 206 + C:5634H LINE# 207 + C:5637H LINE# 208 + C:5637H LINE# 209 + C:563EH LINE# 210 + C:5650H LINE# 211 + C:566DH LINE# 212 + C:5672H LINE# 213 + C:5675H LINE# 214 + C:5675H LINE# 215 + ------- ENDPROC AFEINITREG + ------- PROC AFEINIT + ------- DO + X:02BCH SYMBOL RdBuf + X:02BEH SYMBOL i + B:002AH.3 SYMBOL Result + X:02BFH SYMBOL j + ------- ENDDO + C:5569H LINE# 225 + C:5569H LINE# 226 + C:5569H LINE# 229 + C:556BH LINE# 230 + C:5571H LINE# 232 + C:557BH LINE# 233 + C:557BH LINE# 234 + C:5588H LINE# 235 + C:5588H LINE# 236 + C:5598H LINE# 237 + C:5598H LINE# 238 + C:55A1H LINE# 240 + C:55CFH LINE# 241 + C:55CFH LINE# 242 + C:55D7H LINE# 243 + C:55D7H LINE# 244 + C:55D9H LINE# 245 + C:55DBH LINE# 246 + C:55DBH LINE# 247 + C:55DBH LINE# 248 + C:55E4H LINE# 249 + C:55E4H LINE# 251 + C:55E4H LINE# 252 + C:55E6H LINE# 253 + C:55E6H LINE# 254 + C:55E9H LINE# 255 + C:55E9H LINE# 256 + C:55EBH LINE# 257 + C:55EBH LINE# 258 + C:55EDH LINE# 259 + C:55EFH LINE# 261 + ------- ENDPROC AFEINIT + ------- PROC AFERDFLG + C:6CC9H LINE# 272 + C:6CC9H LINE# 273 + C:6CC9H LINE# 274 + C:6CD6H LINE# 275 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 46 + + + C:6CD6H LINE# 276 + C:6CDEH LINE# 277 + C:6CDEH LINE# 278 + C:6CE0H LINE# 279 + C:6CE0H LINE# 281 + C:6CE4H LINE# 282 + C:6CE4H LINE# 283 + C:6CE6H LINE# 284 + C:6CE6H LINE# 286 + C:6CF1H LINE# 287 + C:6CF1H LINE# 288 + C:6CF3H LINE# 289 + C:6CF5H LINE# 290 + C:6CF5H LINE# 291 + C:6CF9H LINE# 292 + C:6CF9H LINE# 293 + C:6CFBH LINE# 294 + C:6CFBH LINE# 296 + C:6D02H LINE# 297 + C:6D02H LINE# 298 + C:6D05H LINE# 299 + C:6D05H LINE# 300 + C:6D05H LINE# 301 + ------- ENDPROC AFERDFLG + ------- PROC AFERDSTATUS + ------- DO + X:02B9H SYMBOL RegTemp + ------- ENDDO + C:7212H LINE# 310 + C:7212H LINE# 311 + C:7212H LINE# 313 + C:721FH LINE# 314 + C:721FH LINE# 315 + C:7229H LINE# 316 + C:7229H LINE# 317 + ------- ENDPROC AFERDSTATUS + ------- PROC AFERAMCHECK + ------- DO + X:02B9H SYMBOL RdBuf + X:02BBH SYMBOL i + ------- ENDDO + C:5DF9H LINE# 326 + C:5DF9H LINE# 327 + C:5DF9H LINE# 331 + C:5E09H LINE# 332 + C:5E09H LINE# 333 + C:5E12H LINE# 335 + C:5E40H LINE# 336 + C:5E40H LINE# 337 + C:5E48H LINE# 338 + C:5E48H LINE# 339 + C:5E4DH LINE# 340 + C:5E4DH LINE# 341 + C:5E4FH LINE# 342 + C:5E4FH LINE# 343 + C:5E50H LINE# 344 + C:5E50H LINE# 345 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 47 + + + C:5E50H LINE# 346 + C:5E59H LINE# 347 + ------- ENDPROC AFERAMCHECK + ------- PROC AFEENTERPD + C:7057H LINE# 356 + C:7057H LINE# 357 + C:7057H LINE# 358 + C:705DH LINE# 359 + C:706AH LINE# 360 + C:706AH LINE# 361 + C:7071H LINE# 362 + C:707CH LINE# 363 + C:707CH LINE# 364 + ------- ENDPROC AFEENTERPD + ------- PROC _AFEMOSCTL + D:0007H SYMBOL MosStatus + C:7258H LINE# 373 + C:7258H LINE# 374 + C:7258H LINE# 375 + C:725FH LINE# 376 + C:7261H LINE# 377 + C:726CH LINE# 378 + ------- ENDPROC _AFEMOSCTL + ------- PROC AFECHGERCHECKEN + C:72BDH LINE# 388 + C:72BDH LINE# 389 + C:72BDH LINE# 390 + C:72C4H LINE# 391 + C:72CFH LINE# 392 + ------- ENDPROC AFECHGERCHECKEN + ------- PROC AFECHGERCHECKDIS + C:72D0H LINE# 395 + C:72D0H LINE# 396 + C:72D0H LINE# 397 + C:72D7H LINE# 398 + C:72E2H LINE# 399 + ------- ENDPROC AFECHGERCHECKDIS + ------- PROC AFELOADCHECKEN + C:72E3H LINE# 402 + C:72E3H LINE# 403 + C:72E3H LINE# 404 + C:72EAH LINE# 405 + C:72F5H LINE# 406 + ------- ENDPROC AFELOADCHECKEN + ------- PROC AFELOADCHECKDIS + C:72F6H LINE# 409 + C:72F6H LINE# 410 + C:72F6H LINE# 411 + C:72FDH LINE# 412 + C:7308H LINE# 413 + ------- ENDPROC AFELOADCHECKDIS + ------- PROC _AFEBALCTL + X:02BBH SYMBOL BalChTemp + C:6C8AH LINE# 422 + C:6C92H LINE# 423 + C:6C92H LINE# 424 + C:6CA6H LINE# 425 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 48 + + + C:6CB3H LINE# 426 + C:6CB3H LINE# 427 + C:6CBDH LINE# 428 + C:6CC8H LINE# 429 + C:6CC8H LINE# 430 + ------- ENDPROC _AFEBALCTL + ------- PROC AFEWDTEN + C:7309H LINE# 439 + C:7309H LINE# 440 + C:7309H LINE# 441 + C:7310H LINE# 442 + C:731BH LINE# 443 + ------- ENDPROC AFEWDTEN + ------- PROC AFEWDTDIS + C:731CH LINE# 446 + C:731CH LINE# 447 + C:731CH LINE# 448 + C:7323H LINE# 449 + C:732EH LINE# 450 + ------- ENDPROC AFEWDTDIS + ------- PROC AFEADCEN + C:732FH LINE# 459 + C:732FH LINE# 460 + C:732FH LINE# 461 + C:7336H LINE# 462 + C:7341H LINE# 463 + ------- ENDPROC AFEADCEN + ------- PROC AFEADCDIS + C:7342H LINE# 466 + C:7342H LINE# 467 + C:7342H LINE# 468 + C:7349H LINE# 469 + C:7354H LINE# 470 + ------- ENDPROC AFEADCDIS + ------- PROC AFECADCEN + C:7355H LINE# 472 + C:7355H LINE# 473 + C:7355H LINE# 474 + C:735CH LINE# 475 + C:7367H LINE# 476 + ------- ENDPROC AFECADCEN + ------- PROC AFECADCDIS + C:7368H LINE# 479 + C:7368H LINE# 480 + C:7368H LINE# 481 + C:736FH LINE# 482 + C:737AH LINE# 483 + ------- ENDPROC AFECADCDIS + ------- PROC AFETEMPADCEN + C:737BH LINE# 485 + C:737BH LINE# 486 + C:737BH LINE# 487 + C:7382H LINE# 488 + C:738DH LINE# 489 + ------- ENDPROC AFETEMPADCEN + ------- PROC AFETEMPADCDIS + C:738EH LINE# 492 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 49 + + + C:738EH LINE# 493 + C:738EH LINE# 494 + C:7395H LINE# 495 + C:73A0H LINE# 496 + ------- ENDPROC AFETEMPADCDIS + ------- PROC _AFEALARMEN + D:0007H SYMBOL AlarmFlg + C:73B3H LINE# 505 + C:73B3H LINE# 506 + C:73B3H LINE# 507 + C:73B9H LINE# 508 + C:73C4H LINE# 509 + ------- ENDPROC _AFEALARMEN + ------- PROC _AFEALARMDIS + D:0007H SYMBOL AlarmFlg + C:722AH LINE# 511 + C:722AH LINE# 512 + C:722AH LINE# 513 + C:7235H LINE# 514 + C:7240H LINE# 515 + ------- ENDPROC _AFEALARMDIS + ------- ENDMOD AFE + + ------- MODULE BALANCE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + B:002BH.6 PUBLIC bBalancingFlg + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + B:002BH.7 PUBLIC bCellOpenDecFlag + D:0080H PUBLIC P5 + C:73EDH PUBLIC BalanceProcess + X:0536H PUBLIC ucBalanceStep + X:0537H PUBLIC ucCellOpenDecCnt + X:0538H PUBLIC ucCtoCnt + B:002CH.0 PUBLIC bBalanceFlg + C:707DH PUBLIC CTOTurnOnCheck + X:0539H PUBLIC ucBalanceTimeCnt + B:002CH.1 PUBLIC bBalanceOddFlg + X:053AH PUBLIC uiBalanceChannel + B:002CH.2 PUBLIC bCTOValidFlg + C:3C66H PUBLIC BalTurnOnCheck + C:4BF2H PUBLIC BalProcess + C:6E25H PUBLIC CTOCheckVol + ------- PROC BALTURNONCHECK + ------- DO + D:0005H SYMBOL i + ------- ENDDO + C:3C66H LINE# 32 + C:3C66H LINE# 33 + C:3C66H LINE# 36 + C:3C72H LINE# 37 + C:3C72H LINE# 38 + C:3C78H LINE# 39 + C:3C78H LINE# 40 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 50 + + + C:3C7FH LINE# 41 + C:3CAFH LINE# 44 + C:3CAFH LINE# 45 + C:3CB1H LINE# 46 + C:3CB6H LINE# 47 + C:3CB7H LINE# 49 + C:3CB7H LINE# 50 + C:3D01H LINE# 51 + C:3D01H LINE# 52 + C:3D04H LINE# 53 + C:3D04H LINE# 54 + C:3D0AH LINE# 55 + C:3D0AH LINE# 56 + C:3D26H LINE# 57 + C:3D26H LINE# 58 + C:3D3CH LINE# 59 + C:3D3CH LINE# 60 + C:3D81H LINE# 61 + C:3D81H LINE# 62 + C:3D9CH LINE# 63 + C:3D9CH LINE# 64 + C:3D9FH LINE# 65 + C:3DA1H LINE# 66 + C:3DA1H LINE# 67 + C:3DA2H LINE# 69 + C:3DA2H LINE# 70 + C:3DA4H LINE# 71 + C:3DA9H LINE# 72 + C:3DA9H LINE# 73 + C:3DA9H LINE# 74 + C:3DA9H LINE# 75 + C:3DA9H LINE# 76 + ------- ENDPROC BALTURNONCHECK + ------- PROC CTOCHECKVOL + ------- DO + B:002AH.3 SYMBOL bResult + ------- ENDDO + C:6E25H LINE# 87 + C:6E25H LINE# 88 + C:6E25H LINE# 89 + C:6E27H LINE# 91 + C:6E2AH LINE# 92 + C:6E2AH LINE# 93 + C:6E2DH LINE# 94 + C:6E2DH LINE# 95 + C:6E30H LINE# 96 + C:6E30H LINE# 97 + C:6E3FH LINE# 98 + C:6E3FH LINE# 99 + C:6E41H LINE# 100 + C:6E4CH LINE# 101 + C:6E4CH LINE# 102 + C:6E4EH LINE# 103 + C:6E4EH LINE# 104 + C:6E50H LINE# 106 + C:6E50H LINE# 107 + C:6E52H LINE# 108 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 51 + + + C:6E57H LINE# 109 + C:6E57H LINE# 110 + C:6E57H LINE# 111 + C:6E57H LINE# 128 + C:6E57H LINE# 130 + C:6E59H LINE# 131 + ------- ENDPROC CTOCHECKVOL + ------- PROC BALPROCESS + ------- DO + X:02B9H SYMBOL BalChTemp + ------- ENDDO + C:4BF2H LINE# 144 + C:4BF2H LINE# 145 + C:4BF2H LINE# 150 + C:4C10H LINE# 151 + C:4C10H LINE# 152 + C:4C12H LINE# 153 + C:4C12H LINE# 155 + C:4C2AH LINE# 156 + C:4C2AH LINE# 157 + C:4C2AH LINE# 158 + C:4C30H LINE# 159 + C:4C30H LINE# 160 + C:4C33H LINE# 161 + C:4C33H LINE# 162 + C:4C46H LINE# 163 + C:4C48H LINE# 165 + C:4C48H LINE# 166 + C:4C5BH LINE# 167 + C:4C5BH LINE# 168 + C:4C66H LINE# 169 + C:4C6CH LINE# 170 + C:4C6EH LINE# 171 + C:4C6EH LINE# 172 + C:4C6FH LINE# 174 + C:4C6FH LINE# 175 + C:4C75H LINE# 176 + C:4C76H LINE# 178 + C:4C76H LINE# 179 + C:4C7BH LINE# 180 + C:4C7BH LINE# 181 + C:4C81H LINE# 182 + C:4C87H LINE# 183 + C:4C89H LINE# 184 + C:4C89H LINE# 185 + C:4C8AH LINE# 187 + C:4C8AH LINE# 188 + C:4C8FH LINE# 189 + C:4C8FH LINE# 190 + C:4C95H LINE# 191 + C:4C96H LINE# 193 + C:4C96H LINE# 194 + C:4C9CH LINE# 195 + C:4C9EH LINE# 196 + C:4C9EH LINE# 197 + C:4C9FH LINE# 199 + C:4C9FH LINE# 200 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 52 + + + C:4CA5H LINE# 201 + C:4CA7H LINE# 202 + C:4CA9H LINE# 203 + C:4CABH LINE# 204 + C:4CABH LINE# 205 + C:4CABH LINE# 206 + ------- ENDPROC BALPROCESS + ------- PROC CTOTURNONCHECK + C:707DH LINE# 215 + C:707DH LINE# 216 + C:707DH LINE# 220 + C:7083H LINE# 222 + C:7083H LINE# 223 + C:708EH LINE# 224 + C:708EH LINE# 225 + C:7091H LINE# 226 + C:7094H LINE# 227 + C:7094H LINE# 228 + C:7096H LINE# 229 + C:7098H LINE# 230 + C:70A2H LINE# 231 + C:70A2H LINE# 232 + C:70A2H LINE# 233 + C:70A2H LINE# 234 + ------- ENDPROC CTOTURNONCHECK + ------- PROC BALANCEPROCESS + C:73EDH LINE# 242 + C:73EDH LINE# 243 + C:73EDH LINE# 244 + C:73F0H LINE# 246 + C:73F3H LINE# 248 + C:73F6H LINE# 249 + ------- ENDPROC BALANCEPROCESS + ------- ENDMOD BALANCE + + ------- MODULE CALCULATE + C:0000H SYMBOL _ICE_DUMMY_ + C:4CACH PUBLIC OffsetCalculate + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:2B2DH PUBLIC _CalcuTemp + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:6EC4H PUBLIC siCurTempOffset + C:3410H PUBLIC AfeCalcuCurr + C:4025H PUBLIC AfeCalcuVol + C:6848H PUBLIC AfeGetTempe + X:049EH PUBLIC ucChgingCheckCnt + C:7296H PUBLIC AFEInfoProcess + X:049FH PUBLIC ucDsgingCheckCnt + B:00A8H.4 PUBLIC ES0 + C:6691H PUBLIC AfeGetVol + C:437CH PUBLIC AfeCalcuTempe + ------- PROC _CALCUTEMP + D:0082H SYMBOL getdata + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 53 + + + ------- DO + X:02B9H SYMBOL i + X:02BAH SYMBOL Temperature + X:02BCH SYMBOL Tempcalcu + ------- ENDDO + C:2B2DH LINE# 22 + C:2B31H LINE# 23 + C:2B31H LINE# 31 + C:2B5FH LINE# 32 + C:2B71H LINE# 33 + C:2B71H LINE# 34 + C:2B8EH LINE# 35 + C:2B8EH LINE# 38 + C:2BA7H LINE# 39 + C:2BA7H LINE# 40 + C:2BB1H LINE# 41 + C:2BB4H LINE# 42 + C:2BCDH LINE# 43 + C:2BCDH LINE# 44 + C:2BD7H LINE# 45 + C:2BDAH LINE# 47 + C:2BDAH LINE# 48 + C:2BE2H LINE# 49 + C:2C01H LINE# 50 + C:2C01H LINE# 51 + C:2C14H LINE# 52 + C:2C14H LINE# 53 + C:2C34H LINE# 54 + C:2C34H LINE# 55 + C:2C34H LINE# 56 + C:2C34H LINE# 57 + C:2C3CH LINE# 58 + C:2C3CH LINE# 60 + C:2C3CH LINE# 61 + C:2C4FH LINE# 62 + C:2C4FH LINE# 63 + C:2C6FH LINE# 64 + C:2C6FH LINE# 65 + C:2C6FH LINE# 66 + C:2C6FH LINE# 67 + C:2C77H LINE# 68 + C:2C7DH LINE# 69 + C:2C7DH LINE# 70 + C:2C85H LINE# 72 + C:2D14H LINE# 73 + C:2D14H LINE# 74 + C:2D1CH LINE# 75 + ------- ENDPROC _CALCUTEMP + ------- PROC AFEGETVOL + ------- DO + X:02C2H SYMBOL i + B:002AH.3 SYMBOL Result + ------- ENDDO + C:6691H LINE# 84 + C:6691H LINE# 85 + C:6691H LINE# 87 + C:6693H LINE# 89 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 54 + + + C:66B0H LINE# 90 + C:66B0H LINE# 91 + C:66CBH LINE# 92 + C:66CBH LINE# 93 + C:66CDH LINE# 94 + C:66D0H LINE# 95 + C:66D0H LINE# 96 + C:66D8H LINE# 98 + C:66DAH LINE# 99 + ------- ENDPROC AFEGETVOL + ------- PROC AFEGETTEMPE + ------- DO + B:002AH.3 SYMBOL Result + ------- ENDDO + C:6848H LINE# 101 + C:6848H LINE# 102 + C:6848H LINE# 103 + C:684AH LINE# 105 + C:6857H LINE# 106 + C:6857H LINE# 107 + C:6859H LINE# 108 + C:6859H LINE# 109 + C:6866H LINE# 110 + C:6866H LINE# 111 + C:6868H LINE# 112 + C:6868H LINE# 114 + C:6875H LINE# 115 + C:6875H LINE# 116 + C:6877H LINE# 117 + C:6877H LINE# 118 + C:687EH LINE# 119 + C:687EH LINE# 120 + C:688BH LINE# 121 + C:688BH LINE# 122 + C:688DH LINE# 123 + C:688DH LINE# 124 + C:688DH LINE# 126 + C:688FH LINE# 127 + ------- ENDPROC AFEGETTEMPE + ------- PROC AFECALCUTEMPE + ------- DO + D:0006H SYMBOL TempeData + ------- ENDDO + C:437CH LINE# 136 + C:437CH LINE# 137 + C:437CH LINE# 140 + C:4384H LINE# 141 + C:4384H LINE# 142 + C:439BH LINE# 144 + C:439DH LINE# 152 + C:43A4H LINE# 154 + C:43A6H LINE# 162 + C:43C5H LINE# 164 + C:43C7H LINE# 172 + C:43CEH LINE# 175 + C:43D0H LINE# 184 + C:43D7H LINE# 185 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 55 + + + C:43D7H LINE# 186 + C:43F6H LINE# 188 + C:43F8H LINE# 196 + C:43FFH LINE# 198 + C:4401H LINE# 206 + C:4401H LINE# 208 + C:4411H LINE# 209 + C:4419H LINE# 210 + C:441CH LINE# 211 + C:441CH LINE# 212 + C:4433H LINE# 214 + C:4435H LINE# 222 + C:443CH LINE# 224 + C:443EH LINE# 233 + C:444BH LINE# 234 + C:444BH LINE# 235 + C:4450H LINE# 236 + C:4451H LINE# 238 + C:4451H LINE# 239 + C:4459H LINE# 240 + C:4459H LINE# 241 + C:4459H LINE# 242 + C:4459H LINE# 243 + ------- ENDPROC AFECALCUTEMPE + ------- PROC AFECALCUVOL + ------- DO + X:02B9H SYMBOL i + X:02BAH SYMBOL TempPackVol + X:02BEH SYMBOL TempCellVol + ------- ENDDO + C:4025H LINE# 253 + C:4025H LINE# 254 + C:4025H LINE# 256 + C:4039H LINE# 257 + C:4040H LINE# 258 + C:404AH LINE# 260 + C:4052H LINE# 261 + C:4052H LINE# 262 + C:4073H LINE# 263 + C:4073H LINE# 264 + C:40AAH LINE# 266 + C:40C1H LINE# 267 + C:40C1H LINE# 268 + C:40CFH LINE# 269 + C:40CFH LINE# 270 + C:40E6H LINE# 271 + C:40E6H LINE# 272 + C:40F4H LINE# 273 + C:40F4H LINE# 275 + C:40F7H LINE# 276 + C:40F7H LINE# 278 + C:40F9H LINE# 286 + C:4113H LINE# 288 + C:4115H LINE# 296 + C:412AH LINE# 297 + C:412AH LINE# 298 + C:4133H LINE# 300 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 56 + + + C:4136H LINE# 301 + C:4136H LINE# 302 + C:4140H LINE# 303 + C:414AH LINE# 306 + C:414CH LINE# 314 + C:415AH LINE# 316 + C:415CH LINE# 324 + C:415CH LINE# 325 + C:415CH LINE# 326 + ------- ENDPROC AFECALCUVOL + ------- PROC OFFSETCALCULATE + ------- DO + X:02BEH SYMBOL siCadcTempOffset + X:02C0H SYMBOL i + ------- ENDDO + C:4CACH LINE# 347 + C:4CACH LINE# 348 + C:4CACH LINE# 349 + C:4CB3H LINE# 352 + C:4CC2H LINE# 353 + C:4CC2H LINE# 354 + C:4D2EH LINE# 355 + C:4D2EH LINE# 356 + C:4D4BH LINE# 357 + C:4D4DH LINE# 358 + C:4D4DH LINE# 359 + C:4D56H LINE# 360 + C:4D5EH LINE# 361 + ------- ENDPROC OFFSETCALCULATE + ------- PROC AFECALCUCURR + ------- DO + X:02B9H SYMBOL i + X:02BAH SYMBOL Tempdata + ------- ENDDO + C:3410H LINE# 369 + C:3410H LINE# 370 + C:3410H LINE# 372 + C:341AH LINE# 374 + C:3425H LINE# 376 + C:3431H LINE# 377 + C:3431H LINE# 378 + C:343AH LINE# 379 + C:343AH LINE# 380 + C:3489H LINE# 382 + C:34A3H LINE# 383 + C:34AEH LINE# 384 + C:34AEH LINE# 385 + C:34B0H LINE# 386 + C:34B0H LINE# 387 + C:34BFH LINE# 388 + C:34BFH LINE# 389 + C:34DDH LINE# 390 + C:34E5H LINE# 391 + C:34FAH LINE# 393 + C:34FCH LINE# 394 + C:34FEH LINE# 395 + C:351EH LINE# 396 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 57 + + + C:351EH LINE# 397 + C:3529H LINE# 398 + C:3529H LINE# 399 + C:352CH LINE# 400 + C:352EH LINE# 402 + C:3530H LINE# 410 + C:353CH LINE# 412 + C:353EH LINE# 420 + C:353EH LINE# 421 + C:353FH LINE# 422 + C:3559H LINE# 423 + C:3559H LINE# 424 + C:3563H LINE# 425 + C:3563H LINE# 426 + C:3566H LINE# 427 + C:3568H LINE# 428 + C:3571H LINE# 430 + C:3573H LINE# 438 + C:357FH LINE# 440 + C:3581H LINE# 448 + C:3581H LINE# 449 + C:3582H LINE# 451 + C:3582H LINE# 453 + C:3584H LINE# 461 + C:358EH LINE# 463 + C:3590H LINE# 471 + C:3590H LINE# 472 + ------- ENDPROC AFECALCUCURR + ------- PROC AFEINFOPROCESS + C:7296H LINE# 481 + C:7296H LINE# 482 + C:7296H LINE# 483 + C:7299H LINE# 485 + C:729BH LINE# 486 + C:729EH LINE# 487 + C:72A1H LINE# 489 + C:72A4H LINE# 490 + C:72A4H LINE# 491 + C:72A6H LINE# 492 + C:72A9H LINE# 493 + C:72A9H LINE# 494 + ------- ENDPROC AFEINFOPROCESS + ------- ENDMOD CALCULATE + + ------- MODULE CALIBRATE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:05D6H PUBLIC slExtCur + C:73C5H PUBLIC CaliCurZero + X:05DAH PUBLIC ucExtcaliSwitch1 + C:5AB2H PUBLIC CaliVoltage + C:69F3H PUBLIC CaliTS1 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 58 + + + C:6A38H PUBLIC CaliTS2 + X:05DBH PUBLIC uiExtTemp1 + X:05DDH PUBLIC uiExtTemp2 + C:6388H PUBLIC CaliProcess + C:6D42H PUBLIC CaliCurrentGain + X:05DFH PUBLIC ulExtVPack + X:05E1H PUBLIC ucExtRTC + C:6A7DH PUBLIC CaliRTCTime + B:002FH.1 PUBLIC bCaliFlg + ------- PROC CALIVOLTAGE + ------- DO + D:0007H SYMBOL i + X:02B9H SYMBOL VPackTemp + ------- ENDDO + C:5AB2H LINE# 26 + C:5AB2H LINE# 27 + C:5AB2H LINE# 29 + C:5AB9H LINE# 31 + C:5AD1H LINE# 32 + C:5AD1H LINE# 33 + C:5AEBH LINE# 34 + C:5AEEH LINE# 36 + C:5B1EH LINE# 37 + ------- ENDPROC CALIVOLTAGE + ------- PROC CALICURRENTGAIN + ------- DO + D:0006H SYMBOL TempGain + ------- ENDDO + C:6D42H LINE# 46 + C:6D42H LINE# 47 + C:6D42H LINE# 50 + C:6D70H LINE# 51 + C:6D74H LINE# 52 + C:6D74H LINE# 53 + C:6D7CH LINE# 54 + C:6D7CH LINE# 55 + ------- ENDPROC CALICURRENTGAIN + ------- PROC CALICURZERO + C:73C5H LINE# 64 + C:73C5H LINE# 65 + C:73C5H LINE# 66 + C:73D4H LINE# 67 + ------- ENDPROC CALICURZERO + ------- PROC CALITS1 + ------- DO + D:0006H SYMBOL Tempe + ------- ENDDO + C:69F3H LINE# 76 + C:69F3H LINE# 77 + C:69F3H LINE# 80 + C:6A0BH LINE# 81 + C:6A2FH LINE# 82 + C:6A2FH LINE# 83 + C:6A37H LINE# 84 + C:6A37H LINE# 85 + ------- ENDPROC CALITS1 + ------- PROC CALITS2 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 59 + + + ------- DO + D:0006H SYMBOL Tempe + ------- ENDDO + C:6A38H LINE# 87 + C:6A38H LINE# 88 + C:6A38H LINE# 91 + C:6A50H LINE# 92 + C:6A74H LINE# 93 + C:6A74H LINE# 94 + C:6A7CH LINE# 95 + C:6A7CH LINE# 96 + ------- ENDPROC CALITS2 + ------- PROC CALIRTCTIME + C:6A7DH LINE# 106 + C:6A7DH LINE# 107 + C:6A7DH LINE# 108 + C:6A85H LINE# 109 + C:6A8DH LINE# 110 + C:6A95H LINE# 111 + C:6A9DH LINE# 112 + C:6AA5H LINE# 113 + C:6AADH LINE# 114 + C:6AB5H LINE# 116 + C:6ABCH LINE# 118 + C:6ABEH LINE# 119 + C:6AC0H LINE# 120 + ------- ENDPROC CALIRTCTIME + ------- PROC CALIPROCESS + C:6388H LINE# 131 + C:6388H LINE# 132 + C:6388H LINE# 133 + C:638BH LINE# 134 + C:638BH LINE# 135 + C:638DH LINE# 137 + C:6394H LINE# 138 + C:6394H LINE# 139 + C:6397H LINE# 140 + C:6397H LINE# 142 + C:639EH LINE# 143 + C:639EH LINE# 144 + C:63A1H LINE# 145 + C:63A1H LINE# 147 + C:63A8H LINE# 148 + C:63A8H LINE# 149 + C:63ABH LINE# 150 + C:63ABH LINE# 152 + C:63B2H LINE# 153 + C:63B2H LINE# 154 + C:63B5H LINE# 155 + C:63B5H LINE# 157 + C:63BCH LINE# 158 + C:63BCH LINE# 159 + C:63BFH LINE# 160 + C:63BFH LINE# 162 + C:63C6H LINE# 163 + C:63C6H LINE# 164 + C:63C9H LINE# 165 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 60 + + + C:63C9H LINE# 167 + C:63CEH LINE# 168 + C:63D0H LINE# 169 + C:63D6H LINE# 170 + C:63D6H LINE# 171 + ------- ENDPROC CALIPROCESS + ------- ENDMOD CALIBRATE + + ------- MODULE CHARGERLOAD + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + X:05F1H PUBLIC ucChgerRCnt + B:002CH.7 PUBLIC bChgerChkingFlg + C:67B7H PUBLIC ChgerCheck + X:05F2H PUBLIC ucLoadRCnt + B:002DH.0 PUBLIC bLoadChkingFlg + B:002DH.1 PUBLIC bChgerStartCheckFlg + C:6513H PUBLIC LoadCheck + B:002DH.2 PUBLIC bLoadStartCheckFlg + ------- PROC LOADCHECK + C:6513H LINE# 26 + C:6513H LINE# 27 + C:6513H LINE# 28 + C:6516H LINE# 29 + C:6516H LINE# 30 + C:6518H LINE# 31 + C:651AH LINE# 32 + C:651FH LINE# 33 + C:6522H LINE# 34 + C:6523H LINE# 35 + C:6526H LINE# 36 + C:6526H LINE# 37 + C:6529H LINE# 38 + C:652CH LINE# 39 + C:652CH LINE# 40 + C:6548H LINE# 41 + C:6548H LINE# 42 + C:654AH LINE# 43 + C:654CH LINE# 44 + C:654FH LINE# 45 + C:6552H LINE# 46 + C:6552H LINE# 47 + C:6554H LINE# 48 + C:6554H LINE# 49 + C:6556H LINE# 50 + C:6558H LINE# 51 + C:655BH LINE# 52 + C:655BH LINE# 53 + C:655DH LINE# 54 + C:6560H LINE# 55 + C:6560H LINE# 56 + C:6560H LINE# 57 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 61 + + + C:6560H LINE# 58 + C:6560H LINE# 59 + ------- ENDPROC LOADCHECK + ------- PROC CHGERCHECK + C:67B7H LINE# 68 + C:67B7H LINE# 69 + C:67B7H LINE# 70 + C:67BAH LINE# 71 + C:67BAH LINE# 72 + C:67BCH LINE# 73 + C:67BEH LINE# 74 + C:67C3H LINE# 75 + C:67C6H LINE# 76 + C:67C7H LINE# 77 + C:67CAH LINE# 78 + C:67CAH LINE# 79 + C:67CDH LINE# 80 + C:67D0H LINE# 81 + C:67D0H LINE# 82 + C:67ECH LINE# 83 + C:67ECH LINE# 84 + C:67EEH LINE# 85 + C:67F0H LINE# 86 + C:67F3H LINE# 87 + C:67F6H LINE# 88 + C:67F6H LINE# 89 + C:67F8H LINE# 90 + C:67FAH LINE# 91 + C:67FDH LINE# 92 + C:67FDH LINE# 93 + C:67FFH LINE# 94 + C:67FFH LINE# 95 + C:67FFH LINE# 96 + C:67FFH LINE# 97 + ------- ENDPROC CHGERCHECK + ------- ENDMOD CHARGERLOAD + + ------- MODULE EXTE2PROM + C:0000H SYMBOL _ICE_DUMMY_ + C:5C61H PUBLIC Uart0RdE2PRom + C:59D4H PUBLIC Uart1RdE2PRom + D:0080H PUBLIC P0 + C:5A43H PUBLIC Uart2RdE2PRom + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + C:325DH PUBLIC _E2PRomBKData + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:5E5AH PUBLIC _E2PRomWrite + C:57F9H PUBLIC E2PRomInit + C:7169H PUBLIC E2PRomTwiCheck + X:03DCH PUBLIC ucRTCBKTime1 + B:00A0H.4 PUBLIC REN1 + B:0090H.4 PUBLIC REN2 + X:03DDH PUBLIC uiRTCBKTime2 + C:6B8AH PUBLIC E2PRomBKBoot + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 62 + + + B:0027H.0 PUBLIC bE2PErase + X:03DFH PUBLIC uiE2PDataAddr + B:0027H.1 PUBLIC bE2PRErr + B:0027H.2 PUBLIC bE2PProcessFlg + X:03E1H PUBLIC bUart0E2PRdData + X:03E2H PUBLIC bUart1E2PRdData + X:03E3H PUBLIC bUart2E2PRdData + I:001BH PUBLIC ucUpDataLimitTime + D:0099H PUBLIC SBUF + X:03E4H PUBLIC uiCHGValidTime + D:00B1H PUBLIC RSTSTAT + X:03E6H PUBLIC ucE2PTwiRWErrDelayCnt + D:0086H PUBLIC INSCON + B:0027H.3 PUBLIC bE2PTwiRWErrFlg + B:0027H.4 PUBLIC bE2PBKChgStart + X:03E7H PUBLIC ucRTCBuf + D:00A1H PUBLIC SBUF1 + B:0027H.5 PUBLIC bE2PBKRtc + D:0091H PUBLIC SBUF2 + X:03EEH PUBLIC bUart0RTCRdTime + B:0027H.6 PUBLIC bE2PBKDsgEndValid + B:0098H.4 PUBLIC REN + X:03EFH PUBLIC bUart1RTCRdTime + C:4531H PUBLIC E2PRomBKCheck + X:03F0H PUBLIC bUart2RTCRdTime + C:4E0CH PUBLIC E2PRomBKProcess + C:5B1FH PUBLIC E2PRomErase + C:6968H PUBLIC Uart0RdRTC + C:65ADH PUBLIC E2PRomBKRTC + C:65F9H PUBLIC Uart1RdRTC + B:0027H.7 PUBLIC bE2PBKDsgEnd + C:6645H PUBLIC Uart2RdRTC + B:0028H.0 PUBLIC bChgToDsgFlg + B:0028H.1 PUBLIC bDsgToChgFlg + B:0028H.2 PUBLIC bE2PBKChgStop + C:5EB9H PUBLIC _E2PRomRead + ------- PROC E2PROMTWICHECK + C:7169H LINE# 43 + C:7169H LINE# 44 + C:7169H LINE# 45 + C:716CH LINE# 46 + C:716CH LINE# 47 + C:716FH LINE# 48 + C:716FH LINE# 49 + C:717AH LINE# 50 + C:717AH LINE# 51 + C:717CH LINE# 52 + C:717FH LINE# 53 + C:717FH LINE# 54 + C:7180H LINE# 56 + C:7180H LINE# 57 + C:7185H LINE# 58 + C:7185H LINE# 59 + C:7185H LINE# 60 + ------- ENDPROC E2PROMTWICHECK + ------- PROC _E2PROMWRITE + X:02E3H SYMBOL WrAddr + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 63 + + + X:02E5H SYMBOL Length + X:02E6H SYMBOL WrBuf + ------- DO + B:002AH.3 SYMBOL Result + X:02E8H SYMBOL i + ------- ENDDO + C:5E5AH LINE# 69 + C:5E6BH LINE# 70 + C:5E6BH LINE# 71 + C:5E6DH LINE# 74 + C:5E70H LINE# 75 + C:5E70H LINE# 76 + C:5E73H LINE# 77 + C:5E73H LINE# 79 + C:5E9CH LINE# 80 + C:5E9CH LINE# 81 + C:5E9EH LINE# 82 + C:5EA0H LINE# 83 + C:5EA0H LINE# 91 + C:5EA5H LINE# 92 + C:5EB1H LINE# 93 + C:5EB1H LINE# 94 + C:5EB6H LINE# 96 + C:5EB8H LINE# 97 + ------- ENDPROC _E2PROMWRITE + ------- PROC _E2PROMREAD + X:02C5H SYMBOL RdAddr + X:02C7H SYMBOL Length + X:02C8H SYMBOL RdBuf + ------- DO + B:002AH.4 SYMBOL Result + X:02CAH SYMBOL i + ------- ENDDO + C:5EB9H LINE# 106 + C:5ECAH LINE# 107 + C:5ECAH LINE# 108 + C:5ECCH LINE# 111 + C:5ECFH LINE# 112 + C:5ECFH LINE# 113 + C:5ED2H LINE# 114 + C:5ED2H LINE# 116 + C:5EFBH LINE# 117 + C:5EFBH LINE# 118 + C:5EFDH LINE# 119 + C:5EFFH LINE# 120 + C:5EFFH LINE# 128 + C:5F04H LINE# 129 + C:5F10H LINE# 130 + C:5F10H LINE# 131 + C:5F15H LINE# 133 + C:5F17H LINE# 134 + ------- ENDPROC _E2PROMREAD + ------- PROC E2PROMERASE + ------- DO + X:02BAH SYMBOL i + X:02BCH SYMBOL WrBuf + ------- ENDDO + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 64 + + + C:5B1FH LINE# 144 + C:5B1FH LINE# 145 + C:5B1FH LINE# 149 + C:5B2AH LINE# 151 + C:5B48H LINE# 152 + C:5B48H LINE# 153 + C:5B4BH LINE# 154 + C:5B6AH LINE# 155 + C:5B76H LINE# 157 + C:5B83H LINE# 158 + C:5B8AH LINE# 159 + ------- ENDPROC E2PROMERASE + ------- PROC E2PROMINIT + ------- DO + B:002AH.3 SYMBOL Result + X:02B9H SYMBOL RdBuf + ------- ENDDO + C:57F9H LINE# 168 + C:57F9H LINE# 169 + C:57F9H LINE# 170 + C:57FBH LINE# 174 + C:580AH LINE# 176 + C:5818H LINE# 177 + C:5826H LINE# 179 + C:5832H LINE# 180 + C:5832H LINE# 181 + C:5847H LINE# 182 + C:5849H LINE# 183 + C:5855H LINE# 184 + C:5855H LINE# 185 + C:586AH LINE# 186 + C:586CH LINE# 188 + C:586CH LINE# 189 + C:5873H LINE# 190 + C:5873H LINE# 192 + C:5875H LINE# 193 + ------- ENDPROC E2PROMINIT + ------- PROC E2PROMBKRTC + ------- DO + X:02BAH SYMBOL WrBuf + D:0007H SYMBOL i + X:02C3H SYMBOL checksum + ------- ENDDO + C:65ADH LINE# 202 + C:65ADH LINE# 203 + C:65ADH LINE# 205 + C:65B2H LINE# 207 + C:65B9H LINE# 208 + C:65C6H LINE# 209 + C:65C8H LINE# 210 + C:65C8H LINE# 211 + C:65DAH LINE# 212 + C:65DFH LINE# 213 + C:65E7H LINE# 214 + C:65EBH LINE# 216 + C:65F8H LINE# 217 + ------- ENDPROC E2PROMBKRTC + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 65 + + + ------- PROC E2PROMBKBOOT + ------- DO + X:02DBH SYMBOL WrBuf + ------- ENDDO + C:6B8AH LINE# 226 + C:6B8AH LINE# 227 + C:6B8AH LINE# 230 + C:6B97H LINE# 231 + C:6B9CH LINE# 232 + C:6BA5H LINE# 234 + C:6BADH LINE# 235 + C:6BB5H LINE# 236 + C:6BBDH LINE# 238 + C:6BCAH LINE# 239 + ------- ENDPROC E2PROMBKBOOT + ------- PROC _E2PROMBKDATA + X:02BAH SYMBOL BKType + ------- DO + X:02BBH SYMBOL WrBuf + ------- ENDDO + C:325DH LINE# 248 + C:3262H LINE# 249 + C:3262H LINE# 252 + C:3266H LINE# 253 + C:3266H LINE# 254 + C:3273H LINE# 255 + C:327EH LINE# 256 + C:3280H LINE# 258 + C:3280H LINE# 259 + C:3287H LINE# 260 + C:3294H LINE# 261 + C:329FH LINE# 262 + C:329FH LINE# 264 + C:32ACH LINE# 265 + C:32AFH LINE# 266 + C:32BCH LINE# 267 + C:32BFH LINE# 268 + C:32CFH LINE# 269 + C:32DFH LINE# 270 + C:32EFH LINE# 271 + C:32FAH LINE# 272 + C:330AH LINE# 273 + C:331AH LINE# 274 + C:332AH LINE# 275 + C:3335H LINE# 276 + C:334CH LINE# 277 + C:335CH LINE# 278 + C:3369H LINE# 279 + C:336CH LINE# 280 + C:337CH LINE# 281 + C:338CH LINE# 282 + C:339CH LINE# 283 + C:33A7H LINE# 284 + C:33B4H LINE# 285 + C:33B7H LINE# 286 + C:33C4H LINE# 287 + C:33C7H LINE# 288 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 66 + + + C:33CFH LINE# 289 + C:33D3H LINE# 291 + C:33E4H LINE# 293 + C:33EEH LINE# 294 + C:3405H LINE# 295 + C:3405H LINE# 296 + C:340CH LINE# 297 + C:340CH LINE# 299 + C:340FH LINE# 300 + ------- ENDPROC _E2PROMBKDATA + ------- PROC UART0RDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:5C61H LINE# 309 + C:5C61H LINE# 310 + C:5C61H LINE# 313 + C:5C8CH LINE# 314 + C:5C98H LINE# 316 + C:5CB7H LINE# 317 + C:5CC9H LINE# 318 + ------- ENDPROC UART0RDE2PROM + ------- PROC UART1RDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:59D4H LINE# 326 + C:59D4H LINE# 327 + C:59D4H LINE# 330 + C:59FFH LINE# 331 + C:5A0BH LINE# 333 + C:5A2AH LINE# 334 + C:5A42H LINE# 335 + ------- ENDPROC UART1RDE2PROM + ------- PROC UART2RDE2PROM + ------- DO + D:0006H SYMBOL RdAddr + ------- ENDDO + C:5A43H LINE# 343 + C:5A43H LINE# 344 + C:5A43H LINE# 347 + C:5A6EH LINE# 348 + C:5A7AH LINE# 350 + C:5A99H LINE# 351 + C:5AB1H LINE# 352 + ------- ENDPROC UART2RDE2PROM + ------- PROC UART0RDRTC + C:6968H LINE# 361 + C:6968H LINE# 362 + C:6968H LINE# 363 + C:696FH LINE# 364 + C:697CH LINE# 366 + C:699BH LINE# 367 + C:69ADH LINE# 368 + ------- ENDPROC UART0RDRTC + ------- PROC UART1RDRTC + C:65F9H LINE# 377 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 67 + + + C:65F9H LINE# 378 + C:65F9H LINE# 379 + C:6600H LINE# 380 + C:660DH LINE# 382 + C:662CH LINE# 383 + C:6644H LINE# 384 + ------- ENDPROC UART1RDRTC + ------- PROC UART2RDRTC + C:6645H LINE# 392 + C:6645H LINE# 393 + C:6645H LINE# 394 + C:664CH LINE# 395 + C:6659H LINE# 397 + C:6678H LINE# 398 + C:6690H LINE# 399 + ------- ENDPROC UART2RDRTC + ------- PROC E2PROMBKPROCESS + ------- DO + X:02B9H SYMBOL BKType + ------- ENDDO + C:4E0CH LINE# 407 + C:4E0CH LINE# 408 + C:4E0CH LINE# 411 + C:4E18H LINE# 412 + C:4E18H LINE# 413 + C:4E1AH LINE# 417 + C:4E1DH LINE# 418 + C:4E1DH LINE# 419 + C:4E1FH LINE# 420 + C:4E22H LINE# 421 + C:4E22H LINE# 423 + C:4E31H LINE# 424 + C:4E31H LINE# 425 + C:4E34H LINE# 426 + C:4E34H LINE# 427 + C:4E39H LINE# 428 + C:4E3CH LINE# 429 + C:4E3CH LINE# 430 + C:4E42H LINE# 431 + C:4E42H LINE# 432 + C:4E44H LINE# 433 + C:4E47H LINE# 434 + C:4E47H LINE# 435 + C:4E4DH LINE# 436 + C:4E4DH LINE# 437 + C:4E4FH LINE# 438 + C:4E52H LINE# 439 + C:4E52H LINE# 441 + C:4E52H LINE# 443 + C:4E61H LINE# 444 + C:4E61H LINE# 445 + C:4E64H LINE# 446 + C:4E64H LINE# 447 + C:4E69H LINE# 448 + C:4E6CH LINE# 449 + C:4E6CH LINE# 450 + C:4E72H LINE# 451 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 68 + + + C:4E72H LINE# 452 + C:4E74H LINE# 453 + C:4E77H LINE# 454 + C:4E77H LINE# 455 + C:4E7DH LINE# 456 + C:4E7DH LINE# 457 + C:4E7FH LINE# 458 + C:4E82H LINE# 459 + C:4E82H LINE# 460 + C:4E82H LINE# 462 + C:4E85H LINE# 463 + C:4E85H LINE# 464 + C:4E87H LINE# 465 + C:4E8AH LINE# 466 + C:4E8AH LINE# 468 + C:4E8DH LINE# 469 + C:4E8DH LINE# 470 + C:4E8FH LINE# 471 + C:4E95H LINE# 472 + C:4E99H LINE# 473 + C:4E99H LINE# 475 + C:4E9CH LINE# 476 + C:4E9CH LINE# 477 + C:4E9EH LINE# 478 + C:4EA4H LINE# 479 + C:4EA8H LINE# 480 + C:4EA8H LINE# 482 + C:4EABH LINE# 483 + C:4EABH LINE# 484 + C:4EADH LINE# 485 + C:4EB3H LINE# 486 + C:4EB7H LINE# 487 + C:4EB7H LINE# 488 + C:4EB7H LINE# 489 + ------- ENDPROC E2PROMBKPROCESS + ------- PROC E2PROMBKCHECK + C:4531H LINE# 498 + C:4531H LINE# 499 + C:4531H LINE# 500 + C:4537H LINE# 501 + C:4537H LINE# 505 + C:4546H LINE# 506 + C:4546H LINE# 507 + C:4548H LINE# 508 + C:454FH LINE# 509 + C:454FH LINE# 511 + C:4564H LINE# 512 + C:4564H LINE# 513 + C:456BH LINE# 514 + C:456DH LINE# 515 + C:456FH LINE# 516 + C:456FH LINE# 518 + C:4572H LINE# 519 + C:4572H LINE# 520 + C:4574H LINE# 521 + C:4577H LINE# 522 + C:4577H LINE# 523 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 69 + + + C:4579H LINE# 524 + C:457BH LINE# 525 + C:457DH LINE# 526 + C:457DH LINE# 527 + C:4583H LINE# 528 + C:4583H LINE# 529 + C:4585H LINE# 530 + C:4587H LINE# 531 + C:4589H LINE# 532 + C:458BH LINE# 533 + C:458EH LINE# 534 + C:458EH LINE# 535 + C:4590H LINE# 536 + C:4590H LINE# 537 + C:4590H LINE# 539 + C:45ADH LINE# 540 + C:45ADH LINE# 541 + C:45B7H LINE# 542 + C:45B7H LINE# 543 + C:45BEH LINE# 544 + C:45CBH LINE# 545 + C:45CBH LINE# 547 + C:45ECH LINE# 548 + C:45ECH LINE# 549 + C:45F3H LINE# 550 + C:45F5H LINE# 551 + C:45F7H LINE# 552 + C:45F9H LINE# 553 + C:45FBH LINE# 554 + C:45FBH LINE# 555 + C:45FCH LINE# 557 + C:45FCH LINE# 558 + C:4603H LINE# 559 + C:4603H LINE# 560 + C:4603H LINE# 561 + ------- ENDPROC E2PROMBKCHECK + ------- ENDMOD EXTE2PROM + + ------- MODULE INTERRUPT + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:1003H PUBLIC InterruptTimer3 + D:0086H PUBLIC INSCON + B:0088H.7 PUBLIC TF3 + B:00D8H.0 PUBLIC IF40 + C:5BF6H PUBLIC InterruptINT4 + B:00D8H.1 PUBLIC IF41 + B:00D8H.2 PUBLIC IF42 + B:00D8H.3 PUBLIC IF43 + B:00D8H.4 PUBLIC IF44 + B:00D8H.5 PUBLIC IF45 + B:00D8H.6 PUBLIC IF46 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 70 + + + B:00D8H.7 PUBLIC IF47 + ------- PROC INTERRUPTINT4 + C:5BF6H LINE# 18 + C:5C01H LINE# 20 + C:5C03H LINE# 21 + C:5C06H LINE# 23 + C:5C09H LINE# 24 + C:5C09H LINE# 25 + C:5C0BH LINE# 26 + C:5C10H LINE# 27 + C:5C10H LINE# 28 + C:5C13H LINE# 29 + C:5C13H LINE# 30 + C:5C15H LINE# 31 + C:5C1AH LINE# 32 + C:5C1AH LINE# 33 + C:5C1DH LINE# 34 + C:5C1DH LINE# 35 + C:5C1FH LINE# 36 + C:5C24H LINE# 37 + C:5C24H LINE# 38 + C:5C27H LINE# 39 + C:5C27H LINE# 40 + C:5C29H LINE# 41 + C:5C2EH LINE# 42 + C:5C2EH LINE# 43 + C:5C31H LINE# 44 + C:5C31H LINE# 45 + C:5C33H LINE# 46 + C:5C38H LINE# 47 + C:5C38H LINE# 48 + C:5C3BH LINE# 49 + C:5C3BH LINE# 50 + C:5C3DH LINE# 51 + C:5C42H LINE# 52 + C:5C42H LINE# 53 + C:5C45H LINE# 54 + C:5C45H LINE# 55 + C:5C47H LINE# 56 + C:5C4CH LINE# 57 + C:5C4CH LINE# 58 + C:5C4FH LINE# 59 + C:5C4FH LINE# 60 + C:5C51H LINE# 61 + C:5C56H LINE# 62 + C:5C56H LINE# 64 + C:5C58H LINE# 65 + ------- ENDPROC INTERRUPTINT4 + ------- PROC INTERRUPTTIMER3 + C:1003H LINE# 74 + C:100BH LINE# 76 + C:100DH LINE# 78 + C:1010H LINE# 79 + C:1012H LINE# 80 + C:1015H LINE# 82 + C:1018H LINE# 84 + C:101AH LINE# 85 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 71 + + + ------- ENDPROC INTERRUPTTIMER3 + ------- ENDMOD INTERRUPT + + ------- MODULE KEYSCAN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0008H PUBLIC ucKeyValue + D:0080H PUBLIC P5 + D:0009H PUBLIC ucKeyValueBK + B:00B0H.0 PUBLIC P3_0 + B:00A0H.7 PUBLIC P2_7 + D:000AH PUBLIC uiKeyValidCnt + D:000CH PUBLIC ucKeyOldValue + B:002FH.2 PUBLIC bKeyFlg + C:50B5H PUBLIC KeyScan + D:000DH PUBLIC uiKeyInvalidCnt + ------- PROC KEYSCAN + ------- DO + C:514AH SYMBOL scanend + ------- ENDDO + C:50B5H LINE# 33 + C:50B5H LINE# 34 + C:50B5H LINE# 35 + C:50BBH LINE# 36 + C:50BBH LINE# 37 + C:50BEH LINE# 46 + C:50C1H LINE# 47 + C:50C1H LINE# 48 + C:50C4H LINE# 49 + C:50C6H LINE# 50 + C:50C9H LINE# 51 + C:50C9H LINE# 52 + C:50CCH LINE# 53 + C:50CCH LINE# 69 + C:50D2H LINE# 70 + C:50D2H LINE# 71 + C:50DAH LINE# 72 + C:50E5H LINE# 73 + C:50E5H LINE# 74 + C:50EFH LINE# 75 + C:50EFH LINE# 76 + C:50F9H LINE# 77 + C:50F9H LINE# 78 + C:50FFH LINE# 79 + C:5101H LINE# 81 + C:5101H LINE# 82 + C:5104H LINE# 83 + C:5104H LINE# 84 + C:5106H LINE# 85 + C:5108H LINE# 86 + C:5108H LINE# 91 + C:5108H LINE# 93 + C:5108H LINE# 94 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 72 + + + C:510AH LINE# 95 + C:510AH LINE# 96 + C:510AH LINE# 98 + C:510AH LINE# 99 + C:5110H LINE# 100 + C:5110H LINE# 101 + C:5115H LINE# 102 + C:511DH LINE# 103 + C:5125H LINE# 104 + C:5125H LINE# 105 + C:512BH LINE# 106 + C:512DH LINE# 107 + C:512EH LINE# 108 + C:5138H LINE# 109 + C:5138H LINE# 110 + C:513EH LINE# 111 + C:5144H LINE# 112 + C:5146H LINE# 113 + C:5146H LINE# 114 + C:5147H LINE# 116 + C:5147H LINE# 117 + C:514AH LINE# 118 + C:514AH LINE# 119 + C:514FH LINE# 120 + C:5153H LINE# 121 + C:5156H LINE# 122 + C:5156H LINE# 123 + C:5156H LINE# 124 + C:5156H LINE# 125 + ------- ENDPROC KEYSCAN + ------- ENDMOD KEYSCAN + + ------- MODULE MCUFLASH + C:0000H SYMBOL _ICE_DUMMY_ + D:00F3H PUBLIC IB_CON2 + D:0080H PUBLIC P0 + D:00F4H PUBLIC IB_CON3 + D:0090H PUBLIC P1 + D:00F5H PUBLIC IB_CON4 + D:00A0H PUBLIC P2 + D:00F6H PUBLIC IB_CON5 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + X:05F3H PUBLIC bMcuFlashWrWaitCnt + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00FCH PUBLIC IB_DATA + C:7009H PUBLIC _McuFlashCheckFlg + C:5F18H PUBLIC _McuFlashRead + C:6E5AH PUBLIC _McuFlashWrOneByte + B:002DH.6 PUBLIC bMcuFlashErr + C:532BH PUBLIC _McuFlashWrite + X:05F4H PUBLIC ucMcuFlashWrValid + D:00FBH PUBLIC IB_OFFSET + D:00B1H PUBLIC RSTSTAT + D:00A7H PUBLIC FLASHCON + C:54DDH PUBLIC _McuFlashWrSector + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 73 + + + C:726DH PUBLIC McuFlashWrWaitCheck + B:002DH.7 PUBLIC bMcuFlashWrFlg + C:70A3H PUBLIC _McuFlashBlankCheck + C:608AH PUBLIC _McuFlashDataCheck + D:00F7H PUBLIC XPAGE + B:002EH.0 PUBLIC bMcuFlashWrWaitFlg + C:46C8H PUBLIC McuFlashProcess + D:00F2H PUBLIC IB_CON1 + ------- PROC _MCUFLASHWRONEBYTE + D:0002H SYMBOL McuFlashAddr + D:0005H SYMBOL WrData + C:6E5AH LINE# 24 + C:6E5EH LINE# 25 + C:6E5EH LINE# 26 + C:6E60H LINE# 27 + C:6E63H LINE# 29 + C:6E66H LINE# 30 + C:6E6AH LINE# 31 + C:6E6EH LINE# 33 + C:6E71H LINE# 34 + C:6E74H LINE# 35 + C:6E77H LINE# 36 + C:6E7AH LINE# 37 + C:6E81H LINE# 38 + C:6E81H LINE# 39 + C:6E84H LINE# 40 + C:6E85H LINE# 41 + C:6E86H LINE# 42 + C:6E87H LINE# 43 + C:6E88H LINE# 44 + C:6E89H LINE# 45 + C:6E89H LINE# 47 + C:6E8CH LINE# 48 + C:6E8EH LINE# 49 + ------- ENDPROC _MCUFLASHWRONEBYTE + ------- PROC _MCUFLASHBLANKCHECK + D:0006H SYMBOL McuFlashAddr + ------- DO + B:002AH.6 SYMBOL Result + D:0004H SYMBOL i + ------- ENDDO + C:70A3H LINE# 58 + C:70A3H LINE# 59 + C:70A3H LINE# 60 + C:70A5H LINE# 63 + C:70A8H LINE# 64 + C:70A8H LINE# 65 + C:70B5H LINE# 66 + C:70B5H LINE# 67 + C:70B7H LINE# 68 + C:70B9H LINE# 69 + C:70B9H LINE# 70 + C:70C6H LINE# 72 + C:70C8H LINE# 73 + ------- ENDPROC _MCUFLASHBLANKCHECK + ------- PROC _MCUFLASHDATACHECK + X:02BFH SYMBOL McuFlashAddr + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 74 + + + D:0004H SYMBOL XramAddr + ------- DO + B:002AH.6 SYMBOL Result + D:0006H SYMBOL ptr + X:02C1H SYMBOL i + ------- ENDDO + C:608AH LINE# 82 + C:6092H LINE# 83 + C:6092H LINE# 84 + C:6094H LINE# 85 + C:6098H LINE# 88 + C:60ABH LINE# 89 + C:60ABH LINE# 90 + C:60D1H LINE# 91 + C:60D1H LINE# 92 + C:60D3H LINE# 93 + C:60D5H LINE# 94 + C:60D5H LINE# 95 + C:60E1H LINE# 97 + C:60E3H LINE# 98 + ------- ENDPROC _MCUFLASHDATACHECK + ------- PROC _MCUFLASHWRSECTOR + X:02BFH SYMBOL McuFlashAddr + D:0004H SYMBOL XramAddr + ------- DO + B:002AH.6 SYMBOL Result + D:0004H SYMBOL i + X:02C1H SYMBOL ptr + ------- ENDDO + C:54DDH LINE# 107 + C:54E5H LINE# 108 + C:54E5H LINE# 109 + C:54E7H LINE# 111 + C:54EFH LINE# 113 + C:54F2H LINE# 114 + C:54F2H LINE# 115 + C:54FDH LINE# 116 + C:5503H LINE# 117 + C:5512H LINE# 118 + C:5515H LINE# 119 + C:5518H LINE# 120 + C:5518H LINE# 121 + C:551BH LINE# 122 + C:551FH LINE# 123 + C:551FH LINE# 124 + C:5522H LINE# 125 + C:552AH LINE# 126 + C:552AH LINE# 127 + C:552DH LINE# 128 + C:553DH LINE# 129 + C:553DH LINE# 130 + C:5540H LINE# 131 + C:5541H LINE# 132 + C:5542H LINE# 133 + C:5543H LINE# 134 + C:5544H LINE# 135 + C:5545H LINE# 136 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 75 + + + C:5547H LINE# 137 + C:5549H LINE# 139 + C:5549H LINE# 140 + C:554BH LINE# 141 + C:554DH LINE# 142 + C:554DH LINE# 143 + C:554DH LINE# 145 + C:554DH LINE# 146 + C:554FH LINE# 147 + C:5551H LINE# 148 + C:5551H LINE# 149 + C:5551H LINE# 151 + C:5551H LINE# 152 + C:5553H LINE# 153 + C:5555H LINE# 154 + C:5555H LINE# 155 + C:5555H LINE# 157 + C:5555H LINE# 158 + C:5557H LINE# 159 + C:5559H LINE# 160 + C:5559H LINE# 161 + C:5566H LINE# 163 + C:5568H LINE# 164 + ------- ENDPROC _MCUFLASHWRSECTOR + ------- PROC _MCUFLASHWRITE + X:02BBH SYMBOL McuFlashAddr + X:02BDH SYMBOL XramAddr + ------- DO + B:002AH.5 SYMBOL Result + ------- ENDDO + C:532BH LINE# 177 + C:5339H LINE# 178 + C:5339H LINE# 179 + C:533BH LINE# 181 + C:533EH LINE# 182 + C:5340H LINE# 183 + C:5343H LINE# 185 + C:534CH LINE# 186 + C:534FH LINE# 187 + C:5352H LINE# 188 + C:5352H LINE# 189 + C:5355H LINE# 190 + C:5359H LINE# 191 + C:5359H LINE# 192 + C:535CH LINE# 193 + C:5364H LINE# 194 + C:5364H LINE# 195 + C:5367H LINE# 196 + C:5370H LINE# 197 + C:5370H LINE# 198 + C:5373H LINE# 199 + C:5374H LINE# 200 + C:5375H LINE# 201 + C:5376H LINE# 202 + C:5377H LINE# 203 + C:5378H LINE# 205 + C:5385H LINE# 206 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 76 + + + C:5385H LINE# 207 + C:5398H LINE# 208 + C:5398H LINE# 209 + C:53ABH LINE# 210 + C:53ABH LINE# 211 + C:53ADH LINE# 212 + C:53ADH LINE# 213 + C:53ADH LINE# 214 + C:53ADH LINE# 215 + C:53ADH LINE# 216 + C:53ADH LINE# 217 + C:53ADH LINE# 218 + C:53ADH LINE# 220 + C:53B0H LINE# 221 + C:53B2H LINE# 222 + C:53B4H LINE# 223 + C:53B6H LINE# 224 + C:53B8H LINE# 226 + C:53BBH LINE# 227 + C:53BDH LINE# 228 + C:53BFH LINE# 230 + C:53C1H LINE# 231 + ------- ENDPROC _MCUFLASHWRITE + ------- PROC MCUFLASHPROCESS + ------- DO + B:002AH.3 SYMBOL McuFlashBk1WrFailFlg + B:002AH.4 SYMBOL McuFlashBk2WrFailFlg + X:02B9H SYMBOL VoltageMin + ------- ENDDO + C:46C8H LINE# 244 + C:46C8H LINE# 245 + C:46C8H LINE# 246 + C:46CCH LINE# 249 + C:46D2H LINE# 250 + C:46D2H LINE# 251 + C:46D4H LINE# 253 + C:46DAH LINE# 254 + C:46E1H LINE# 255 + C:46E1H LINE# 256 + C:46EBH LINE# 257 + C:46EDH LINE# 259 + C:46EDH LINE# 260 + C:46F7H LINE# 261 + C:46F7H LINE# 263 + C:471AH LINE# 264 + C:471AH LINE# 265 + C:4723H LINE# 266 + C:4723H LINE# 267 + C:472DH LINE# 268 + C:472DH LINE# 269 + C:472FH LINE# 270 + C:4737H LINE# 271 + C:473FH LINE# 272 + C:4746H LINE# 273 + C:4746H LINE# 274 + C:4746H LINE# 276 + C:4751H LINE# 277 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 77 + + + C:4751H LINE# 278 + C:475CH LINE# 279 + C:475CH LINE# 280 + C:475EH LINE# 281 + C:4766H LINE# 282 + C:476EH LINE# 283 + C:4775H LINE# 284 + C:4775H LINE# 285 + C:4775H LINE# 286 + C:4777H LINE# 288 + C:4777H LINE# 289 + C:4779H LINE# 290 + C:477BH LINE# 291 + C:477BH LINE# 292 + C:4780H LINE# 294 + C:4786H LINE# 295 + C:4786H LINE# 296 + C:4788H LINE# 297 + C:4788H LINE# 298 + C:4788H LINE# 299 + ------- ENDPROC MCUFLASHPROCESS + ------- PROC _MCUFLASHREAD + X:02B9H SYMBOL SourceAddr + D:0004H SYMBOL TargetAddr + X:02BBH SYMBOL Length + ------- DO + D:0006H SYMBOL i + B:002AH.3 SYMBOL Result + D:0019H SYMBOL TargetAddr1 + ------- ENDDO + C:5F18H LINE# 308 + C:5F26H LINE# 309 + C:5F26H LINE# 311 + C:5F28H LINE# 312 + C:5F30H LINE# 314 + C:5F32H LINE# 315 + C:5F35H LINE# 316 + C:5F38H LINE# 317 + C:5F48H LINE# 318 + C:5F48H LINE# 319 + C:5F60H LINE# 320 + C:5F68H LINE# 321 + C:5F6FH LINE# 322 + C:5F72H LINE# 323 + C:5F74H LINE# 325 + C:5F76H LINE# 326 + ------- ENDPROC _MCUFLASHREAD + ------- PROC MCUFLASHWRWAITCHECK + C:726DH LINE# 335 + C:726DH LINE# 336 + C:726DH LINE# 337 + C:7270H LINE# 338 + C:7270H LINE# 339 + C:727BH LINE# 340 + C:727BH LINE# 341 + C:727DH LINE# 342 + C:727FH LINE# 343 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 78 + + + C:7281H LINE# 344 + C:7281H LINE# 345 + C:7281H LINE# 346 + ------- ENDPROC MCUFLASHWRWAITCHECK + ------- PROC _MCUFLASHCHECKFLG + D:0006H SYMBOL McuFlashAddr + ------- DO + B:002AH.3 SYMBOL Result + ------- ENDDO + C:7009H LINE# 355 + C:7009H LINE# 356 + C:7009H LINE# 357 + C:700BH LINE# 359 + C:700EH LINE# 360 + C:7028H LINE# 361 + C:7028H LINE# 362 + C:702AH LINE# 363 + C:702AH LINE# 364 + C:702DH LINE# 366 + C:702FH LINE# 367 + ------- ENDPROC _MCUFLASHCHECKFLG + ------- ENDMOD MCUFLASH + + ------- MODULE MCULIB + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + C:6890H PUBLIC _Delay1ms + D:009DH PUBLIC SBRTH + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + D:00C7H PUBLIC PWM0CON + D:00B6H PUBLIC PWM1CON + D:00B7H PUBLIC PWM2CON + D:009CH PUBLIC SBRTL + C:3EECH PUBLIC _McuTimer3Set + D:00A8H PUBLIC IEN0 + D:00A9H PUBLIC IEN1 + D:00E8H PUBLIC EXF0 + D:008EH PUBLIC SUSLO + C:6EF8H PUBLIC _MemoryCopy + C:6FDFH PUBLIC _MemorySet + D:0087H PUBLIC PCON + D:00CFH PUBLIC PWM0DH + D:00A5H PUBLIC PWM1DH + D:00BFH PUBLIC PWM2DH + D:0098H PUBLIC SCON + D:0088H PUBLIC TCON + D:00CEH PUBLIC PWM0DL + D:00A4H PUBLIC PWM1DL + D:00BEH PUBLIC PWM2DL + D:00B2H PUBLIC CLKCON + D:00CDH PUBLIC PWM0PH + D:00AFH PUBLIC PWM1PH + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 79 + + + D:00BDH PUBLIC PWM2PH + D:00CCH PUBLIC PWM0PL + D:00AEH PUBLIC PWM1PL + C:73D5H PUBLIC McuIntoIdle + C:6295H PUBLIC _McuClockSet + D:00BCH PUBLIC PWM2PL + D:0086H PUBLIC INSCON + D:008DH PUBLIC TH3 + D:008CH PUBLIC TL3 + C:73E1H PUBLIC McuIntoPD + B:0088H.2 PUBLIC TR3 + C:5D30H PUBLIC RamCheckProcess + D:0088H PUBLIC T3CON + C:6F88H PUBLIC SystemResetProcess + C:5676H PUBLIC _McuPWM0Set + C:56F7H PUBLIC _McuPWM1Set + C:5778H PUBLIC _McuPWM2Set + ------- PROC _MCUTIMER3SET + X:02B9H SYMBOL ClkSource + X:02BAH SYMBOL XmS + ------- DO + X:02BCH SYMBOL TempVal + ------- ENDDO + C:3EECH LINE# 20 + C:3EF9H LINE# 21 + C:3EF9H LINE# 24 + C:3EFCH LINE# 26 + C:3F01H LINE# 27 + C:3F01H LINE# 28 + C:3F0FH LINE# 29 + C:3F0FH LINE# 30 + C:3F12H LINE# 31 + C:3F24H LINE# 32 + C:3F27H LINE# 34 + C:3F27H LINE# 35 + C:3F2AH LINE# 36 + C:3F4FH LINE# 37 + C:3F4FH LINE# 38 + C:3F52H LINE# 39 + C:3F5AH LINE# 40 + C:3F5AH LINE# 41 + C:3F68H LINE# 42 + C:3F68H LINE# 43 + C:3F6BH LINE# 44 + C:3F88H LINE# 45 + C:3F8BH LINE# 47 + C:3F8BH LINE# 48 + C:3F8EH LINE# 49 + C:3FB3H LINE# 50 + C:3FB3H LINE# 51 + C:3FB5H LINE# 52 + C:3FBBH LINE# 53 + C:3FBBH LINE# 54 + C:3FC9H LINE# 55 + C:3FC9H LINE# 56 + C:3FCCH LINE# 57 + C:3FE9H LINE# 58 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 80 + + + C:3FEBH LINE# 60 + C:3FEBH LINE# 61 + C:3FEEH LINE# 62 + C:4013H LINE# 63 + C:4013H LINE# 64 + C:4013H LINE# 66 + C:401CH LINE# 67 + C:401FH LINE# 68 + C:4021H LINE# 70 + C:4024H LINE# 71 + ------- ENDPROC _MCUTIMER3SET + ------- PROC _MCUCLOCKSET + D:0007H SYMBOL SysClock + ------- DO + D:0006H SYMBOL ea + ------- ENDDO + C:6295H LINE# 80 + C:6295H LINE# 81 + C:6295H LINE# 84 + C:629AH LINE# 85 + C:629CH LINE# 87 + C:62ACH LINE# 89 + C:62ACH LINE# 90 + C:62B1H LINE# 91 + C:62B3H LINE# 92 + C:62BCH LINE# 93 + C:62BCH LINE# 94 + C:62BFH LINE# 95 + C:62C0H LINE# 96 + C:62C3H LINE# 97 + C:62C3H LINE# 98 + C:62C4H LINE# 99 + C:62C5H LINE# 100 + C:62C6H LINE# 101 + C:62C7H LINE# 102 + C:62C8H LINE# 103 + C:62C9H LINE# 104 + C:62CAH LINE# 105 + C:62CBH LINE# 106 + C:62DBH LINE# 108 + C:62DBH LINE# 109 + C:62DEH LINE# 110 + C:62DEH LINE# 112 + C:62E5H LINE# 113 + ------- ENDPROC _MCUCLOCKSET + ------- PROC _MCUPWM0SET + X:05EBH SYMBOL PwmFreq + X:05EDH SYMBOL DutyRatio + C:5676H LINE# 122 + C:5681H LINE# 123 + C:5681H LINE# 124 + C:5684H LINE# 125 + C:569EH LINE# 126 + C:56BDH LINE# 127 + C:56DBH LINE# 128 + C:56F6H LINE# 129 + ------- ENDPROC _MCUPWM0SET + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 81 + + + ------- PROC _MCUPWM1SET + X:05EEH SYMBOL PwmFreq + X:05F0H SYMBOL DutyRatio + C:56F7H LINE# 131 + C:5702H LINE# 132 + C:5702H LINE# 133 + C:5705H LINE# 134 + C:571FH LINE# 135 + C:573EH LINE# 136 + C:575CH LINE# 137 + C:5777H LINE# 138 + ------- ENDPROC _MCUPWM1SET + ------- PROC _MCUPWM2SET + X:02BEH SYMBOL PwmFreq + X:02C0H SYMBOL DutyRatio + C:5778H LINE# 140 + C:5783H LINE# 141 + C:5783H LINE# 142 + C:5786H LINE# 143 + C:57A0H LINE# 144 + C:57BFH LINE# 145 + C:57DDH LINE# 146 + C:57F8H LINE# 147 + ------- ENDPROC _MCUPWM2SET + ------- PROC _DELAY1MS + D:0007H SYMBOL Xms + ------- DO + D:0006H SYMBOL i + D:0002H SYMBOL j + D:0004H SYMBOL Tcnt + ------- ENDDO + C:6890H LINE# 160 + C:6890H LINE# 161 + C:6890H LINE# 165 + C:6896H LINE# 166 + C:6896H LINE# 167 + C:689AH LINE# 168 + C:689CH LINE# 169 + C:68A4H LINE# 170 + C:68A4H LINE# 171 + C:68A8H LINE# 172 + C:68AAH LINE# 173 + C:68B2H LINE# 174 + C:68B2H LINE# 175 + C:68B6H LINE# 176 + C:68B8H LINE# 178 + C:68B8H LINE# 179 + C:68BCH LINE# 180 + C:68BCH LINE# 183 + C:68C3H LINE# 184 + C:68C3H LINE# 185 + C:68CDH LINE# 186 + C:68CDH LINE# 187 + C:68D4H LINE# 188 + C:68D7H LINE# 189 + ------- ENDPROC _DELAY1MS + ------- PROC RAMCHECKPROCESS + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 82 + + + C:5D30H LINE# 226 + C:5D30H LINE# 227 + C:5D30H LINE# 228 + C:5D92H LINE# 240 + C:5D92H LINE# 241 + C:5D94H LINE# 242 + C:5D94H LINE# 244 + C:5D94H LINE# 245 + C:5D95H LINE# 246 + C:5D95H LINE# 247 + ------- ENDPROC RAMCHECKPROCESS + ------- PROC _MEMORYSET + X:02C5H SYMBOL pt + D:0005H SYMBOL setval + D:0003H SYMBOL length + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:6FDFH LINE# 258 + C:6FE7H LINE# 259 + C:6FE7H LINE# 261 + C:6FEEH LINE# 262 + C:6FEEH LINE# 263 + C:6FFBH LINE# 264 + C:7005H LINE# 265 + C:7008H LINE# 266 + ------- ENDPROC _MEMORYSET + ------- PROC _MEMORYCOPY + X:02DBH SYMBOL source + D:0004H SYMBOL target + D:0003H SYMBOL length + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:6EF8H LINE# 277 + C:6F00H LINE# 278 + C:6F00H LINE# 280 + C:6F07H LINE# 281 + C:6F07H LINE# 282 + C:6F18H LINE# 283 + C:6F1DH LINE# 284 + C:6F27H LINE# 285 + C:6F2AH LINE# 286 + ------- ENDPROC _MEMORYCOPY + ------- PROC MCUINTOIDLE + C:73D5H LINE# 295 + C:73D5H LINE# 296 + C:73D5H LINE# 297 + C:73D8H LINE# 298 + C:73DBH LINE# 299 + C:73DCH LINE# 300 + C:73DDH LINE# 301 + C:73DEH LINE# 302 + C:73DFH LINE# 303 + C:73E0H LINE# 304 + ------- ENDPROC MCUINTOIDLE + ------- PROC MCUINTOPD + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 83 + + + C:73E1H LINE# 306 + C:73E1H LINE# 307 + C:73E1H LINE# 308 + C:73E4H LINE# 309 + C:73E7H LINE# 310 + C:73E8H LINE# 311 + C:73E9H LINE# 312 + C:73EAH LINE# 313 + C:73EBH LINE# 314 + C:73ECH LINE# 315 + ------- ENDPROC MCUINTOPD + ------- PROC SYSTEMRESETPROCESS + C:6F88H LINE# 324 + C:6F88H LINE# 325 + C:6F88H LINE# 326 + C:6F9FH LINE# 328 + C:6F9FH LINE# 329 + C:6FA1H LINE# 330 + C:6FA4H LINE# 331 + C:6FA6H LINE# 332 + C:6FA8H LINE# 333 + C:6FAAH LINE# 335 + C:6FACH LINE# 336 + C:6FAEH LINE# 337 + C:6FB0H LINE# 339 + C:6FB3H LINE# 340 + C:6FB3H LINE# 341 + ------- ENDPROC SYSTEMRESETPROCESS + ------- ENDMOD MCULIB + + ------- MODULE MOSCTRL + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:66DBH PUBLIC MosStatusCheck + C:6F5BH PUBLIC MosCtrl + B:002EH.3 PUBLIC bCHGMOSBk + B:002EH.4 PUBLIC bDSGMOSBk + ------- PROC MOSSTATUSCHECK + C:66DBH LINE# 20 + C:66DBH LINE# 21 + C:66DBH LINE# 22 + C:66DDH LINE# 23 + C:66DFH LINE# 25 + C:66E5H LINE# 26 + C:66E5H LINE# 27 + C:66E7H LINE# 28 + C:66E7H LINE# 30 + C:66F9H LINE# 31 + C:66F9H LINE# 32 + C:66FBH LINE# 33 + C:66FBH LINE# 35 + C:66FEH LINE# 36 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 84 + + + C:66FEH LINE# 37 + C:670AH LINE# 38 + C:670AH LINE# 39 + C:670CH LINE# 40 + C:670CH LINE# 41 + C:670CH LINE# 43 + C:670FH LINE# 44 + C:670FH LINE# 45 + C:6712H LINE# 46 + C:6712H LINE# 47 + C:6714H LINE# 48 + C:6714H LINE# 49 + C:6714H LINE# 51 + C:671DH LINE# 52 + C:671DH LINE# 53 + C:671FH LINE# 54 + C:671FH LINE# 56 + C:6722H LINE# 57 + C:6722H LINE# 58 + C:6724H LINE# 59 + C:6724H LINE# 60 + ------- ENDPROC MOSSTATUSCHECK + ------- PROC MOSCTRL + C:6F5BH LINE# 70 + C:6F5BH LINE# 71 + C:6F5BH LINE# 72 + C:6F5EH LINE# 74 + C:6F6EH LINE# 75 + C:6F6EH LINE# 76 + C:6F72H LINE# 77 + C:6F76H LINE# 79 + C:6F87H LINE# 80 + C:6F87H LINE# 81 + ------- ENDPROC MOSCTRL + ------- ENDMOD MOSCTRL + + ------- MODULE PORSELFTEST + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + C:63D7H PUBLIC PorProtectOTC + D:0090H PUBLIC P1 + C:6475H PUBLIC PorProtectOTD + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:6426H PUBLIC PorProtectUTC + C:64C4H PUBLIC PorProtectUTD + C:68D8H PUBLIC PorProtectOV + C:6920H PUBLIC PorProtectUV + X:05F7H PUBLIC ucPorSelfTestDelayCnt + B:002FH.3 PUBLIC bPorSelfTestFlg + C:6D7DH PUBLIC PorSelfTest + ------- PROC PORPROTECTOV + C:68D8H LINE# 20 + C:68D8H LINE# 21 + C:68D8H LINE# 22 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 85 + + + C:68DBH LINE# 23 + C:68DBH LINE# 24 + C:68EAH LINE# 25 + C:68EAH LINE# 26 + C:68FFH LINE# 27 + C:68FFH LINE# 28 + C:6901H LINE# 29 + C:6908H LINE# 30 + C:6908H LINE# 31 + C:6909H LINE# 32 + C:6918H LINE# 33 + C:6918H LINE# 34 + C:691FH LINE# 35 + C:691FH LINE# 36 + C:691FH LINE# 37 + ------- ENDPROC PORPROTECTOV + ------- PROC PORPROTECTUV + C:6920H LINE# 46 + C:6920H LINE# 47 + C:6920H LINE# 48 + C:6923H LINE# 49 + C:6923H LINE# 50 + C:6932H LINE# 51 + C:6932H LINE# 52 + C:6947H LINE# 53 + C:6947H LINE# 54 + C:6949H LINE# 55 + C:6950H LINE# 56 + C:6950H LINE# 57 + C:6951H LINE# 58 + C:6960H LINE# 59 + C:6960H LINE# 60 + C:6967H LINE# 61 + C:6967H LINE# 62 + C:6967H LINE# 63 + ------- ENDPROC PORPROTECTUV + ------- PROC PORPROTECTOTC + C:63D7H LINE# 72 + C:63D7H LINE# 73 + C:63D7H LINE# 74 + C:63DAH LINE# 75 + C:63DAH LINE# 76 + C:63F0H LINE# 77 + C:63F0H LINE# 78 + C:6405H LINE# 79 + C:6405H LINE# 80 + C:6407H LINE# 81 + C:640EH LINE# 82 + C:640EH LINE# 83 + C:640FH LINE# 84 + C:641EH LINE# 85 + C:641EH LINE# 86 + C:6425H LINE# 87 + C:6425H LINE# 88 + C:6425H LINE# 89 + ------- ENDPROC PORPROTECTOTC + ------- PROC PORPROTECTUTC + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 86 + + + C:6426H LINE# 98 + C:6426H LINE# 99 + C:6426H LINE# 100 + C:6429H LINE# 101 + C:6429H LINE# 102 + C:643FH LINE# 103 + C:643FH LINE# 104 + C:6454H LINE# 105 + C:6454H LINE# 106 + C:6456H LINE# 107 + C:645DH LINE# 108 + C:645DH LINE# 109 + C:645EH LINE# 110 + C:646DH LINE# 111 + C:646DH LINE# 112 + C:6474H LINE# 113 + C:6474H LINE# 114 + C:6474H LINE# 115 + ------- ENDPROC PORPROTECTUTC + ------- PROC PORPROTECTOTD + C:6475H LINE# 124 + C:6475H LINE# 125 + C:6475H LINE# 126 + C:6478H LINE# 127 + C:6478H LINE# 128 + C:648EH LINE# 129 + C:648EH LINE# 130 + C:64A3H LINE# 131 + C:64A3H LINE# 132 + C:64A5H LINE# 133 + C:64ACH LINE# 134 + C:64ACH LINE# 135 + C:64ADH LINE# 136 + C:64BCH LINE# 137 + C:64BCH LINE# 138 + C:64C3H LINE# 139 + C:64C3H LINE# 140 + C:64C3H LINE# 141 + ------- ENDPROC PORPROTECTOTD + ------- PROC PORPROTECTUTD + C:64C4H LINE# 150 + C:64C4H LINE# 151 + C:64C4H LINE# 152 + C:64C7H LINE# 153 + C:64C7H LINE# 154 + C:64DDH LINE# 155 + C:64DDH LINE# 156 + C:64F2H LINE# 157 + C:64F2H LINE# 158 + C:64F4H LINE# 159 + C:64FBH LINE# 160 + C:64FBH LINE# 161 + C:64FCH LINE# 162 + C:650BH LINE# 163 + C:650BH LINE# 164 + C:6512H LINE# 165 + C:6512H LINE# 166 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 87 + + + C:6512H LINE# 167 + ------- ENDPROC PORPROTECTUTD + ------- PROC PORSELFTEST + C:6D7DH LINE# 176 + C:6D7DH LINE# 177 + C:6D7DH LINE# 178 + C:6D80H LINE# 179 + C:6D80H LINE# 180 + C:6D83H LINE# 181 + C:6D86H LINE# 182 + C:6D89H LINE# 183 + C:6D8CH LINE# 185 + C:6D8FH LINE# 186 + C:6D92H LINE# 187 + C:6D95H LINE# 188 + C:6D98H LINE# 190 + C:6DA3H LINE# 191 + C:6DA3H LINE# 192 + C:6DA5H LINE# 193 + C:6DB1H LINE# 194 + C:6DB1H LINE# 195 + C:6DB3H LINE# 196 + C:6DB4H LINE# 198 + C:6DB4H LINE# 199 + C:6DB7H LINE# 200 + C:6DB7H LINE# 201 + C:6DB7H LINE# 202 + C:6DB7H LINE# 203 + ------- ENDPROC PORSELFTEST + ------- ENDMOD PORSELFTEST + + ------- MODULE PROTECT + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:03BAH PUBLIC uiOCD1DelayCnt + D:00A0H PUBLIC P2 + X:03BCH PUBLIC uiOCD2DelayCnt + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:4604H PUBLIC ProtectOV + C:4846H PUBLIC ProtectUV + B:002EH.5 PUBLIC bOVLock + B:002EH.6 PUBLIC bUVLock + X:03BEH PUBLIC uiOVDelayCnt + X:03C0H PUBLIC uiUVDelayCnt + X:03C2H PUBLIC uiOTCRDelayCnt + X:03C4H PUBLIC uiOTDRDelayCnt + X:03C6H PUBLIC uiUTCRDelayCnt + X:03C8H PUBLIC uiUTDRDelayCnt + C:60E4H PUBLIC ProtectOCC + C:712CH PUBLIC ProtectProcess + C:4902H PUBLIC ProtectOTC + C:4A7AH PUBLIC ProtectOTD + X:03CAH PUBLIC uiOCCRcnt + X:03CCH PUBLIC uiOCCDelayCnt + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 88 + + + X:03CEH PUBLIC uiOCDRcnt + C:49BEH PUBLIC ProtectUTC + C:4B36H PUBLIC ProtectUTD + C:58EEH PUBLIC ProtectOCRecover + X:03D0H PUBLIC uiOTCDelayCnt + X:03D2H PUBLIC uiOTDDelayCnt + X:03D4H PUBLIC uiUTCDelayCnt + X:03D6H PUBLIC uiUTDDelayCnt + C:613DH PUBLIC ProtectOCD1 + C:6196H PUBLIC ProtectOCD2 + X:03D8H PUBLIC uiOVRDelayCnt + X:03DAH PUBLIC uiUVRDelayCnt + ------- PROC PROTECTOV + C:4604H LINE# 39 + C:4604H LINE# 40 + C:4604H LINE# 41 + C:460AH LINE# 42 + C:460AH LINE# 43 + C:4619H LINE# 44 + C:4619H LINE# 45 + C:463AH LINE# 46 + C:463AH LINE# 47 + C:463CH LINE# 48 + C:463EH LINE# 49 + C:4645H LINE# 50 + C:464BH LINE# 51 + C:464BH LINE# 52 + C:464CH LINE# 53 + C:465BH LINE# 54 + C:465BH LINE# 55 + C:4662H LINE# 56 + C:4662H LINE# 57 + C:4663H LINE# 58 + C:4666H LINE# 59 + C:4666H LINE# 60 + C:4675H LINE# 61 + C:4675H LINE# 62 + C:4693H LINE# 63 + C:4693H LINE# 64 + C:4696H LINE# 65 + C:4696H LINE# 66 + C:4698H LINE# 67 + C:469AH LINE# 68 + C:469CH LINE# 70 + C:469CH LINE# 71 + C:469EH LINE# 72 + C:46A0H LINE# 73 + C:46A3H LINE# 74 + C:46A3H LINE# 75 + C:46AAH LINE# 76 + C:46B0H LINE# 77 + C:46B0H LINE# 78 + C:46B1H LINE# 79 + C:46C0H LINE# 80 + C:46C0H LINE# 81 + C:46C7H LINE# 82 + C:46C7H LINE# 83 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 89 + + + C:46C7H LINE# 84 + ------- ENDPROC PROTECTOV + ------- PROC PROTECTUV + C:4846H LINE# 92 + C:4846H LINE# 93 + C:4846H LINE# 94 + C:4849H LINE# 95 + C:4849H LINE# 96 + C:4858H LINE# 97 + C:4858H LINE# 98 + C:4879H LINE# 99 + C:4879H LINE# 100 + C:487BH LINE# 101 + C:487DH LINE# 102 + C:4884H LINE# 103 + C:488AH LINE# 104 + C:488AH LINE# 105 + C:488BH LINE# 106 + C:489AH LINE# 107 + C:489AH LINE# 108 + C:48A1H LINE# 109 + C:48A1H LINE# 110 + C:48A2H LINE# 111 + C:48A5H LINE# 112 + C:48A5H LINE# 113 + C:48B4H LINE# 114 + C:48B4H LINE# 115 + C:48D2H LINE# 116 + C:48D2H LINE# 117 + C:48D5H LINE# 118 + C:48D5H LINE# 119 + C:48D7H LINE# 120 + C:48D9H LINE# 121 + C:48DBH LINE# 123 + C:48DBH LINE# 124 + C:48DDH LINE# 125 + C:48DDH LINE# 126 + C:48E4H LINE# 127 + C:48EAH LINE# 128 + C:48EAH LINE# 129 + C:48EBH LINE# 130 + C:48FAH LINE# 131 + C:48FAH LINE# 132 + C:4901H LINE# 133 + C:4901H LINE# 134 + C:4901H LINE# 135 + ------- ENDPROC PROTECTUV + ------- PROC PROTECTOTC + C:4902H LINE# 143 + C:4902H LINE# 144 + C:4902H LINE# 145 + C:4905H LINE# 146 + C:4905H LINE# 147 + C:491BH LINE# 148 + C:491BH LINE# 149 + C:493CH LINE# 150 + C:493CH LINE# 151 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 90 + + + C:493EH LINE# 152 + C:4945H LINE# 153 + C:494BH LINE# 154 + C:494BH LINE# 155 + C:494CH LINE# 156 + C:495BH LINE# 157 + C:495BH LINE# 158 + C:4962H LINE# 159 + C:4962H LINE# 160 + C:4963H LINE# 162 + C:4963H LINE# 163 + C:4979H LINE# 164 + C:4979H LINE# 165 + C:4997H LINE# 166 + C:4997H LINE# 167 + C:4999H LINE# 168 + C:49A0H LINE# 169 + C:49A6H LINE# 170 + C:49A6H LINE# 171 + C:49A7H LINE# 172 + C:49B6H LINE# 173 + C:49B6H LINE# 174 + C:49BDH LINE# 175 + C:49BDH LINE# 176 + C:49BDH LINE# 177 + ------- ENDPROC PROTECTOTC + ------- PROC PROTECTUTC + C:49BEH LINE# 186 + C:49BEH LINE# 187 + C:49BEH LINE# 188 + C:49C1H LINE# 189 + C:49C1H LINE# 190 + C:49D7H LINE# 191 + C:49D7H LINE# 192 + C:49F8H LINE# 193 + C:49F8H LINE# 194 + C:49FAH LINE# 195 + C:4A01H LINE# 196 + C:4A07H LINE# 197 + C:4A07H LINE# 198 + C:4A08H LINE# 199 + C:4A17H LINE# 200 + C:4A17H LINE# 201 + C:4A1EH LINE# 202 + C:4A1EH LINE# 203 + C:4A1FH LINE# 205 + C:4A1FH LINE# 206 + C:4A35H LINE# 207 + C:4A35H LINE# 208 + C:4A53H LINE# 209 + C:4A53H LINE# 210 + C:4A55H LINE# 211 + C:4A5CH LINE# 212 + C:4A62H LINE# 213 + C:4A62H LINE# 214 + C:4A63H LINE# 215 + C:4A72H LINE# 216 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 91 + + + C:4A72H LINE# 217 + C:4A79H LINE# 218 + C:4A79H LINE# 219 + C:4A79H LINE# 220 + ------- ENDPROC PROTECTUTC + ------- PROC PROTECTOTD + C:4A7AH LINE# 229 + C:4A7AH LINE# 230 + C:4A7AH LINE# 231 + C:4A7DH LINE# 232 + C:4A7DH LINE# 233 + C:4A93H LINE# 234 + C:4A93H LINE# 235 + C:4AB4H LINE# 236 + C:4AB4H LINE# 237 + C:4AB6H LINE# 238 + C:4ABDH LINE# 239 + C:4AC3H LINE# 240 + C:4AC3H LINE# 241 + C:4AC4H LINE# 242 + C:4AD3H LINE# 243 + C:4AD3H LINE# 244 + C:4ADAH LINE# 245 + C:4ADAH LINE# 246 + C:4ADBH LINE# 248 + C:4ADBH LINE# 249 + C:4AF1H LINE# 250 + C:4AF1H LINE# 251 + C:4B0FH LINE# 252 + C:4B0FH LINE# 253 + C:4B11H LINE# 254 + C:4B18H LINE# 255 + C:4B1EH LINE# 256 + C:4B1EH LINE# 257 + C:4B1FH LINE# 258 + C:4B2EH LINE# 259 + C:4B2EH LINE# 260 + C:4B35H LINE# 261 + C:4B35H LINE# 262 + C:4B35H LINE# 263 + ------- ENDPROC PROTECTOTD + ------- PROC PROTECTUTD + C:4B36H LINE# 272 + C:4B36H LINE# 273 + C:4B36H LINE# 274 + C:4B39H LINE# 275 + C:4B39H LINE# 276 + C:4B4FH LINE# 277 + C:4B4FH LINE# 278 + C:4B70H LINE# 279 + C:4B70H LINE# 280 + C:4B72H LINE# 281 + C:4B79H LINE# 282 + C:4B7FH LINE# 283 + C:4B7FH LINE# 284 + C:4B80H LINE# 285 + C:4B8FH LINE# 286 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 92 + + + C:4B8FH LINE# 287 + C:4B96H LINE# 288 + C:4B96H LINE# 289 + C:4B97H LINE# 291 + C:4B97H LINE# 292 + C:4BADH LINE# 293 + C:4BADH LINE# 294 + C:4BCBH LINE# 295 + C:4BCBH LINE# 296 + C:4BCDH LINE# 297 + C:4BD4H LINE# 298 + C:4BDAH LINE# 299 + C:4BDAH LINE# 300 + C:4BDBH LINE# 301 + C:4BEAH LINE# 302 + C:4BEAH LINE# 303 + C:4BF1H LINE# 304 + C:4BF1H LINE# 305 + C:4BF1H LINE# 306 + ------- ENDPROC PROTECTUTD + ------- PROC PROTECTOCC + C:60E4H LINE# 316 + C:60E4H LINE# 317 + C:60E4H LINE# 318 + C:60E7H LINE# 319 + C:60E7H LINE# 320 + C:60F9H LINE# 321 + C:60F9H LINE# 322 + C:6117H LINE# 323 + C:6117H LINE# 324 + C:6119H LINE# 325 + C:611BH LINE# 326 + C:6122H LINE# 327 + C:6122H LINE# 328 + C:6123H LINE# 329 + C:6126H LINE# 330 + C:6126H LINE# 331 + C:6135H LINE# 332 + C:6135H LINE# 333 + C:613CH LINE# 334 + C:613CH LINE# 335 + C:613CH LINE# 336 + C:613CH LINE# 337 + ------- ENDPROC PROTECTOCC + ------- PROC PROTECTOCD1 + C:613DH LINE# 346 + C:613DH LINE# 347 + C:613DH LINE# 348 + C:6140H LINE# 349 + C:6140H LINE# 350 + C:6152H LINE# 351 + C:6152H LINE# 352 + C:6170H LINE# 353 + C:6170H LINE# 354 + C:6177H LINE# 355 + C:6179H LINE# 356 + C:617BH LINE# 357 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 93 + + + C:617BH LINE# 358 + C:617CH LINE# 359 + C:617FH LINE# 360 + C:617FH LINE# 361 + C:618EH LINE# 362 + C:618EH LINE# 363 + C:6195H LINE# 364 + C:6195H LINE# 365 + C:6195H LINE# 366 + C:6195H LINE# 367 + ------- ENDPROC PROTECTOCD1 + ------- PROC PROTECTOCD2 + C:6196H LINE# 376 + C:6196H LINE# 377 + C:6196H LINE# 378 + C:6199H LINE# 379 + C:6199H LINE# 380 + C:61ABH LINE# 381 + C:61ABH LINE# 382 + C:61C9H LINE# 383 + C:61C9H LINE# 384 + C:61D0H LINE# 385 + C:61D2H LINE# 386 + C:61D4H LINE# 387 + C:61D4H LINE# 388 + C:61D5H LINE# 389 + C:61D8H LINE# 390 + C:61D8H LINE# 391 + C:61E7H LINE# 392 + C:61E7H LINE# 393 + C:61EEH LINE# 394 + C:61EEH LINE# 395 + C:61EEH LINE# 396 + C:61EEH LINE# 397 + ------- ENDPROC PROTECTOCD2 + ------- PROC PROTECTPROCESS + C:712CH LINE# 406 + C:712CH LINE# 407 + C:712CH LINE# 408 + C:712FH LINE# 409 + C:712FH LINE# 410 + C:7132H LINE# 411 + C:7135H LINE# 413 + C:7138H LINE# 414 + C:713BH LINE# 415 + C:713EH LINE# 416 + C:7141H LINE# 418 + C:7144H LINE# 419 + C:7147H LINE# 420 + C:714AH LINE# 421 + C:714AH LINE# 422 + ------- ENDPROC PROTECTPROCESS + ------- PROC PROTECTOCRECOVER + C:58EEH LINE# 431 + C:58EEH LINE# 432 + C:58EEH LINE# 433 + C:58F1H LINE# 434 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 94 + + + C:58F1H LINE# 435 + C:58FAH LINE# 436 + C:58FAH LINE# 437 + C:5918H LINE# 438 + C:5918H LINE# 439 + C:591DH LINE# 440 + C:5923H LINE# 441 + C:5925H LINE# 442 + C:5927H LINE# 443 + C:5929H LINE# 444 + C:592BH LINE# 445 + C:592EH LINE# 446 + C:592EH LINE# 447 + C:5930H LINE# 448 + C:5933H LINE# 449 + C:5933H LINE# 450 + C:5933H LINE# 451 + C:5933H LINE# 453 + C:5936H LINE# 454 + C:5936H LINE# 455 + C:5954H LINE# 456 + C:5954H LINE# 457 + C:595BH LINE# 458 + C:595DH LINE# 459 + C:5961H LINE# 460 + C:5963H LINE# 461 + C:5963H LINE# 462 + C:5963H LINE# 463 + C:5963H LINE# 464 + ------- ENDPROC PROTECTOCRECOVER + ------- ENDMOD PROTECT + + ------- MODULE RTC + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + C:7186H PUBLIC RTCTwiCheck + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:5450H PUBLIC _RTCInitTime + B:002EH.7 PUBLIC bRTCTwiRWErr + C:602FH PUBLIC _RTCRead + C:51F8H PUBLIC _RTCModifyTime + X:0496H PUBLIC ucRTCTwiRWErrDelayCnt + X:0497H PUBLIC RTC + B:002FH.0 PUBLIC bRTCErr + C:5FD4H PUBLIC _RTCWrite + C:2EE2H PUBLIC _RTCReadTime + ------- PROC RTCTWICHECK + C:7186H LINE# 23 + C:7186H LINE# 24 + C:7186H LINE# 25 + C:7189H LINE# 26 + C:7189H LINE# 27 + C:718CH LINE# 28 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 95 + + + C:718CH LINE# 29 + C:7197H LINE# 30 + C:7197H LINE# 31 + C:7199H LINE# 32 + C:719CH LINE# 33 + C:719CH LINE# 34 + C:719DH LINE# 36 + C:719DH LINE# 37 + C:71A2H LINE# 38 + C:71A2H LINE# 39 + C:71A2H LINE# 40 + ------- ENDPROC RTCTWICHECK + ------- PROC _RTCWRITE + X:02F0H SYMBOL WrAddr + X:02F1H SYMBOL Length + X:02F2H SYMBOL WrBuf + ------- DO + B:002AH.6 SYMBOL Result + X:02F4H SYMBOL i + ------- ENDDO + C:5FD4H LINE# 49 + C:5FE2H LINE# 50 + C:5FE2H LINE# 51 + C:5FE4H LINE# 54 + C:5FE7H LINE# 55 + C:5FE7H LINE# 56 + C:5FEAH LINE# 57 + C:5FEAH LINE# 59 + C:6012H LINE# 60 + C:6012H LINE# 61 + C:6014H LINE# 62 + C:6016H LINE# 63 + C:6016H LINE# 71 + C:601BH LINE# 72 + C:6027H LINE# 73 + C:6027H LINE# 74 + C:602CH LINE# 76 + C:602EH LINE# 77 + ------- ENDPROC _RTCWRITE + ------- PROC _RTCREAD + X:02E6H SYMBOL RdAddr + X:02E7H SYMBOL Length + X:02E8H SYMBOL RdBuf + ------- DO + B:002AH.5 SYMBOL Result + X:02EAH SYMBOL i + ------- ENDDO + C:602FH LINE# 86 + C:603DH LINE# 87 + C:603DH LINE# 88 + C:603FH LINE# 91 + C:6042H LINE# 92 + C:6042H LINE# 93 + C:6045H LINE# 94 + C:6045H LINE# 96 + C:606DH LINE# 97 + C:606DH LINE# 98 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 96 + + + C:606FH LINE# 99 + C:6071H LINE# 100 + C:6071H LINE# 108 + C:6076H LINE# 109 + C:6082H LINE# 110 + C:6082H LINE# 111 + C:6087H LINE# 113 + C:6089H LINE# 114 + ------- ENDPROC _RTCREAD + ------- PROC _RTCREADTIME + X:02DBH SYMBOL RtcRdVal + ------- DO + X:02DDH SYMBOL rtcbuf + B:002AH.4 SYMBOL Result + ------- ENDDO + C:2EE2H LINE# 122 + C:2EEAH LINE# 123 + C:2EEAH LINE# 125 + C:2EECH LINE# 127 + C:2EFCH LINE# 128 + C:2EFCH LINE# 129 + C:2F06H LINE# 130 + C:2F06H LINE# 131 + C:2FB3H LINE# 139 + C:2FB3H LINE# 140 + C:2FC4H LINE# 141 + C:2FCEH LINE# 142 + C:2FDFH LINE# 143 + C:2FEBH LINE# 144 + C:2FFEH LINE# 145 + C:300CH LINE# 146 + C:301FH LINE# 148 + C:3028H LINE# 149 + C:302AH LINE# 151 + C:302AH LINE# 152 + C:303DH LINE# 153 + C:3047H LINE# 154 + C:3054H LINE# 155 + C:3060H LINE# 156 + C:3070H LINE# 157 + C:3080H LINE# 158 + C:3090H LINE# 160 + C:3092H LINE# 161 + C:3092H LINE# 162 + C:3094H LINE# 164 + C:3094H LINE# 165 + C:30A1H LINE# 166 + C:30A1H LINE# 167 + C:30A1H LINE# 169 + C:30A3H LINE# 170 + ------- ENDPROC _RTCREADTIME + ------- PROC _RTCMODIFYTIME + X:02E6H SYMBOL RtcMdyVal + ------- DO + B:002AH.5 SYMBOL Result + X:02E8H SYMBOL rtcdata + X:02E9H SYMBOL rtctemp + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 97 + + + ------- ENDDO + C:51F8H LINE# 179 + C:5200H LINE# 180 + C:5200H LINE# 181 + C:5202H LINE# 185 + C:5206H LINE# 186 + C:5213H LINE# 188 + C:5224H LINE# 189 + C:522EH LINE# 190 + C:5243H LINE# 191 + C:524FH LINE# 192 + C:5263H LINE# 193 + C:5271H LINE# 194 + C:5284H LINE# 196 + C:5291H LINE# 198 + C:5293H LINE# 199 + ------- ENDPROC _RTCMODIFYTIME + ------- PROC _RTCINITTIME + X:02B9H SYMBOL RtcInitVal + ------- DO + B:002AH.3 SYMBOL Result + X:02BBH SYMBOL rtcbuf + D:0007H SYMBOL i + X:02C4H SYMBOL checksum + ------- ENDDO + C:5450H LINE# 208 + C:5458H LINE# 209 + C:5458H LINE# 210 + C:545AH LINE# 213 + C:545FH LINE# 215 + C:5469H LINE# 217 + C:5476H LINE# 218 + C:5478H LINE# 219 + C:5478H LINE# 220 + C:548AH LINE# 221 + C:548FH LINE# 223 + C:54A1H LINE# 224 + C:54A1H LINE# 225 + C:54A6H LINE# 226 + C:54A8H LINE# 227 + C:54ACH LINE# 228 + C:54B0H LINE# 229 + C:54B4H LINE# 230 + C:54B8H LINE# 231 + C:54BCH LINE# 232 + C:54BCH LINE# 234 + C:54CDH LINE# 235 + C:54DAH LINE# 237 + C:54DCH LINE# 238 + ------- ENDPROC _RTCINITTIME + ------- ENDMOD RTC + + ------- MODULE TWI + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 98 + + + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + D:008AH PUBLIC TWIBR + D:00C6H PUBLIC TWICR + D:0089H PUBLIC TWTFREE + C:30A4H PUBLIC _TwiRead + D:00B1H PUBLIC RSTSTAT + C:71C0H PUBLIC _CRC8cal + D:00E6H PUBLIC TWITOUT + C:3B1FH PUBLIC _TwiWrite + C:7241H PUBLIC TwiInit + D:008DH PUBLIC TWIDAT + D:00C8H PUBLIC TWICON + D:00D1H PUBLIC TWISTA + C:7030H PUBLIC _TWICheckStatus + C:427CH PUBLIC CRC8Table + ------- PROC _CRC8CAL + D:0001H SYMBOL p + D:0005H SYMBOL counter + ------- DO + D:0007H SYMBOL crc8 + ------- ENDDO + C:71C0H LINE# 38 + C:71C0H LINE# 39 + C:71C0H LINE# 40 + C:71C2H LINE# 42 + C:71C8H LINE# 43 + C:71C8H LINE# 44 + C:71D1H LINE# 45 + C:71D8H LINE# 46 + C:71DBH LINE# 47 + C:71DBH LINE# 48 + ------- ENDPROC _CRC8CAL + ------- PROC _TWICHECKSTATUS + D:0007H SYMBOL Status + ------- DO + B:002BH.0 SYMBOL Result + D:0004H SYMBOL timeoutcount + ------- ENDDO + C:7030H LINE# 59 + C:7030H LINE# 60 + C:7030H LINE# 61 + C:7032H LINE# 62 + C:7036H LINE# 64 + C:703BH LINE# 65 + C:703BH LINE# 66 + C:703EH LINE# 67 + C:7042H LINE# 68 + C:7042H LINE# 69 + C:7047H LINE# 70 + C:7049H LINE# 72 + C:7049H LINE# 73 + C:7049H LINE# 74 + C:7049H LINE# 75 + C:704BH LINE# 76 + C:7052H LINE# 77 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 99 + + + C:7052H LINE# 78 + C:7054H LINE# 79 + C:7054H LINE# 81 + C:7056H LINE# 82 + ------- ENDPROC _TWICHECKSTATUS + ------- PROC _TWIWRITE + X:02F5H SYMBOL SlaveID + X:02F6H SYMBOL WrAddr + X:02F8H SYMBOL AddrType + X:02F9H SYMBOL Length + X:02FAH SYMBOL CrcFlg + X:02FBH SYMBOL WrBuf + ------- DO + D:0006H SYMBOL i + X:02FDH SYMBOL TempBuf + B:002AH.7 SYMBOL Result + X:0301H SYMBOL timeoutcount + C:3C40H SYMBOL WrErr + ------- ENDDO + C:3B1FH LINE# 98 + C:3B2FH LINE# 99 + C:3B2FH LINE# 102 + C:3B31H LINE# 103 + C:3B3BH LINE# 105 + C:3B40H LINE# 106 + C:3B43H LINE# 107 + C:3B53H LINE# 108 + C:3B63H LINE# 110 + C:3B6FH LINE# 111 + C:3B6FH LINE# 112 + C:3B78H LINE# 113 + C:3B7BH LINE# 114 + C:3B89H LINE# 115 + C:3B89H LINE# 116 + C:3B8BH LINE# 117 + C:3B8EH LINE# 118 + C:3B8EH LINE# 120 + C:3B94H LINE# 121 + C:3B97H LINE# 122 + C:3B9EH LINE# 123 + C:3B9EH LINE# 124 + C:3BA0H LINE# 125 + C:3BA3H LINE# 126 + C:3BA3H LINE# 128 + C:3BAAH LINE# 129 + C:3BAAH LINE# 130 + C:3BB0H LINE# 131 + C:3BB3H LINE# 132 + C:3BBAH LINE# 133 + C:3BBAH LINE# 134 + C:3BBCH LINE# 135 + C:3BBFH LINE# 136 + C:3BBFH LINE# 137 + C:3BBFH LINE# 139 + C:3BC7H LINE# 140 + C:3BCAH LINE# 141 + C:3BD1H LINE# 142 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 100 + + + C:3BD1H LINE# 143 + C:3BD3H LINE# 144 + C:3BD5H LINE# 145 + C:3BD5H LINE# 147 + C:3BDDH LINE# 148 + C:3BDDH LINE# 149 + C:3BE9H LINE# 150 + C:3BECH LINE# 151 + C:3BF3H LINE# 152 + C:3BF3H LINE# 153 + C:3BF5H LINE# 154 + C:3BF7H LINE# 155 + C:3BF7H LINE# 157 + C:3BFDH LINE# 158 + C:3C00H LINE# 159 + C:3C07H LINE# 160 + C:3C07H LINE# 161 + C:3C09H LINE# 162 + C:3C0BH LINE# 163 + C:3C0BH LINE# 164 + C:3C0BH LINE# 166 + C:3C0BH LINE# 167 + C:3C17H LINE# 168 + C:3C17H LINE# 169 + C:3C25H LINE# 170 + C:3C28H LINE# 171 + C:3C2FH LINE# 172 + C:3C2FH LINE# 173 + C:3C31H LINE# 174 + C:3C33H LINE# 175 + C:3C33H LINE# 176 + C:3C3DH LINE# 177 + C:3C40H LINE# 178 + C:3C40H LINE# 179 + C:3C40H LINE# 180 + C:3C43H LINE# 181 + C:3C48H LINE# 182 + C:3C48H LINE# 183 + C:3C4BH LINE# 184 + C:3C55H LINE# 185 + C:3C55H LINE# 186 + C:3C5FH LINE# 187 + C:3C61H LINE# 189 + C:3C61H LINE# 190 + C:3C61H LINE# 191 + C:3C61H LINE# 192 + C:3C63H LINE# 193 + C:3C63H LINE# 195 + C:3C65H LINE# 196 + ------- ENDPROC _TWIWRITE + ------- PROC _TWIREAD + D:0002H SYMBOL SlaveID + X:02ECH SYMBOL RdAddr + D:0003H SYMBOL AddrType + X:02EFH SYMBOL Length + X:02F0H SYMBOL CrcFlg + X:02F1H SYMBOL RdBuf + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 101 + + + ------- DO + B:002AH.6 SYMBOL Result + X:02F3H SYMBOL i + X:02F4H SYMBOL TempBuf + X:0322H SYMBOL RdCrc + X:0323H SYMBOL timeoutcount + C:3237H SYMBOL RdErr + ------- ENDDO + C:30A4H LINE# 210 + C:30AEH LINE# 211 + C:30AEH LINE# 212 + C:30B0H LINE# 215 + C:30B5H LINE# 216 + C:30BDH LINE# 218 + C:30C2H LINE# 219 + C:30C5H LINE# 221 + C:30CAH LINE# 223 + C:30D6H LINE# 224 + C:30D6H LINE# 225 + C:30DFH LINE# 226 + C:30E2H LINE# 227 + C:30F0H LINE# 228 + C:30F0H LINE# 229 + C:30F2H LINE# 230 + C:30F5H LINE# 231 + C:30F5H LINE# 233 + C:30F7H LINE# 234 + C:30FAH LINE# 235 + C:3101H LINE# 236 + C:3101H LINE# 237 + C:3103H LINE# 238 + C:3106H LINE# 239 + C:3106H LINE# 241 + C:310AH LINE# 242 + C:310AH LINE# 243 + C:3110H LINE# 244 + C:3113H LINE# 245 + C:311AH LINE# 246 + C:311AH LINE# 247 + C:311CH LINE# 248 + C:311FH LINE# 249 + C:311FH LINE# 250 + C:311FH LINE# 252 + C:3127H LINE# 253 + C:312AH LINE# 254 + C:3131H LINE# 255 + C:3131H LINE# 256 + C:3133H LINE# 257 + C:3136H LINE# 258 + C:3136H LINE# 271 + C:3139H LINE# 272 + C:3147H LINE# 273 + C:3147H LINE# 274 + C:3149H LINE# 275 + C:314CH LINE# 276 + C:314CH LINE# 278 + C:3151H LINE# 279 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 102 + + + C:3154H LINE# 280 + C:315BH LINE# 281 + C:315BH LINE# 282 + C:315DH LINE# 283 + C:3160H LINE# 284 + C:3160H LINE# 286 + C:3173H LINE# 287 + C:3173H LINE# 288 + C:3179H LINE# 289 + C:3179H LINE# 290 + C:317EH LINE# 291 + C:317EH LINE# 292 + C:3181H LINE# 293 + C:3186H LINE# 294 + C:3188H LINE# 296 + C:3188H LINE# 297 + C:318BH LINE# 298 + C:3190H LINE# 299 + C:3190H LINE# 300 + C:319EH LINE# 301 + C:31A8H LINE# 302 + C:31AAH LINE# 304 + C:31AAH LINE# 305 + C:31ADH LINE# 306 + C:31B2H LINE# 307 + C:31C2H LINE# 308 + C:31C2H LINE# 309 + C:31CAH LINE# 311 + C:31D2H LINE# 312 + C:31D2H LINE# 313 + C:31D5H LINE# 314 + C:31DAH LINE# 315 + C:31E0H LINE# 316 + C:31F7H LINE# 317 + C:31F7H LINE# 318 + C:320AH LINE# 319 + C:320AH LINE# 320 + C:3223H LINE# 321 + C:322DH LINE# 322 + C:3235H LINE# 323 + C:3235H LINE# 325 + C:3235H LINE# 326 + C:3237H LINE# 327 + C:3237H LINE# 328 + C:3237H LINE# 329 + C:3237H LINE# 330 + C:3237H LINE# 331 + C:323AH LINE# 332 + C:323FH LINE# 333 + C:323FH LINE# 334 + C:3242H LINE# 335 + C:324CH LINE# 336 + C:324CH LINE# 337 + C:3256H LINE# 338 + C:3258H LINE# 340 + C:3258H LINE# 341 + C:3258H LINE# 342 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 103 + + + C:3258H LINE# 343 + C:325AH LINE# 344 + C:325AH LINE# 346 + C:325CH LINE# 347 + ------- ENDPROC _TWIREAD + ------- PROC TWIINIT + C:7241H LINE# 367 + C:7241H LINE# 368 + C:7241H LINE# 369 + C:7244H LINE# 370 + C:7247H LINE# 371 + C:7249H LINE# 375 + C:7249H LINE# 377 + C:724CH LINE# 378 + C:724FH LINE# 389 + C:724FH LINE# 397 + C:7252H LINE# 398 + C:7255H LINE# 399 + C:7257H LINE# 400 + ------- ENDPROC TWIINIT + ------- ENDMOD TWI + + ------- MODULE UART + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C4H PUBLIC UART0CR + D:00C0H PUBLIC P4 + C:71DCH PUBLIC UART0Init + D:009DH PUBLIC SBRTH + D:0080H PUBLIC P5 + D:009CH PUBLIC SBRTL + B:0098H.0 PUBLIC RI + B:0098H.1 PUBLIC TI + D:0099H PUBLIC SBUF + D:0087H PUBLIC PCON + D:0098H PUBLIC SCON + C:62E6H PUBLIC InterruptUART0 + D:0086H PUBLIC INSCON + D:009BH PUBLIC SADEN + D:009AH PUBLIC SADDR + D:009EH PUBLIC SFINE + ------- PROC UART0INIT + C:71DCH LINE# 19 + C:71DCH LINE# 20 + C:71DCH LINE# 22 + C:71DFH LINE# 84 + C:71DFH LINE# 85 + C:71E2H LINE# 86 + C:71E5H LINE# 87 + C:71E8H LINE# 88 + C:71EBH LINE# 89 + C:71EEH LINE# 90 + C:71F1H LINE# 91 + C:71F4H LINE# 92 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 104 + + + C:71F7H LINE# 93 + C:71F7H LINE# 94 + ------- ENDPROC UART0INIT + ------- PROC INTERRUPTUART0 + ------- DO + D:0007H SYMBOL RxData + ------- ENDDO + C:62E6H LINE# 103 + C:6303H LINE# 107 + C:6305H LINE# 108 + C:6308H LINE# 110 + C:630BH LINE# 111 + C:630BH LINE# 112 + C:630DH LINE# 113 + C:630FH LINE# 114 + C:6312H LINE# 115 + C:6312H LINE# 117 + C:6315H LINE# 118 + C:6315H LINE# 119 + C:6317H LINE# 120 + C:631AH LINE# 121 + C:631AH LINE# 123 + C:631CH LINE# 124 + ------- ENDPROC INTERRUPTUART0 + ------- ENDMOD UART + + ------- MODULE THERMISTOR + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + C:3DAAH PUBLIC NTC103AT + ------- ENDMOD THERMISTOR + + ------- MODULE TWIIO + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + ------- ENDMOD TWIIO + + ------- MODULE ?C_STARTUP + C:70EDH SEGMENT ?C_C51STARTUP + C:1000H PUBLIC ?C_STARTUP + N:00B2H SYMBOL CLKCON + D:0083H SYMBOL DPH + D:0082H SYMBOL DPL + C:70F3H SYMBOL FOR_EACH_IDATA + C:70FDH SYMBOL FOR_EACH_XDATA + D:0081H SYMBOL SP + C:70EDH SYMBOL STARTUP1 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 105 + + + C:1000H LINE# 12 + C:70EDH LINE# 18 + C:70F0H LINE# 19 + C:70F1H LINE# 22 + C:70F3H LINE# 24 + C:70F5H LINE# 25 + C:70F6H LINE# 26 + C:70F9H LINE# 28 + C:70FAH LINE# 29 + C:70FDH LINE# 31 + C:70FEH LINE# 32 + C:70FFH LINE# 33 + C:7101H LINE# 34 + C:7103H LINE# 35 + C:7106H LINE# 36 + C:7109H LINE# 37 + C:710AH LINE# 38 + ------- ENDMOD ?C_STARTUP + + ------- MODULE GASGAUGEINTER_V4_13 + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + X:0325H PUBLIC E2uiDsgCorrectVol + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + X:0327H PUBLIC Info_uiRSOC + X:0329H PUBLIC E2ulIdleSocTimes + X:032DH PUBLIC Info_uiRsocCnt + X:032FH PUBLIC E2ulChgerEndVol + X:0333H PUBLIC E2ucChgCurRatio + X:0334H PUBLIC Info_uiSocDecTime + X:0336H PUBLIC Info_ulTempDsgFcc + X:033AH PUBLIC E2ui_CYCLECOUNTA_B + X:033CH PUBLIC E2ui_CYCLECOUNTB_B + X:033EH PUBLIC E2uiTempFCC_K1 + X:0340H PUBLIC E2uiTempFCC_K2 + X:0342H PUBLIC E2uiChgEndTemp + X:0344H PUBLIC E2ucFccUpdatePercent + X:0345H PUBLIC Info_ulFCC + X:0349H PUBLIC E2ui_CYCLECOUNTA_K + X:034BH PUBLIC E2ui_CYCLECOUNTB_K + X:034DH PUBLIC E2ucChgCorrectSOC + X:034EH PUBLIC E2ucInitSocDif + X:034FH PUBLIC Info_ulVoltage + X:0353H PUBLIC E2uiDsgEndTemp + X:0355H PUBLIC E2ulLoadEndVol + X:0359H PUBLIC E2ucDsgCorrectSOC + X:035AH PUBLIC Info_ulDfilterRC + X:035EH PUBLIC E2uiUpdateCycleCount + X:0360H PUBLIC E2ucDsgVolDet + D:0015H PUBLIC uiCellVminG + X:0361H PUBLIC slAdcCur2 + D:0017H PUBLIC uiCellVmaxG + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 106 + + + X:0365H PUBLIC E2ucChgerEndDelay + X:0366H PUBLIC Info_uiCycleCount + X:0368H PUBLIC E2slDsgAdjMaxCurr + X:036CH PUBLIC E2ucDsgAdjLowFlg + X:036DH PUBLIC E2ucInitUpSoc + X:036EH PUBLIC E2uiDsgAdjLowTemp + X:0370H PUBLIC E2ucChgChangeSocRatio + X:0371H PUBLIC E2ucDsgAdjLowSoc + X:0372H PUBLIC E2uiTempFCC_B + X:0374H PUBLIC siCurCompens + X:0376H PUBLIC Info_uiTemp + X:0378H PUBLIC Info_ulRC + X:037CH PUBLIC E2ucChgChangeSocDif + C:2D1DH PUBLIC GasGaugeVarIn + X:037DH PUBLIC Info_slCurr + C:6337H PUBLIC GasGaugeVarOut + X:0381H PUBLIC E2uiChgCorrectVol + X:0383H PUBLIC E2ui_CYCLECOUNTA + X:0385H PUBLIC E2ui_CYCLECOUNTB + X:0387H PUBLIC E2ui_CYCLECOUNTC + X:0389H PUBLIC E2ucChgAdjRatio + X:038AH PUBLIC E2ucChg100Ratio + X:038BH PUBLIC E2ucFullDsgDelay + ------- PROC GASGAUGEVARIN + ------- DO + B:002AH.3 SYMBOL eabak + ------- ENDDO + C:2D1DH LINE# 114 + C:2D1DH LINE# 115 + C:2D1DH LINE# 118 + C:2D21H LINE# 119 + C:2D23H LINE# 120 + C:2D32H LINE# 121 + C:2D3EH LINE# 122 + C:2D4AH LINE# 123 + C:2D59H LINE# 124 + C:2D65H LINE# 125 + C:2D74H LINE# 126 + C:2D85H LINE# 127 + C:2D8BH LINE# 128 + C:2D91H LINE# 130 + C:2D9BH LINE# 131 + C:2DA2H LINE# 133 + C:2DA6H LINE# 135 + C:2DACH LINE# 136 + C:2DB2H LINE# 137 + C:2DBAH LINE# 138 + C:2DC4H LINE# 139 + C:2DC9H LINE# 140 + C:2DCEH LINE# 141 + C:2DD4H LINE# 142 + C:2DDEH LINE# 143 + C:2DE5H LINE# 144 + C:2DEFH LINE# 145 + C:2DF5H LINE# 146 + C:2E09H LINE# 147 + C:2E0FH LINE# 148 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 107 + + + C:2E15H LINE# 150 + C:2E24H LINE# 151 + C:2E2AH LINE# 152 + C:2E42H LINE# 153 + C:2E56H LINE# 154 + C:2E5CH LINE# 155 + C:2E62H LINE# 157 + C:2E68H LINE# 158 + C:2E6EH LINE# 159 + C:2E74H LINE# 161 + C:2E7EH LINE# 163 + C:2E84H LINE# 164 + C:2E8EH LINE# 165 + C:2E98H LINE# 167 + C:2EA1H LINE# 168 + C:2EAAH LINE# 169 + C:2EB3H LINE# 170 + C:2EBCH LINE# 171 + C:2EC5H LINE# 172 + C:2ECEH LINE# 173 + C:2ED8H LINE# 174 + C:2EE1H LINE# 203 + ------- ENDPROC GASGAUGEVARIN + ------- PROC GASGAUGEVAROUT + ------- DO + B:002AH.3 SYMBOL eabak + ------- ENDDO + C:6337H LINE# 211 + C:6337H LINE# 212 + C:6337H LINE# 215 + C:633BH LINE# 216 + C:633DH LINE# 217 + C:634CH LINE# 218 + C:6358H LINE# 219 + C:6364H LINE# 220 + C:6373H LINE# 221 + C:6377H LINE# 222 + C:637BH LINE# 223 + C:6383H LINE# 224 + C:6387H LINE# 252 + ------- ENDPROC GASGAUGEVAROUT + ------- ENDMOD GASGAUGEINTER_V4_13 + + ------- MODULE BOOTAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:0080H PUBLIC P5 + B:00A8H.7 PUBLIC EA + C:71A3H PUBLIC ISPProcess + ------- PROC ISPPROCESS + C:71A3H LINE# 17 + C:71A3H LINE# 18 + C:71A3H LINE# 19 + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 108 + + + C:71AFH LINE# 20 + C:71AFH LINE# 21 + C:71B1H LINE# 22 + C:71B3H LINE# 23 + C:71B5H LINE# 24 + C:71B7H LINE# 25 + C:71B9H LINE# 26 + C:71BCH LINE# 27 + C:71BFH LINE# 28 + C:71BFH LINE# 29 + ------- ENDPROC ISPPROCESS + ------- ENDMOD BOOTAPP + + ------- MODULE DATAFLASH + C:0000H SYMBOL _ICE_DUMMY_ + C:F800H PUBLIC dataflashstr + ------- ENDMOD DATAFLASH + + ------- MODULE ?C?CLDPTR + C:2344H PUBLIC ?C?CLDPTR + ------- ENDMOD ?C?CLDPTR + + ------- MODULE ?C?IMUL + C:235DH PUBLIC ?C?IMUL + ------- ENDMOD ?C?IMUL + + ------- MODULE ?C?UIDIV + C:236FH PUBLIC ?C?UIDIV + ------- ENDMOD ?C?UIDIV + + ------- MODULE ?C?IILDX + C:23C4H PUBLIC ?C?IILDX + ------- ENDMOD ?C?IILDX + + ------- MODULE ?C?LADD + C:23DAH PUBLIC ?C?LADD + ------- ENDMOD ?C?LADD + + ------- MODULE ?C?LSUB + C:23E7H PUBLIC ?C?LSUB + ------- ENDMOD ?C?LSUB + + ------- MODULE ?C?LMUL + C:23F5H PUBLIC ?C?LMUL + ------- ENDMOD ?C?LMUL + + ------- MODULE ?C?ULDIV + C:2480H PUBLIC ?C?ULDIV + ------- ENDMOD ?C?ULDIV + + ------- MODULE ?C?SLDIV + C:6AC1H PUBLIC ?C?SLDIV + ------- ENDMOD ?C?SLDIV + + ------- MODULE ?C?LOR + C:2512H PUBLIC ?C?LOR + ------- ENDMOD ?C?LOR + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 109 + + + + ------- MODULE ?C?LNEG + C:251FH PUBLIC ?C?LNEG + ------- ENDMOD ?C?LNEG + + ------- MODULE ?C?SLCMP + C:252DH PUBLIC ?C?SLCMP + ------- ENDMOD ?C?SLCMP + + ------- MODULE ?C?ULCMP + C:2543H PUBLIC ?C?ULCMP + ------- ENDMOD ?C?ULCMP + + ------- MODULE ?C?ULSHR + C:2554H PUBLIC ?C?ULSHR + ------- ENDMOD ?C?ULSHR + + ------- MODULE ?C?SLSHR + C:2567H PUBLIC ?C?SLSHR + ------- ENDMOD ?C?SLSHR + + ------- MODULE ?C?LSHL + C:257BH PUBLIC ?C?LSHL + ------- ENDMOD ?C?LSHL + + ------- MODULE ?C?LLDIDATA + C:258EH PUBLIC ?C?LLDIDATA + ------- ENDMOD ?C?LLDIDATA + + ------- MODULE ?C?LLDXDATA + C:259AH PUBLIC ?C?LLDXDATA + ------- ENDMOD ?C?LLDXDATA + + ------- MODULE ?C?LLDIDATA0 + C:25A6H PUBLIC ?C?LLDIDATA0 + ------- ENDMOD ?C?LLDIDATA0 + + ------- MODULE ?C?LLDXDATA0 + C:25B3H PUBLIC ?C?LLDXDATA0 + ------- ENDMOD ?C?LLDXDATA0 + + ------- MODULE ?C?LILDXDATA + C:25C8H PUBLIC ?C?LILDXDATA + C:25BFH PUBLIC ?C?LILDXDATA1 + C:25C1H PUBLIC ?C?LILDXDATA8 + ------- ENDMOD ?C?LILDXDATA + + ------- MODULE ?C?LSTIDATA + C:25F4H PUBLIC ?C?LSTIDATA + ------- ENDMOD ?C?LSTIDATA + + ------- MODULE ?C?LSTXDATA + C:2600H PUBLIC ?C?LSTXDATA + ------- ENDMOD ?C?LSTXDATA + + ------- MODULE ?C?LSTKIDATA + C:260CH PUBLIC ?C?LSTKIDATA + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 110 + + + ------- ENDMOD ?C?LSTKIDATA + + ------- MODULE ?C?LSTKXDATA + C:2625H PUBLIC ?C?LSTKXDATA + ------- ENDMOD ?C?LSTKXDATA + + ------- MODULE ?C?OFFXADD + C:2656H PUBLIC ?C?OFFXADD + ------- ENDMOD ?C?OFFXADD + + ------- MODULE ?C?CCASE + C:2662H PUBLIC ?C?CCASE + ------- ENDMOD ?C?CCASE + + ------- MODULE ?C?LIMUL + C:2688H PUBLIC ?C?LIMUL + ------- ENDMOD ?C?LIMUL + + + +FUNCTION REGISTER MASKS + + +FUNCTION . . . . . . . . . REG MASK +----------------------------------- + +AFEADCDIS. . . . . . . . . @0xf7ff +AFEADCEN . . . . . . . . . @0xf7ff +AFECADCDIS . . . . . . . . @0xf7ff +AFECADCEN. . . . . . . . . @0xf7ff +AFECHGERCHECKDIS . . . . . @0xf7ff +AFECHGERCHECKEN. . . . . . @0xf7ff +AFECLRFLG. . . . . . . . . @0xf7ff +AFEENTERPD . . . . . . . . @0xf7ff +AFEGETTEMPE. . . . . . . . @0xf7ff +AFEGETVOL. . . . . . . . . @0xf7ff +AFEINIT. . . . . . . . . . @0xf7ff +AFELOADCHECKDIS. . . . . . @0xf7ff +AFELOADCHECKEN . . . . . . @0xf7ff +AFERAMCHECK. . . . . . . . @0xf7ff +AFERDFLG . . . . . . . . . @0xf7ff +AFERDSTATUS. . . . . . . . @0xf7ff +AFETEMPADCDIS. . . . . . . @0xf7ff +AFETEMPADCEN . . . . . . . @0xf7ff +AFETWICHECK. . . . . . . . @0xf300 +AFEWDTDIS. . . . . . . . . @0xf7ff +AFEWDTEN . . . . . . . . . @0xf7ff +BALPROCESS . . . . . . . . @0xf7ff +CALICURZERO. . . . . . . . @0xe301 +CALIRTCTIME. . . . . . . . @0xf7ff +CHGERCHECK . . . . . . . . @0xf7ff +CTOCHECKVOL. . . . . . . . @0xf300 +CTOTURNONCHECK . . . . . . @0xf300 +E2PROMBKBOOT . . . . . . . @0xf7ff +E2PROMINIT . . . . . . . . @0xf7ff +E2PROMTWICHECK . . . . . . @0xf300 +GASGAUGEVARIN. . . . . . . @0xffbf + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 111 + + +GASGAUGEVAROUT . . . . . . @0xff8f +INITGPIO . . . . . . . . . @0xc000 +INITIRQ. . . . . . . . . . @0xe000 +INITVAR. . . . . . . . . . @0xf797 +INTERRUPTINT4. . . . . . . @0xf003 +INTERRUPTTIMER3. . . . . . @0xf300 +INTERRUPTTIMER3APP . . . . @0xf300 +INTERRUPTUART0APPTX. . . . @0xf38f +KEYSCAN. . . . . . . . . . @0xf000 +LEDAUTOOFF . . . . . . . . @0xf300 +LEDDISPLAY . . . . . . . . @0xf303 +LOADCHECK. . . . . . . . . @0xf7ff +LOWPOWERCHECK. . . . . . . @0xf301 +LOWPOWERPROCESS. . . . . . @0xf7ff +MCUFLASHPROCESS. . . . . . @0xf7bf +MCUFLASHWRWAITCHECK. . . . @0xf300 +MCUINTOIDLE. . . . . . . . @0xc000 +MCUINTOPD. . . . . . . . . @0xc000 +MOSCTRL. . . . . . . . . . @0xf7ff +MOSSTATUSCHECK . . . . . . @0xc000 +PORPROTECTOTC. . . . . . . @0xf78f +PORPROTECTOTD. . . . . . . @0xf78f +PORPROTECTOV . . . . . . . @0xf782 +PORPROTECTUTC. . . . . . . @0xf78f +PORPROTECTUTD. . . . . . . @0xf78f +PORPROTECTUV . . . . . . . @0xf782 +PROTECTOCRECOVER . . . . . @0xf7ff +PROTECTOTC . . . . . . . . @0xf7af +PROTECTOTD . . . . . . . . @0xf7af +PROTECTOV. . . . . . . . . @0xf7ff +PROTECTUTC . . . . . . . . @0xf7af +PROTECTUTD . . . . . . . . @0xf7af +PROTECTUV. . . . . . . . . @0xf78b +RAMCHECKPROCESS. . . . . . @0xf300 +RTCTWICHECK. . . . . . . . @0xf300 +SYSPARAINIT. . . . . . . . @0xffbf +SYSTEMINTOPD . . . . . . . @0xf7ff +SYSTEMINTOSLEEP. . . . . . @0xf7ff +TWIINIT. . . . . . . . . . @0xe000 +UART0CALICUROFFSET . . . . @0xf375 +UART0CALIRTC . . . . . . . @0xf377 +UART0CALITS1 . . . . . . . @0xf377 +UART0CALITS2 . . . . . . . @0xf377 +UART0CALIVOLTAGE . . . . . @0xf377 +UART0CHECK . . . . . . . . @0xf300 +UART0HANDSHAKE . . . . . . @0xe300 +UART0IAPCHECKHANDSHAKE . . @0xf7bf +UART0INIT. . . . . . . . . @0xe000 +UART0RDCMDPROCESS. . . . . @0xf3ff +UART0RDE2PROM. . . . . . . @0xf7ff +UART0READSUBCLASSID. . . . @0xf375 +UART0WRITEMANUFACTURE. . . @0xf375 +UART1RDE2PROM. . . . . . . @0xf7ff +UART2RDE2PROM. . . . . . . @0xf7ff +WAKEUPPROCESS. . . . . . . @0xf7ff +_AFEALARMDIS . . . . . . . @0xf7ff +_AFEALARMEN. . . . . . . . @0xf7ff + BL51 BANKED LINKER/LOCATER V6.22 12/22/2023 17:44:05 PAGE 112 + + +_AFEBALCTL . . . . . . . . @0xf7ff +_AFEMOSCTL . . . . . . . . @0xf7ff +_AFEREADREG. . . . . . . . @0xf7ff +_AFEWRITEREG . . . . . . . @0xf7ff +_CRC8CAL . . . . . . . . . @0xf365 +_DELAY1MS. . . . . . . . . @0xf03e +_E2PROMREAD. . . . . . . . @0xf7ff +_E2PROMWRITE . . . . . . . @0xf7ff +_GETCYCLEGAIN. . . . . . . @0xf7cf +_INTERRUPTINT4APP. . . . . @0xf003 +_LEDGETDISNUM. . . . . . . @0xf001 +_MCUCLOCKSET . . . . . . . @0xf003 +_MCUFLASHBLANKCHECK. . . . @0xf31c +_MCUFLASHCHECKFLG. . . . . @0xf303 +_MCUFLASHDATACHECK . . . . @0xf7af +_MCUFLASHREAD. . . . . . . @0xf307 +_MCUFLASHWRITE . . . . . . @0xf7bf +_MCUFLASHWRONEBYTE . . . . @0xf035 +_MCUFLASHWRSECTOR. . . . . @0xf33f +_MEMORYCOPY. . . . . . . . @0xf78d +_MEMORYSET . . . . . . . . @0xf781 +_RTCMODIFYTIME . . . . . . @0xf7ff +_RTCREAD . . . . . . . . . @0xf7ff +_RTCWRITE. . . . . . . . . @0xf7ff +_TWICHECKSTATUS. . . . . . @0xf00c +_TWIREAD . . . . . . . . . @0xf7ff +_TWIWRITE. . . . . . . . . @0xf7ff +_UART0READINFO . . . . . . @0xf37f +_UART0WRITEINFO. . . . . . @0xf7ff + +Program Size: data=151.4 xdata=1528 code=26615 +LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/McuLib.lst b/output/McuLib.lst new file mode 100644 index 0000000..2376f5b --- /dev/null +++ b/output/McuLib.lst @@ -0,0 +1,386 @@ +C51 COMPILER V9.01 MCULIB 02/06/2025 15:28:45 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE MCULIB +OBJECT MODULE PLACED IN .\output\McuLib.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\McuLib.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load + -.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\cod + -e_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\McuLib.lst) OBJECT(.\output\McuLi + -b.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 + 13 /************************************************************************************************* + 14 * 函数名: McuTimer3Set + 15 * 参 数: ClkSource: 定时器的基准源(分别为32KHz,128KHz,24MHz的系统时钟) + 16 XmS,定时器周期(当周期小于1000mS时,可选择以上三个时钟;当周期大于1000mS时,只能选择32KHz和128K + -Hz) + 17 * 返回值: 无 + 18 * 描 述: 初始化Timer3定时器,并开启定时器 + 19 *************************************************************************************************/ + 20 void McuTimer3Set(U8 ClkSource, U16 XmS) + 21 { + 22 1 U16 TempVal; + 23 1 + 24 1 McuBank1Sel(); + 25 1 + 26 1 // if(ClkSource == TIM_CLK_32KHz) + 27 1 // { + 28 1 // if(XmS < 1000) + 29 1 // { + 30 1 // T3CON = 0x02; //外部32.768kHz为时钟源,1分频,最大2S + 31 1 // TempVal = (U32)0x10000 - (U32)32.768*XmS; + 32 1 // } + 33 1 // else + 34 1 // { + 35 1 // T3CON = 0x22; //外部32.768kHz为时钟源,64分频,最大128s + 36 1 // TempVal = 0x10000 - (U32)32.768*XmS/64; + 37 1 // } + 38 1 // } + 39 1 // else if(ClkSource == TIM_CLK_128KHz) + 40 1 // { + 41 1 // if(XmS < 4000) + 42 1 // { + 43 1 // T3CON = 0x12; //外部128kHz为时钟源,8分频,最大4.096S + 44 1 // TempVal = 0x10000 - (U32)128*XmS/8; + 45 1 // } + 46 1 // else + 47 1 // { + 48 1 // T3CON = 0x32; //外部128kHz为时钟源,256分频,最大131.072S + 49 1 // TempVal = 0x10000 - (U32)128*XmS/256; + 50 1 // } + 51 1 // } + C51 COMPILER V9.01 MCULIB 02/06/2025 15:28:45 PAGE 2 + + 52 1 // else if(ClkSource == TIM_CLK_24MHz) + 53 1 // { + 54 1 // if(XmS < 500) + 55 1 // { + 56 1 // T3CON = 0x30; //系统24MHz为时钟源,256分频,最大669.5ms + 57 1 // TempVal = 0x10000 - (U32)24000*XmS/256; + 58 1 // } + 59 1 // else + 60 1 // { + 61 1 // T3CON = 0x32; //外部128kHz为时钟源,256分频,最大131.072S + 62 1 // TempVal = 0x10000 - (U32)128*XmS/256; + 63 1 // } + 64 1 // } + 65 1 + 66 1 //8MHz晶振 + 67 1 T3CON = 0x30; //系统8MHz为时钟源,256分频,最大669.5ms + 68 1 TempVal = 0x10000 - (U32)8000*XmS/256; + 69 1 + 70 1 TL3 = TempVal; + 71 1 TH3 = TempVal>>8; + 72 1 TR3 = 1; //启动定时器3 + 73 1 + 74 1 McuBank0Sel(); + 75 1 } +*** WARNING C280 IN LINE 20 OF CODE_DRV\MCULIB.C: 'ClkSource': unreferenced local variable + 76 + 77 + 78 /************************************************************************************************* + 79 * 函数名: McuClockSet + 80 * 参 数: SysClock:当前所需设置的系统时钟 + 81 * 返回值: 无 + 82 * 描 述: 初始化AFE + 83 *************************************************************************************************/ + 84 void McuClockSet(U8 SysClock) + 85 { + 86 1 U8 ea; + 87 1 + 88 1 ea = EA; + 89 1 EA = 0; + 90 1 + 91 1 CLKCON |= 0x08; //SETB HFON + 92 1 + 93 1 _nop_(); + 94 1 _nop_(); + 95 1 _nop_(); + 96 1 _nop_(); + 97 1 _nop_(); + 98 1 _nop_(); + 99 1 _nop_(); + 100 1 _nop_(); + 101 1 + 102 1 CLKCON &= 0x60; + 103 1 + 104 1 CLKCON |= 0x04; //SETB FS, SYSCLK=24M + 105 1 + 106 1 EA = ea; + 107 1 } +*** WARNING C280 IN LINE 84 OF CODE_DRV\MCULIB.C: 'SysClock': unreferenced local variable + 108 + 109 + 110 /************************************************************************************************* + 111 * 函数名: McuPWM0Set、McuPWM1Set、McuPWM2Set + C51 COMPILER V9.01 MCULIB 02/06/2025 15:28:45 PAGE 3 + + 112 * 参 数: PwmFreq:PWM的频率Hz;DutyRatio:PWM的高电平占空比 + 113 * 返回值: 无 + 114 * 描 述: 初始化AFE + 115 *************************************************************************************************/ + 116 void McuPWM0Set(U16 PwmFreq, U8 DutyRatio) + 117 { + 118 1 PWM0CON = 0xb0; //系统时钟/64 + 119 1 PWM0PL = 375000/PwmFreq; //PWM2P=24000000/(64*E2uiDSG1PWMFreq); + 120 1 PWM0PH = (375000/PwmFreq) >> 8; + 121 1 PWM0DL = (U16)(PWM0PL+PWM0PH*256)*DutyRatio/100; + 122 1 PWM0DH = ((U16)(PWM0PL+PWM0PH*256)*DutyRatio/100) >> 8; + 123 1 } + 124 + 125 void McuPWM1Set(U16 PwmFreq, U8 DutyRatio) + 126 { + 127 1 PWM1CON = 0xb0; //系统时钟/64 + 128 1 PWM1PL = 375000/PwmFreq; //PWM2P=24000000/(64*E2uiDSG1PWMFreq); + 129 1 PWM1PH = (375000/PwmFreq) >> 8; + 130 1 PWM1DL = (U16)(PWM1PL+(U16)PWM1PH*256)*DutyRatio/100; + 131 1 PWM1DH = ((U16)(PWM1PL+(U16)PWM1PH*256)*DutyRatio/100) >> 8; + 132 1 } + 133 + 134 void McuPWM2Set(U16 PwmFreq, U8 DutyRatio) + 135 { + 136 1 PWM2CON = 0xb0; //系统时钟/64 + 137 1 PWM2PL = 375000/PwmFreq; //PWM2P=24000000/(64*E2uiDSG1PWMFreq); + 138 1 PWM2PH = (375000/PwmFreq) >> 8; + 139 1 PWM2DL = (U16)(PWM2PL+(U16)PWM2PH*256)*DutyRatio/100; + 140 1 PWM2DH = ((U16)(PWM2PL+(U16)PWM2PH*256)*DutyRatio/100) >> 8; + 141 1 } + 142 + 143 + 144 /************************************************************************************************* + 145 * 函数名: Delay1ms + 146 * 参 数: Xms:延迟多少mS + 147 * 返回值: 无 + 148 * 描 述: 延时函数,单位为1mS + 149 特别注意该函数的延时准确性问题,在不同优化等级时,反汇编不同造成延时不一致,实测如下: + 150 1.当配置选项里的代码优化等级设置为3时,j=1670,若禁止所有中断,则实际延时为3.484ms,不禁止中断则受中断影响 + -,达到3.804ms + 151 2.当配置选项里的代码优化等级设置为3时,j=480,若禁止所有中断,则实际延时为1.010ms,不禁止中断则受中断影响 + -锏1.104ms + 152 3.当配置选项里的代码优化等级设置为7时,j=1670,若禁止所有中断,则实际延时为1.002ms,不禁止中断则受中断影响 + -,达到1.090ms + 153 *************************************************************************************************/ + 154 void Delay1ms(U8 Xms) + 155 { + 156 1 U8 i; + 157 1 U16 j, Tcnt; + 158 1 + 159 1 if((CLKCON&0x70) == MCU_CLK_24MHz) + 160 1 { + 161 2 Tcnt = 1670; + 162 2 } + 163 1 else if((CLKCON&0x70) == MCU_CLK_12MHz) + 164 1 { + 165 2 Tcnt = 1670/2; + 166 2 } + 167 1 else if((CLKCON&0x70) == MCU_CLK_6MHz) + 168 1 { + 169 2 Tcnt = 1670/4; + 170 2 } + C51 COMPILER V9.01 MCULIB 02/06/2025 15:28:45 PAGE 4 + + 171 1 else //2MHz + 172 1 { + 173 2 Tcnt = 1670/12; + 174 2 } + 175 1 + 176 1 + 177 1 for(i=0; i E2uiOVvol) + 25 2 { + 26 3 if(++uiOVDelayCnt >= TIME_50mS_50mS) + 27 3 { + 28 4 bOV = 1; + 29 4 uiOVDelayCnt = 0; + 30 4 } + 31 3 } + 32 2 else if(uiCellVmax < E2uiOVRvol) + 33 2 { + 34 3 uiOVDelayCnt = 0; + 35 3 } + 36 2 } + 37 1 } + 38 + 39 + 40 /************************************************************************************************* + 41 * 函数名: PorProtectUV + 42 * 参 数: 无 + 43 * 返回值: 无 + 44 * 描 述: 单节电芯欠压保护检测,保护后置位bUV为1 + 45 *************************************************************************************************/ + 46 void PorProtectUV(void) + 47 { + 48 1 if(!bUV) + 49 1 { + 50 2 if(uiCellVmin < E2uiUVvol) + 51 2 { + 52 3 if(++uiUVDelayCnt >= TIME_50mS_50mS) + C51 COMPILER V9.01 PORSELFTEST 02/06/2025 15:28:46 PAGE 2 + + 53 3 { + 54 4 bUV = 1; + 55 4 uiUVDelayCnt = 0; + 56 4 } + 57 3 } + 58 2 else if(uiCellVmin > E2uiUVRvol) + 59 2 { + 60 3 uiUVDelayCnt = 0; + 61 3 } + 62 2 } + 63 1 } + 64 + 65 + 66 /************************************************************************************************* + 67 * 函数名: PorProtectOTC + 68 * 参 数: 无 + 69 * 返回值: 无 + 70 * 描 述: 充电高温保护检测,保护后置位bOTC为1 + 71 *************************************************************************************************/ + 72 void PorProtectOTC(void) + 73 { + 74 1 if(!bOTC) + 75 1 { + 76 2 if(uiTempeMax > E2uiTempOTC) + 77 2 { + 78 3 if(++uiOTCDelayCnt >= TIME_50mS_50mS) + 79 3 { + 80 4 bOTC = 1; + 81 4 uiOTCDelayCnt = 0; + 82 4 } + 83 3 } + 84 2 else if(uiTempeMax < E2uiTempOTCR) + 85 2 { + 86 3 uiOTCDelayCnt = 0; + 87 3 } + 88 2 } + 89 1 } + 90 + 91 + 92 /************************************************************************************************* + 93 * 函数名: PorProtectUTC + 94 * 参 数: 无 + 95 * 返回值: 无 + 96 * 描 述: 充电低温保护检测,保护后置位bUTC为1 + 97 *************************************************************************************************/ + 98 void PorProtectUTC(void) + 99 { + 100 1 if(!bUTC) + 101 1 { + 102 2 if(uiTempeMin < E2uiTempUTC) + 103 2 { + 104 3 if(++uiUTCDelayCnt >= TIME_50mS_50mS) + 105 3 { + 106 4 bUTC = 1; + 107 4 uiUTCDelayCnt = 0; + 108 4 } + 109 3 } + 110 2 else if(uiTempeMin > E2uiTempUTCR) + 111 2 { + 112 3 uiUTCDelayCnt = 0; + 113 3 } + 114 2 } + C51 COMPILER V9.01 PORSELFTEST 02/06/2025 15:28:46 PAGE 3 + + 115 1 } + 116 + 117 + 118 /************************************************************************************************* + 119 * 函数名: PorProtectOTD + 120 * 参 数: 无 + 121 * 返回值: 无 + 122 * 描 述: 放电高温保护检测,保护后置位bOTD为1 + 123 *************************************************************************************************/ + 124 void PorProtectOTD(void) + 125 { + 126 1 if(!bOTD) + 127 1 { + 128 2 if(uiTempeMax > E2uiTempOTD) + 129 2 { + 130 3 if(++uiOTDDelayCnt >= TIME_50mS_50mS) + 131 3 { + 132 4 bOTD = 1; + 133 4 uiOTDDelayCnt = 0; + 134 4 } + 135 3 } + 136 2 else if(uiTempeMax < E2uiTempOTDR) + 137 2 { + 138 3 uiOTDDelayCnt = 0; + 139 3 } + 140 2 } + 141 1 } + 142 + 143 + 144 /************************************************************************************************* + 145 * 函数名: PorProtectUTD + 146 * 参 数: 无 + 147 * 返回值: 无 + 148 * 描 述: 放电低温保护检测,保护后置位bUTD为1 + 149 *************************************************************************************************/ + 150 void PorProtectUTD(void) + 151 { + 152 1 if(!bUTD) + 153 1 { + 154 2 if(uiTempeMin < E2uiTempUTD) + 155 2 { + 156 3 if(++uiUTDDelayCnt >= TIME_50mS_50mS) + 157 3 { + 158 4 bUTD = 1; + 159 4 uiUTDDelayCnt = 0; + 160 4 } + 161 3 } + 162 2 else if(uiTempeMin > E2uiTempUTDR) + 163 2 { + 164 3 uiUTDDelayCnt = 0; + 165 3 } + 166 2 } + 167 1 } + 168 + 169 + 170 /************************************************************************************************* + 171 * 函数名: ProtectProcess + 172 * 参 数: 无 + 173 * 返回值: 无 + 174 * 描 述: 第一次上电时的自检,持续100mS,上电自检最快完成时间为50mS + 175 *************************************************************************************************/ + 176 void PorSelfTest(void) + C51 COMPILER V9.01 PORSELFTEST 02/06/2025 15:28:46 PAGE 4 + + 177 { + 178 1 if(bPorSelfTestFlg) + 179 1 { + 180 2 AfeCalcuVol(); //第一次上电50mS后自动读取电压数据和温度数据 + 181 2 AfeCalcuTempe(); + 182 2 PorProtectOV(); //检测过压保护及其释放 + 183 2 PorProtectUV(); //检测欠压保护及其释放 + 184 2 + 185 2 PorProtectOTC(); //检测充电高温保护及其释放 + 186 2 PorProtectUTC(); //检测充电低温保护及其释放 + 187 2 PorProtectOTD(); //检测放电高温保护及其释放 + 188 2 PorProtectUTD(); //检测放电低温保护及其释放 + 189 2 + 190 2 if(++ucPorSelfTestDelayCnt >= TIME_50mS_100mS) //如果需要最快自检完成,则将TIME_50mS_100mS修改 + -猅IME_50mS_50mS + 191 2 { + 192 3 bPorSelfTestFlg = 0; //1S自检结束后根据当前状态确定是否进入PD或者是否开 + -豈OS + 193 3 if(bAfeErr || bE2PRErr || bRTCErr || bMcuFlashErr) + 194 3 { + 195 4 bPDFlg = 1; + 196 4 } + 197 3 else + 198 3 { + 199 4 GasGaugeInit(); //计算电量值 + 200 4 } + 201 3 } + 202 2 } + 203 1 } + 204 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 519 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 1 ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 1 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/PorSelfTest.obj b/output/PorSelfTest.obj new file mode 100644 index 0000000..65f19ea Binary files /dev/null and b/output/PorSelfTest.obj differ diff --git a/output/Protect.lst b/output/Protect.lst new file mode 100644 index 0000000..7195467 --- /dev/null +++ b/output/Protect.lst @@ -0,0 +1,507 @@ +C51 COMPILER V9.01 PROTECT 02/06/2025 15:28:46 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE PROTECT +OBJECT MODULE PLACED IN .\output\Protect.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\Protect.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Loa + -d.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\co + -de_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Protect.lst) OBJECT(.\output\Pro + -tect.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 //保护相关的参数 + 13 BOOL bUVLock; //负载锁定,当欠压恢复后,置位该标志,而不是直接清零bUV,当负载释放后 + -偾辶鉨UV + 14 BOOL bOVLock; //充电器锁定,当过压恢复后,置位该标志,而不是直接清零bOV,当充电器释 + -藕螅偾辶鉨OV + 15 U16 xdata uiOVDelayCnt; + 16 U16 xdata uiOVRDelayCnt; + 17 U16 xdata uiUVDelayCnt; + 18 U16 xdata uiUVRDelayCnt; + 19 U16 xdata uiOTCDelayCnt; + 20 U16 xdata uiOTCRDelayCnt; + 21 U16 xdata uiUTCDelayCnt; + 22 U16 xdata uiUTCRDelayCnt; + 23 U16 xdata uiOTDDelayCnt; + 24 U16 xdata uiOTDRDelayCnt; + 25 U16 xdata uiUTDDelayCnt; + 26 U16 xdata uiUTDRDelayCnt; + 27 U16 xdata uiOCCDelayCnt; + 28 U16 xdata uiOCD1DelayCnt; + 29 U16 xdata uiOCD2DelayCnt; + 30 U16 xdata uiOCCRcnt; + 31 U16 xdata uiOCDRcnt; + 32 + 33 /************************************************************************************************* + 34 * 函数名: ProtectOV + 35 * 参 数: 无 + 36 * 返回值: 无 + 37 * 描 述: 单节电池过压保护检测,过压后置位bOV为1 + 38 *************************************************************************************************/ + 39 void ProtectOV(void) + 40 { + 41 1 if(!(bOV||bAFE_OV)) + 42 1 { + 43 2 if(uiCellVmax > E2uiOVvol) + 44 2 { + 45 3 if(++uiOVDelayCnt >= OV_DELAY_CNT) + 46 3 { + 47 4 bOV = 1; + 48 4 bOVLock = 0; + 49 4 uiOVDelayCnt = 0; + 50 4 uiOVRDelayCnt = 0; + C51 COMPILER V9.01 PROTECT 02/06/2025 15:28:46 PAGE 2 + + 51 4 } + 52 3 } + 53 2 else if(uiCellVmax < E2uiOVRvol) + 54 2 { + 55 3 uiOVDelayCnt = 0; + 56 3 } + 57 2 } + 58 1 else if(!bOVLock) + 59 1 { + 60 2 if(uiCellVmax < E2uiOVRvol) + 61 2 { + 62 3 if(++uiOVRDelayCnt >= OVR_DELAY_CNT) + 63 3 { + 64 4 if(bChgerLock) + 65 4 { + 66 5 bOVLock = 1; //过压阈值恢复,但是还需检测负载释放释放 + 67 5 bChgerStartCheckFlg = 1; //开启充电器 + 68 5 } + 69 4 else + 70 4 { + 71 5 bOV = 0; + 72 5 bAFE_OV = 0; + 73 5 AFEClrFlg(); + 74 5 } + 75 4 uiOVDelayCnt = 0; + 76 4 uiOVRDelayCnt = 0; + 77 4 } + 78 3 } + 79 2 else if(uiCellVmax > E2uiOVvol) + 80 2 { + 81 3 uiOVRDelayCnt = 0; + 82 3 } + 83 2 } + 84 1 } + 85 + 86 /************************************************************************************************* + 87 * 函数名: ProtectUV + 88 * 参 数: 无 + 89 * 返回值: 无 + 90 * 描 述: 单节电芯欠压保护检测,保护后置位bUV为1 + 91 *************************************************************************************************/ + 92 void ProtectUV(void) + 93 { + 94 1 if(!bUV) + 95 1 { + 96 2 if(uiCellVmin < E2uiUVvol) + 97 2 { + 98 3 if(++uiUVDelayCnt >= UV_DELAY_CNT) + 99 3 { + 100 4 bUV = 1; + 101 4 bUVLock = 0; + 102 4 uiUVDelayCnt = 0; + 103 4 uiUVRDelayCnt = 0; + 104 4 } + 105 3 } + 106 2 else if(uiCellVmin > E2uiUVRvol) + 107 2 { + 108 3 uiUVDelayCnt = 0; + 109 3 } + 110 2 } + 111 1 else if(!bUVLock) + 112 1 { + C51 COMPILER V9.01 PROTECT 02/06/2025 15:28:46 PAGE 3 + + 113 2 if(uiCellVmin > E2uiUVRvol) + 114 2 { + 115 3 if(++uiUVRDelayCnt >= UVR_DELAY_CNT) + 116 3 { + 117 4 if(bLoadLock) //如果支持负载锁定,则不立刻清UV标志,需要负载释放后再清零 + 118 4 { + 119 5 bUVLock = 1; //欠压阈值恢复,但是还需检测负载释放释放 + 120 5 bLoadStartCheckFlg = 1; //开启负载检测 + 121 5 } + 122 4 else + 123 4 { + 124 5 bUV = 0; + 125 5 } + 126 4 uiUVDelayCnt = 0; + 127 4 uiUVRDelayCnt = 0; + 128 4 } + 129 3 } + 130 2 else if(uiCellVmin < E2uiUVvol) + 131 2 { + 132 3 uiUVRDelayCnt = 0; + 133 3 } + 134 2 } + 135 1 } + 136 + 137 /************************************************************************************************* + 138 * 函数名: ProtectOTC + 139 * 参 数: 无 + 140 * 返回值: 无 + 141 * 描 述: 充电高温保护检测,保护后置位bOTC为1 + 142 *************************************************************************************************/ + 143 void ProtectOTC(void) + 144 { + 145 1 if(!bOTC) + 146 1 { + 147 2 if(uiTempeMax > E2uiTempOTC) + 148 2 { + 149 3 if(++uiOTCDelayCnt >= TEMPE_DELAY_CNT) + 150 3 { + 151 4 bOTC = 1; + 152 4 uiOTCDelayCnt = 0; + 153 4 uiOTCRDelayCnt = 0; + 154 4 } + 155 3 } + 156 2 else if(uiTempeMax < E2uiTempOTCR) + 157 2 { + 158 3 uiOTCDelayCnt = 0; + 159 3 } + 160 2 } + 161 1 else + 162 1 { + 163 2 if(uiTempeMax < E2uiTempOTCR) + 164 2 { + 165 3 if(++uiOTCRDelayCnt >= TEMPER_DELAY_CNT) + 166 3 { + 167 4 bOTC = 0; + 168 4 uiOTCDelayCnt = 0; + 169 4 uiOTCRDelayCnt = 0; + 170 4 } + 171 3 } + 172 2 else if(uiTempeMax > E2uiTempOTC) + 173 2 { + 174 3 uiOTCRDelayCnt = 0; + C51 COMPILER V9.01 PROTECT 02/06/2025 15:28:46 PAGE 4 + + 175 3 } + 176 2 } + 177 1 } + 178 + 179 + 180 /************************************************************************************************* + 181 * 函数名: ProtectUTC + 182 * 参 数: 无 + 183 * 返回值: 无 + 184 * 描 述: 充电低温保护检测,保护后置位bUTC为1 + 185 *************************************************************************************************/ + 186 void ProtectUTC(void) + 187 { + 188 1 if(!bUTC) + 189 1 { + 190 2 if(uiTempeMin < E2uiTempUTC) + 191 2 { + 192 3 if(++uiUTCDelayCnt >= TEMPE_DELAY_CNT) + 193 3 { + 194 4 bUTC = 1; + 195 4 uiUTCDelayCnt = 0; + 196 4 uiUTCRDelayCnt = 0; + 197 4 } + 198 3 } + 199 2 else if(uiTempeMin > E2uiTempUTCR) + 200 2 { + 201 3 uiUTCDelayCnt = 0; + 202 3 } + 203 2 } + 204 1 else + 205 1 { + 206 2 if(uiTempeMin > E2uiTempUTCR) + 207 2 { + 208 3 if(++uiUTCRDelayCnt >= TEMPER_DELAY_CNT) + 209 3 { + 210 4 bUTC = 0; + 211 4 uiUTCDelayCnt = 0; + 212 4 uiUTCRDelayCnt = 0; + 213 4 } + 214 3 } + 215 2 else if(uiTempeMin < E2uiTempUTC) + 216 2 { + 217 3 uiUTCRDelayCnt = 0; + 218 3 } + 219 2 } + 220 1 } + 221 + 222 + 223 /************************************************************************************************* + 224 * 函数名: ProtectOTD + 225 * 参 数: 无 + 226 * 返回值: 无 + 227 * 描 述: 放电高温保护检测,保护后置位bOTD为1 + 228 *************************************************************************************************/ + 229 void ProtectOTD(void) + 230 { + 231 1 if(!bOTD) + 232 1 { + 233 2 if(uiTempeMax > E2uiTempOTD) + 234 2 { + 235 3 if(++uiOTDDelayCnt >= TEMPE_DELAY_CNT) + 236 3 { + C51 COMPILER V9.01 PROTECT 02/06/2025 15:28:46 PAGE 5 + + 237 4 bOTD = 1; + 238 4 uiOTDDelayCnt = 0; + 239 4 uiOTDRDelayCnt = 0; + 240 4 } + 241 3 } + 242 2 else if(uiTempeMax < E2uiTempOTDR) + 243 2 { + 244 3 uiOTDDelayCnt = 0; + 245 3 } + 246 2 } + 247 1 else + 248 1 { + 249 2 if(uiTempeMax < E2uiTempOTDR) + 250 2 { + 251 3 if(++uiOTDRDelayCnt >= TEMPER_DELAY_CNT) + 252 3 { + 253 4 bOTD = 0; + 254 4 uiOTDDelayCnt = 0; + 255 4 uiOTDRDelayCnt = 0; + 256 4 } + 257 3 } + 258 2 else if(uiTempeMax > E2uiTempOTD) + 259 2 { + 260 3 uiOTDRDelayCnt = 0; + 261 3 } + 262 2 } + 263 1 } + 264 + 265 + 266 /************************************************************************************************* + 267 * 函数名: ProtectUTD + 268 * 参 数: 无 + 269 * 返回值: 无 + 270 * 描 述: 放电低温保护检测,保护后置位bUTD为1 + 271 *************************************************************************************************/ + 272 void ProtectUTD(void) + 273 { + 274 1 if(!bUTD) + 275 1 { + 276 2 if(uiTempeMin < E2uiTempUTD) + 277 2 { + 278 3 if(++uiUTDDelayCnt >= TEMPE_DELAY_CNT) + 279 3 { + 280 4 bUTD = 1; + 281 4 uiUTDDelayCnt = 0; + 282 4 uiUTDRDelayCnt = 0; + 283 4 } + 284 3 } + 285 2 else if(uiTempeMin > E2uiTempUTDR) + 286 2 { + 287 3 uiUTDDelayCnt = 0; + 288 3 } + 289 2 } + 290 1 else + 291 1 { + 292 2 if(uiTempeMin > E2uiTempUTDR) + 293 2 { + 294 3 if(++uiUTDRDelayCnt >= TEMPER_DELAY_CNT) + 295 3 { + 296 4 bUTD = 0; + 297 4 uiUTDDelayCnt = 0; + 298 4 uiUTDRDelayCnt = 0; + C51 COMPILER V9.01 PROTECT 02/06/2025 15:28:46 PAGE 6 + + 299 4 } + 300 3 } + 301 2 else if(uiTempeMin < E2uiTempUTD) + 302 2 { + 303 3 uiUTDRDelayCnt = 0; + 304 3 } + 305 2 } + 306 1 } + 307 + 308 + 309 + 310 /************************************************************************************************* + 311 * 函数名: ProtectOCC + 312 * 参 数: 无 + 313 * 返回值: 无 + 314 * 描 述: 充电过流保护检测,保护后置位bOCC为1 + 315 *************************************************************************************************/ + 316 void ProtectOCC(void) + 317 { + 318 1 if(!bOCC) + 319 1 { + 320 2 if(slCadcCurrent > E2slOCCCurrent) + 321 2 { + 322 3 if(++uiOCCDelayCnt >= OCC_DELAY_CNT) + 323 3 { + 324 4 bOCC = 1; + 325 4 bChgerStartCheckFlg = 1; //设置充电器开始检测标志 + 326 4 uiOCCDelayCnt = 0; + 327 4 } + 328 3 } + 329 2 else if(!bChgerChkingFlg) + 330 2 { + 331 3 if(uiOCCDelayCnt > 0) + 332 3 { + 333 4 uiOCCDelayCnt--; + 334 4 } + 335 3 } + 336 2 } + 337 1 } + 338 + 339 + 340 /************************************************************************************************* + 341 * 函数名: ProtectOCD1 + 342 * 参 数: 无 + 343 * 返回值: 无 + 344 * 描 述: 放电过流1保护检测,保护后置位bOCD1为1 + 345 *************************************************************************************************/ + 346 void ProtectOCD1(void) + 347 { + 348 1 if(!bOCD1) + 349 1 { + 350 2 if(slCadcCurrent < E2slOCD1Current) + 351 2 { + 352 3 if(++uiOCD1DelayCnt >= OCD1_DELAY_CNT) + 353 3 { + 354 4 uiOCD1DelayCnt = 0; + 355 4 bOCD1 = 1; + 356 4 bLoadStartCheckFlg = 1; //开启负载检测 + 357 4 } + 358 3 } + 359 2 else if(!bLoadChkingFlg) + 360 2 { + C51 COMPILER V9.01 PROTECT 02/06/2025 15:28:46 PAGE 7 + + 361 3 if(uiOCD1DelayCnt > 0) + 362 3 { + 363 4 uiOCD1DelayCnt--; + 364 4 } + 365 3 } + 366 2 } + 367 1 } + 368 + 369 + 370 /************************************************************************************************* + 371 * 函数名: ProtectOCD2 + 372 * 参 数: 无 + 373 * 返回值: 无 + 374 * 描 述: 放电过流2保护检测,保护后置位bOCD2为1 + 375 *************************************************************************************************/ + 376 void ProtectOCD2(void) + 377 { + 378 1 if(!bOCD2) + 379 1 { + 380 2 if(slCadcCurrent < E2slOCD2Current) + 381 2 { + 382 3 if(++uiOCD2DelayCnt > OCD2_DELAY_CNT) + 383 3 { + 384 4 uiOCD2DelayCnt = 0; + 385 4 bOCD2 = 1; + 386 4 bLoadStartCheckFlg = 1; //开启负载检测 + 387 4 } + 388 3 } + 389 2 else if(!bLoadChkingFlg) + 390 2 { + 391 3 if(uiOCD2DelayCnt > 0) + 392 3 { + 393 4 uiOCD2DelayCnt--; + 394 4 } + 395 3 } + 396 2 } + 397 1 } + 398 + 399 + 400 /************************************************************************************************* + 401 * 函数名: ProtectProcess + 402 * 参 数: 无 + 403 * 返回值: 无 + 404 * 描 述: 各种保护检测 + 405 *************************************************************************************************/ + 406 void ProtectProcess(void) + 407 { + 408 1 if(!bPorSelfTestFlg) //如果是上电1s自检过程中,则不检测正常保护 + 409 1 { + 410 2 ProtectOV(); //检测过压保护及其释放 + 411 2 ProtectUV(); //检测欠压保护及其释放 + 412 2 + 413 2 ProtectOTC(); //检测充电高温保护及其释放 + 414 2 ProtectUTC(); //检测充电低温保护及其释放 + 415 2 ProtectOTD(); //检测放电高温保护及其释放 + 416 2 ProtectUTD(); //检测放电低温保护及其释放 + 417 2 + 418 2 ProtectOCC(); //充电过流保护 + 419 2 ProtectOCD1(); //放电过流1保护 + 420 2 ProtectOCD2(); //放电过流2保护 + 421 2 } + 422 1 } + C51 COMPILER V9.01 PROTECT 02/06/2025 15:28:46 PAGE 8 + + 423 + 424 + 425 /************************************************************************************************* + 426 * 函数名: ProtectOCRecover + 427 * 参 数: 无 + 428 * 返回值: 无 + 429 * 描 述: 电流保护自恢复 + 430 *************************************************************************************************/ + 431 void ProtectOCRecover(void) + 432 { + 433 1 if(bOCRC_EN) + 434 1 { + 435 2 if(bOCD1 || bOCD2 || bAFE_SC) + 436 2 { + 437 3 if(++uiOCDRcnt >= OCDR_DELAY_CNT) + 438 3 { + 439 4 ucLoadRCnt = 0; + 440 4 uiOCDRcnt = 0; + 441 4 bOCD1 = 0; + 442 4 bOCD2 = 0; + 443 4 bLoadStartCheckFlg = 0; + 444 4 bLoadChkingFlg = 0; + 445 4 if(bAFE_SC) + 446 4 { + 447 5 bAFE_SC = 0; + 448 5 AFEClrFlg(); + 449 5 } + 450 4 } + 451 3 } + 452 2 + 453 2 if(bOCC) + 454 2 { + 455 3 if(++uiOCCRcnt > OCCR_DELAY_CNT) + 456 3 { + 457 4 uiOCCRcnt = 0; + 458 4 bOCC = 0; + 459 4 ucChgerRCnt = 0; + 460 4 bChgerChkingFlg = 0; + 461 4 } + 462 3 } + 463 2 } + 464 1 } + 465 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 1552 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 34 ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 2 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Protect.obj b/output/Protect.obj new file mode 100644 index 0000000..edd56da Binary files /dev/null and b/output/Protect.obj differ diff --git a/output/RTC.lst b/output/RTC.lst new file mode 100644 index 0000000..3f413c8 --- /dev/null +++ b/output/RTC.lst @@ -0,0 +1,283 @@ +C51 COMPILER V9.01 RTC 02/06/2025 15:28:46 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE RTC +OBJECT MODULE PLACED IN .\output\RTC.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\RTC.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load.OR + -C) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_c + -lassb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\RTC.lst) OBJECT(.\output\RTC.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 + 12 BOOL bRTCErr; + 13 BOOL bRTCTwiRWErr; + 14 U8 xdata ucRTCTwiRWErrDelayCnt; + 15 RTC_VAR xdata RTC; //For External RTC + 16 + 17 /************************************************************************************************* + 18 * 函数名: RTCTwiCheck + 19 * 参 数: 无 + 20 * 返回值: 无 + 21 * 描 述: 连续5S检测到RTC的I2C通讯错误,则置位bRTCErr=1 + 22 *************************************************************************************************/ + 23 void RTCTwiCheck(void) + 24 { + 25 1 if(bEnEEPRomBK) + 26 1 { + 27 2 if(bRTCTwiRWErr) + 28 2 { + 29 3 if(++ucRTCTwiRWErrDelayCnt >= TIME_1S_5S) + 30 3 { + 31 4 bRTCErr = 1; + 32 4 ucRTCTwiRWErrDelayCnt = TIME_1S_5S; + 33 4 } + 34 3 } + 35 2 else + 36 2 { + 37 3 ucRTCTwiRWErrDelayCnt = 0; + 38 3 } + 39 2 } + 40 1 } + 41 + 42 + 43 /************************************************************************************************* + 44 * 函数名: RTCWrite + 45 * 参 数: WrAddr: 寄存器地址;Length:数据长度;WrBuf:数据缓存Buf + 46 * 返回值: 无 + 47 * 描 述: RTC写寄存器操作,如果出错连续写两次 + 48 *************************************************************************************************/ + 49 BOOL RTCWrite(U8 WrAddr, U8 Length, U8 xdata *WrBuf) + 50 { + 51 1 BOOL Result = 0; + 52 1 U8 i; + 53 1 + C51 COMPILER V9.01 RTC 02/06/2025 15:28:46 PAGE 2 + + 54 1 if(!bRTCErr) + 55 1 { + 56 2 for(i=0; i<5; i++) + 57 2 { + 58 3 #ifdef TWI_Hardware_Module + 59 3 if(TwiWrite(RTC_ID, WrAddr, TWI_ADDR_1B, Length, TWI_CRC_NO, WrBuf)) + 60 3 { + 61 4 Result = 1; + 62 4 break; + 63 4 } + 64 3 #else + if(Result = TwiWrite(RTC_ID, WrAddr, Length, WrBuf)) + { + Result = 1; + break; + } + #endif + 71 3 Delay1ms(1); + 72 3 } + 73 2 } + 74 1 bRTCTwiRWErr = !Result; + 75 1 + 76 1 return Result; + 77 1 } + 78 + 79 + 80 /************************************************************************************************* + 81 * 函数名: RTCRead + 82 * 参 数: RdAddr: 寄存器地址;Length:数据长度;WrBuf:数据缓存Buf + 83 * 返回值: 无 + 84 * 描 述: RTC读寄存器操作,如果出错连续读两次 + 85 *************************************************************************************************/ + 86 BOOL RTCRead(U8 RdAddr, U8 Length, U8 xdata *RdBuf) + 87 { + 88 1 BOOL Result = 0; + 89 1 U8 i; + 90 1 + 91 1 if(!bRTCErr) + 92 1 { + 93 2 for(i=0; i<5; i++) + 94 2 { + 95 3 #ifdef TWI_Hardware_Module + 96 3 if(TwiRead(RTC_ID, RdAddr, TWI_ADDR_1B, Length, TWI_CRC_NO, RdBuf)) + 97 3 { + 98 4 Result = 1; + 99 4 break; + 100 4 } + 101 3 #else + if(TwiRead(RTC_ID, RdAddr, Length, RdBuf)) + { + Result = 1; + break; + } + #endif + 108 3 Delay1ms(1); + 109 3 } + 110 2 } + 111 1 bRTCTwiRWErr = !Result; + 112 1 + 113 1 return Result; + 114 1 } + 115 + C51 COMPILER V9.01 RTC 02/06/2025 15:28:46 PAGE 3 + + 116 /************************************************************************************************* + 117 * 函数名: RTCReadTime + 118 * 参 数: RdAddr: 寄存器地址;Length:数据长度;WrBuf:数据缓存Buf + 119 * 返回值: 无 + 120 * 描 述: RTC读寄存器操作,如果出错连续读两次 + 121 *************************************************************************************************/ + 122 BOOL RTCReadTime(RTC_VAR xdata *RtcRdVal) + 123 { + 124 1 U8 xdata rtcbuf[9]; + 125 1 BOOL Result = 0; + 126 1 + 127 1 if(RTCRead(0x00, 9, &rtcbuf)) //从RTC读取时间 + 128 1 { + 129 2 if((rtcbuf[7]&0x01) == 0x00) //judge RTCF bit,看是否曾经掉过电 + 130 2 { + 131 3 if( ((rtcbuf[2]&0x80) == 0) //不是24小时制 + 132 3 || ((rtcbuf[0]&0x70) > 0x50) || ((rtcbuf[0]&0x0F) > 0x09) || ((rtcbuf[0]&0x7F) > 0x59) + 133 3 || ((rtcbuf[1]&0x70) > 0x50) || ((rtcbuf[1]&0x0F) > 0x09) || ((rtcbuf[1]&0x7F) > 0x59) + 134 3 || ((rtcbuf[2]&0x30) > 0x20) || ((rtcbuf[2]&0x0F) > 0x09) || ((rtcbuf[2]&0x2F) > 0x24) + 135 3 || ((rtcbuf[3]&0x30) > 0x30) || ((rtcbuf[3]&0x0F) > 0x09) || ((rtcbuf[3]&0x3F) > 0x31) || (!(r + -tcbuf[3]&0x3F)) + 136 3 || ((rtcbuf[4]&0x10) > 0x10) || ((rtcbuf[4]&0x0F) > 0x09) || ((rtcbuf[4]&0x1F) > 0x12) || (!(r + -tcbuf[4]&0x1F)) + 137 3 || ((rtcbuf[5]&0xF0) > 0x90) || ((rtcbuf[5]&0x0F) > 0x09) || ((rtcbuf[5]&0xFF) > 0x99) + 138 3 || ((rtcbuf[6]&0x07) > 0x06) ) //对小时制及数据合法性进行检查 + 139 3 { + 140 4 rtcbuf[0] = RtcRdVal->Second; //数据不合法,可能是因为RTC未初始化导致 + 141 4 rtcbuf[1] = RtcRdVal->Minute; + 142 4 rtcbuf[2] = RtcRdVal->Hour; + 143 4 rtcbuf[3] = RtcRdVal->Date; + 144 4 rtcbuf[4] = RtcRdVal->Month; + 145 4 rtcbuf[5] = RtcRdVal->Year; + 146 4 rtcbuf[6] = RtcRdVal->Week; + 147 4 + 148 4 Result = RTCModifyTime((RTC_VAR xdata *)(&rtcbuf)); + 149 4 } + 150 3 else + 151 3 { + 152 4 RtcRdVal->Second = rtcbuf[0]; //数据合法,则保存从RTC读回的时间 + 153 4 RtcRdVal->Minute = rtcbuf[1]; + 154 4 RtcRdVal->Hour = rtcbuf[2]&0x1F; + 155 4 RtcRdVal->Date = rtcbuf[3]; + 156 4 RtcRdVal->Month = rtcbuf[4]; + 157 4 RtcRdVal->Year = rtcbuf[5]; + 158 4 RtcRdVal->Week = rtcbuf[6]; + 159 4 + 160 4 Result = 1; + 161 4 } + 162 3 } + 163 2 else //曾经掉电过,认为RTC不准。 + 164 2 { + 165 3 Result = RTCModifyTime((RTC_VAR xdata *)RtcRdVal); //将当前的时间,或从E2中读取的时间,或固定 + -时间重新写入RTC + 166 3 } + 167 2 } + 168 1 + 169 1 return Result; + 170 1 } + 171 + 172 + 173 /************************************************************************************************* + 174 * 函数名: RTCModifyTime + C51 COMPILER V9.01 RTC 02/06/2025 15:28:46 PAGE 4 + + 175 * 参 数: RTC:将RTC参数传递进来,进行RTC更新 + 176 * 返回值: 无 + 177 * 描 述: RTC读寄存器操作,如果出错连续读两次 + 178 *************************************************************************************************/ + 179 BOOL RTCModifyTime(RTC_VAR xdata *RtcMdyVal) + 180 { + 181 1 BOOL Result = 0; + 182 1 U8 xdata rtcdata; + 183 1 U8 xdata rtctemp[7]; + 184 1 + 185 1 rtcdata = 0x90; + 186 1 Result = RTCWrite(RTC_REG_STATUS, 1, &rtcdata); + 187 1 + 188 1 rtctemp[0] = RtcMdyVal->Second; + 189 1 rtctemp[1] = RtcMdyVal->Minute; + 190 1 rtctemp[2] = RtcMdyVal->Hour|0x80; //设置为24小时制 + 191 1 rtctemp[3] = RtcMdyVal->Date; + 192 1 rtctemp[4] = RtcMdyVal->Month; + 193 1 rtctemp[5] = RtcMdyVal->Year; + 194 1 rtctemp[6] = RtcMdyVal->Week; + 195 1 + 196 1 Result = RTCWrite(RTC_REG_SECOND, 7, (U8 xdata *)&rtctemp); + 197 1 + 198 1 return Result; + 199 1 } + 200 + 201 + 202 /************************************************************************************************* + 203 * 函数名: RTCInitTime + 204 * 参 数: RTC:将RTC参数传递进来,进行RTC初始化 + 205 * 返回值: 无 + 206 * 描 述: 初始化,从EEP读取保存的RTC时间参数进行第一次初始化,如果EEP没有保存,则默认初始化时间:20年5月1 + -12点 + 207 *************************************************************************************************/ + 208 BOOL RTCInitTime(RTC_VAR xdata *RtcInitVal) + 209 { + 210 1 BOOL Result = 0; + 211 1 U8 xdata rtcbuf[9]; + 212 1 U8 xdata i; + 213 1 U8 xdata checksum = 0; + 214 1 + 215 1 MemorySet(rtcbuf, 0, sizeof(rtcbuf)); + 216 1 + 217 1 E2PRomRead(E2PROM_RTC_ADDR, 9, rtcbuf); //从E2备份区读出RTC数据 + 218 1 for(i=0; i<7; i++) + 219 1 { + 220 2 checksum += rtcbuf[i]; + 221 2 } + 222 1 + 223 1 if((rtcbuf[7]!=checksum) || (rtcbuf[8]!=0x5a)) //若校验失败,说明E2读出的时间不可靠,直接把 + -龀奔淠美从 + 224 1 { + 225 2 rtcbuf[0] = 0x00; //second + 226 2 rtcbuf[1] = 0x00; //minute + 227 2 rtcbuf[2] = 0x12; //hour + 228 2 rtcbuf[3] = 0x01; //date + 229 2 rtcbuf[4] = 0x05; //month + 230 2 rtcbuf[5] = 0x20; //year + 231 2 rtcbuf[6] = 0x05; //week + 232 2 } + 233 1 + 234 1 MemoryCopy(rtcbuf, (U8 xdata *)RtcInitVal, 7); //从E2读出的时间或出厂时间先放到RTC时间寄存器 + C51 COMPILER V9.01 RTC 02/06/2025 15:28:46 PAGE 5 + + -中存起来 + 235 1 Result = RTCReadTime((RTC_VAR xdata *)RtcInitVal); + 236 1 + 237 1 return Result; + 238 1 } + 239 + 240 + 241 + 242 + 243 + 244 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 958 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = 8 43 + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 2 5 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/RTC.obj b/output/RTC.obj new file mode 100644 index 0000000..3704b97 Binary files /dev/null and b/output/RTC.obj differ diff --git a/output/STARTUP.lst b/output/STARTUP.lst new file mode 100644 index 0000000..bc1ed54 --- /dev/null +++ b/output/STARTUP.lst @@ -0,0 +1,75 @@ +A51 MACRO ASSEMBLER STARTUP 02/06/2025 15:28:46 PAGE 1 + + +MACRO ASSEMBLER A51 V8.02 +OBJECT MODULE PLACED IN .\output\STARTUP.obj +ASSEMBLER INVOKED BY: D:\Tool\Keil\C51\BIN\A51.EXE code_drv\STARTUP.A51 NOMOD51 INCDIR(.\code_classb\iec60730_lib\includ + e;.\code_classb\iec60730_proc\Include;.\code_classb\config) SET(LARGE) DEBUG PRINT(.\output\STARTU + P.lst) OBJECT(.\output\STARTUP.obj) EP + +LOC OBJ LINE SOURCE + + 1 $nomod51 + 2 NAME ?C_STARTUP + 3 + 4 EXTRN CODE (?C_START) + 5 PUBLIC ?C_STARTUP + 6 + 00B2 7 CLKCON EQU 0B2H + 8 + 9 EXTRN IDATA (STACK) + 10 +---- 11 CSEG AT 1000H +1000 020000 F 12 ?C_STARTUP: LJMP STARTUP1 + 13 + 14 + 15 ?C_C51STARTUP SEGMENT CODE +---- 16 RSEG ?C_C51STARTUP +0000 17 STARTUP1: +0000 758100 F 18 MOV SP, #STACK-1 +0003 00 19 NOP + 20 ;此处在全局变量初始化之前,可清硆am + 21 ;清砳data +0004 7808 22 MOV R0,#0x08 +0006 23 FOR_EACH_IDATA: +0006 7600 24 MOV @R0,#0x00 +0008 08 25 INC R0 +0009 B800FA F 26 CJNE R0,#STACK,FOR_EACH_IDATA + 27 ;清硏data +000C E4 28 CLR A +000D 900000 29 MOV DPTR,#0x0000 +0010 30 FOR_EACH_XDATA: +0010 F0 31 MOVX @DPTR,A +0011 A3 32 INC DPTR +0012 A882 33 MOV R0,DPL +0014 A983 34 MOV R1,DPH +0016 B8DCF7 35 CJNE R0,#0xDC,FOR_EACH_XDATA +0019 B907F4 36 CJNE R1,#0x07,FOR_EACH_XDATA +001C 00 37 NOP +001D 020000 F 38 LJMP ?C_START + 39 END + A51 MACRO ASSEMBLER STARTUP 02/06/2025 15:28:46 PAGE 2 + +SYMBOL TABLE LISTING +------ ----- ------- + + +N A M E T Y P E V A L U E ATTRIBUTES + +?C_C51STARTUP. . . C SEG 0020H REL=UNIT +?C_START . . . . . C ADDR ----- EXT +?C_STARTUP . . . . C ADDR 1000H A +CLKCON . . . . . . N NUMB 00B2H A +DPH. . . . . . . . D ADDR 0083H A +DPL. . . . . . . . D ADDR 0082H A +FOR_EACH_IDATA . . C ADDR 0006H R SEG=?C_C51STARTUP +FOR_EACH_XDATA . . C ADDR 0010H R SEG=?C_C51STARTUP +SP . . . . . . . . D ADDR 0081H A +STACK. . . . . . . I ADDR ----- EXT +STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP + + +REGISTER BANK(S) USED: 0 + + +ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/STARTUP.obj b/output/STARTUP.obj new file mode 100644 index 0000000..a126cfd Binary files /dev/null and b/output/STARTUP.obj differ diff --git a/output/TWI.lst b/output/TWI.lst new file mode 100644 index 0000000..1a74833 --- /dev/null +++ b/output/TWI.lst @@ -0,0 +1,487 @@ +C51 COMPILER V9.01 TWI 02/06/2025 15:28:46 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE TWI +OBJECT MODULE PLACED IN .\output\TWI.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\TWI.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load.OR + -C) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_c + -lassb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\TWI.lst) OBJECT(.\output\TWI.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2020/04/26 + 6 History: + 7 V2.0 2020/04/26 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 #ifdef TWI_Hardware_Module + 12 + 13 U8 code CRC8Table[256]= + 14 { //120424-1 CRC Table + 15 0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D, + 16 0x70,0x77,0x7E,0x79,0x6C,0x6B,0x62,0x65,0x48,0x4F,0x46,0x41,0x54,0x53,0x5A,0x5D, + 17 0xE0,0xE7,0xEE,0xE9,0xFC,0xFB,0xF2,0xF5,0xD8,0xDF,0xD6,0xD1,0xC4,0xC3,0xCA,0xCD, + 18 0x90,0x97,0x9E,0x99,0x8C,0x8B,0x82,0x85,0xA8,0xAF,0xA6,0xA1,0xB4,0xB3,0xBA,0xBD, + 19 0xC7,0xC0,0xC9,0xCE,0xDB,0xDC,0xD5,0xD2,0xFF,0xF8,0xF1,0xF6,0xE3,0xE4,0xED,0xEA, + 20 0xB7,0xB0,0xB9,0xBE,0xAB,0xAC,0xA5,0xA2,0x8F,0x88,0x81,0x86,0x93,0x94,0x9D,0x9A, + 21 0x27,0x20,0x29,0x2E,0x3B,0x3C,0x35,0x32,0x1F,0x18,0x11,0x16,0x03,0x04,0x0D,0x0A, + 22 0x57,0x50,0x59,0x5E,0x4B,0x4C,0x45,0x42,0x6F,0x68,0x61,0x66,0x73,0x74,0x7D,0x7A, + 23 0x89,0x8E,0x87,0x80,0x95,0x92,0x9B,0x9C,0xB1,0xB6,0xBF,0xB8,0xAD,0xAA,0xA3,0xA4, + 24 0xF9,0xFE,0xF7,0xF0,0xE5,0xE2,0xEB,0xEC,0xC1,0xC6,0xCF,0xC8,0xDD,0xDA,0xD3,0xD4, + 25 0x69,0x6E,0x67,0x60,0x75,0x72,0x7B,0x7C,0x51,0x56,0x5F,0x58,0x4D,0x4A,0x43,0x44, + 26 0x19,0x1E,0x17,0x10,0x05,0x02,0x0B,0x0C,0x21,0x26,0x2F,0x28,0x3D,0x3A,0x33,0x34, + 27 0x4E,0x49,0x40,0x47,0x52,0x55,0x5C,0x5B,0x76,0x71,0x78,0x7F,0x6A,0x6D,0x64,0x63, + 28 0x3E,0x39,0x30,0x37,0x22,0x25,0x2C,0x2B,0x06,0x01,0x08,0x0F,0x1A,0x1D,0x14,0x13, + 29 0xAE,0xA9,0xA0,0xA7,0xB2,0xB5,0xBC,0xBB,0x96,0x91,0x98,0x9F,0x8A,0x8D,0x84,0x83, + 30 0xDE,0xD9,0xD0,0xD7,0xC2,0xC5,0xCC,0xCB,0xE6,0xE1,0xE8,0xEF,0xFA,0xFD,0xF4,0xF3 + 31 }; + 32 /************************************************************************************************* + 33 * 函数名: CRC8cal + 34 * 参 数: *p:数据指针;counter:所需计算的长度 + 35 * 返回值: 无 + 36 * 描 述: CRC8就散 + 37 *************************************************************************************************/ + 38 U8 CRC8cal(U8 *p, U8 counter) //look-up table calculte CRC + 39 { + 40 1 U8 crc8 = 0; + 41 1 + 42 1 for( ; counter > 0; counter--) + 43 1 { + 44 2 crc8 = CRC8Table[crc8^*p]; + 45 2 p++; + 46 2 } + 47 1 return(crc8); + 48 1 } + 49 + 50 + 51 + 52 + 53 /************************************************************************************************* + C51 COMPILER V9.01 TWI 02/06/2025 15:28:46 PAGE 2 + + 54 * 函数名: TWICheckStatus + 55 * 参 数: Status:当前TWI的状态 + 56 * 返回值: 无 + 57 * 描 述: 检测TWI的各个状态是否正常 + 58 *************************************************************************************************/ + 59 BOOL TWICheckStatus(U8 Status) + 60 { + 61 1 BOOL Result = 1; + 62 1 U16 timeoutcount = 48000; //硬件IIC时timeoutcount大于100可正常通讯,软件IIC建议保持原值 (标准DEMO板 + -) + 63 1 + 64 1 while((TWICON&0x08)==0) //等待TWI通讯结束 + 65 1 { + 66 2 McuWDTClear(); //清除看门狗 + 67 2 if(timeoutcount) + 68 2 { + 69 3 timeoutcount--; + 70 3 } + 71 2 else + 72 2 { + 73 3 break; + 74 3 } + 75 2 } + 76 1 if((TWISTA&0xf8) != Status) + 77 1 { + 78 2 Result = 0; //Error + 79 2 } + 80 1 + 81 1 return Result; + 82 1 } + 83 + 84 + 85 + 86 + 87 /************************************************************************************************* + 88 * 函数名: TwiWrite + 89 * 参 数: SlaveID: Slave ID + 90 WrAddr: 写入地址 + 91 AddrType:地址长度,0:长度为1Byte;1:长度为2Bytes + 92 Length: 数据长度(不含CRC字节) + 93 CrcFlg: Twi通讯是否支持CRC校验,0:不支持CRC,1:支持CRC + 94 *WrBuf: 写入数据存放地址 + 95 * 返回值: 无 + 96 * 描 述: Twi写入操作,包括写入AFE(支持CRC)、RTC和EEPROM(地址长度为2Bytes) + 97 *************************************************************************************************/ + 98 BOOL TwiWrite(U8 SlaveID, U16 WrAddr, U8 AddrType, U8 Length, U8 CrcFlg, U8 xdata *WrBuf) + 99 { + 100 1 U8 i; + 101 1 U8 TempBuf[4]; + 102 1 BOOL Result = 1; + 103 1 U16 timeoutcount = 48000; + 104 1 + 105 1 TempBuf[0] = SlaveID; + 106 1 TempBuf[1] = (U8)WrAddr; + 107 1 TempBuf[2] = *WrBuf; + 108 1 TempBuf[3] = CRC8cal(TempBuf, 3); + 109 1 + 110 1 if(Length > 0) + 111 1 { + 112 2 HTimeoutChk(); + 113 2 TWICON = 0x60; //Start + 114 2 if((!TWICheckStatus(0x08))&&(!TWICheckStatus(0x10))) + C51 COMPILER V9.01 TWI 02/06/2025 15:28:46 PAGE 3 + + 115 2 { + 116 3 Result = 0; + 117 3 goto WrErr; + 118 3 } + 119 2 + 120 2 TWIDAT = SlaveID; //Slave地址 + 121 2 TWICON = 0x40; + 122 2 if(!TWICheckStatus(0x18)) + 123 2 { + 124 3 Result = 0; + 125 3 goto WrErr; + 126 3 } + 127 2 + 128 2 if(AddrType == TWI_ADDR_2B) + 129 2 { + 130 3 TWIDAT = (U8)(WrAddr>>8); //写寄存器高字节地址-仅针对外挂EEPROM + 131 3 TWICON = 0x40; + 132 3 if(!TWICheckStatus(0x28)) + 133 3 { + 134 4 Result = 0; + 135 4 goto WrErr; + 136 4 } + 137 3 } + 138 2 + 139 2 TWIDAT = (U8)WrAddr; //写寄存器地址 + 140 2 TWICON = 0x40; + 141 2 if(!TWICheckStatus(0x28)) + 142 2 { + 143 3 Result = 0; + 144 3 goto WrErr; + 145 3 } + 146 2 + 147 2 if(CrcFlg == TWI_CRC_YES) //如果是写AFE寄存器,则固定写一个字节+CRC + 148 2 { + 149 3 TWIDAT = *WrBuf; //Write Data + 150 3 TWICON = 0x40; + 151 3 if(!TWICheckStatus(0x28)) + 152 3 { + 153 4 Result = 0; + 154 4 goto WrErr; + 155 4 } + 156 3 + 157 3 TWIDAT = TempBuf[3]; //Write CRC + 158 3 TWICON = 0x40; + 159 3 if(!TWICheckStatus(0x28)) + 160 3 { + 161 4 Result = 0; + 162 4 goto WrErr; + 163 4 } + 164 3 } + 165 2 else //写EEPROM和RTC + 166 2 { + 167 3 for(i=0; i 0) + 224 1 { + 225 2 HTimeoutChk(); + 226 2 TWICON = 0x60; //Start + 227 2 if((!TWICheckStatus(0x08))&&(!TWICheckStatus(0x10))) + 228 2 { + 229 3 Result = 0; + 230 3 goto RdErr; + 231 3 } + 232 2 + 233 2 TWIDAT = SlaveID; //发送Slave写地址 + 234 2 TWICON = 0x40; + 235 2 if(!TWICheckStatus(0x18)) + 236 2 { + 237 3 Result = 0; + 238 3 goto RdErr; + C51 COMPILER V9.01 TWI 02/06/2025 15:28:46 PAGE 5 + + 239 3 } + 240 2 + 241 2 if(AddrType == TWI_ADDR_2B) //地址为2Bytes + 242 2 { + 243 3 TWIDAT = (U8)(RdAddr>>8); //读寄存器高字节地址-仅针对外挂EEPROM + 244 3 TWICON = 0x40; + 245 3 if(!TWICheckStatus(0x28)) + 246 3 { + 247 4 Result = 0; + 248 4 goto RdErr; + 249 4 } + 250 3 } + 251 2 + 252 2 TWIDAT = (U8)RdAddr; //发送寄存器低字节地址 + 253 2 TWICON = 0x40; + 254 2 if(!TWICheckStatus(0x28)) + 255 2 { + 256 3 Result = 0; + 257 3 goto RdErr; + 258 3 } + 259 2 + 260 2 // if(SlaveID != AFE_ID) + 261 2 // { + 262 2 // TWIDAT = Length; //发送读取数据长度 + 263 2 // TWICON = 0x40; + 264 2 // if(!TWICheckStatus(0x28)) + 265 2 // { + 266 2 // Result = 0; + 267 2 // goto RdErr; + 268 2 // } + 269 2 // } + 270 2 + 271 2 TWICON = 0x60; //发送RStart + 272 2 if((!TWICheckStatus(0x08))&&(!TWICheckStatus(0x10))) + 273 2 { + 274 3 Result = 0; + 275 3 goto RdErr; + 276 3 } + 277 2 + 278 2 TWIDAT = SlaveID|0x01; //发送Slave读地址 + 279 2 TWICON = 0x40; + 280 2 if(!TWICheckStatus(0x40)) + 281 2 { + 282 3 Result = 0; + 283 3 goto RdErr; + 284 3 } + 285 2 + 286 2 for(i=0; i= 10)&&(TWI_FREQ_KHz <= 400)) + 375 1 // { + 376 1 // #if TWIBR1 < 256 + 377 1 // TWIBR = TWIBR1; + 378 1 // TWISTA |= 0x06; + 379 1 // #elif TWIBR2 < 256 + 380 1 // TWIBR = TWIBR2; + 381 1 // TWISTA |= 0x04; + 382 1 // #elif TWIBR3 < 256 + 383 1 // TWIBR = TWIBR3; + 384 1 // TWISTA |= 0x02; + 385 1 // #elif TWIBR4 < 256 + 386 1 // TWIBR = TWIBR4; + 387 1 // TWISTA |= 0x00; + 388 1 // #endif + 389 1 // } + 390 1 // #else + 391 1 // { + 392 1 // #error: "Please enter a number(TWI_FREQ_KHz) from 10 to 400!"; + 393 1 // } + 394 1 // + 395 1 // #endif + 396 1 + 397 1 TWICON = 0x40; //ENTWI ,禁止高电平超时 + 398 1 TWTFREE = 0xff; //最大超时配置 + 399 1 TWIDAT = 0x00; + 400 1 } + 401 + 402 + 403 //void TwiInit(void) + 404 //{ + 405 // U16 i,k; + 406 // U8 j; + 407 // TWICR = 0x32; //默认配置:SCL--P0.5;SDA--P0.4 + 408 // TWITOUT = 0x00; //外部有上拉电阻,故芯片内部上拉不用使能 + 409 // i = (24000/TWI_FREQ_KHz-16)/2; //配置发送波特率,禁止总线超时判断,f=fsys/(16+2*CR*TWIBR)=24 + -MHz/(16+2*16*TWIBR)=**KHz + 410 // for(j=1;j<4;j++) + 411 // { + 412 // k =1<<(2*j-2); + 413 // if(i / k <= 255) + 414 // { + 415 // TWIBR = i / k; + 416 // switch (j) + 417 // { + 418 // case 1: + 419 // TWISTA = 0x00; + 420 // break; + 421 // + C51 COMPILER V9.01 TWI 02/06/2025 15:28:46 PAGE 8 + + 422 // case 2: + 423 // TWISTA = 0x02; + 424 // break; + 425 // + 426 // case 3: + 427 // TWISTA = 0x04; + 428 // break; + 429 // + 430 // case 4: + 431 // TWISTA = 0x06; + 432 // break; + 433 // } + 434 // goto loop; + 435 // } + 436 // } + 437 //loop: + 438 //// TWISTA = 0x06; //16分频 + 439 // TWICON = 0x40; //ENTWI ,禁止高电平超时 + 440 // TWTFREE = 0xff; //最大超时配置 + 441 // TWIDAT = 0x00; + 442 //} + 443 + 444 #endif + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 858 ---- + CONSTANT SIZE = 256 ---- + XDATA SIZE = ---- 72 + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- 3 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/TWI.obj b/output/TWI.obj new file mode 100644 index 0000000..70f3a29 Binary files /dev/null and b/output/TWI.obj differ diff --git a/output/Thermistor.lst b/output/Thermistor.lst new file mode 100644 index 0000000..ef9a6bb --- /dev/null +++ b/output/Thermistor.lst @@ -0,0 +1,397 @@ +C51 COMPILER V9.01 THERMISTOR 02/06/2025 15:28:46 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE THERMISTOR +OBJECT MODULE PLACED IN .\output\Thermistor.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\Thermistor.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_ + -Load.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;. + -\code_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Thermistor.lst) OBJECT(.\outp + -ut\Thermistor.obj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V1.0 + 5 Date: 2020/12/29 + 6 History: + 7 V0.0 2014/08/28 Preliminary + 8 ********************************************************************************/ + 9 #include "Main.h" + 10 + 11 /************************************************************************************************* + 12 * 函数名: NTC103AT + 13 * 参 数: 无 + 14 * 返回值: 无 + 15 * 描 述: b值为3435的NTC阻值表,单位为10 ohms + 16 *************************************************************************************************/ + 17 #if RT_TABLE == NTC_103AT_3435 + 18 U16 code NTC103AT[NTC103AT_ARRAY_LEN]= //103AT,b值为3435 + 19 { + 20 32950, //-50 + 21 30970, //-49 + 22 29124, //-48 + 23 27404, //-47 + 24 25799, //-46 + 25 24770, //-45 + 26 23335, //-44 + 27 21995, //-43 + 28 20743, //-42 + 29 19572, //-41 + 30 18850, //-40 + 31 17796, //-39 + 32 16810, //-38 + 33 15885, //-37 + 34 15019, //-36 + 35 14410, //-35 + 36 13633, //-34 + 37 12904, //-33 + 38 12219, //-32 + 39 11576, //-31 + 40 11130, //-30 + 41 10550, //-29 + 42 10005, //-28 + 43 9492, //-27 + 44 9009, //-26 + 45 8643, //-25 + 46 8208, //-24 + 47 7798, //-23 + 48 7412, //-22 + 49 7048, //-21 + 50 6777, //-20 + 51 6447, //-19 + 52 6136, //-18 + C51 COMPILER V9.01 THERMISTOR 02/06/2025 15:28:46 PAGE 2 + + 53 5842, //-17 + 54 5564, //-16 + 55 5341, //-15 + 56 5090, //-14 + 57 4852, //-13 + 58 4627, //-12 + 59 4414, //-11 + 60 4247, //-10 + 61 4053, //-09 + 62 3870, //-08 + 63 3696, //-07 + 64 3532, //-06 + 65 3390, //-05 + 66 3241, //-04 + 67 3099, //-03 + 68 2964, //-02 + 69 2836, //-01 + 70 2728, //00 + 71 2611, //01 + 72 2501, //02 + 73 2395, //03 + 74 2295, //04 + 75 2205, //05 + 76 2114, //06 + 77 2027, //07 + 78 1944, //08 + 79 1866, //09 + 80 1796, //10 + 81 1724, //11 + 82 1655, //12 + 83 1590, //13 + 84 1527, //14 + 85 1469, //15 + 86 1412, //16 + 87 1357, //17 + 88 1305, //18 + 89 1256, //19 + 90 1209, //20 + 91 1163, //21 + 92 1120, //22 + 93 1078, //23 + 94 1038, //24 + 95 1000, //25 + 96 963, //26 + 97 928, //27 + 98 894, //28 + 99 862, //29 + 100 831, //30 + 101 801, //31 + 102 772, //32 + 103 745, //33 + 104 719, //34 + 105 694, //35 + 106 670, //36 + 107 646, //37 + 108 624, //38 + 109 603, //39 + 110 583, //40 + 111 562, //41 + 112 543, //42 + 113 525, //43 + 114 508, //44 + C51 COMPILER V9.01 THERMISTOR 02/06/2025 15:28:46 PAGE 3 + + 115 491, //45 + 116 474, //46 + 117 459, //47 + 118 444, //48 + 119 430, //49 + 120 416, //50 + 121 402, //51 + 122 389, //52 + 123 377, //53 + 124 365, //54 + 125 354, //55 + 126 342, //56 + 127 331, //57 + 128 321, //58 + 129 311, //59 + 130 302, //60 + 131 292, //61 + 132 283, //62 + 133 275, //63 + 134 267, //64 + 135 259, //65 + 136 251, //66 + 137 243, //67 + 138 236, //68 + 139 229, //69 + 140 223, //70 + 141 216, //71 + 142 210, //72 + 143 204, //73 + 144 198, //74 + 145 192, //75 + 146 186, //76 + 147 181, //77 + 148 176, //78 + 149 171, //79 + 150 167, //80 + 151 162, //81 + 152 157, //82 + 153 153, //83 + 154 149, //84 + 155 145, //85 + 156 141, //86 + 157 137, //87 + 158 133, //88 + 159 130, //89 + 160 127, //90 + 161 123, //91 + 162 120, //92 + 163 117, //93 + 164 114, //94 + 165 111, //95 + 166 108, //96 + 167 105, //97 + 168 102, //98 + 169 100, //99 + 170 97, //100 + 171 95, //101 + 172 92, //102 + 173 90, //103 + 174 88, //104 + 175 86, //105 + 176 83, //106 + C51 COMPILER V9.01 THERMISTOR 02/06/2025 15:28:46 PAGE 4 + + 177 81, //107 + 178 79, //108 + 179 78, //109 + 180 76 //110 + 181 }; + 182 + 183 /************************************************************************************************* + 184 * 函数名: NTC103AT + 185 * 参 数: 无 + 186 * 返回值: 无 + 187 * 描 述: b值为3950的NTC阻值表,单位为10 ohms + 188 *************************************************************************************************/ + 189 #elif RT_TABLE == NTC_103AT_3950 + U16 code NTC103AT[NTC103AT_ARRAY_LEN]= //103AT,b值为3950 + { + 65535, //-50 + 65535, //-49 + 61567, //-48 + 57293, //-47 + 53466, //-46 + 49698, //-45 + 46324, //-44 + 43202, //-43 + 40310, //-42 + 37632, //-41 + 35150, //-40 + 32847, //-39 + 30711, //-38 + 28728, //-37 + 26886, //-36 + 25174, //-35 + 23583, //-34 + 22102, //-33 + 20724, //-32 + 19441, //-31 + 18246, //-30 + 17132, //-29 + 16093, //-28 + 15124, //-27 + 14120, //-26 + 13375, //-25 + 12586, //-24 + 11846, //-23 + 11159, //-22 + 10514, //-21 + 9910, //-20 + 9345, //-19 + 8816, //-18 + 8319, //-17 + 7854, //-16 + 7418, //-15 + 7009, //-14 + 6625, //-13 + 6264, //-12 + 5926, //-11 + 5607, //-10 + 5308, //-09 + 5026, //-08 + 4761, //-07 + 4512, //-06 + 4277, //-05 + 4056, //-04 + C51 COMPILER V9.01 THERMISTOR 02/06/2025 15:28:46 PAGE 5 + + 3848, //-03 + 3652, //-02 + 3466, //-01 + 3292, //00 + 3127, //01 + 2972, //02 + 2825, //03 + 2686, //04 + 2555, //05 + 2430, //06 + 2314, //07 + 2203, //08 + 2098, //09 + 1999, //10 + 1904, //11 + 1815, //12 + 1731, //13 + 1651, //14 + 1575, //15 + 1503, //16 + 1435, //17 + 1370, //18 + 1309, //19 + 1250, //20 + 1195, //21 + 1143, //22 + 1093, //23 + 1045, //24 + 1000, //25 + 956, //26 + 915, //27 + 876, //28 + 838, //29 + 805, //30 + 771, //31 + 739, //32 + 709, //33 + 680, //34 + 652, //35 + 625, //36 + 600, //37 + 576, //38 + 553, //39 + 531, //40 + 510, //41 + 490, //42 + 471, //43 + 453, //44 + 435, //45 + 419, //46 + 403, //47 + 387, //48 + 373, //49 + 359, //50 + 345, //51 + 333, //52 + 320, //53 + 309, //54 + 297, //55 + 287, //56 + 276, //57 + 266, //58 + C51 COMPILER V9.01 THERMISTOR 02/06/2025 15:28:46 PAGE 6 + + 257, //59 + 248, //60 + 239, //61 + 230, //62 + 222, //63 + 215, //64 + 207, //65 + 200, //66 + 193, //67 + 186, //68 + 180, //69 + 174, //70 + 168, //71 + 162, //72 + 157, //73 + 152, //74 + 146, //75 + 142, //76 + 137, //77 + 132, //78 + 128, //79 + 124, //80 + 120, //81 + 116, //82 + 112, //83 + 109, //84 + 105, //85 + 102, //86 + 99, //87 + 96, //88 + 93, //89 + 90, //90 + 87, //91 + 84, //92 + 82, //93 + 79, //94 + 77, //95 + 74, //96 + 72, //97 + 70, //98 + 68, //99 + 66, //100 + 64, //101 + 62, //102 + 60, //103 + 59, //104 + 57, //105 + 55, //106 + 54, //107 + 53, //108 + 52, //109 + 50 //110 + }; + #else + #error "underfined RT_TABLE!" + #endif + 357 + 358 + 359 + + +MODULE INFORMATION: STATIC OVERLAYABLE + C51 COMPILER V9.01 THERMISTOR 02/06/2025 15:28:46 PAGE 7 + + CODE SIZE = ---- ---- + CONSTANT SIZE = 322 ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/Thermistor.obj b/output/Thermistor.obj new file mode 100644 index 0000000..2ffc50b Binary files /dev/null and b/output/Thermistor.obj differ diff --git a/output/TwiIO.lst b/output/TwiIO.lst new file mode 100644 index 0000000..4f7b68e --- /dev/null +++ b/output/TwiIO.lst @@ -0,0 +1,492 @@ +C51 COMPILER V9.01 TWIIO 02/06/2025 15:28:46 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE TWIIO +OBJECT MODULE PLACED IN .\output\TwiIO.obj +COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\TwiIO.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load. + -ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code + -_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\TwiIO.lst) OBJECT(.\output\TwiIO.o + -bj) + +line level source + + 1 /******************************************************************************** + 2 Copyright (C), Sinowealth Electronic. Ltd. + 3 Author: Sino + 4 Version: V0.0 + 5 Date: 2018/08/30 + 6 History: + 7 V0.0 2018/08/30 Preliminary + 8 ********************************************************************************/ + 9 + 10 #include "Main.h" + 11 //#include "ExtE2PRomRTC.h" + 12 + 13 + 14 #ifdef TWI_IO_OPERATE + /******************************************************************************* + Function: CRC8Table[] + Description: + Input: + Output: + Others: + *******************************************************************************/ + U8 code CRC8Table[]= + { //120424-1 CRC Table + 0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D, + 0x70,0x77,0x7E,0x79,0x6C,0x6B,0x62,0x65,0x48,0x4F,0x46,0x41,0x54,0x53,0x5A,0x5D, + 0xE0,0xE7,0xEE,0xE9,0xFC,0xFB,0xF2,0xF5,0xD8,0xDF,0xD6,0xD1,0xC4,0xC3,0xCA,0xCD, + 0x90,0x97,0x9E,0x99,0x8C,0x8B,0x82,0x85,0xA8,0xAF,0xA6,0xA1,0xB4,0xB3,0xBA,0xBD, + 0xC7,0xC0,0xC9,0xCE,0xDB,0xDC,0xD5,0xD2,0xFF,0xF8,0xF1,0xF6,0xE3,0xE4,0xED,0xEA, + 0xB7,0xB0,0xB9,0xBE,0xAB,0xAC,0xA5,0xA2,0x8F,0x88,0x81,0x86,0x93,0x94,0x9D,0x9A, + 0x27,0x20,0x29,0x2E,0x3B,0x3C,0x35,0x32,0x1F,0x18,0x11,0x16,0x03,0x04,0x0D,0x0A, + 0x57,0x50,0x59,0x5E,0x4B,0x4C,0x45,0x42,0x6F,0x68,0x61,0x66,0x73,0x74,0x7D,0x7A, + 0x89,0x8E,0x87,0x80,0x95,0x92,0x9B,0x9C,0xB1,0xB6,0xBF,0xB8,0xAD,0xAA,0xA3,0xA4, + 0xF9,0xFE,0xF7,0xF0,0xE5,0xE2,0xEB,0xEC,0xC1,0xC6,0xCF,0xC8,0xDD,0xDA,0xD3,0xD4, + 0x69,0x6E,0x67,0x60,0x75,0x72,0x7B,0x7C,0x51,0x56,0x5F,0x58,0x4D,0x4A,0x43,0x44, + 0x19,0x1E,0x17,0x10,0x05,0x02,0x0B,0x0C,0x21,0x26,0x2F,0x28,0x3D,0x3A,0x33,0x34, + 0x4E,0x49,0x40,0x47,0x52,0x55,0x5C,0x5B,0x76,0x71,0x78,0x7F,0x6A,0x6D,0x64,0x63, + 0x3E,0x39,0x30,0x37,0x22,0x25,0x2C,0x2B,0x06,0x01,0x08,0x0F,0x1A,0x1D,0x14,0x13, + 0xAE,0xA9,0xA0,0xA7,0xB2,0xB5,0xBC,0xBB,0x96,0x91,0x98,0x9F,0x8A,0x8D,0x84,0x83, + 0xDE,0xD9,0xD0,0xD7,0xC2,0xC5,0xCC,0xCB,0xE6,0xE1,0xE8,0xEF,0xFA,0xFD,0xF4,0xF3 + }; + + /******************************************************************************* + Function: Delay4us() + Description: + Input: + Output: + Others: + *******************************************************************************/ + void Delay4us(void) + { + U8 i; + for(i=0; i<13; i++) + C51 COMPILER V9.01 TWIIO 02/06/2025 15:28:46 PAGE 2 + + { + } + } + + /******************************************************************************* + Function: + 1. TwiStart() + 2. TwiReStart() + 3. TwiStop() + Input: + Output: + ********************************************************************************/ + void TwiStart(void) + { + TWI_DAT_OUT; + TWI_CLK_OUT; + + TWI_DAT_HIGH; + TWI_CLK_HIGH; + TWI_DAT_OUT; + TWI_CLK_OUT; + TWI_DAT_LOW; + Delay4us(); + TWI_CLK_LOW; + } + + void TwiReStart(void) + { + TWI_DAT_HIGH; + TWI_CLK_HIGH; + Delay4us(); + TWI_DAT_LOW; + Delay4us(); + TWI_CLK_LOW; + } + + void TwiStop(void) + { + TWI_DAT_OUT; + TWI_DAT_LOW; + Delay4us(); + TWI_CLK_HIGH; + Delay4us(); + TWI_DAT_HIGH; + Delay4us(); + TWI_DAT_IN; + TWI_CLK_IN; + } + + bit TwiChkClkRelease(void) + { + U16 TimeoutCnt=1000; //If Clock is not released within 4ms, is considered overtime + BOOL result=0; + + TWI_CLK_IN; + while(TimeoutCnt--) + { + RSTSTAT = 0x00; + Delay4us(); + if(TWI_RD_CLK) + { + result = 1; + C51 COMPILER V9.01 TWIIO 02/06/2025 15:28:46 PAGE 3 + + break; + } + } + + TWI_CLK_HIGH; + TWI_CLK_OUT; + + return result; + } + + + /******************************************************************************* + Function: TwiSendData() + Description: + Input: + Output: + ********************************************************************************/ + + bit TwiSendData(U8 Data, U8 ClkFlg) + { + U8 i; + BOOL result=0; + + //1. After sending the Start signal, there is no need to detect Clock is released, And sending the first b + -it + if(Data&0x80) + { + TWI_DAT_HIGH; + } + else + { + TWI_DAT_LOW; + } + if(ClkFlg == 1) + { + Delay4us(); + if(TwiChkClkRelease()) + { + TWI_CLK_LOW; + } + else + { + return result; + } + } + else + { + Delay4us(); + TWI_CLK_HIGH; + Delay4us(); + TWI_CLK_LOW; + } + + //2. Send the remaining seven bit + Data = Data<<1; + for(i=0; i<7; i++) + { + if(Data&0x80) + { + TWI_DAT_HIGH; + } + else + C51 COMPILER V9.01 TWIIO 02/06/2025 15:28:46 PAGE 4 + + { + TWI_DAT_LOW; + } + Data = Data<<1; + Delay4us(); + TWI_CLK_HIGH; + Delay4us(); + TWI_CLK_LOW; + } + TWI_DAT_IN; + Delay4us(); + + for(i=0; i<10; i++) + { + if(TWI_RD_DAT == 0) + { + result = 1; + break; + } + } + TWI_CLK_HIGH; + + Delay4us(); + TWI_DAT_LOW; + TWI_DAT_OUT; + TWI_CLK_LOW; + Delay4us(); + + return result; + } + + + /******************************************************************************* + Function: TwiGetData() + Description: i2c get data(one byte) + Input: R6: 0 means no need send ack + Output: A: the data received + ********************************************************************************/ + U8 TwiGetData(U8 AckFlg) + { + U8 i, RdData=0; + + TWI_DAT_IN; + Delay4us(); + + for(i=0; i<8; i++) + { + TWI_CLK_HIGH; + Delay4us(); + if(TWI_RD_DAT) + { + RdData |= (1<<(7-i)); + } + TWI_CLK_LOW; + Delay4us(); + } + + TWI_DAT_OUT; + if(AckFlg != 0) + { + TWI_DAT_LOW; + } + C51 COMPILER V9.01 TWIIO 02/06/2025 15:28:46 PAGE 5 + + else + { + TWI_DAT_HIGH; + } + TWI_CLK_HIGH; + Delay4us(); + TWI_CLK_LOW; + Delay4us(); + + return RdData; + } + + + /******************************************************************************* + Function: CRC8cal() + Description: + Input: + Output: + ********************************************************************************/ + U8 CRC8cal(U8 *p, U8 Length) //look-up table calculte CRC + { + U8 crc8 = 0; + + for(; Length > 0; Length--) + { + RSTSTAT = 0x00; + crc8 = CRC8Table[crc8^*p]; + p++; + } + + return(crc8); + } + + + /******************************************************************************* + Function: TWIWrite() + Description: write one byte + Input: SlaveID--Slave Address + RegAddr--register addr + RegData--register data + Output: CY:1--OK + 0--Error + ********************************************************************************/ + BOOL TwiWrite(U8 SlaveID, U16 WrAddr, U8 Length, U8 xdata *WrBuf) + { + U8 i; + U8 TempBuf[4]; + BOOL result = 0; + + TempBuf[0] = SlaveID; + TempBuf[1] = (U8)WrAddr; + TempBuf[2] = *WrBuf; + TempBuf[3] = CRC8cal(TempBuf, 3); + + EA = 0; + if(Length > 0) + { + TwiStart(); + + if(!TwiSendData(SlaveID, 1)) //Send Slave E2ucID + { + goto WrErr; + C51 COMPILER V9.01 TWIIO 02/06/2025 15:28:46 PAGE 6 + + } + + if(SlaveID == E2PROM_ID) + { + if(!TwiSendData(WrAddr>>8, 0)) //Send Write Address(High 8bit) For EEPROM + { + goto WrErr; + } + } + if(TwiSendData(WrAddr, 0)) //Send Write Address(Low 8bit) + { + result = 1; + for(i=0; i 0) + { + TwiStart(); + + if(!TwiSendData(SlaveID, 1)) //Send Slave E2ucID + { + goto RdErr; + } + + if(SlaveID == E2PROM_ID) + { + if(!TwiSendData(RdAddr>>8, 0)) //Send Read Address(High 8bit) For EEPROM + { + goto RdErr; + } + } + if(!TwiSendData(RdAddr, 0)) //Send Read Address(Low 8bit) + { + goto RdErr; + } + + // if(SlaveID==AFE_CHIP_ID) //CRC + // { + // if(!TwiSendData(Length, 0)) + // { + // goto RdErr; + // } + // } + + TwiReStart(); + + if(TwiSendData(SlaveID|0x1, 0)) //Send Slave E2ucID + { + result = 1; + if(SlaveID==AFE_CHIP_ID) + { + for(i=0; i 140) + 268 1 { + 269 2 ucUart0Buf[UART_LENGTH] = 0; + 270 2 } + 271 1 for(i=0; i 140) + { + ucUart1Buf[UART_LENGTH] = 0; + } + for(i=0; i 140) + { + ucUart2Buf[UART_LENGTH] = 0; + } + for(i=0; i= 128) + 583 2 { + 584 3 bE2PProcessFlg = 1; + 585 3 bUart0E2PRdData = 1; + 586 3 } + 587 2 else if(ucUart0Buf[UART_CMD_NO] == SUB_PAGE1 && ucSubClassID == RTC_SUBID) + 588 2 { + 589 3 bE2PProcessFlg = 1; + 590 3 bUart0RTCRdTime = 1; + 591 3 } + 592 2 else if(ucUart0Buf[UART_CMD_NO] == SUB_PAGE1) + 593 2 { + 594 3 rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + 595 3 Uart0ReadInfo(rdaddr); + 596 3 } + 597 2 else if(ucUart0Buf[UART_CMD_NO] == SUB_PAGE2) + 598 2 { + 599 3 rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + 600 3 Uart0ReadInfo(rdaddr); + 601 3 } + 602 2 break; + 603 2 } + 604 1 } + 605 #endif + 606 + 607 #if (UART1_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart0RdCmdProcess + * 参 数: 无 + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 11 + + * 返回值: 无 + * 描 述: UART读命令处理函数 + *************************************************************************************************/ + void Uart1RdCmdProcess(void) + { + U8 xdata *rdaddr; + + switch(ucUart1Buf[UART_CMD_NO]) + { + case CELL1: + case CELL2: + case CELL3: + case CELL4: + case CELL5: + case CELL6: + case CELL7: + case CELL8: + case CELL9: + case CELL10: + Uart1ReadInfo((U8 xdata *)&Info.uiVCell[ucUart1Buf[UART_CMD_NO]-1]); + break; + + case TOTAL_VOLTAGE: + Uart1ReadInfo((U8 xdata *)&Info.ulVoltage); + break; + + case CADC_CURRENT: + Uart1ReadInfo((U8 xdata *)&Info.slCurr); + break; + + case EXT_TEMP1: + Uart1ReadInfo((U8 xdata *)&Info.uiTS[0]); + break; + + case EXT_TEMP2: + Uart1ReadInfo((U8 xdata *)&Info.uiTS[1]); + break; + + case DIE_TEMP1: + Uart1ReadInfo((U8 xdata *)&Info.uiICTempe[0]); + break; + + case DIE_TEMP2: + Uart1ReadInfo((U8 xdata *)&Info.uiICTempe[1]); + break; + + case FULL_CHG_CAP: + Uart1ReadInfo((U8 xdata *)&Info.ulFCC); + break; + + case REMAIN_CAP: + Uart1ReadInfo((U8 xdata *)&Info.ulRC); + break; + + case R_SOC: + Uart1ReadInfo((U8 xdata *)&Info.uiRSOC); + break; + + case CYCLE_COUNT: + Uart1ReadInfo((U8 xdata *)&Info.uiCycleCount); + break; + + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 12 + + case PACK_STATUS: + Uart1ReadInfo((U8 xdata *)&Info.uiPackStatus); + break; + + case BATTERY_STATUS: + Uart1ReadInfo((U8 xdata *)&Info.uiBatStatus); + break; + + case PACK_CONFIG: + Uart1ReadInfo((U8 xdata *)&Info.uiPackConfig); + break; + + case MANUFACTURE_COMMAND: + Uart1ReadInfo((U8 xdata *)&Info.uiManuCommand); + break; + + default: //read extern EEPRom data + if(ucUart1Buf[UART_LENGTH] >= 128) + { + bE2PProcessFlg = 1; + bUart1E2PRdData = 1; + } + else if(ucUart1Buf[UART_CMD_NO] == SUB_PAGE1 && ucSubClassID == RTC_SUBID) + { + bE2PProcessFlg = 1; + bUart1RTCRdTime = 1; + } + else if(ucUart1Buf[UART_CMD_NO] == SUB_PAGE1) + { + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart1ReadInfo(rdaddr); + } + else if(ucUart1Buf[UART_CMD_NO] == SUB_PAGE2) + { + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart1ReadInfo(rdaddr); + } + break; + } + } + #endif + 714 + 715 #if (UART2_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart0RdCmdProcess + * 参 数: 无 + * 返回值: 无 + * 描 述: UART读命令处理函数 + *************************************************************************************************/ + void Uart2RdCmdProcess(void) + { + U8 xdata *rdaddr; + + switch(ucUart2Buf[UART_CMD_NO]) + { + case CELL1: + case CELL2: + case CELL3: + case CELL4: + case CELL5: + case CELL6: + case CELL7: + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 13 + + case CELL8: + case CELL9: + case CELL10: + Uart2ReadInfo((U8 xdata *)&Info.uiVCell[ucUart2Buf[UART_CMD_NO]-1]); + break; + + case TOTAL_VOLTAGE: + Uart2ReadInfo((U8 xdata *)&Info.ulVoltage); + break; + + case CADC_CURRENT: + Uart2ReadInfo((U8 xdata *)&Info.slCurr); + break; + + case EXT_TEMP1: + Uart2ReadInfo((U8 xdata *)&Info.uiTS[0]); + break; + + case EXT_TEMP2: + Uart2ReadInfo((U8 xdata *)&Info.uiTS[1]); + break; + + case DIE_TEMP1: + Uart2ReadInfo((U8 xdata *)&Info.uiICTempe[0]); + break; + + case DIE_TEMP2: + Uart2ReadInfo((U8 xdata *)&Info.uiICTempe[1]); + break; + + case FULL_CHG_CAP: + Uart2ReadInfo((U8 xdata *)&Info.ulFCC); + break; + + case REMAIN_CAP: + Uart2ReadInfo((U8 xdata *)&Info.ulRC); + break; + + case R_SOC: + Uart2ReadInfo((U8 xdata *)&Info.uiRSOC); + break; + + case CYCLE_COUNT: + Uart2ReadInfo((U8 xdata *)&Info.uiCycleCount); + break; + + case PACK_STATUS: + Uart2ReadInfo((U8 xdata *)&Info.uiPackStatus); + break; + + case BATTERY_STATUS: + Uart2ReadInfo((U8 xdata *)&Info.uiBatStatus); + break; + + case PACK_CONFIG: + Uart2ReadInfo((U8 xdata *)&Info.uiPackConfig); + break; + + case MANUFACTURE_COMMAND: + Uart2ReadInfo((U8 xdata *)&Info.uiManuCommand); + break; + + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 14 + + default: //read extern EEPRom data + if(ucUart2Buf[UART_LENGTH] >= 128) + { + bE2PProcessFlg = 1; + bUart2E2PRdData = 1; + } + else if(ucUart2Buf[UART_CMD_NO] == SUB_PAGE1 && ucSubClassID == RTC_SUBID) + { + bE2PProcessFlg = 1; + bUart2RTCRdTime = 1; + } + else if(ucUart2Buf[UART_CMD_NO] == SUB_PAGE1) + { + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart2ReadInfo(rdaddr); + } + else if(ucUart2Buf[UART_CMD_NO] == SUB_PAGE2) + { + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart2ReadInfo(rdaddr); + } + break; + } + } + #endif + 822 + 823 #if (UART0_DEFINE != 0) + 824 /************************************************************************************************* + 825 * 函数名: Uart0CaliCurrent + 826 * 参 数: 无 + 827 * 返回值: 无 + 828 * 描 述: UART0通讯发送校准总电压的数据 + 829 *************************************************************************************************/ + 830 void Uart0CaliVoltage(void) + 831 { + 832 1 if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + 833 1 { + 834 2 ulExtVPack = ((U16)ucUart0Buf[3]<<8)|ucUart0Buf[4]; + 835 2 + 836 2 if(!ulExtVPack) + 837 2 { + 838 3 Uart0SendNack(); + 839 3 } + 840 2 else + 841 2 { + 842 3 bCaliFlg = 1; + 843 3 ucExtcaliSwitch1 |= 0x01; + 844 3 Uart0SendAck(); + 845 3 } + 846 2 } + 847 1 else + 848 1 { + 849 2 Uart0SendNack(); + 850 2 } + 851 1 } + 852 #endif + 853 + 854 #if (UART1_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart1CaliCurrent + * 参 数: 无 + * 返回值: 无 + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 15 + + * 描 述: UART1通讯发送校准总电压的数据 + *************************************************************************************************/ + void Uart1CaliVoltage(void) + { + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + ulExtVPack = ((U16)ucUart1Buf[3]<<8)|ucUart1Buf[4]; + + if(!ulExtVPack) + { + Uart1SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x01; + Uart1SendAck(); + } + } + else + { + Uart1SendNack(); + } + } + #endif + 884 + 885 #if (UART2_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart2CaliCurrent + * 参 数: 无 + * 返回值: 无 + * 描 述: UART2通讯发送校准总电压的数据 + *************************************************************************************************/ + void Uart2CaliVoltage(void) + { + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + ulExtVPack = ((U16)ucUart2Buf[3]<<8)|ucUart2Buf[4]; + + if(!ulExtVPack) + { + Uart2SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x01; + Uart2SendAck(); + } + } + else + { + Uart2SendNack(); + } + } + #endif + 915 + 916 #if (UART0_DEFINE != 0) + 917 /************************************************************************************************* + 918 * 函数名: Uart0CaliCurrent、Uart0CaliCurOffset + 919 * 参 数: 无 + 920 * 返回值: 无 + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 16 + + 921 * 描 述: UART0通讯发送校准电流采集增益&Offset的数据 + 922 *************************************************************************************************/ + 923 void Uart0CaliCurrent(void) + 924 { + 925 1 if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + 926 1 { + 927 2 slExtCur = ((U32)ucUart0Buf[3]<<24) + 928 2 | ((U32)ucUart0Buf[4]<<16) + 929 2 | ((U32)ucUart0Buf[5]<<8) + 930 2 | ((U32)ucUart0Buf[6]); + 931 2 + 932 2 if((!AFE.siCurr) || (!slExtCur)) + 933 2 { + 934 3 Uart0SendNack(); + 935 3 } + 936 2 else + 937 2 { + 938 3 bCaliFlg = 1; + 939 3 ucExtcaliSwitch1 |= 0x10; + 940 3 Uart0SendAck(); + 941 3 } + 942 2 } + 943 1 else + 944 1 { + 945 2 Uart0SendNack(); + 946 2 } + 947 1 } + 948 + 949 + 950 void Uart0CaliCurOffset(void) + 951 { + 952 1 if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) + 953 1 { + 954 2 bCaliFlg = 1; //Calibration offset Current + 955 2 ucExtcaliSwitch1 |= 0x20; + 956 2 + 957 2 Uart0SendAck(); + 958 2 } + 959 1 else + 960 1 { + 961 2 Uart0SendNack(); + 962 2 } + 963 1 } + 964 #endif + 965 + 966 #if (UART1_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart1CaliCurrent、Uart1CaliCurOffset + * 参 数: 无 + * 返回值: 无 + * 描 述: UART1通讯发送校准电流采集增益&Offset的数据 + *************************************************************************************************/ + void Uart1CaliCurrent(void) + { + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + slExtCur = ((U32)ucUart1Buf[3]<<24) + | ((U32)ucUart1Buf[4]<<16) + | ((U32)ucUart1Buf[5]<<8) + | ((U32)ucUart1Buf[6]); + + if((!AFE.siCurr) || (!slExtCur)) + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 17 + + { + Uart1SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x10; + Uart1SendAck(); + } + } + else + { + Uart1SendNack(); + } + } + + + void Uart1CaliCurOffset(void) + { + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration offset Current + ucExtcaliSwitch1 |= 0x20; + + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } + } + #endif +1015 +1016 #if (UART2_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart2CaliCurrent、Uart2CaliCurOffset + * 参 数: 无 + * 返回值: 无 + * 描 述: UART2通讯发送校准电流采集增益&Offset的数据 + *************************************************************************************************/ + void Uart2CaliCurrent(void) + { + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + slExtCur = ((U32)ucUart2Buf[3]<<24) + | ((U32)ucUart2Buf[4]<<16) + | ((U32)ucUart2Buf[5]<<8) + | ((U32)ucUart2Buf[6]); + + if((!AFE.siCurr) || (!slExtCur)) + { + Uart2SendNack(); + } + else + { + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x10; + Uart2SendAck(); + } + } + else + { + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 18 + + Uart2SendNack(); + } + } + + + void Uart2CaliCurOffset(void) + { + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration offset Current + ucExtcaliSwitch1 |= 0x20; + + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } + } + #endif +1065 +1066 #if (UART0_DEFINE != 0) +1067 /************************************************************************************************* +1068 * 函数名: Uart0CaliTS1、Uart0CaliTS2 +1069 * 参 数: 无 +1070 * 返回值: 无 +1071 * 描 述: UART0通讯发送校准TS1/TS2数据 +1072 *************************************************************************************************/ +1073 void Uart0CaliTS1(void) +1074 { +1075 1 if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) +1076 1 { +1077 2 bCaliFlg = 1; //Calibration TS1 +1078 2 uiExtTemp1 = ((U16)ucUart0Buf[3]<<8)|ucUart0Buf[4]; +1079 2 ucExtcaliSwitch1 |= 0x04; +1080 2 +1081 2 Uart0SendAck(); +1082 2 } +1083 1 else +1084 1 { +1085 2 Uart0SendNack(); +1086 2 } +1087 1 } +1088 +1089 +1090 void Uart0CaliTS2(void) +1091 { +1092 1 if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) +1093 1 { +1094 2 bCaliFlg = 1; //Calibration TS2 +1095 2 uiExtTemp2 = ((U16)ucUart0Buf[3]<<8)|ucUart0Buf[4]; +1096 2 ucExtcaliSwitch1 |= 0x08; +1097 2 +1098 2 Uart0SendAck(); +1099 2 } +1100 1 else +1101 1 { +1102 2 Uart0SendNack(); +1103 2 } +1104 1 } +1105 #endif +1106 + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 19 + +1107 #if (UART1_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart1CaliTS1、Uart1CaliTS2 + * 参 数: 无 + * 返回值: 无 + * 描 述: UART1通讯发送校准TS1/TS2数据 + *************************************************************************************************/ + void Uart1CaliTS1(void) + { + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS1 + uiExtTemp1 = ((U16)ucUart1Buf[3]<<8)|ucUart1Buf[4]; + ucExtcaliSwitch1 |= 0x04; + + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } + } + + + void Uart1CaliTS2(void) + { + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS2 + uiExtTemp2 = ((U16)ucUart1Buf[3]<<8)|ucUart1Buf[4]; + ucExtcaliSwitch1 |= 0x08; + + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } + } + #endif +1147 +1148 #if (UART2_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart2CaliTS1、Uart2CaliTS2 + * 参 数: 无 + * 返回值: 无 + * 描 述: UART2通讯发送校准TS1/TS2数据 + *************************************************************************************************/ + void Uart2CaliTS1(void) + { + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS1 + uiExtTemp1 = ((U16)ucUart2Buf[3]<<8)|ucUart2Buf[4]; + ucExtcaliSwitch1 |= 0x04; + + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 20 + + } + + + void Uart2CaliTS2(void) + { + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + bCaliFlg = 1; //Calibration TS2 + uiExtTemp2 = ((U16)ucUart2Buf[3]<<8)|ucUart2Buf[4]; + ucExtcaliSwitch1 |= 0x08; + + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } + } + #endif +1188 +1189 #if (UART0_DEFINE != 0) +1190 /************************************************************************************************* +1191 * 函数名: Uart0CaliRTC +1192 * 参 数: 无 +1193 * 返回值: 无 +1194 * 描 述: UART0通讯发送校准RTC数据 +1195 *************************************************************************************************/ +1196 void Uart0CaliRTC(void) +1197 { +1198 1 U8 i; +1199 1 +1200 1 if(ucUart0Buf[3+ucUart0Buf[UART_LENGTH]] == CRC8cal(&ucUart0Buf, ucUart0Buf[UART_LENGTH]+3)) +1201 1 { +1202 2 for(i=0; i<7; i++) +1203 2 { +1204 3 ucExtRTC[i] = ucUart0Buf[3+i]; +1205 3 } +1206 2 bCaliFlg = 1; +1207 2 ucExtcaliSwitch1 |= 0x80; +1208 2 Uart0SendAck(); +1209 2 } +1210 1 else +1211 1 { +1212 2 Uart0SendNack(); +1213 2 } +1214 1 } +1215 #endif +1216 +1217 #if (UART1_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart1CaliRTC + * 参 数: 无 + * 返回值: 无 + * 描 述: UART1通讯发送校准RTC数据 + *************************************************************************************************/ + void Uart1CaliRTC(void) + { + U8 i; + + if(ucUart1Buf[3+ucUart1Buf[UART_LENGTH]] == CRC8cal(&ucUart1Buf, ucUart1Buf[UART_LENGTH]+3)) + { + for(i=0; i<7; i++) + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 21 + + { + ucExtRTC[i] = ucUart1Buf[3+i]; + } + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x80; + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } + } + #endif +1244 +1245 #if (UART2_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart2CaliRTC + * 参 数: 无 + * 返回值: 无 + * 描 述: UART2通讯发送校准RTC数据 + *************************************************************************************************/ + void Uart2CaliRTC(void) + { + U8 i; + + if(ucUart2Buf[3+ucUart2Buf[UART_LENGTH]] == CRC8cal(&ucUart2Buf, ucUart2Buf[UART_LENGTH]+3)) + { + for(i=0; i<7; i++) + { + ucExtRTC[i] = ucUart2Buf[3+i]; + } + bCaliFlg = 1; + ucExtcaliSwitch1 |= 0x80; + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } + } + #endif +1272 +1273 #if (UART0_DEFINE != 0) +1274 /************************************************************************************************* +1275 * 函数名: Uart0WrCmdProcess +1276 * 参 数: 无 +1277 * 返回值: 无 +1278 * 描 述: UART0写命令处理函数 +1279 *************************************************************************************************/ +1280 void Uart0WrCmdProcess(void) +1281 { +1282 1 U8 xdata *rdaddr; +1283 1 switch(ucUart0Buf[UART_CMD_NO]) +1284 1 { +1285 2 case MANUFACTURE_COMMAND: +1286 2 Uart0WriteManufacture(); +1287 2 break; +1288 2 case DATA_FLASH_COMMAND: +1289 2 Uart0ReadSubClassID(); //accept command is dataflashcommand 0x77 +1290 2 break; +1291 2 case CALI_CUR_COMMAND: +1292 2 Uart0CaliCurrent(); + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 22 + +1293 2 break; +1294 2 case CALI_VOL_COMMAND: +1295 2 Uart0CaliVoltage(); +1296 2 break; +1297 2 case CALI_ZERO_CUR_COMMAND: +1298 2 Uart0CaliCurOffset(); +1299 2 break; +1300 2 case CALI_TS1_COMMAND: +1301 2 Uart0CaliTS1(); +1302 2 break; +1303 2 case CALI_TS2_COMMAND: +1304 2 Uart0CaliTS2(); +1305 2 break; +1306 2 +1307 2 case CALI_RTC_COMMAND: +1308 2 Uart0CaliRTC(); +1309 2 break; +1310 2 case SUB_PAGE1: +1311 2 rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; +1312 2 Uart0WriteInfo(rdaddr); +1313 2 break; +1314 2 case SUB_PAGE2: +1315 2 rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; +1316 2 Uart0WriteInfo(rdaddr); +1317 2 break; +1318 2 +1319 2 case CMD_E2PROM_ERASE: +1320 2 if(ucUart0Buf[UART_DATA] == 0x55) //Testing equipment is properly +1321 2 { +1322 3 bE2PProcessFlg = 1; +1323 3 bE2PErase = 1; +1324 3 Uart0SendAck(); +1325 3 } +1326 2 else +1327 2 { +1328 3 Uart0SendNack(); +1329 3 } +1330 2 break; +1331 2 } +1332 1 } +1333 #endif +1334 +1335 #if (UART1_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart1WrCmdProcess + * 参 数: 无 + * 返回值: 无 + * 描 述: UART1写命令处理函数 + *************************************************************************************************/ + void Uart1WrCmdProcess(void) + { + U8 xdata *rdaddr; + switch(ucUart1Buf[UART_CMD_NO]) + { + case MANUFACTURE_COMMAND: + Uart1WriteManufacture(); + break; + case DATA_FLASH_COMMAND: + Uart1ReadSubClassID(); //accept command is dataflashcommand 0x77 + break; + case CALI_CUR_COMMAND: + Uart1CaliCurrent(); + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 23 + + break; + case CALI_VOL_COMMAND: + Uart1CaliVoltage(); + break; + case CALI_ZERO_CUR_COMMAND: + Uart1CaliCurOffset(); + break; + case CALI_TS1_COMMAND: + Uart1CaliTS1(); + break; + case CALI_TS2_COMMAND: + Uart1CaliTS2(); + break; + + case CALI_RTC_COMMAND: + Uart1CaliRTC(); + break; + case SUB_PAGE1: + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart1WriteInfo(rdaddr); + break; + case SUB_PAGE2: + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart1WriteInfo(rdaddr); + break; + + case CMD_E2PROM_ERASE: + if(ucUart1Buf[UART_DATA] == 0x55) //Testing equipment is properly + { + bE2PProcessFlg = 1; + bE2PErase = 1; + Uart1SendAck(); + } + else + { + Uart1SendNack(); + } + break; + } + } + #endif +1396 +1397 #if (UART2_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart2WrCmdProcess + * 参 数: 无 + * 返回值: 无 + * 描 述: UART2写命令处理函数 + *************************************************************************************************/ + void Uart2WrCmdProcess(void) + { + U8 xdata *rdaddr; + switch(ucUart2Buf[UART_CMD_NO]) + { + case MANUFACTURE_COMMAND: + Uart2WriteManufacture(); + break; + case DATA_FLASH_COMMAND: + Uart2ReadSubClassID(); //accept command is dataflashcommand 0x77 + break; + case CALI_CUR_COMMAND: + Uart2CaliCurrent(); + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 24 + + break; + case CALI_VOL_COMMAND: + Uart2CaliVoltage(); + break; + case CALI_ZERO_CUR_COMMAND: + Uart2CaliCurOffset(); + break; + case CALI_TS1_COMMAND: + Uart2CaliTS1(); + break; + case CALI_TS2_COMMAND: + Uart2CaliTS2(); + break; + + case CALI_RTC_COMMAND: + Uart2CaliRTC(); + break; + case SUB_PAGE1: + rdaddr = (U8 xdata *)Page1WrRdFuncTable[ucSubClassID]; + Uart2WriteInfo(rdaddr); + break; + case SUB_PAGE2: + rdaddr = (U8 xdata *)Page2WrRdFuncTable[ucSubClassID]; + Uart2WriteInfo(rdaddr); + break; + + case CMD_E2PROM_ERASE: + if(ucUart2Buf[UART_DATA] == 0x55) //Testing equipment is properly + { + bE2PProcessFlg = 1; + bE2PErase = 1; + Uart2SendAck(); + } + else + { + Uart2SendNack(); + } + break; + } + } + #endif +1458 +1459 #if (UART0_DEFINE != 0) +1460 /************************************************************************************************* +1461 * 函数名: Uart0IapCheckHandshake +1462 * 参 数: 无 +1463 * 返回值: 无 +1464 * 描 述: IAP和ISP握手协议 +1465 *************************************************************************************************/ +1466 void Uart0IapCheckHandshake(void) +1467 { +1468 1 U8 i, databak; +1469 1 U16 checksum = 0; +1470 1 +1471 1 if(ucUart0BufPT == 2) +1472 1 { +1473 2 if(ucUart0Buf[HEARD2] != 0xA5) +1474 2 { +1475 3 ucUart0BufPT = 0; +1476 3 } +1477 2 else +1478 2 { + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 25 + +1479 3 uiReceCheckSum = 0; //帧头判断正确 +1480 3 ucUartErrCode = 0; +1481 3 } +1482 2 } +1483 1 else +1484 1 { +1485 2 if(ucUart0BufPT < (ucUart0Buf[LENGTH]+9)) +1486 2 { +1487 3 if(ucUart0BufPT <= (ucUart0Buf[LENGTH]+7)) +1488 3 { +1489 4 uiReceCheckSum += ucUart0Buf[ucUart0BufPT-1]; +1490 4 } +1491 3 if(ucUart0BufPT == (TARGET+1)) //检查ID +1492 3 { +1493 4 if(ucUart0Buf[TARGET] != IAP_BMSID) +1494 4 { +1495 5 ucUart0BufPT = 0; +1496 5 } +1497 4 } +1498 3 else if(ucUart0BufPT == (COMMAND+1)) //检查COMMAND +1499 3 { +1500 4 if((ucUart0Buf[COMMAND] != IAP_CMD_HANDSHAKE)) +1501 4 { +1502 5 ucUartErrCode |= IAPERROR_CMD; +1503 5 } +1504 4 } +1505 3 } +1506 2 else +1507 2 { +1508 3 ucUart0BufPT = 0; +1509 3 if(uiReceCheckSum != ((ucUart0Buf[ucUart0Buf[LENGTH]+8]<<8) + ucUart0Buf[ucUart0Buf[LENGTH]+7])) +1510 3 { +1511 4 ucUartErrCode |= IAPERROR_CHECKSUM; +1512 4 } +1513 3 +1514 3 if(ucUartErrCode != 0) //如果有错误代码则不执行命令处理 +1515 3 { +1516 4 ucUart0Buf[INDEXES] = ucUartErrCode; +1517 4 } +1518 3 else +1519 3 { +1520 4 bISPFlg = 1; //跳转到BOOT区 +1521 4 ucUart0Buf[INDEXES] = 0; +1522 4 } +1523 3 +1524 3 ucUart0Buf[LENGTH] = 0; +1525 3 ucUart0Buf[COMMAND] = 0x0B; +1526 3 +1527 3 databak = ucUart0Buf[SOURCE]; //交换源ID和目标ID +1528 3 ucUart0Buf[SOURCE] = ucUart0Buf[TARGET]; +1529 3 ucUart0Buf[TARGET] = databak; +1530 3 +1531 3 for(i=2; i<(ucUart0Buf[LENGTH]+7); i++) +1532 3 { +1533 4 checksum += ucUart0Buf[i]; +1534 4 } +1535 3 +1536 3 ucUart0Buf[7+ucUart0Buf[LENGTH]] = checksum%256; +1537 3 ucUart0Buf[8+ucUart0Buf[LENGTH]] = checksum/256; +1538 3 +1539 3 Uart0SendAck(); +1540 3 } + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 26 + +1541 2 } +1542 1 } +1543 #endif +1544 +1545 #if (UART1_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart1IapCheckHandshake + * 参 数: 无 + * 返回值: 无 + * 描 述: IAP和ISP握手协议 + *************************************************************************************************/ + void Uart1IapCheckHandshake(void) + { + U8 i, databak; + U16 checksum = 0; + + if(ucUart1BufPT == 2) + { + if(ucUart1Buf[HEARD2] != 0xA5) + { + ucUart1BufPT = 0; + } + else + { + uiReceCheckSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + if(ucUart1BufPT < (ucUart1Buf[LENGTH]+9)) + { + if(ucUart1BufPT <= (ucUart1Buf[LENGTH]+7)) + { + uiReceCheckSum += ucUart1Buf[ucUart1BufPT-1]; + } + if(ucUart1BufPT == (TARGET+1)) //检查ID + { + if(ucUart1Buf[TARGET] != IAP_BMSID) + { + ucUart1BufPT = 0; + } + } + else if(ucUart1BufPT == (COMMAND+1)) //检查COMMAND + { + if((ucUart1Buf[COMMAND] != IAP_CMD_HANDSHAKE)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + ucUart1BufPT = 0; + if(uiReceCheckSum != ((ucUart1Buf[ucUart1Buf[LENGTH]+8]<<8) + ucUart1Buf[ucUart1Buf[LENGTH]+7])) + { + ucUartErrCode |= IAPERROR_CHECKSUM; + } + + if(ucUartErrCode != 0) //如果有错误代码则不执行命令处理 + { + ucUart1Buf[INDEXES] = ucUartErrCode; + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 27 + + } + else + { + bISPFlg = 1; //跳转到BOOT区 + ucUart1Buf[INDEXES] = 0; + } + + ucUart1Buf[LENGTH] = 0; + ucUart1Buf[COMMAND] = 0x0B; + + databak = ucUart1Buf[SOURCE]; //交换源ID和目标ID + ucUart1Buf[SOURCE] = ucUart1Buf[TARGET]; + ucUart1Buf[TARGET] = databak; + + for(i=2; i<(ucUart1Buf[LENGTH]+7); i++) + { + checksum += ucUart1Buf[i]; + } + + ucUart1Buf[7+ucUart1Buf[LENGTH]] = checksum%256; + ucUart1Buf[8+ucUart1Buf[LENGTH]] = checksum/256; + + Uart1SendAck(); + } + } + } + #endif +1630 +1631 #if (UART2_DEFINE != 0) + /************************************************************************************************* + * 函数名: Uart2IapCheckHandshake + * 参 数: 无 + * 返回值: 无 + * 描 述: IAP和ISP握手协议 + *************************************************************************************************/ + void Uart2IapCheckHandshake(void) + { + U8 i, databak; + U16 checksum = 0; + + if(ucUart2BufPT == 2) + { + if(ucUart2Buf[HEARD2] != 0xA5) + { + ucUart2BufPT = 0; + } + else + { + uiReceCheckSum = 0; //帧头判断正确 + ucUartErrCode = 0; + } + } + else + { + if(ucUart2BufPT < (ucUart2Buf[LENGTH]+9)) + { + if(ucUart2BufPT <= (ucUart2Buf[LENGTH]+7)) + { + uiReceCheckSum += ucUart2Buf[ucUart2BufPT-1]; + } + if(ucUart2BufPT == (TARGET+1)) //检查ID + { + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 28 + + if(ucUart2Buf[TARGET] != IAP_BMSID) + { + ucUart2BufPT = 0; + } + } + else if(ucUart2BufPT == (COMMAND+1)) //检查COMMAND + { + if((ucUart2Buf[COMMAND] != IAP_CMD_HANDSHAKE)) + { + ucUartErrCode |= IAPERROR_CMD; + } + } + } + else + { + ucUart2BufPT = 0; + if(uiReceCheckSum != ((ucUart2Buf[ucUart2Buf[LENGTH]+8]<<8) + ucUart2Buf[ucUart2Buf[LENGTH]+7])) + { + ucUartErrCode |= IAPERROR_CHECKSUM; + } + + if(ucUartErrCode != 0) //如果有错误代码则不执行命令处理 + { + ucUart2Buf[INDEXES] = ucUartErrCode; + } + else + { + bISPFlg = 1; //跳转到BOOT区 + ucUart2Buf[INDEXES] = 0; + } + + ucUart2Buf[LENGTH] = 0; + ucUart2Buf[COMMAND] = 0x0B; + + databak = ucUart2Buf[SOURCE]; //交换源ID和目标ID + ucUart2Buf[SOURCE] = ucUart2Buf[TARGET]; + ucUart2Buf[TARGET] = databak; + + for(i=2; i<(ucUart2Buf[LENGTH]+7); i++) + { + checksum += ucUart2Buf[i]; + } + + ucUart2Buf[7+ucUart2Buf[LENGTH]] = checksum%256; + ucUart2Buf[8+ucUart2Buf[LENGTH]] = checksum/256; + + Uart2SendAck(); + } + } + } + #endif +1716 +1717 #if (UART0_DEFINE != 0) +1718 /************************************************************************************************* +1719 * 函数名: InterruptUart0AppRx +1720 * 参 数: RxData:Uart0接收的数据,从SBUF0获取 +1721 * 返回值: 无 +1722 * 描 述: UART接收中断服务程序接口,中断处理函数会调用该函数 +1723 ucUart0Buf[0]--Slave Addr +1724 ucUart0Buf[1]--CMD No. +1725 ucUart0Buf[2]--Offset +1726 ucUart0Buf[3]--Data Length + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 29 + +1727 ucUart0Buf[4...]--Data +1728 *************************************************************************************************/ +1729 void InterruptUart0AppRx(U8 RxData) +1730 { +1731 1 ucUart0Buf[ucUart0BufPT] = RxData; +1732 1 ucUart0BufPT++; +1733 1 if(ucUart0BufPT >= 140) +1734 1 { +1735 2 ucUart0BufPT = 0; +1736 2 } +1737 1 if(ucUart0BufPT == 1) +1738 1 { +1739 2 if((ucUart0Buf[UART_SLAVE_ADDR]&0xFE) == SADDR) //接收的第一个字节是否和UART地址匹配 +1740 2 { +1741 3 if((ucUart0Buf[UART_SLAVE_ADDR]&0x01)==0) //bit7是R/W标志;0--R, 1--W +1742 3 { +1743 4 bUart0ReadFlg = 1; +1744 4 bUart0WriteFlg = 0; +1745 4 } +1746 3 else +1747 3 { +1748 4 bUart0WriteFlg = 1; +1749 4 bUart0ReadFlg = 0; +1750 4 } +1751 3 } +1752 2 else if(ucUart0Buf[HEARD1] != 0x5A) //判断是否为IAP/ISP的起始帧 +1753 2 { +1754 3 ucUart0BufPT = 0; //如果帧头错误,则复位指针 +1755 3 } +1756 2 } +1757 1 +1758 1 if(bUart0ReadFlg) +1759 1 { +1760 2 if(ucUart0BufPT==3) +1761 2 { +1762 3 Uart0RdCmdProcess(); //Read the command process +1763 3 } +1764 2 } +1765 1 else if(bUart0WriteFlg) +1766 1 { +1767 2 if(ucUart0BufPT > (ucUart0Buf[UART_LENGTH]+3)) //If a write operation, and complete all the d + -ata has been received +1768 2 { +1769 3 Uart0WrCmdProcess(); //Write the command peocess +1770 3 bUart0WriteFlg = 0; //PC write MCU communiaction over +1771 3 ucUart0BufPT = 0; +1772 3 } +1773 2 } +1774 1 else //非读非写操作时,即为ISP或者IAP的begin命令 +1775 1 { +1776 2 Uart0IapCheckHandshake(); +1777 2 } +1778 1 bUart0SndAckFlg = 0; +1779 1 +1780 1 ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 +1781 1 ucPDTimerCnt = 0; +1782 1 ucUart0TimeoutCnt = 0; +1783 1 } +1784 +1785 +1786 /************************************************************************************************* +1787 * 函数名: InterruptUart0AppTx + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 30 + +1788 * 参 数: 无 +1789 * 返回值: 无 +1790 * 描 述: UART0发送中断服务程序接口,中断处理函数会调用该函数 +1791 *************************************************************************************************/ +1792 void InterruptUart0AppTx(void) +1793 { +1794 1 if((ucUart0Buf[HEARD1] == 0x5A) && (ucUart0Buf[HEARD2] == 0xA5) || bISPFlg) +1795 1 { +1796 2 if(ucUart0BufPT >= (ucUart0Buf[LENGTH]+8)) +1797 2 { +1798 3 Uart0RxEn(); //Allow UART receive data +1799 3 ucUart0BufPT = 0; +1800 3 bUart0ReadFlg = 0; //PC read MCU communication over +1801 3 ucUart0Buf[0] = 0; +1802 3 ucUart0Buf[1] = 0; +1803 3 ucUart0Buf[2] = 0; +1804 3 ucUart0Buf[3] = 0; +1805 3 bUart0SndAckFlg = 1; +1806 3 } +1807 2 else +1808 2 { +1809 3 ucUart0BufPT++; +1810 3 Uart0TxEn(ucUart0Buf[ucUart0BufPT]); //20220620 +1811 3 } +1812 2 } +1813 1 else if((ucUart0BufPT==0) || (ucUart0BufPT>=ucUart0Buf[UART_LENGTH]+3)) +1814 1 { +1815 2 Uart0RxEn(); //UART允许接收数据 +1816 2 ucUart0BufPT = 0; +1817 2 bUart0ReadFlg = 0; +1818 2 ucUart0Buf[0] = 0; +1819 2 ucUart0Buf[1] = 0; +1820 2 ucUart0Buf[2] = 0; +1821 2 ucUart0Buf[3] = 0; +1822 2 bUart0SndAckFlg = 1; //UART已发送过数据,主要用于需要等待发送A + -CK才能进一步操作的功能 +1823 2 } +1824 1 else +1825 1 { +1826 2 ucUart0BufPT++; +1827 2 Uart0TxEn(ucUart0Buf[ucUart0BufPT]); +1828 2 } +1829 1 +1830 1 ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 +1831 1 ucPDTimerCnt = 0; +1832 1 ucUart0TimeoutCnt = 0; +1833 1 } +1834 +1835 +1836 /************************************************************************************************* +1837 * 函数名: InterruptUart0AppTx +1838 * 参 数: 无 +1839 * 返回值: 无 +1840 * 描 述: UART0发送中断服务程序接口,中断处理函数会调用该函数 +1841 *************************************************************************************************/ +1842 void Uart0Check(void) +1843 { +1844 1 if(++ucUart0TimeoutCnt >= 4) //如果4*50mS没有UART通讯,则复位指针向量,并 + -切换到接收模式 +1845 1 { +1846 2 ucUart0TimeoutCnt = 0; +1847 2 ucUart0BufPT = 0; + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 31 + +1848 2 Uart0RxEn(); //UART允许接收数据 +1849 2 } +1850 1 } +1851 #endif +1852 +1853 #if (UART1_DEFINE != 0) + /************************************************************************************************* + * 函数名: InterruptUart1AppRx + * 参 数: RxData:Uart1接收的数据,从SBUF1获取 + * 返回值: 无 + * 描 述: UART1接收中断服务程序接口,中断处理函数会调用该函数 + ucUart1Buf[0]--Slave Addr + ucUart1Buf[1]--CMD No. + ucUart1Buf[2]--Offset + ucUart1Buf[3]--Data Length + ucUart1Buf[4...]--Data + *************************************************************************************************/ + void InterruptUart1AppRx(U8 RxData) + { + ucUart1Buf[ucUart1BufPT] = RxData; + ucUart1BufPT++; + if(ucUart1BufPT >= 140) + { + ucUart1BufPT = 0; + } + if(ucUart1BufPT == 1) + { + McuBank1Sel(); + if((ucUart1Buf[UART_SLAVE_ADDR]&0xFE) == SADDR1) //接收的第一个字节是否和UART地址匹配 + { + McuBank0Sel(); + if((ucUart1Buf[UART_SLAVE_ADDR]&0x01)==0) //bit7是R/W标志;0--R, 1--W + { + bUart1ReadFlg = 1; + bUart1WriteFlg = 0; + } + else + { + bUart1WriteFlg = 1; + bUart1ReadFlg = 0; + } + } + else if(ucUart1Buf[HEARD1] != 0x5A) //判断是否为IAP/ISP的起始帧 + { + ucUart1BufPT = 0; //如果帧头错误,则复位指针 + } + } + + if(bUart1ReadFlg) + { + if(ucUart1BufPT==3) + { + Uart1RdCmdProcess(); //Read the command process + } + } + else if (bUart1WriteFlg) + { + if(ucUart1BufPT > (ucUart1Buf[UART_LENGTH]+3)) //If a write operation, and complete all the d + -ata has been received + { + Uart1WrCmdProcess(); //Write the command peocess + bUart1WriteFlg = 0; //PC write MCU communiaction over + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 32 + + ucUart1BufPT = 0; + } + } + else //非读非写操作时,即为ISP或者IAP的begin命令 + { + Uart1IapCheckHandshake(); + } + bUart1SndAckFlg = 0; + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + ucUart1TimeoutCnt = 0; + } + + + /************************************************************************************************* + * 函数名: InterruptUart1AppTx + * 参 数: 无 + * 返回值: 无 + * 描 述: UART1发送中断服务程序接口,中断处理函数会调用该函数 + *************************************************************************************************/ + void InterruptUart1AppTx(void) + { + if((ucUart1Buf[HEARD1] == 0x5A) && (ucUart1Buf[HEARD2] == 0xA5) || bISPFlg) + { + if(ucUart1BufPT >= (ucUart1Buf[LENGTH]+8)) + { + Uart1RxEn(); //Allow UART receive data + ucUart1BufPT = 0; + bUart1ReadFlg = 0; //PC read MCU communication over + ucUart1Buf[0] = 0; + ucUart1Buf[1] = 0; + ucUart1Buf[2] = 0; + ucUart1Buf[3] = 0; + bUart1SndAckFlg = 1; + } + else + { + ucUart1BufPT++; + Uart1TxEn(ucUart1Buf[ucUart1BufPT]); //20220620 + } + } + else if((ucUart1BufPT==0) || (ucUart1BufPT>=ucUart1Buf[UART_LENGTH]+3)) + { + Uart1RxEn(); //UART允许接收数据 + ucUart1BufPT = 0; + bUart1ReadFlg = 0; + ucUart1Buf[0] = 0; + ucUart1Buf[1] = 0; + ucUart1Buf[2] = 0; + ucUart1Buf[3] = 0; + bUart1SndAckFlg = 1; //UART已发送过数据,主要用于需要等待发送A + -CK才能进一步操作的功能 + } + else + { + ucUart1BufPT++; + Uart1TxEn(ucUart1Buf[ucUart1BufPT]); + } + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 33 + + ucUart1TimeoutCnt = 0; + } + + + /************************************************************************************************* + * 函数名: InterruptUart1AppTx + * 参 数: 无 + * 返回值: 无 + * 描 述: UART1发送中断服务程序接口,中断处理函数会调用该函数 + *************************************************************************************************/ + void Uart1Check(void) + { + if(++ucUart1TimeoutCnt >= 4) //如果4*50mS没有UART通讯,则复位指针向量,并 + -切换到接收模式 + { + ucUart1TimeoutCnt = 0; + ucUart1BufPT = 0; + Uart1RxEn(); //UART允许接收数据 + } + } + #endif +1990 +1991 #if (UART2_DEFINE != 0) + /************************************************************************************************* + * 函数名: InterruptUart2AppRx + * 参 数: RxData:Uart2接收的数据,从SBUF2获取 + * 返回值: 无 + * 描 述: UART2接收中断服务程序接口,中断处理函数会调用该函数 + ucUart2Buf[0]--Slave Addr + ucUart2Buf[1]--CMD No. + ucUart2Buf[2]--Offset + ucUart2Buf[3]--Data Length + ucUart2Buf[4...]--Data + *************************************************************************************************/ + void InterruptUart2AppRx(U8 RxData) + { + ucUart2Buf[ucUart2BufPT] = RxData; + ucUart2BufPT++; + if(ucUart2BufPT >= 140) + { + ucUart2BufPT = 0; + } + if(ucUart2BufPT == 1) + { + McuBank1Sel(); + if((ucUart2Buf[UART_SLAVE_ADDR]&0xFE) == SADDR2) //接收的第一个字节是否和UART地址匹配 + { + McuBank0Sel(); + if((ucUart2Buf[UART_SLAVE_ADDR]&0x01)==0) //bit7是R/W标志;0--R, 1--W + { + bUart2ReadFlg = 1; + bUart2WriteFlg = 0; + } + else + { + bUart2WriteFlg = 1; + bUart2ReadFlg = 0; + } + } + else if(ucUart2Buf[HEARD1] != 0x5A) //判断是否为IAP/ISP的起始帧 + { + ucUart2BufPT = 0; //如果帧头错误,则复位指针 + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 34 + + } + } + + if(bUart2ReadFlg) + { + if(ucUart2BufPT==3) + { + Uart2RdCmdProcess(); //Read the command process + } + } + else if(bUart2WriteFlg) + { + if(ucUart2BufPT > (ucUart2Buf[UART_LENGTH]+3)) //If a write operation, and complete all the d + -ata has been received + { + Uart2WrCmdProcess(); //Write the command peocess + bUart2WriteFlg = 0; //PC write MCU communiaction over + ucUart2BufPT = 0; + } + } + else //非读非写操作时,即为ISP或者IAP的begin命令 + { + Uart2IapCheckHandshake(); + } + bUart2SndAckFlg = 0; + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + ucUart2TimeoutCnt = 0; + } + + + /************************************************************************************************* + * 函数名: InterruptUartAppTx + * 参 数: 无 + * 返回值: 无 + * 描 述: UART发送中断服务程序接口,中断处理函数会调用该函数 + *************************************************************************************************/ + void InterruptUart2AppTx(void) + { + if((ucUart2Buf[HEARD1] == 0x5A) && (ucUart2Buf[HEARD2] == 0xA5) || bISPFlg) + { + if(ucUart2BufPT >= (ucUart2Buf[LENGTH]+8)) + { + Uart2RxEn(); //Allow UART receive data + ucUart2BufPT = 0; + bUart2ReadFlg = 0; //PC read MCU communication over + ucUart2Buf[0] = 0; + ucUart2Buf[1] = 0; + ucUart2Buf[2] = 0; + ucUart2Buf[3] = 0; + bUart2SndAckFlg = 1; + } + else + { + ucUart2BufPT++; + Uart2TxEn(ucUart2Buf[ucUart2BufPT]); //20220620 + } + } + else if((ucUart2BufPT==0) || (ucUart2BufPT>=ucUart2Buf[UART_LENGTH]+3)) + { + Uart2RxEn(); //UART允许接收数据 + C51 COMPILER V9.01 UARTAPP 02/06/2025 15:28:45 PAGE 35 + + ucUart2BufPT = 0; + bUart2ReadFlg = 0; + ucUart2Buf[0] = 0; + ucUart2Buf[1] = 0; + ucUart2Buf[2] = 0; + ucUart2Buf[3] = 0; + bUart2SndAckFlg = 1; //UART已发送过数据,主要用于需要等待发送A + -CK才能进一步操作的功能 + } + else + { + ucUart2BufPT++; + Uart2TxEn(ucUart2Buf[ucUart2BufPT]); + } + + ucSleepTimerCnt = 0; //UART正常通讯会清零低功耗计数,UART复位计数 + ucPDTimerCnt = 0; + ucUart2TimeoutCnt = 0; + } + + + /************************************************************************************************* + * 函数名: InterruptUart0AppTx + * 参 数: 无 + * 返回值: 无 + * 描 述: UART发送中断服务程序接口,中断处理函数会调用该函数 + *************************************************************************************************/ + void Uart2Check(void) + { + if(++ucUart2TimeoutCnt >= 4) //如果4*50mS没有UART通讯,则复位指针向量,并 + -切换到接收模式 + { + ucUart2TimeoutCnt = 0; + ucUart2BufPT = 0; + Uart2RxEn(); //UART允许接收数据 + } + } + #endif + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 2112 ---- + CONSTANT SIZE = 72 ---- + XDATA SIZE = 13 8 + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 10 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/output/UartApp.obj b/output/UartApp.obj new file mode 100644 index 0000000..2e59582 Binary files /dev/null and b/output/UartApp.obj differ diff --git a/output/sh_iec60730b_8051f_addr._ia b/output/sh_iec60730b_8051f_addr._ia new file mode 100644 index 0000000..ec29227 --- /dev/null +++ b/output/sh_iec60730b_8051f_addr._ia @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_addr.S" NOMOD51 SET (LARGE) DEBUG PRINT(.\output\sh_iec60730b_8051f_addr.lst) OBJECT(.\output\sh_iec60730b_8051f_addr.obj) EP \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_addr.lst b/output/sh_iec60730b_8051f_addr.lst new file mode 100644 index 0000000..7d16491 --- /dev/null +++ b/output/sh_iec60730b_8051f_addr.lst @@ -0,0 +1,324 @@ +A51 MACRO ASSEMBLER SH_IEC60730B_8051F_ADDR 10/11/2023 14:22:17 PAGE 1 + + +MACRO ASSEMBLER A51 V8.02 +NO OBJECT MODULE REQUESTED +ASSEMBLER INVOKED BY: C:\Keil_v5\C51\BIN\A51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_addr.S NOMOD51 SET(LARGE) D + EBUG PRINT(.\output\sh_iec60730b_8051f_addr.lst) OBJECT(.\output\sh_iec60730b_8051f_addr.obj) EP + +LOC OBJ LINE SOURCE + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 ;#include "sh_iec60730b_8051f_cfg.h" + 19 +*** ERROR #A318 IN 20 (code_classb\iec60730_lib\sh_iec60730b_8051f_addr.S, LINE 18): can't open file 'sh_iec60730b_8051f + _cfg.h' + 20 + 21 +*** WARNING #A322 IN 22 (code_classb\iec60730_lib\sh_iec60730b_8051f_addr.S, LINE 21): 'SH_CHK_ADDRLINE_TEST_EN': unknown identifier + 22 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_ADDR 10/11/2023 14:22:17 PAGE 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_ADDR 10/11/2023 14:22:17 PAGE 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_ADDR 10/11/2023 14:22:17 PAGE 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_ADDR 10/11/2023 14:22:17 PAGE 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 287 + 288 END + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_ADDR 10/11/2023 14:22:17 PAGE 6 + +SYMBOL TABLE LISTING +------ ----- ------- + + +N A M E T Y P E V A L U E ATTRIBUTES + + + +REGISTER BANK(S) USED: 0 + + +ASSEMBLY COMPLETE. 0 WARNING(S), 2 ERROR(S) diff --git a/output/sh_iec60730b_8051f_aio.__i b/output/sh_iec60730b_8051f_aio.__i new file mode 100644 index 0000000..05664dc --- /dev/null +++ b/output/sh_iec60730b_8051f_aio.__i @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_aio.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_aio.lst) OBJECT(.\output\sh_iec60730b_8051f_aio.obj) \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_aio.lst b/output/sh_iec60730b_8051f_aio.lst new file mode 100644 index 0000000..a46466e --- /dev/null +++ b/output/sh_iec60730b_8051f_aio.lst @@ -0,0 +1,85 @@ +C51 COMPILER V9.01 SH_IEC60730B_8051F_AIO 10/11/2023 14:22:16 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_AIO +OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_aio.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_aio.c LARGE OPTIMIZE(7,SIZE) + - REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJ + -ECTEXTEND PRINT(.\output\sh_iec60730b_8051f_aio.lst) OBJECT(.\output\sh_iec60730b_8051f_aio.obj) + +line level source + + 1 /* + 2 * IEC60730 Class B Library for SINOWEALTH 8051 based ICs. + 3 * File: sh_iec60730b_8051f_aio.c + 4 * Version: 1.0 + 5 * Author: Robin.zhang Chaoming.luo + 6 * Date: 04/21/2023 + 7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S + 8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS. + 9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH + 10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES + 11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR + 12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN + 13 * CONNECTION WITH THEIR PRODUCTS. + 14 * + 15 */ + 16 + 17 /* + 18 AREA |.text|,CODE,READONLY + 19 */ + 20 #include "sh_iec60730b_8051f_cfg.h" +*** WARNING C318 IN LINE 20 OF code_classb\iec60730_lib\sh_iec60730b_8051f_aio.c: can't open file 'sh_iec60730b_8051f_cf + -g.h' + 21 #include "MCURegister.h" + 22 + 23 #if SH_CHK_AIO_TEST_EN == 1 +*** WARNING C322 IN LINE 23 OF code_classb\iec60730_lib\sh_iec60730b_8051f_aio.c: unknown identifier + SHT_RESULT __iec60730b_aio_state; + + /******************************************************************************* + * + * @brief The function reads converted analog value and + * check if the value fits into predefined limits. + * + * This function reads converted value only + * if __iec60730b_aio_state == SH_CHK_AIO_PROGRESS. + * + * @param void + * + * @return SH_CHK_PASS - successfull execution of test (all channels tested). + * SH_CHK_FAIL_AIO - converted value doesn't fit into limits. + * + ******************************************************************************/ + SHT_RESULT sh_8051f_aio_input_check() + { + SHT_U8 i; + __iec60730b_aio_state = SH_CHK_PASS; + for( i = 0; i < SH_CHK_AIO_TEST_NUM; i++) + { + if(__iec60730b_aio_val[i] < __iec60730b_aio_limit[i].low || __iec60730b_aio_val[i] > __iec60730b_a + -io_limit[i].high) + { + __iec60730b_aio_state = SH_CHK_FAIL_AIO; + break; + C51 COMPILER V9.01 SH_IEC60730B_8051F_AIO 10/11/2023 14:22:16 PAGE 2 + + } + } + return __iec60730b_aio_state; + } + #endif + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S) diff --git a/output/sh_iec60730b_8051f_aio.obj b/output/sh_iec60730b_8051f_aio.obj new file mode 100644 index 0000000..59c0350 Binary files /dev/null and b/output/sh_iec60730b_8051f_aio.obj differ diff --git a/output/sh_iec60730b_8051f_checksum._ia b/output/sh_iec60730b_8051f_checksum._ia new file mode 100644 index 0000000..f801ad3 --- /dev/null +++ b/output/sh_iec60730b_8051f_checksum._ia @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_checksum.S" NOMOD51 SET (LARGE) DEBUG PRINT(.\output\sh_iec60730b_8051f_checksum.lst) OBJECT(.\output\sh_iec60730b_8051f_checksum.obj) EP \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_checksum.lst b/output/sh_iec60730b_8051f_checksum.lst new file mode 100644 index 0000000..a2198b8 --- /dev/null +++ b/output/sh_iec60730b_8051f_checksum.lst @@ -0,0 +1,67 @@ +A51 MACRO ASSEMBLER SH_IEC60730B_8051F_CHECKSUM 10/11/2023 14:22:17 PAGE 1 + + +MACRO ASSEMBLER A51 V8.02 +NO OBJECT MODULE REQUESTED +ASSEMBLER INVOKED BY: C:\Keil_v5\C51\BIN\A51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_checksum.S NOMOD51 SET(LARG + E) DEBUG PRINT(.\output\sh_iec60730b_8051f_checksum.lst) OBJECT(.\output\sh_iec60730b_8051f_checksum.obj) EP + +LOC OBJ LINE SOURCE + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 ;$include (sh_iec60730b_8051f_cfg.h) + 20 +*** ERROR #A318 IN 21 (code_classb\iec60730_lib\sh_iec60730b_8051f_checksum.S, LINE 19): can't open file 'sh_iec60730b_8 + 051f_cfg.h' + 21 + 22 + 23 + 24 PUBLIC __iec60730b_flash_checksum + 25 CSEG AT (SH_CHK_FLASH_END_ADDR - 2) +*** _____________________________________^ +*** ______________________________________^ +*** ERROR #A21 IN 25 (code_classb\iec60730_lib\sh_iec60730b_8051f_checksum.S, LINE 24): EXPRESSION WITH FORWARD REFERENCE NOT PERMITTED +*** ERROR #A45 IN 25 (code_classb\iec60730_lib\sh_iec60730b_8051f_checksum.S, LINE 24): UNDEFINED SYMBOL (PASS-2) +0000 26 __iec60730b_flash_checksum: +0000 55 27 DB 55H +0001 55 28 DB 55H + 29 END + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_CHECKSUM 10/11/2023 14:22:17 PAGE 2 + +SYMBOL TABLE LISTING +------ ----- ------- + + +N A M E T Y P E V A L U E ATTRIBUTES + +SH_CHK_FLASH_END_ADDR. . . ---- ----- +__IEC60730B_FLASH_CHECKSUM C ADDR 0000H A + + +REGISTER BANK(S) USED: 0 + + +ASSEMBLY COMPLETE. 0 WARNING(S), 3 ERROR(S) diff --git a/output/sh_iec60730b_8051f_clock.__i b/output/sh_iec60730b_8051f_clock.__i new file mode 100644 index 0000000..a4aaad7 --- /dev/null +++ b/output/sh_iec60730b_8051f_clock.__i @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_clock.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_clock.lst) OBJECT(.\output\sh_iec60730b_8051f_clock.obj) \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_clock.lst b/output/sh_iec60730b_8051f_clock.lst new file mode 100644 index 0000000..42e6f66 --- /dev/null +++ b/output/sh_iec60730b_8051f_clock.lst @@ -0,0 +1,95 @@ +C51 COMPILER V9.01 SH_IEC60730B_8051F_CLOCK 10/11/2023 14:22:16 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_CLOCK +OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_clock.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_clock.c LARGE OPTIMIZE(7,SIZ + -E) REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG O + -BJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_clock.lst) OBJECT(.\output\sh_iec60730b_8051f_clock.obj) + +line level source + + 1 /* + 2 * IEC60730 Class B Library for SINOWEALTH 8051 based ICs. + 3 * File: sh_iec60730b_8051f_clock.c + 4 * Version: 1.0 + 5 * Author: Robin.zhang Chaoming.luo + 6 * Date: 04/21/2023 + 7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S + 8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS. + 9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH + 10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES + 11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR + 12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN + 13 * CONNECTION WITH THEIR PRODUCTS. + 14 * + 15 */ + 16 + 17 + 18 #include "sh_iec60730b_8051f_cfg.h" +*** WARNING C318 IN LINE 18 OF code_classb\iec60730_lib\sh_iec60730b_8051f_clock.c: can't open file 'sh_iec60730b_8051f_ + -cfg.h' + 19 + 20 #if SH_CHK_CLOCK_EN == 1 +*** WARNING C322 IN LINE 20 OF code_classb\iec60730_lib\sh_iec60730b_8051f_clock.c: unknown identifier + SHT_U16 __iec60730b_clk_context; + SHT_U16 __iec60730b_clk_limit_low; + SHT_U16 __iec60730b_clk_limit_high; + /******************************************************************************** + * + * @brief Function checks if the testContext value is within the defined limits. + * + * @param void + * + * @return SH_CHK_PASS - testContext fit into limits. + * SH_CHK_FAIL_CLK - testContext value doesn't fit into limits. + * SH_CHK_FAIL_CLK_PROGRESS - reference counter value not read yet. + * + * + ******************************************************************************/ + SHT_RESULT sh_8051f_clk_check() + { + if((__iec60730b_clk_context+1) == 0) + return SH_CHK_FAIL_CLK_PROGRESS; + + if(__iec60730b_clk_context >= __iec60730b_clk_limit_high) + return SH_CHK_FAIL_CLK; + + if(__iec60730b_clk_context <= __iec60730b_clk_limit_low) + return SH_CHK_FAIL_CLK; + + return SH_CHK_PASS; + } + + /******************************************************************************* + C51 COMPILER V9.01 SH_IEC60730B_8051F_CLOCK 10/11/2023 14:22:16 PAGE 2 + + * + * @brief Function initializes the clock test. + * + * @param *pTestContext - pointer to the variable which holds + * captured timer value. + * + * @return void + * + ******************************************************************************/ + void sh_8051f_clk_init() + { + __iec60730b_clk_context = 0xFFFFF; + } + + #endif + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S) diff --git a/output/sh_iec60730b_8051f_clock.obj b/output/sh_iec60730b_8051f_clock.obj new file mode 100644 index 0000000..c83c4d0 Binary files /dev/null and b/output/sh_iec60730b_8051f_clock.obj differ diff --git a/output/sh_iec60730b_8051f_dio.__i b/output/sh_iec60730b_8051f_dio.__i new file mode 100644 index 0000000..649aae5 --- /dev/null +++ b/output/sh_iec60730b_8051f_dio.__i @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_dio.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_dio.lst) OBJECT(.\output\sh_iec60730b_8051f_dio.obj) \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_dio.lst b/output/sh_iec60730b_8051f_dio.lst new file mode 100644 index 0000000..dd0192a --- /dev/null +++ b/output/sh_iec60730b_8051f_dio.lst @@ -0,0 +1,261 @@ +C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_DIO +OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_dio.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_dio.c LARGE OPTIMIZE(7,SIZE) + - REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJ + -ECTEXTEND PRINT(.\output\sh_iec60730b_8051f_dio.lst) OBJECT(.\output\sh_iec60730b_8051f_dio.obj) + +line level source + + 1 /* + 2 * IEC60730 Class B Library for SINOWEALTH 8051 based ICs. + 3 * File: sh_iec60730b_8051f_dio.c + 4 * Version: 1.0 + 5 * Author: Robin.zhang Chaoming.luo + 6 * Date: 04/21/2023 + 7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S + 8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS. + 9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH + 10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES + 11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR + 12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN + 13 * CONNECTION WITH THEIR PRODUCTS. + 14 * + 15 */ + 16 + 17 #include "sh_iec60730b_8051f_cfg.h" +*** WARNING C318 IN LINE 17 OF code_classb\iec60730_lib\sh_iec60730b_8051f_dio.c: can't open file 'sh_iec60730b_8051f_cf + -g.h' + 18 + 19 + 20 #if SH_CHK_DIO_TEST_EN == 1 +*** WARNING C322 IN LINE 20 OF code_classb\iec60730_lib\sh_iec60730b_8051f_dio.c: unknown identifier + /******************************************************************************* + * + * @brief Checks whether the tested pin has the expected input value. + * + * @param *pTestedPin - pointer to tested pin struct. + * @param expectedValue - expected input value. + * + * @return SH_CHK_PASS + * SH_CHK_FAIL_DIO + * + ******************************************************************************/ + SHT_RESULT sh_8051f_dio_input(SHT_GPIO_ID pin, SHT_BOOL expectedValue) + { + SHT_BOOL readv = sh_8051f_dio_read_port_val(pin); + readv >>= (pin&0xF); + readv &= 1; + if(readv != expectedValue) + return SH_CHK_FAIL_DIO; + else + return SH_CHK_PASS; + } + + /******************************************************************************* + * + * @brief Function tests whether the tested pin, that is configured as the input one, has the expected + -value. + * It is adapted to be used as a "get" function for the sh_8051f_dio_short_to_supply_set() and + the sh_8051f_dio_short_to_adjacent_set() function. + * If the Adjacent pin is not involved in test, then tested pin parameters can be entered instea + -d the adjacent pin parameters. + C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 2 + + * Both tested pin and adjacent pin must be configured as GPIO before the call of the function!! + -! + * + * @param *pTestedPin - pointer to tested pin struct. + * @param *pAdjPin - pointer to adjacent pin struct. + * @param testedPinValue - expected value of the tested pin (logical 0 or logical 1). + * @param backupEnable - flag. if non-zero, backup functionality is enable/active. + * + * @return SH_CHK_PASS + * SH_CHK_FAIL_DIO + * + ******************************************************************************/ + SHT_RESULT sh_8051f_dio_input_ext(SHT_IEC60730B_DIO_TEST *pTestedPin,SHT_IEC60730B_DIO_TEST *pAdjPin, SHT_ + -BOOL expectedValue,SHT_BOOL backupEnable) + { + SHT_RESULT checkResult = SH_CHK_PASS; + SHT_BOOL readv = sh_8051f_dio_read_port_cr(pTestedPin->gpio); + + if(((readv >>(pTestedPin->gpio&0xF))&1) != SH_DIO_MODE_IN ) + checkResult = SH_CHK_FAIL_DIO; + else + { + readv = sh_8051f_dio_read_port_val(pTestedPin->gpio); + readv >>= (pTestedPin->gpio&0xF); + readv &= 1; + if(expectedValue != readv) + checkResult = SH_CHK_FAIL_DIO; + } + + if(backupEnable) + {//restore pins; + sh_8051f_dio_write_port_cr(pTestedPin->gpio,pTestedPin->bkCR); + sh_8051f_dio_write_port_pcr(pTestedPin->gpio,pTestedPin->bkPCR); + sh_8051f_dio_write_port_val(pTestedPin->gpio,pTestedPin->bkVAL); + + if(pAdjPin != pTestedPin) + { + sh_8051f_dio_write_port_cr(pAdjPin->gpio,pTestedPin->bkCR); + sh_8051f_dio_write_port_pcr(pAdjPin->gpio,pTestedPin->bkPCR); + sh_8051f_dio_write_port_val(pAdjPin->gpio,pTestedPin->bkVAL); + } + } + return checkResult; + } + + /******************************************************************************* + * + * @brief Function sets the tested pin as GPIO input with pull-up enable to test the pin against the sh + -ort to GND. + * For getting the result of the test, call the "sh_8051f_dio_input_ext()" function with + * the expected "testedPinValue" sets to 1 for GND. + * Tested pin must be configured as GPIO before the call of the function! + * + * @param *pTestedPin - pointer to tested pin struct. + * @param backupEnable - flag. If non-zero, backup functionality is enable/active. + * + * @return SH_CHK_PASS + * SH_CHK_FAIL_DIO + * + ******************************************************************************/ + SHT_RESULT sh_8051f_dio_short_to_supply_set(SHT_IEC60730B_DIO_TEST *pTestedPin, SHT_BOOL backupEnable) + { + C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 3 + + SHT_RESULT checkResult = SH_CHK_PASS; + SHT_BOOL readv = sh_8051f_dio_read_port_cr(pTestedPin->gpio); + if(backupEnable) + { + pTestedPin->bkCR = readv; + pTestedPin->bkVAL = sh_8051f_dio_read_port_val(pTestedPin->gpio); + pTestedPin->bkPCR = sh_8051f_dio_read_port_pcr(pTestedPin->gpio); + } + if(((readv >>(pTestedPin->gpio&0xF))&1) != SH_DIO_MODE_IN ) + return SH_CHK_FAIL_DIO; + + readv = sh_8051f_dio_read_port_pcr(pTestedPin->gpio); + readv |= (1<<(pTestedPin->gpio&0xF)); + sh_8051f_dio_write_port_pcr(pTestedPin->gpio,readv); + + return checkResult; + } + + /******************************************************************************* + * + * @brief Function sets the tested pin as GPIO input with "testedPinValue". + * And the adjacent pin as GPIO output with opposite output value as for the tested pin. + * For getting the result of the test, call the "sh_8051f_dio_input()" function with the expecte + -d "testedPinValue". + * Both tested pin and adjacent pin must be configured as GPIO before the call of the function! + * + * @param *pTestedPin - pointer to tested pin struct. + * @param *pAdjPin - pointer to adjacent pin struct. + * @param testedPinValue - value that will be set on the tested pin. + * @param backupEnable - flag. If non-zero, backup functionality is enable/active. + * + * @return SH_CHK_PASS + * SH_CHK_FAIL_DIO + * + ******************************************************************************/ + SHT_RESULT sh_8051f_dio_short_to_adjacent_set(SHT_IEC60730B_DIO_TEST *pTestedPin, SHT_IEC60730B_DIO_TEST * + -pAdjPin, SHT_BOOL backupEnable) + { + SHT_RESULT checkResult = SH_CHK_PASS; + SHT_BOOL readv = sh_8051f_dio_read_port_cr(pTestedPin->gpio); + if(backupEnable) + { + pTestedPin->bkCR = readv; + pTestedPin->bkVAL = sh_8051f_dio_read_port_val(pTestedPin->gpio); + pTestedPin->bkPCR = sh_8051f_dio_read_port_pcr(pTestedPin->gpio); + + pAdjPin->bkCR = sh_8051f_dio_read_port_cr(pAdjPin->gpio); + pAdjPin->bkVAL = sh_8051f_dio_read_port_val(pAdjPin->gpio); + pAdjPin->bkPCR = sh_8051f_dio_read_port_pcr(pAdjPin->gpio); + } + + if(((readv >>(pTestedPin->gpio&0xF))&1) != SH_DIO_MODE_IN ) + return SH_CHK_FAIL_DIO; + + /* pull up */ + readv = sh_8051f_dio_read_port_pcr(pTestedPin->gpio); + readv |= (1<<(pTestedPin->gpio&0xF)); + sh_8051f_dio_write_port_pcr(pTestedPin->gpio,readv); + + /*adjacent pin output 0*/ + readv = sh_8051f_dio_read_port_cr(pAdjPin->gpio); + readv |= (1<<(pAdjPin->gpio&0xF)); + C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 4 + + sh_8051f_dio_write_port_cr(pAdjPin->gpio,readv); /*set output mode*/ + sh_8051f_dio_write_pin(pAdjPin->gpio,SH_DIO_PINV_0); /*out 0*/ + + return checkResult; + } + + + /******************************************************************************* + * + * @brief This function executes the digital output test. + * The test is focused only to test one digital pin. + * + * @param *pTestedPin - pointer to tested pin struct. + * @param delay - the delay needed to recognize the value change on tested pin. + * + * @return SH_CHK_PASS + * SH_CHK_FAIL_DIO + * + ******************************************************************************/ + SHT_RESULT sh_8051f_dio_output(SHT_GPIO_ID pin, SHT_U8 delay) + { + SHT_RESULT shResult = SH_CHK_PASS; + SHT_U8 readv = sh_8051f_dio_read_port_cr(pin); + if(((readv >>(pin&0xF))&1) != SH_DIO_MODE_OUT ) + shResult = SH_CHK_FAIL_DIO; + else + { + SHT_U8 bkVAL = sh_8051f_dio_read_port_val(pin); + + sh_8051f_dio_write_pin(pin,SH_DIO_PINV_0); + readv = delay; + while(readv){readv--;} + readv = sh_8051f_dio_read_port_val(pin); + if(((readv >>(pin&0xF))&1) != SH_DIO_PINV_0) + shResult = SH_CHK_FAIL_DIO; + else + { + sh_8051f_dio_write_pin(pin,SH_DIO_PINV_1); + readv = readv; + while(readv){readv--;} + readv = sh_8051f_dio_read_port_val(pin); + if(((readv >>(pin&0xF))&1) != SH_DIO_PINV_1) + shResult = SH_CHK_FAIL_DIO; + } + + sh_8051f_dio_write_port_val(pin,bkVAL); + } + + return shResult; + } + #endif + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 5 + + +C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S) diff --git a/output/sh_iec60730b_8051f_dio.obj b/output/sh_iec60730b_8051f_dio.obj new file mode 100644 index 0000000..3413061 Binary files /dev/null and b/output/sh_iec60730b_8051f_dio.obj differ diff --git a/output/sh_iec60730b_8051f_ee.__i b/output/sh_iec60730b_8051f_ee.__i new file mode 100644 index 0000000..b5182d7 --- /dev/null +++ b/output/sh_iec60730b_8051f_ee.__i @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_ee.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_ee.lst) OBJECT(.\output\sh_iec60730b_8051f_ee.obj) \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_ee.lst b/output/sh_iec60730b_8051f_ee.lst new file mode 100644 index 0000000..589908d --- /dev/null +++ b/output/sh_iec60730b_8051f_ee.lst @@ -0,0 +1,267 @@ +C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_EE +OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_ee.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_ee.c LARGE OPTIMIZE(7,SIZE) + -REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJE + -CTEXTEND PRINT(.\output\sh_iec60730b_8051f_ee.lst) OBJECT(.\output\sh_iec60730b_8051f_ee.obj) + +line level source + + 1 /* + 2 * IEC60730 Class B Library for SINOWEALTH 8051 based ICs. + 3 * File: sh_iec60730b_8051f_ee.c + 4 * Version: 1.0 + 5 * Author: Robin.zhang Chaoming.luo + 6 * Date: 04/21/2023 + 7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S + 8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS. + 9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH + 10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES + 11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR + 12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN + 13 * CONNECTION WITH THEIR PRODUCTS. + 14 * + 15 */ + 16 + 17 #include "sh_iec60730b_8051f_cfg.h" +*** WARNING C318 IN LINE 17 OF code_classb\iec60730_lib\sh_iec60730b_8051f_ee.c: can't open file 'sh_iec60730b_8051f_cfg + -.h' + 18 #include "MCURegister.h" + 19 + 20 #if SH_CHK_EE_EN == 1 +*** WARNING C322 IN LINE 20 OF code_classb\iec60730_lib\sh_iec60730b_8051f_ee.c: unknown identifier + + SHT_EEADDR xdata __iec60730b_ee1_checksum; + SHT_EEADDR __iec60730b_ee1_addr; + SHT_U16 __iec60730b_ee1_crc; + + SHT_EEADDR xdata __iec60730b_ee2_checksum; + SHT_EEADDR __iec60730b_ee2_addr; + SHT_U16 __iec60730b_ee2_crc; + + SHT_U16 __iec60730b_ee_xram_crc; + SHT_U16 xdata __iec60730b_ee_xram_checksum _at_ SH_CHK_EETOXRAM_END_ADDR; + + SHT_U16 code CRC16Table[256]= + { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, + 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, + 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, + 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, + 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, + 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, + 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, + 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, + 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, + 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, + 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, + 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, + C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 2 + + 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, + 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, + 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, + 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, + 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, + 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, + 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, + 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, + 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, + 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, + 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 + }; + + /******************************************************************************* + * + * @brief This function generate the 16-bit CRC value using SW. + * + * @param dataIn - tested data. + * @param crcVal - start condition seed (for the first iteration it is + * typically user defined value, for the next iterations + * it is the result from the previous function call). + * + * @return 16-bit crc value of the memory range (CRC-16-CCITT - normal 0x1021). + * + ******************************************************************************/ + SHT_U16 sh_8051f_crc_ee_sw16(SHT_U8 dataIn, SHT_U16 crcVal) + { + SHT_U8 crcVH; + SHT_U8 i; + for(i = 0; i < 8; i++) + { + crcVH = crcVal>>8; + crcVal <<= 1; + if((dataIn ^ crcVH) >> 7) + crcVal ^= 0x1021; + dataIn <<= 1; + } + return crcVal; + } + + /******************************************************************************* + * + * @brief This function caculate CRC in runtime and check the result after done. + * + * @param void + * + * @return SH_CHK_PASS + * SH_CHK_FAIL_EE + * + ******************************************************************************/ + SHT_RESULT sh_8051f_ee1_runtime(void) + { + SHT_RESULT checkResult = SH_CHK_PASS; + if(__iec60730b_ee1_addr == SH_CHK_EE1_START_ADDR) + __iec60730b_ee1_crc = 0xFFFF; + + sh_8051f_ee_readchecksum((SH_CHK_EE1_END_ADDR-2), (SHT_RESULT xdata *)&__iec60730b_ee1_checksum, 2); + C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 3 + + + FLASHCON |= 0x01; //MOVC instruction or SSP function access EEPROM area + __iec60730b_ee1_crc = sh_8051f_crc_ee_sw16(*(SHT_U8 code *)__iec60730b_ee1_addr, __iec60730b_ee1_crc) + -; + FLASHCON &= ~0x01; //MOVC instruction or SSP function access Main Block area + + __iec60730b_ee1_addr++; + if(__iec60730b_ee1_addr >= (SH_CHK_EE1_END_ADDR-2)) + { + if(__iec60730b_ee1_crc != __iec60730b_ee1_checksum) + checkResult = SH_CHK_FAIL_EE; + __iec60730b_ee1_addr = SH_CHK_EE1_START_ADDR; + } + return checkResult; + } + + /******************************************************************************* + * + * @brief This function caculate CRC in runtime and check the result after done. + * + * @param void + * + * @return SH_CHK_PASS + * SH_CHK_FAIL_EE + * + ******************************************************************************/ + SHT_RESULT sh_8051f_ee2_runtime(void) + { + SHT_RESULT checkResult = SH_CHK_PASS; + if(__iec60730b_ee2_addr == SH_CHK_EE2_START_ADDR) + __iec60730b_ee2_crc = 0xFFFF; + + sh_8051f_ee_readchecksum((SH_CHK_EE2_END_ADDR-2), (SHT_RESULT xdata *)&__iec60730b_ee2_checksum, 2); + + FLASHCON |= 0x01; //MOVC instruction or SSP function access EEPROM area + __iec60730b_ee2_crc = sh_8051f_crc_ee_sw16(*(SHT_U8 code *)__iec60730b_ee2_addr, __iec60730b_ee2_crc) + -; + FLASHCON &= ~0x01; //MOVC instruction or SSP function access Main Block area + + __iec60730b_ee2_addr++; + if(__iec60730b_ee2_addr >= (SH_CHK_EE2_END_ADDR-2)) + { + if(__iec60730b_ee2_crc != __iec60730b_ee2_checksum) + checkResult = SH_CHK_FAIL_EE; + __iec60730b_ee2_addr = SH_CHK_EE2_START_ADDR; + } + return checkResult; + } + + /************************************************************************************************* + * + * @brief This function reads the CRC of the EEPROM at run time. + * + * @param SourceAddr -Source address + * @param *TargetAddr -Target address + * @param Length -Read length + * + *************************************************************************************************/ + void sh_8051f_ee_readchecksum(SHT_EEADDR SourceAddr, SHT_RESULT xdata *TargetAddr, SHT_EEADDR Length) + { + SHT_EEADDR i; + SHT_RESULT xdata *data TargetAddr1 = TargetAddr; + C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 4 + + + FLASHCON |= 0x01; //MOVC instruction or SSP function access EEPROM area + for(i=0; i 0; counter--) + { + crc16 = CRC16Table[(SHT_U8)(*p ^ (crc16 >> 8))] ^ (crc16 << 8); + p++; + } + return(crc16); + } + #endif + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = ---- ---- + C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 5 + + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S) diff --git a/output/sh_iec60730b_8051f_ee.obj b/output/sh_iec60730b_8051f_ee.obj new file mode 100644 index 0000000..1b2e02c Binary files /dev/null and b/output/sh_iec60730b_8051f_ee.obj differ diff --git a/output/sh_iec60730b_8051f_flash.__i b/output/sh_iec60730b_8051f_flash.__i new file mode 100644 index 0000000..beae2c6 --- /dev/null +++ b/output/sh_iec60730b_8051f_flash.__i @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_flash.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_flash.lst) OBJECT(.\output\sh_iec60730b_8051f_flash.obj) \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_flash.lst b/output/sh_iec60730b_8051f_flash.lst new file mode 100644 index 0000000..65402d3 --- /dev/null +++ b/output/sh_iec60730b_8051f_flash.lst @@ -0,0 +1,162 @@ +C51 COMPILER V9.01 SH_IEC60730B_8051F_FLASH 10/11/2023 14:22:17 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_FLASH +OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_flash.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_flash.c LARGE OPTIMIZE(7,SIZ + -E) REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG O + -BJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_flash.lst) OBJECT(.\output\sh_iec60730b_8051f_flash.obj) + +line level source + + 1 /* + 2 * IEC60730 Class B Library for SINOWEALTH 8051 based ICs. + 3 * File: sh_iec60730b_8051f_flash.c + 4 * Version: 1.0 + 5 * Author: Robin.zhang Chaoming.luo + 6 * Date: 04/21/2023 + 7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S + 8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS. + 9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH + 10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES + 11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR + 12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN + 13 * CONNECTION WITH THEIR PRODUCTS. + 14 * + 15 */ + 16 + 17 #include "sh_iec60730b_8051f_cfg.h" +*** WARNING C318 IN LINE 17 OF code_classb\iec60730_lib\sh_iec60730b_8051f_flash.c: can't open file 'sh_iec60730b_8051f_ + -cfg.h' + 18 #include "MCURegister.h" + 19 + 20 #if SH_CHK_FLASH_EN == 1 +*** WARNING C322 IN LINE 20 OF code_classb\iec60730_lib\sh_iec60730b_8051f_flash.c: unknown identifier + SHT_FLASHADDR __iec60730b_flash_addr; + SHT_U16 __iec60730b_flash_crc; + SHT_U16 __iec60730b_boot_checksum; + + /******************************************************************************* + * + * @brief This function generate the 16-bit CRC value using SW. + * + * @param dataIn - tested data. + * @param crcVal - start condition seed (for the first iteration it is + * typically user defined value, for the next iterations + * it is the result from the previous function call). + * + * @return 16-bit crc value of the memory range (CRC-16-CCITT - normal 0x1021). + * + ******************************************************************************/ + SHT_U16 sh_8051f_crc_sw16(SHT_U8 dataIn, SHT_U16 crcVal) + { + SHT_U8 crcVH; + SHT_U8 i; + for(i = 0; i < 8; i++) + { + crcVH = crcVal>>8; + crcVal <<= 1; + if((dataIn ^ crcVH) >> 7) + crcVal ^= 0x1021; + dataIn <<= 1; + } + return crcVal; + } + C51 COMPILER V9.01 SH_IEC60730B_8051F_FLASH 10/11/2023 14:22:17 PAGE 2 + + #endif + 52 #if ((SH_CHK_FLASH_EN == 1)||(SH_CHK_EE_EN == 1)||(SH_CHK_BOOT_EN == 1)) +*** WARNING C322 IN LINE 52 OF code_classb\iec60730_lib\sh_iec60730b_8051f_flash.c: unknown identifier +*** WARNING C322 IN LINE 52 OF code_classb\iec60730_lib\sh_iec60730b_8051f_flash.c: unknown identifier +*** WARNING C322 IN LINE 52 OF code_classb\iec60730_lib\sh_iec60730b_8051f_flash.c: unknown identifier + /******************************************************************************* + * + * @brief This function generate the ROM CRC. + * + * @param startaddr - start addr. + * @param endaddr - end addr. + * @param crcromtype - crc code or eeprom. + * + * @return 16-bit crc value of the memory range (CRC-16-CCITT - normal 0x1021). + * + ******************************************************************************/ + SHT_U16 sh_8051f_crc_code(SHT_EEADDR startaddr,SHT_EEADDR endaddr,SHT_U8 crcromtype) + { + CRCCON &= ~0x40; + CRCCON &= ~0x80; //stop CRC + + CRCDL = 0xFF; + CRCDH = 0xFF; + + if(crcromtype == MCU_CRC_EE) + { + FLASHCON |= 0x02; + } + else + { + FLASHCON &= ~0x02; + } + endaddr -= 3; + + CRCSTAL = (SHT_U8)startaddr; + CRCSTAH = (SHT_U8)(startaddr >> 8); + + CRCSTOL = (SHT_U8)endaddr; + CRCSTOH = (SHT_U8)(endaddr >> 8); + + CRCCON |= 0x80; //start CRC + + while((CRCCON & 0x40) == 0){} + + CRCCON &= ~0x40; + return CRCD_16; + } + #endif + 96 + 97 #if SH_CHK_FLASH_EN == 1 +*** WARNING C322 IN LINE 97 OF code_classb\iec60730_lib\sh_iec60730b_8051f_flash.c: unknown identifier + /******************************************************************************* + * + * @brief This function caculate CRC in runtime and check the result after done. + * + * @param void + * + * @return SH_CHK_PASS + * SH_CHK_FAIL_FLASH + * + ******************************************************************************/ + SHT_RESULT sh_8051f_flash_runtime(void) + C51 COMPILER V9.01 SH_IEC60730B_8051F_FLASH 10/11/2023 14:22:17 PAGE 3 + + { + SHT_RESULT checkResult = SH_CHK_PASS; + if(__iec60730b_flash_addr == SH_CHK_FLASH_START_ADDR) + __iec60730b_flash_crc = 0xFFFF; + + __iec60730b_flash_crc = sh_8051f_crc_sw16(*(SHT_U8 code *)__iec60730b_flash_addr, __iec60730b_flash_c + -rc); + + __iec60730b_flash_addr++; + if(__iec60730b_flash_addr >= (SH_CHK_FLASH_END_ADDR-2)) + { + if(__iec60730b_flash_crc != __iec60730b_flash_checksum) + checkResult = SH_CHK_FAIL_FLASH; + __iec60730b_flash_addr = SH_CHK_FLASH_START_ADDR; + } + return checkResult; + } + #endif + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 6 WARNING(S), 0 ERROR(S) diff --git a/output/sh_iec60730b_8051f_flash.obj b/output/sh_iec60730b_8051f_flash.obj new file mode 100644 index 0000000..6fd1c84 Binary files /dev/null and b/output/sh_iec60730b_8051f_flash.obj differ diff --git a/output/sh_iec60730b_8051f_pc._ia b/output/sh_iec60730b_8051f_pc._ia new file mode 100644 index 0000000..89e7724 --- /dev/null +++ b/output/sh_iec60730b_8051f_pc._ia @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_pc.S" NOMOD51 SET (LARGE) DEBUG PRINT(.\output\sh_iec60730b_8051f_pc.lst) OBJECT(.\output\sh_iec60730b_8051f_pc.obj) EP \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_pc.lst b/output/sh_iec60730b_8051f_pc.lst new file mode 100644 index 0000000..d93196e --- /dev/null +++ b/output/sh_iec60730b_8051f_pc.lst @@ -0,0 +1,108 @@ +A51 MACRO ASSEMBLER SH_IEC60730B_8051F_PC 10/11/2023 14:22:18 PAGE 1 + + +MACRO ASSEMBLER A51 V8.02 +NO OBJECT MODULE REQUESTED +ASSEMBLER INVOKED BY: C:\Keil_v5\C51\BIN\A51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_pc.S NOMOD51 SET(LARGE) DEB + UG PRINT(.\output\sh_iec60730b_8051f_pc.lst) OBJECT(.\output\sh_iec60730b_8051f_pc.obj) EP + +LOC OBJ LINE SOURCE + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 ;#include "sh_iec60730b_8051f_cfg.h" + 19 +*** ERROR #A318 IN 20 (code_classb\iec60730_lib\sh_iec60730b_8051f_pc.S, LINE 18): can't open file 'sh_iec60730b_8051f_c + fg.h' + 20 + 21 +*** WARNING #A322 IN 22 (code_classb\iec60730_lib\sh_iec60730b_8051f_pc.S, LINE 21): 'SH_CHK_PC_EN': unknown identifier + 22 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_PC 10/11/2023 14:22:18 PAGE 2 + + + + + + + + + + + + + + + + + + + + + + + + 77 + 78 END + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_PC 10/11/2023 14:22:18 PAGE 3 + +SYMBOL TABLE LISTING +------ ----- ------- + + +N A M E T Y P E V A L U E ATTRIBUTES + + + +REGISTER BANK(S) USED: 0 + + +ASSEMBLY COMPLETE. 0 WARNING(S), 2 ERROR(S) diff --git a/output/sh_iec60730b_8051f_porting.__i b/output/sh_iec60730b_8051f_porting.__i new file mode 100644 index 0000000..dc74887 --- /dev/null +++ b/output/sh_iec60730b_8051f_porting.__i @@ -0,0 +1 @@ +"code_classb\iec60730_proc\sh_iec60730b_8051f_porting.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_porting.lst) OBJECT(.\output\sh_iec60730b_8051f_porting.obj) \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_porting.lst b/output/sh_iec60730b_8051f_porting.lst new file mode 100644 index 0000000..c28cc1a --- /dev/null +++ b/output/sh_iec60730b_8051f_porting.lst @@ -0,0 +1,720 @@ +C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_PORTING +OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_porting.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_proc\sh_iec60730b_8051f_porting.c LARGE OPTIMIZE(7, + -SIZE) REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBU + -G OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_porting.lst) OBJECT(.\output\sh_iec60730b_8051f_porting.obj) + +line level source + + 1 /* + 2 * IEC60730 Class B TEST PROCESS for SINOWEALTH 8051 based ICs. + 3 * File: sh_iec60730b_8051f_testproc.h + 4 * Version: 1.0 + 5 * Author: Robin.zhang Chaoming.luo + 6 * Date: 04/21/2023 + 7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S + 8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS. + 9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH + 10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES + 11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR + 12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN + 13 * CONNECTION WITH THEIR PRODUCTS. + 14 * + 15 */ + 16 + 17 #include "sh_iec60730b_8051f_testproc.h" +*** WARNING C318 IN LINE 17 OF code_classb\iec60730_proc\sh_iec60730b_8051f_porting.c: can't open file 'sh_iec60730b_805 + -1f_testproc.h' + 18 #include "main.h" + 19 + 20 + 21 #if SH_CHK_DIO_TEST_EN == 1 +*** WARNING C322 IN LINE 21 OF code_classb\iec60730_proc\sh_iec60730b_8051f_porting.c: unknown identifier + /******************************************************************************* + * + * @brief This function is used for read GPIO port value + * + * @param pin: GPIO ID + * + * @return GPIO Value + * + ******************************************************************************/ + SHT_U8 sh_8051f_dio_read_port_val(SHT_GPIO_ID pin) + { + SHT_U8 readV; + switch(pin&0xF0) + { + case 0x00: + readV = P0; + break; + case 0x10: + readV = P1; + break; + case 0x20: + readV = P2; + break; + case 0x30: + readV = P3; + break; + case 0x40: + readV = P4; + break; + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 2 + + case 0x50: + INSCON = 0x40; //SFR Bank1 selected + readV = P5; + INSCON = 0x00; //SFR Bank0 selected + break; + } + return readV; + } + /******************************************************************************* + * + * @brief This function is used for read GPIO port mode control register(CR) + * + * @param pin: GPIO ID + * + * @return GPIO mode control register value + * + ******************************************************************************/ + SHT_U8 sh_8051f_dio_read_port_cr(SHT_GPIO_ID pin) + { + SHT_U8 readV; + switch(pin&0xF0) + { + case 0x00: + readV = P0CR; + break; + case 0x10: + readV = P1CR; + break; + case 0x20: + readV = P2CR; + break; + case 0x30: + readV = P3CR; + break; + case 0x40: + readV = P4CR; + break; + case 0x50: + INSCON = 0x40; //SFR Bank1 selected + readV = P5CR; + INSCON = 0x00; //SFR Bank0 selected + break; + } + return readV; + } + /******************************************************************************* + * + * @brief This function is used for read GPIO port pull control register(PCR) + * + * @param pin: GPIO ID + * + * @return GPIO pull control register value + * + ******************************************************************************/ + SHT_U8 sh_8051f_dio_read_port_pcr(SHT_GPIO_ID pin) + { + SHT_U8 readV; + switch(pin&0xF0) + { + case 0x00: + readV = P0PCR; + break; + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 3 + + case 0x10: + readV = P1PCR; + break; + case 0x20: + readV = P2PCR; + break; + case 0x30: + readV = P3PCR; + break; + case 0x40: + readV = P4PCR; + break; + case 0x50: + INSCON = 0x40; //SFR Bank1 selected + readV = P5PCR; + INSCON = 0x00; //SFR Bank0 selected + break; + } + return readV; + } + /******************************************************************************* + * + * @brief This function is used for write GPIO pin value + * + * @param pin: GPIO ID + * pinVal: SH_DIO_PINV_0 or SH_DIO_PINV_1 + * + * @return void + * + ******************************************************************************/ + void sh_8051f_dio_write_pin(SHT_GPIO_ID pin,SHT_BOOL pinVal) + { + SHT_U8 readV; + readV = 1; + readV <<= (pin&0xF); + if(pinVal == SH_DIO_PINV_1) + { + switch(pin&0xF0) + { + case 0x00: + P0 |= readV; + break; + case 0x10: + P1 |= readV; + break; + case 0x20: + P2 |= readV; + break; + case 0x30: + P3 |= readV; + break; + case 0x40: + P4 |= readV; + break; + case 0x50: + INSCON = 0x40; //SFR Bank1 selected + P5 |= readV; + INSCON = 0x00; //SFR Bank0 selected + break; + } + } + else + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 4 + + { + readV =~readV; + switch(pin&0xF0) + { + case 0x00: + P0 &= readV; + break; + case 0x10: + P1 &= readV; + break; + case 0x20: + P2 &= readV; + break; + case 0x30: + P3 &= readV; + break; + case 0x40: + P4 &= readV; + break; + case 0x50: + INSCON = 0x40; //SFR Bank1 selected + P5 &= readV; + INSCON = 0x00; //SFR Bank0 selected + break; + } + } + } + /******************************************************************************* + * + * @brief This function is used for write GPIO port value + * + * @param pin: GPIO ID + * writerv: value of all 8 pins + * + * @return void + * + ******************************************************************************/ + void sh_8051f_dio_write_port_val(SHT_GPIO_ID pin,SHT_U8 writev) + { + switch(pin&0xF0) + { + case 0x00: + P0 = writev; + break; + case 0x10: + P1 = writev; + break; + case 0x20: + P2 = writev; + break; + case 0x30: + P3 = writev; + break; + case 0x40: + P4 = writev; + break; + case 0x50: + INSCON = 0x40; //SFR Bank1 selected + P5 = writev; + INSCON = 0x00; //SFR Bank0 selected + break; + } + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 5 + + } + /******************************************************************************* + * + * @brief This function is used for write GPIO mode control register (CR) + * + * @param pin: GPIO ID + * writerv: value of mode control register + * + * @return void + * + ******************************************************************************/ + void sh_8051f_dio_write_port_cr(SHT_GPIO_ID pin,SHT_U8 writev) + { + switch(pin&0xF0) + { + case 0x00: + P0CR = writev; + break; + case 0x10: + P1CR = writev; + break; + case 0x20: + P2CR = writev; + break; + case 0x30: + P3CR = writev; + break; + case 0x40: + P4CR = writev; + break; + case 0x50: + INSCON = 0x40; //SFR Bank1 selected + P5CR = writev; + INSCON = 0x00; //SFR Bank0 selected + break; + } + } + /******************************************************************************* + * + * @brief This function is used for write GPIO pull control register(PCR) + * + * @param pin: GPIO ID + * writerv: value of pull control register + * + * @return void + * + ******************************************************************************/ + void sh_8051f_dio_write_port_pcr(SHT_GPIO_ID pin,SHT_U8 writev) + { + switch(pin&0xF0) + { + case 0x00: + P0PCR = writev; + break; + case 0x10: + P1PCR = writev; + break; + case 0x20: + P2PCR = writev; + break; + case 0x30: + P3PCR = writev; + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 6 + + break; + case 0x40: + P4PCR = writev; + break; + case 0x50: + INSCON = 0x40; //SFR Bank1 selected + P5PCR = writev; + INSCON = 0x00; //SFR Bank0 selected + break; + } + } + + /* config tested pins */ + static SHT_IEC60730B_DIO_TEST __iec60730b_dio_pin_out0 = {OUTPUT_PORT,0,0,0}; //P4_3 : output + static SHT_IEC60730B_DIO_TEST __iec60730b_dio_pin_in0 = {INPUT_PORT,0,0,0}; //P4_2 : check input + + /******************************************************************************* + * + * @brief This function is used for Digital IO test + * + * @param void + * + * @return SH_CHK_PASS - digital IO tested correct + * SH_CHK_FAIL_DIO - digital IO failed + ******************************************************************************/ + SHT_RESULT sh_8051f_dio_test(void) + { + SHT_RESULT checkResult = SH_CHK_PASS; + checkResult = sh_8051f_dio_short_to_adjacent_set(&__iec60730b_dio_pin_in0, + &__iec60730b_dio_pin_out0, + SH_DIO_BACKUP_ENABLE); + if( checkResult != SH_CHK_PASS) + return checkResult; + checkResult = sh_8051f_dio_input(__iec60730b_dio_pin_in0.gpio,SH_DIO_PINV_1); + if( checkResult != SH_CHK_PASS) + return checkResult; + checkResult = sh_8051f_dio_short_to_supply_set(&__iec60730b_dio_pin_in0,SH_DIO_BACKUP_DISABLE); + if( checkResult != SH_CHK_PASS) + return checkResult; + checkResult = sh_8051f_dio_input_ext(&__iec60730b_dio_pin_in0,&__iec60730b_dio_pin_out0,SH_DIO_PINV_1, + -SH_DIO_BACKUP_ENABLE); + if( checkResult != SH_CHK_PASS) + return checkResult; + checkResult = sh_8051f_dio_output(__iec60730b_dio_pin_out0.gpio,100); + if( checkResult != SH_CHK_PASS) + return checkResult; + + return checkResult; + } + #endif + 348 + 349 #if SH_CHK_AIO_TEST_EN == 1 +*** WARNING C322 IN LINE 349 OF code_classb\iec60730_proc\sh_iec60730b_8051f_porting.c: unknown identifier + /******************************************************************************* + * + * @brief Initialize Analog IO test structure + * + * + ******************************************************************************/ + /*AIO convert limit*/ + code const SHT_IEC60730B_AIO_LIMITS __iec60730b_aio_limit[SH_CHK_AIO_TEST_NUM] = { + {LOWER_LIMIT_CH1,UPPER_LIMIT_CH1}, + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 7 + + {LOWER_LIMIT_CH2,UPPER_LIMIT_CH2}, + // {LOWER_LIMIT_CH3,UPPER_LIMIT_CH3}, + }; + SHT_U16 __iec60730b_aio_val[SH_CHK_AIO_TEST_NUM] = {0}; /*ADC sequence index array*/ + /******************************************************************************* + * + * @brief This function is used for Analog IO test + * + * @param void + * + * @return SH_CHK_PASS - Analog IO tested correct + * SH_CHK_FAIL_AIO - Analog IO failed + ******************************************************************************/ + SHT_RESULT sh_8051f_aio_test(void) + { + SHT_RESULT checkResult = SH_CHK_PASS; + + // __iec60730b_aio_val[0] = uiAdcVal[VVBIAS]; + // __iec60730b_aio_val[1] = uiAdcVal[VBG]; + + checkResult = sh_8051f_aio_input_check(); + + return checkResult; + } + /******************************************************************************* + * + * @brief This function is used for Analog IO test at runtime + * + * @param void + * + * @return SH_CHK_PASS - Analog IO tested correct + * SH_CHK_FAIL_AIO - Analog IO failed + ******************************************************************************/ + SHT_RESULT sh_8051f_aio_test_runtime(void) + { + SHT_RESULT checkResult = SH_CHK_PASS; + + // __iec60730b_aio_val[0] = uiAdcVal[VVBIAS]; + // __iec60730b_aio_val[1] = uiAdcVal[VBG]; + + checkResult = sh_8051f_aio_input_check(); + + return checkResult; + } + #endif + 404 + 405 #if SH_CHK_WDG_EN == 1 +*** WARNING C322 IN LINE 405 OF code_classb\iec60730_proc\sh_iec60730b_8051f_porting.c: unknown identifier + /******************************************************************************* + * + * @brief This function is used for watchdog testing + * + * @param void + * + * @return SH_CHK_PASS - watchdog runs correct + * SH_CHK_FAIL_WDG - watchdog doesn't fit into limit + ******************************************************************************/ + SHT_RESULT sh_8051f_wdg_test(void) + { + SHT_RESULT checkResult = SH_CHK_PASS; + __iec60730b_wdg_test_obj.resetSource = RSTSTAT; + + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 8 + + /*clear reset flags and reset watchdog config */ + RSTSTAT = SH_CHK_WDG_EXPECT_TIME; + + if( sh_8051f_wdg_setup() != SH_CHK_PASS) + { + /* measure watchdog timeout */ + EA = 0; + __iec60730b_wdg_test_obj.counter = 0; + sh_8051f_wdg_init_timer(); + + if(ucKeyValue == KEY_ON_S) + { + __iec60730b_wdg_test_obj.resetflag = 1; + } + + CLR_WDT(); + while(1){ + sh_8051f_wdg_delay_1ms(); + __iec60730b_wdg_test_obj.counter++; + } + } + + checkResult = sh_8051f_wdg_check(); + + if(checkResult != SH_CHK_PASS && SH_CHK_WDG_ENDLESS_LOOP) + { + /* measure watchdog timeout */ + EA = 0; + __iec60730b_wdg_test_obj.counter = 0; + sh_8051f_wdg_init_timer(); + CLR_WDT(); + while(1){ + sh_8051f_wdg_delay_1ms(); + __iec60730b_wdg_test_obj.counter++; + } + } + if(checkResult != SH_CHK_PASS) + return checkResult; + return checkResult; + } + #if (SH_CHK_WDG_TIMER_SEL == SH_CHK_WDG_P0) + /******************************************************************************* + * + * @brief This function is used for initializing timer to generate 1ms timeout event + * + * @param void + * + * @return void + * + ******************************************************************************/ + #define SH_CHK_WDG_TV (SH_CHK_SYSCLK*1000/16) + void sh_8051f_wdg_init_timer() + { + PWM0CON = 0x20; + PWM0PL = (SH_CHK_WDG_TV&0xFF); + PWM0PH = (SH_CHK_WDG_TV>>8); + PWM0CON = 0xA0; + } + /******************************************************************************* + * + * @brief This function is used for delay 1ms + * + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 9 + + * @param void + * + * @return void + * + ******************************************************************************/ + void sh_8051f_wdg_delay_1ms() + { + PWM0CON &= ~(1<<7); + PWM0PL = (SH_CHK_WDG_TV&0xFF); + PWM0PH = (SH_CHK_WDG_TV>>8); + PWM0CON &= ~(1<<1); + PWM0CON |= (1<<7); + while((PWM0CON&0x02) == 0){} + } + + #elif (SH_CHK_WDG_TIMER_SEL == SH_CHK_WDG_P1) + #define SH_CHK_WDG_TV (SH_CHK_SYSCLK*1000/16) + void sh_8051f_wdg_init_timer() + { + PWM1CON = 0x20; + PWM1PL = (SH_CHK_WDG_TV&0xFF); + PWM1PH = (SH_CHK_WDG_TV>>8); + PWM1CON = 0xA0; + } + void sh_8051f_wdg_delay_1ms() + { + PWM1CON &= ~(1<<7); + PWM1PL = (SH_CHK_WDG_TV&0xFF); + PWM1PH = (SH_CHK_WDG_TV>>8); + PWM1CON &= ~(1<<1); + PWM1CON |= (1<<7); + while((PWM1CON&0x02) == 0){} + } + #elif (SH_CHK_WDG_TIMER_SEL == SH_CHK_WDG_P2) + #define SH_CHK_WDG_TV (SH_CHK_SYSCLK*1000/16) + void sh_8051f_wdg_init_timer() + { + PWM2CON = 0x20; + PWM2PL = (SH_CHK_WDG_TV&0xFF); + PWM2PH = (SH_CHK_WDG_TV>>8); + PWM2CON = 0xA0; + } + void sh_8051f_wdg_delay_1ms() + { + PWM2CON &= ~(1<<7); + PWM2PL = (SH_CHK_WDG_TV&0xFF); + PWM2PH = (SH_CHK_WDG_TV>>8); + PWM2CON &= ~(1<<1); + PWM2CON |= (1<<7); + while((PWM2CON&0x02) == 0){} + } + #elif (SH_CHK_WDG_TIMER_SEL == SH_CHK_WDG_T3) + #define SH_CHK_WDG_TV (0xFFFF - ((SH_CHK_SYSCLK/8*1000))) + void sh_8051f_wdg_init_timer() + { + INSCON = 0x40; //SFR Bank1 selected + T3CON = (1<<4)|(0<<0);//SYSCLK/8 + TL3 = (SH_CHK_WDG_TV&0xFF); + TH3 = (SH_CHK_WDG_TV>>8); + T3CON |= (1<<2);//START TIMER + INSCON = 0x00; //SFR Bank0 selected + } + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 10 + + void sh_8051f_wdg_delay_1ms() + { + INSCON = 0x40; //SFR Bank1 selected + T3CON &= ~((1<<2)|(1<<7)); + TL3 = (SH_CHK_WDG_TV&0xFF); + TH3 = (SH_CHK_WDG_TV>>8); + T3CON |= (1<<2);//START TIMER2 + while((T3CON & (1<<7)) == 0){} + INSCON = 0x00; //SFR Bank0 selected + } + #endif + #endif + 556 + 557 /******************************************************************************* + 558 * CLOCK TESTING FUNCTIONS + 559 ******************************************************************************/ + 560 #if SH_CHK_CLOCK_EN == 1 +*** WARNING C322 IN LINE 560 OF code_classb\iec60730_proc\sh_iec60730b_8051f_porting.c: unknown identifier + /******************************************************************************* + * + * @brief This function is used for Start Timer (with clock source different from system clock) + * + * @param void + * + * @return void + * + ******************************************************************************/ + #if (SH_CHK_CLOCK_LOWSPD_SEL == SH_CHK_CLOCK_T3) + void sh_8051f_clk_start_lowspeed_timer() + { + INSCON = 0x40; //SFR Bank1 selected + T3CON = 0x02; //128k + TL3 = 0; + TH3 = 0; + T3CON |= (1<<2);//START TIMER + INSCON = 0x00; //SFR Bank0 selected + } + + void sh_8051f_clk_capture() + { + INSCON = 0x40; //SFR Bank1 selected + T3CON &= ~(1<<2);//STOP TIMER + __iec60730b_clk_context = T3_16; + TL3 = 0; + TH3 = 0; + T3CON |= (1<<2);//START TIMER + INSCON = 0x00; //SFR Bank0 selected + } + #endif + + + + /******************************************************************************* + * + * @brief This function is used for Start Timer (with system clock source) + * + * @param void + * + * @return void + * + ******************************************************************************/ + #if (SH_CHK_CLOCK_HIGHSPD_SEL == SH_CHK_CLOCK_P0) + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 11 + + void sh_8051f_clk_start_highspeed_timer() + { + PWM0PL = 0x53; + PWM0PH = 0x07; + PWM0DL = 0x53; + PWM0DH = 0x07; + PWM0CON = 0xB4; + IEN1 |= (1<<1); + } + + void InterruptPWM0(void) interrupt 8 + { + PWM0CON &= ~(1<<1); + sh_8051f_clk_capture(); + InterruptTimer3App(); //定时器 + } + #elif (SH_CHK_CLOCK_HIGHSPD_SEL == SH_CHK_CLOCK_P1) + void sh_8051f_clk_start_highspeed_timer() + { + PWM1PL = 0x53; + PWM1PH = 0x07; + PWM1DL = 0x53; + PWM1DH = 0x07; + PWM1CON = 0xB4; + IEN1 |= (1<<2); + } + + void InterruptPWM1(void) interrupt 9 + { + PWM1CON &= ~(1<<1); + sh_8051f_clk_capture(); + InterruptTimer3App(); //定时器 + } + #elif (SH_CHK_CLOCK_HIGHSPD_SEL == SH_CHK_CLOCK_P2) + void sh_8051f_clk_start_highspeed_timer() + { + PWM2PL = 0x53; + PWM2PH = 0x07; + PWM2DL = 0x53; + PWM2DH = 0x07; + PWM2CON = 0xB4; + IEN2 |= (1<<3); + } + + void InterruptPWM2(void) interrupt 18 + { + PWM2CON &= ~(1<<1); + sh_8051f_clk_capture(); + InterruptTimer3App(); //定时器 + } + #endif + #endif + 657 /******************************************************************************* + 658 * ERROR OPERATION FUNCTION + 659 ******************************************************************************/ + 660 void sh_8051f_safety_error(SHT_RESULT checkResult) +*** ERROR C141 IN LINE 660 OF CODE_CLASSB\IEC60730_PROC\SH_IEC60730B_8051F_PORTING.C: syntax error near 'checkResult', e + -xpected ')' + 661 { + 662 1 #if 1 + 663 1 //for debug + 664 1 checkResult = RSTSTAT; + C51 COMPILER V9.01 SH_IEC60730B_8051F_PORTING 10/11/2023 14:22:17 PAGE 12 + +*** ERROR C202 IN LINE 664 OF CODE_CLASSB\IEC60730_PROC\SH_IEC60730B_8051F_PORTING.C: 'checkResult': undefined identifie + -r + 665 1 while(1){ + 666 2 CLR_WDT(); + 667 2 } + 668 1 #else + /*WAIT WATCHDOG REST*/ + RSTSTAT = 7; /*fast reset*/ + while(1){ + }; + #endif + 674 1 } + +C51 COMPILATION COMPLETE. 5 WARNING(S), 2 ERROR(S) diff --git a/output/sh_iec60730b_8051f_ram._ia b/output/sh_iec60730b_8051f_ram._ia new file mode 100644 index 0000000..836ea4c --- /dev/null +++ b/output/sh_iec60730b_8051f_ram._ia @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_ram.S" NOMOD51 SET (LARGE) DEBUG PRINT(.\output\sh_iec60730b_8051f_ram.lst) OBJECT(.\output\sh_iec60730b_8051f_ram.obj) EP \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_ram.lst b/output/sh_iec60730b_8051f_ram.lst new file mode 100644 index 0000000..cc09da8 --- /dev/null +++ b/output/sh_iec60730b_8051f_ram.lst @@ -0,0 +1,684 @@ +A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 1 + + +MACRO ASSEMBLER A51 V8.02 +NO OBJECT MODULE REQUESTED +ASSEMBLER INVOKED BY: C:\Keil_v5\C51\BIN\A51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_ram.S NOMOD51 SET(LARGE) DE + BUG PRINT(.\output\sh_iec60730b_8051f_ram.lst) OBJECT(.\output\sh_iec60730b_8051f_ram.obj) EP + +LOC OBJ LINE SOURCE + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 ;#include "sh_iec60730b_8051f_cfg.h" + 20 +*** ERROR #A318 IN 21 (code_classb\iec60730_lib\sh_iec60730b_8051f_ram.S, LINE 19): can't open file 'sh_iec60730b_8051f_ + cfg.h' + 21 + 22 +*** WARNING #A322 IN 23 (code_classb\iec60730_lib\sh_iec60730b_8051f_ram.S, LINE 22): 'SH_CHK_XDATA_EN': unknown identifier + 23 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 632 + 633 END + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_RAM 10/11/2023 14:22:18 PAGE 11 + +SYMBOL TABLE LISTING +------ ----- ------- + + +N A M E T Y P E V A L U E ATTRIBUTES + + + +REGISTER BANK(S) USED: 0 + + +ASSEMBLY COMPLETE. 0 WARNING(S), 2 ERROR(S) diff --git a/output/sh_iec60730b_8051f_reg._ia b/output/sh_iec60730b_8051f_reg._ia new file mode 100644 index 0000000..c64741e --- /dev/null +++ b/output/sh_iec60730b_8051f_reg._ia @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_reg.S" NOMOD51 SET (LARGE) DEBUG PRINT(.\output\sh_iec60730b_8051f_reg.lst) OBJECT(.\output\sh_iec60730b_8051f_reg.obj) EP \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_reg.lst b/output/sh_iec60730b_8051f_reg.lst new file mode 100644 index 0000000..7114cfc --- /dev/null +++ b/output/sh_iec60730b_8051f_reg.lst @@ -0,0 +1,201 @@ +A51 MACRO ASSEMBLER SH_IEC60730B_8051F_REG 10/11/2023 14:22:18 PAGE 1 + + +MACRO ASSEMBLER A51 V8.02 +NO OBJECT MODULE REQUESTED +ASSEMBLER INVOKED BY: C:\Keil_v5\C51\BIN\A51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_reg.S NOMOD51 SET(LARGE) DE + BUG PRINT(.\output\sh_iec60730b_8051f_reg.lst) OBJECT(.\output\sh_iec60730b_8051f_reg.obj) EP + +LOC OBJ LINE SOURCE + + 1 ;/* + 2 ; * IEC60730 Class B Library for SINOWEALTH 8051 based ICs. + 3 ; * File: sh_iec60730b_8051f_reg.S + 4 ; * Version: 1.0 + 5 ; * Author: Robin.zhang Chaoming.luo + 6 ; * Date: 04/21/2023 + 7 ; * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S + 8 ; * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS. + 9 ; * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH + 10 ; * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES + 11 ; * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR + 12 ; * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN + 13 ; * CONNECTION WITH THEIR PRODUCTS. + 14 ; * + 15 ;*/ + 16 + 17 ;$include (sh_iec60730b_8051f_cfg.h) + 18 +*** ERROR #A318 IN 19 (code_classb\iec60730_lib\sh_iec60730b_8051f_reg.S, LINE 17): can't open file 'sh_iec60730b_8051f_ + cfg.h' + 19 + 20 +*** WARNING #A322 IN 21 (code_classb\iec60730_lib\sh_iec60730b_8051f_reg.S, LINE 20): 'SH_CHK_CPU_EN': unknown identifier + 21 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_REG 10/11/2023 14:22:18 PAGE 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_REG 10/11/2023 14:22:18 PAGE 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 169 END + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_REG 10/11/2023 14:22:18 PAGE 4 + +SYMBOL TABLE LISTING +------ ----- ------- + + +N A M E T Y P E V A L U E ATTRIBUTES + + + +REGISTER BANK(S) USED: 0 + + +ASSEMBLY COMPLETE. 0 WARNING(S), 2 ERROR(S) diff --git a/output/sh_iec60730b_8051f_stack._ia b/output/sh_iec60730b_8051f_stack._ia new file mode 100644 index 0000000..c99e95c --- /dev/null +++ b/output/sh_iec60730b_8051f_stack._ia @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_stack.S" NOMOD51 SET (LARGE) DEBUG PRINT(.\output\sh_iec60730b_8051f_stack.lst) OBJECT(.\output\sh_iec60730b_8051f_stack.obj) EP \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_stack.lst b/output/sh_iec60730b_8051f_stack.lst new file mode 100644 index 0000000..c886fdb --- /dev/null +++ b/output/sh_iec60730b_8051f_stack.lst @@ -0,0 +1,113 @@ +A51 MACRO ASSEMBLER SH_IEC60730B_8051F_STACK 10/11/2023 14:22:18 PAGE 1 + + +MACRO ASSEMBLER A51 V8.02 +NO OBJECT MODULE REQUESTED +ASSEMBLER INVOKED BY: C:\Keil_v5\C51\BIN\A51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_stack.S NOMOD51 SET(LARGE) + DEBUG PRINT(.\output\sh_iec60730b_8051f_stack.lst) OBJECT(.\output\sh_iec60730b_8051f_stack.obj) EP + +LOC OBJ LINE SOURCE + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 ;#include "sh_iec60730b_8051f_cfg.h" + 20 +*** ERROR #A318 IN 21 (code_classb\iec60730_lib\sh_iec60730b_8051f_stack.S, LINE 19): can't open file 'sh_iec60730b_8051 + f_cfg.h' + 21 + 22 + 23 +*** WARNING #A322 IN 24 (code_classb\iec60730_lib\sh_iec60730b_8051f_stack.S, LINE 23): 'SH_CHK_STACK_EN': unknown identifier + 24 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_STACK 10/11/2023 14:22:18 PAGE 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 82 + 83 END + + A51 MACRO ASSEMBLER SH_IEC60730B_8051F_STACK 10/11/2023 14:22:18 PAGE 3 + +SYMBOL TABLE LISTING +------ ----- ------- + + +N A M E T Y P E V A L U E ATTRIBUTES + + + +REGISTER BANK(S) USED: 0 + + +ASSEMBLY COMPLETE. 0 WARNING(S), 2 ERROR(S) diff --git a/output/sh_iec60730b_8051f_testproc.__i b/output/sh_iec60730b_8051f_testproc.__i new file mode 100644 index 0000000..3f52754 --- /dev/null +++ b/output/sh_iec60730b_8051f_testproc.__i @@ -0,0 +1 @@ +"code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_testproc.lst) OBJECT(.\output\sh_iec60730b_8051f_testproc.obj) \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_testproc.lst b/output/sh_iec60730b_8051f_testproc.lst new file mode 100644 index 0000000..c7185ae --- /dev/null +++ b/output/sh_iec60730b_8051f_testproc.lst @@ -0,0 +1,381 @@ +C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_TESTPROC +OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_testproc.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c LARGE OPTIMIZE(7 + -,SIZE) REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEB + -UG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_testproc.lst) OBJECT(.\output\sh_iec60730b_8051f_testproc.obj) + +line level source + + 1 /* + 2 * IEC60730 Class B TEST PROCESS for SINOWEALTH 8051 based ICs. + 3 * File: sh_iec60730b_8051f_testproc.h + 4 * Version: 1.0 + 5 * Author: Robin.zhang Chaoming.luo + 6 * Date: 04/21/2023 + 7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S + 8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS. + 9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH + 10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES + 11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR + 12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN + 13 * CONNECTION WITH THEIR PRODUCTS. + 14 * + 15 */ + 16 #include "sh_iec60730b_8051f_testproc.h" +*** WARNING C318 IN LINE 16 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: can't open file 'sh_iec60730b_80 + -51f_testproc.h' + 17 //#include "MAIN.H" + 18 + 19 + 20 extern SHT_U32 __iec60730b_stack_top; +*** ERROR C129 IN LINE 20 OF CODE_CLASSB\IEC60730_PROC\SH_IEC60730B_8051F_TESTPROC.C: missing ';' before '__iec60730b_st + -ack_top' + 21 extern SHT_U32 __iec60730b_stack_bottom; + 22 + 23 SHT_U8 __iec60730b_bist_step; + 24 static SHT_U32 __iec60730b_crc_addr; + 25 + 26 + 27 SHT_RESULT sh_iec60730b_8051f_test_post(void) + 28 { + 29 SHT_RESULT checkResult = SH_CHK_PASS; + 30 /******************************************************/ + 31 /*Initial global variables*/ + 32 __iec60730b_bist_step = 0; + 33 __iec60730b_crc_addr = 0; + 34 + 35 /******************************************************/ + 36 /* check watch dog */ + 37 #if SH_CHK_WDG_EN == 1 +*** WARNING C322 IN LINE 37 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + checkResult = sh_8051f_wdg_test(); + if(checkResult != SH_CHK_PASS) + return checkResult; + #endif + 42 /*******************************************************/ + 43 /* Disable Interrupt */ + 44 EA = 0; + 45 + 46 /******** CHECK CPU REGISTERS *********/ + 47 #if SH_CHK_CPU_EN == 1 +*** WARNING C322 IN LINE 47 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 2 + + checkResult = sh_8051f_cpu_register1(); + if(checkResult != SH_CHK_PASS) + return checkResult; + + checkResult = sh_8051f_cpu_register2(); + if(checkResult != SH_CHK_PASS) + return checkResult; + #endif + 56 + 57 /******** CHECK PROGRAM COUNTER *********/ + 58 #if SH_CHK_PC_EN == 1 +*** WARNING C322 IN LINE 58 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + checkResult = sh_8051f_pc_test(); + if(checkResult != SH_CHK_PASS) + return checkResult; + #endif + 63 + 64 /******** CHECK RAM ADDRESSING LINE *********/ + 65 #if SH_CHK_ADDRLINE_TEST_EN == 1 +*** WARNING C322 IN LINE 65 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + __iec60730b_addrline_address = 0; + checkResult = sh_8051f_addrline_data1(); + if(checkResult != SH_CHK_PASS) + return checkResult; + + checkResult = sh_8051f_addrline_data2(); + if(checkResult != SH_CHK_PASS) + return checkResult; + + checkResult = sh_8051f_addrline_xdata_test(); + if(checkResult != SH_CHK_PASS) + return checkResult; + #endif + 79 + 80 /******** CHECK RAM *********/ + 81 #if SH_CHK_XDATA_EN == 1 +*** WARNING C322 IN LINE 81 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + __iec60730b_ram_data_address = 0; + __iec60730b_ram_xdata_address = 0; + checkResult = sh_8051f_ram_data_test(); + if(checkResult != SH_CHK_PASS) + return checkResult; + + checkResult = sh_8051f_ram_xdata_test(); + if(checkResult != SH_CHK_PASS) + return checkResult; + #endif + 92 CLR_WDT(); + 93 + 94 /* Enable Interrupt */ + 95 EA = 1; + 96 + 97 /******** CHECK BOOT *********/ + 98 #if SH_CHK_BOOT_EN == 1 +*** WARNING C322 IN LINE 98 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + __iec60730b_boot_checksum = CWORD[(SH_CHK_BOOT_END_ADDR-2)/2]; + if(sh_8051f_crc_code(SH_CHK_BOOT_START_ADDR,SH_CHK_BOOT_END_ADDR,MCU_CRC_FLASH) != __iec60730b_boot_ch + -ecksum) + checkResult = SH_CHK_FAIL_BOOT; + if(checkResult != SH_CHK_PASS) + return checkResult; + + C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 3 + + CLR_WDT(); + #endif + 107 + 108 /******** CHECK FLASH *********/ + 109 #if SH_CHK_FLASH_EN == 1 +*** WARNING C322 IN LINE 109 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + __iec60730b_flash_addr = SH_CHK_FLASH_START_ADDR; + if(sh_8051f_crc_code(SH_CHK_FLASH_START_ADDR,SH_CHK_FLASH_END_ADDR,MCU_CRC_FLASH) != __iec60730b_flash + -_checksum) + checkResult = SH_CHK_FAIL_FLASH; + if(checkResult != SH_CHK_PASS) + return checkResult; + + CLR_WDT(); + #endif + 118 + 119 /******** CHECK EEPROM *********/ + 120 #if SH_CHK_EE_EN == 1 +*** WARNING C322 IN LINE 120 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + __iec60730b_ee1_addr = SH_CHK_EE1_START_ADDR; + __iec60730b_ee2_addr = SH_CHK_EE2_START_ADDR; + + sh_8051f_ee_readchecksum((SH_CHK_EE1_END_ADDR-2), (SHT_RESULT xdata *)&__iec60730b_ee1_checksum, 2); + if(sh_8051f_crc_code(SH_CHK_EE1_START_ADDR,SH_CHK_EE1_END_ADDR,MCU_CRC_EE) != __iec60730b_ee1_checksum + -) + checkResult = SH_CHK_FAIL_EE; + if(checkResult != SH_CHK_PASS) + return checkResult; + + CLR_WDT(); + + /******** CHECK EEPROM *********/ + sh_8051f_ee_readchecksum((SH_CHK_EE2_END_ADDR-2), (SHT_RESULT xdata *)&__iec60730b_ee2_checksum, 2); + if(sh_8051f_crc_code(SH_CHK_EE2_START_ADDR,SH_CHK_EE2_END_ADDR,MCU_CRC_EE) != __iec60730b_ee2_checksum + -) + checkResult = SH_CHK_FAIL_EE; + if(checkResult != SH_CHK_PASS) + return checkResult; + + CLR_WDT(); + #endif + 141 + 142 /******** STACK CHECK *********/ + 143 #if SH_CHK_STACK_EN == 1 +*** WARNING C322 IN LINE 143 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + sh_8051f_stack_init(); + checkResult = sh_8051f_stack_test(); + if(checkResult != SH_CHK_PASS) + return checkResult; + #endif + 149 + 150 /********* CLOCK CHECK ********/ + 151 #if SH_CHK_CLOCK_EN == 1 +*** WARNING C322 IN LINE 151 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + { + SHT_U16 timeout = 0x8000; + sh_8051f_clk_init(); + __iec60730b_clk_limit_high = 0Xff00; + __iec60730b_clk_limit_low = 1; + SH_CHK_CLOCK_TIMER_START(); + while(timeout) + { + C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 4 + + EA = 0; + checkResult = sh_8051f_clk_check(); + EA = 1; + if(checkResult != SH_CHK_FAIL_CLK_PROGRESS) + break; + timeout--; + CLR_WDT(); + } + //CALCULATE CLOCK TOLERANCE RANGE + if(checkResult == SH_CHK_PASS) + { + SHT_U16 tmp = (__iec60730b_clk_context * SH_CHK_CLK_TOLERANCE) / 100; + __iec60730b_clk_limit_low = __iec60730b_clk_context - tmp; + __iec60730b_clk_limit_high = __iec60730b_clk_context + tmp; + } + } + if(checkResult != SH_CHK_PASS) + return checkResult; + #endif + 179 CLR_WDT(); + 180 + 181 /********** AIO CHECK ****************/ + 182 #if SH_CHK_AIO_TEST_EN == 1 +*** WARNING C322 IN LINE 182 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + __iec60730b_aio_state = SH_CHK_PASS; + checkResult = sh_8051f_aio_test(); + if(checkResult != SH_CHK_PASS) + return checkResult; + #endif + 188 + 189 /********** DIO CHECK ****************/ + 190 #if SH_CHK_DIO_TEST_EN == 1 +*** WARNING C322 IN LINE 190 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + checkResult = sh_8051f_dio_test(); + if(checkResult != SH_CHK_PASS) + return checkResult; + #endif + 195 + 196 return checkResult; + 197 } + 198 + 199 SHT_RESULT sh_iec60730b_8051f_test_bist(void) + 200 { + 201 SHT_RESULT checkResult = SH_CHK_PASS; + 202 + 203 if((__iec60730b_bist_step >> 4) == 0) + 204 {/************** 0: CHECK CPU REGISTERS **************/ + 205 #if SH_CHK_CPU_EN == 1 +*** WARNING C322 IN LINE 205 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + EA = 0; + switch(__iec60730b_bist_step&0x0F) + { + case 0: + checkResult = sh_8051f_cpu_register1(); + break; + case 1: + checkResult = sh_8051f_cpu_register2(); + break; + } + EA = 1; + __iec60730b_bist_step++; + if((__iec60730b_bist_step&0xF) >= 2) + C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 5 + + { + __iec60730b_bist_step = 0x10; + } + #else + 223 __iec60730b_bist_step = 0x10; + 224 #endif + 225 } + 226 else if((__iec60730b_bist_step >> 4) == 1) + 227 {/************** 1: CHECK PROGRAM COUNTER **************/ + 228 #if SH_CHK_PC_EN == 1 +*** WARNING C322 IN LINE 228 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + EA = 0; + checkResult = sh_8051f_pc_test(); + EA = 1; + #endif + 233 __iec60730b_bist_step = 0x20; + 234 } + 235 else if((__iec60730b_bist_step >> 4) == 2) + 236 {/************** 2: CHECK RAM ADDRESSING LINE **************/ + 237 #if SH_CHK_ADDRLINE_TEST_EN == 1 +*** WARNING C322 IN LINE 237 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + EA = 0; + if((__iec60730b_bist_step&0x0F) == 0) + { + checkResult = sh_8051f_addrline_data1(); + __iec60730b_bist_step++; + } + else if((__iec60730b_bist_step&0x0F) == 1) + { + checkResult = sh_8051f_addrline_data2(); + __iec60730b_bist_step++; + } + else if((__iec60730b_bist_step&0x0F) == 2) + { + checkResult = sh_8051f_addrline_xdata_runtime(); + __iec60730b_bist_step++; + } + else + __iec60730b_bist_step = 0x30; + EA = 1; + #else + 258 __iec60730b_bist_step = 0x30; + 259 #endif + 260 } + 261 else if((__iec60730b_bist_step >> 4) == 3) + 262 {/************** 3: CHECK RAM **************/ + 263 #if SH_CHK_XDATA_EN == 1 +*** WARNING C322 IN LINE 263 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + EA = 0; + if((__iec60730b_bist_step&0x0F) == 0) + { + checkResult = sh_8051f_ram_data_runtime(); + __iec60730b_bist_step++; + } + else if((__iec60730b_bist_step&0x0F) == 1) + { + checkResult = sh_8051f_ram_xdata_runtime(); + __iec60730b_bist_step++; + } + else + __iec60730b_bist_step = 0x40; + EA = 1; + C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 6 + + #else + 279 __iec60730b_bist_step = 0x40; + 280 #endif + 281 } + 282 + 283 else if((__iec60730b_bist_step >> 4) == 4) + 284 {/************** 4: CHECK CODE ROM **************/ + 285 #if SH_CHK_FLASH_EN == 1 +*** WARNING C322 IN LINE 285 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + checkResult = sh_8051f_flash_runtime(); + #endif + 288 __iec60730b_bist_step = 0x50; + 289 } + 290 else if((__iec60730b_bist_step >> 4) == 5) + 291 {/************** 5: CHECK STACK **************/ + 292 #if SH_CHK_STACK_EN == 1 +*** WARNING C322 IN LINE 292 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + checkResult = sh_8051f_stack_test(); + #endif + 295 __iec60730b_bist_step = 0x60; + 296 } + 297 else if((__iec60730b_bist_step >> 4) == 6) + 298 {/************** 6: CHECK CLOCK **************/ + 299 #if SH_CHK_CLOCK_EN == 1 +*** WARNING C322 IN LINE 299 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + EA = 0; + checkResult = sh_8051f_clk_check(); + EA = 1; + #endif + 304 __iec60730b_bist_step = 0x70; + 305 } + 306 else if((__iec60730b_bist_step >> 4) == 7) + 307 {/************** 7: CHECK AIO **************/ + 308 #if SH_CHK_AIO_TEST_EN == 1 +*** WARNING C322 IN LINE 308 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + checkResult = sh_8051f_aio_test_runtime(); + #endif + 311 __iec60730b_bist_step = 0x80; + 312 } + 313 else if((__iec60730b_bist_step >> 4) == 8) + 314 {/************** 8: CHECK EEPROM1 **************/ + 315 #if SH_CHK_EE_EN == 1 +*** WARNING C322 IN LINE 315 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + checkResult = sh_8051f_ee1_runtime(); + #endif + 318 __iec60730b_bist_step = 0x90; + 319 } + 320 else if((__iec60730b_bist_step >> 4) == 9) + 321 {/************** 8: CHECK EEPROM2 **************/ + 322 #if SH_CHK_EE_EN == 1 +*** WARNING C322 IN LINE 322 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier + checkResult = sh_8051f_ee2_runtime(); + #endif + 325 __iec60730b_bist_step = 0x00; + 326 } + 327 return checkResult; + 328 } + +C51 COMPILATION COMPLETE. 23 WARNING(S), 1 ERROR(S) diff --git a/output/sh_iec60730b_8051f_wdg.__i b/output/sh_iec60730b_8051f_wdg.__i new file mode 100644 index 0000000..7fb27a9 --- /dev/null +++ b/output/sh_iec60730b_8051f_wdg.__i @@ -0,0 +1 @@ +"code_classb\iec60730_lib\sh_iec60730b_8051f_wdg.c" LARGE OPTIMIZE (7,SIZE) REGFILE (.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0x1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_wdg.lst) OBJECT(.\output\sh_iec60730b_8051f_wdg.obj) \ No newline at end of file diff --git a/output/sh_iec60730b_8051f_wdg.lst b/output/sh_iec60730b_8051f_wdg.lst new file mode 100644 index 0000000..d3de610 --- /dev/null +++ b/output/sh_iec60730b_8051f_wdg.lst @@ -0,0 +1,138 @@ +C51 COMPILER V9.01 SH_IEC60730B_8051F_WDG 10/11/2023 14:22:17 PAGE 1 + + +C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_WDG +OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_wdg.obj +COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_wdg.c LARGE OPTIMIZE(7,SIZE) + - REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJ + -ECTEXTEND PRINT(.\output\sh_iec60730b_8051f_wdg.lst) OBJECT(.\output\sh_iec60730b_8051f_wdg.obj) + +line level source + + 1 /* + 2 * IEC60730 Class B Library for SINOWEALTH 8051 based ICs. + 3 * File: sh_iec60730b_8051f_wdg.c + 4 * Version: 1.0 + 5 * Author: Robin.zhang Chaoming.luo + 6 * Date: 04/21/2023 + 7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S + 8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS. + 9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH + 10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES + 11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR + 12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN + 13 * CONNECTION WITH THEIR PRODUCTS. + 14 * + 15 */ + 16 + 17 #include "sh_iec60730b_8051f_cfg.h" +*** WARNING C318 IN LINE 17 OF code_classb\iec60730_lib\sh_iec60730b_8051f_wdg.c: can't open file 'sh_iec60730b_8051f_cf + -g.h' + 18 + 19 #if SH_CHK_WDG_EN == 1 +*** WARNING C322 IN LINE 19 OF code_classb\iec60730_lib\sh_iec60730b_8051f_wdg.c: unknown identifier + xdata SHT_IEC60730B_WDG_TEST __iec60730b_wdg_test_obj _at_ (SH_CHK_XDATA_SIZE-sizeof(SHT_IEC60730B_WDG_TES + -T)); + + /****************************************************************************** + * Functions + ******************************************************************************/ + /******************************************************************************* + * + * @brief This function should be called only once after POR reset. + * Each calling of this function causes a wd reset. + * Function clears the WD resets counter to 0. + * No WD settings are changed here. It starts the LPTMR which must + * be configured before the function call occurs. + * Within the waiting endless loop, value from LPTMR is periodically + * stored to reserved area in RAM. + * + * @param void + * + * @return SH_CHK_PASS ;watchdog timeout has measured + * SH_CHK_FAIL_WDG ;watchdog timeout need remeasured + * + ******************************************************************************/ + SHT_RESULT sh_8051f_wdg_setup() + { + if((__iec60730b_wdg_test_obj.resetSource & SH_IEC60730B_RESET_SRC_POR) + ||(__iec60730b_wdg_test_obj.resetSource & SH_IEC60730B_RESET_SRC_LVR) + // ||(__iec60730b_wdg_test_obj.resetSource == 0) //FOR DEBUG + ) + { + __iec60730b_wdg_test_obj.counter = 0; + __iec60730b_wdg_test_obj.resets = 0; + C51 COMPILER V9.01 SH_IEC60730B_8051F_WDG 10/11/2023 14:22:17 PAGE 2 + + return SH_CHK_FAIL_WDG; + } + return SH_CHK_PASS; + } + + /******************************************************************************* + * + * @brief Function should be called after every WD reset, its calling should + * be handled by conditional execution in application. + * + * If the source of reset is WD, function increments the wd_reset counter. + * If the reset counter has overflowed, function will wait in endless + * loop if it is enabled. + * + * If the source of reset is WD, function check the timeout + * value. If it is not in range, function will wait in the endless + * loop if enabled. + * + * If the source of reset isn't WD or POR, function will sets the + * wdTestUncompleteFlag and will wait in endless loop if enabled. + * + * @param void + * + * @return SH_CHK_PASS - successfull execution of test + * SH_CHK_FAIL_WDG - reset counter doesn't fit into limit + * + ******************************************************************************/ + SHT_RESULT sh_8051f_wdg_check() + { + SHT_RESULT checkResult = SH_CHK_PASS; + if(__iec60730b_wdg_test_obj.resetSource & SH_IEC60730B_RESET_SRC_IWDG) + { + __iec60730b_wdg_test_obj.resets++; + + if(__iec60730b_wdg_test_obj.resets > SH_CHK_WDG_RESET_LIMIT) + { + checkResult = SH_CHK_FAIL_WDG; + } + else if(__iec60730b_wdg_test_obj.counter < SH_CHK_WDG_LIMIT_LOW + || __iec60730b_wdg_test_obj.counter > SH_CHK_WDG_LIMIT_HIGH) + { + checkResult = SH_CHK_FAIL_WDG; + } + } + else + { + if(__iec60730b_wdg_test_obj.counter < SH_CHK_WDG_LIMIT_LOW + | __iec60730b_wdg_test_obj.counter > SH_CHK_WDG_LIMIT_HIGH ) + { + checkResult = SH_CHK_FAIL_WDG; + } + } + + return checkResult; + } + #endif + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + C51 COMPILER V9.01 SH_IEC60730B_8051F_WDG 10/11/2023 14:22:17 PAGE 3 + + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S) diff --git a/output/sh_iec60730b_8051f_wdg.obj b/output/sh_iec60730b_8051f_wdg.obj new file mode 100644 index 0000000..39ffdfc Binary files /dev/null and b/output/sh_iec60730b_8051f_wdg.obj differ diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..8ef675c --- /dev/null +++ b/readme.txt @@ -0,0 +1,35 @@ +V2.11-V2.12(2022.12.12) +1.触发短路保护后无法恢复,已修复恢复逻辑 +2.当温度超过电流温度补偿范围时,由于补偿变量未赋初值,会导致电流采样异常,已修复 +3.程序未对硬件过压保护做恢复处理,已增加恢复逻辑 +4.uart的兼容性处理(bank翻转处理) + +V2.12-V2.13(2023.3.9) +1.在boot和主程序中增加异常防护程序,防止程序因异常进入ISP或者寄存器被篡改导致死机 +2.TWI协议与前端协议说明保持一致 + +V2.13-V2.14(2023.3.21) +1.uart多串口的应用层兼容性处理(只更改宏定义即可切换uart串口并直接使用) +2.针对应用过程中出现的MCU中断程序执行异常导致后续无法响应外部中断的问题,增加了异常处理程序(主循环中check中断标志及定时清狗) +3.增加充电状态下PWM强制100%占空比措施,暂不允许PWM充电(2023.4.24) +4.dataflash架构由数组变更为可视化配置界面(2023.6.29) +5.增加ISP更新过程中异常中断自动关机处理(2023.7.3) //由于需要变更flash空间布局,暂时未添加此功能 +6.uart串口配置同步增加可视化界面(2023.7.6) +7.增加进PD前存EEPROM的操作(2023.7.21) +8.电量计程序更新到V4.13版本(2023.7.22) +9.为与上位机通讯协议保持一致,充放电截止相关参数由容量计参数区分别移置充放电参数区(2023.09.14) +10.写MCUflash判断失败标志逻辑错误,已更正(2023.09.14) +11.多串口功能配置(2023.09.27-DEMO程序默认只使能Uart0) + +V2.14-V2.15(2023.11.8) +1.TWI通讯频率计算公式的调整并用宏的方式实现,在代码编译阶段增加TWI通讯频率超范围报警措施(2023.12.11) +2.内部温度计算公式部分去除浮点运算,提高代码执行效率(2023.11.08) +3.增加放电截止标志位变量,删除满充容量变量(2023.11.13) +4.增加IO口模拟IIC模块(2023.11.29) +5.优化dataflash参数架构来对齐上位机读取界面的参数布局,同时将满充截止bFC、满放截止bFD、以及容量学习标志bVDQ置位显示出来(2023.11.29) +6.充电时将所有的PWM放电速率标志位置0(2023.12.01) +7.清ram的动作从主程序移到A51文件中(2023.12.08) +8.外部温度计算部分将固定长度更换为宏定义(2023.12.13) +9.初始化AFE寄存器函数内增加读校验,若连续失败3次则关机(2023.12.13) +10.TWI通讯频率异常导致ISP更新失败,调整分频系数后测试验证OK(2023.12.22) +11.清除dataflash中多余的参数,替代位预留变量(2023.12.22) \ No newline at end of file diff --git a/sino_ui.cfg b/sino_ui.cfg new file mode 100644 index 0000000..2fc66b2 Binary files /dev/null and b/sino_ui.cfg differ