SY8833双向通讯源码,包括岍丞、小明、杰理等。
This commit is contained in:
commit
1cd975eb67
0
Out/SY8833A_EVB_mcu_V100_2024_06_14_110912.bin
Normal file
0
Out/SY8833A_EVB_mcu_V100_2024_06_14_110912.bin
Normal file
285
Out/SY8833A_EVB_mcu_V100_2024_06_14_110912.hex
Normal file
285
Out/SY8833A_EVB_mcu_V100_2024_06_14_110912.hex
Normal file
@ -0,0 +1,285 @@
|
||||
:030000000208985B
|
||||
:10089800758E3075D20078FFE4F6D8FD75819D021B
|
||||
:0208A80008E561
|
||||
:0F0EBB001209B7D2AED2BE120C31120AAE80F4B9
|
||||
:0405EF00029900006D
|
||||
:020D6800AD07D5
|
||||
:100D6A00E4FCFBFAF527F52875FE2975FF8BEDC41F
|
||||
:100D7A0054F04401F5A5E5A520E0FBAFA1AB07AF10
|
||||
:100D8A00A2EFFEEEFAEB2528F528EA3527F5270C1F
|
||||
:100D9A00BC08DBE528AE277803CEC313CE13D8F9F7
|
||||
:010DAA00FF49
|
||||
:010DAB002225
|
||||
:100DAC00E4F524F5257F05120D688E248F257F062A
|
||||
:100DBC00120D68E4FCFDC004A905AA06AB07AE241D
|
||||
:100DCC00AF257C077DD0120271D0001201A98E24B0
|
||||
:020DDC008F2561
|
||||
:010DDE0022F2
|
||||
:100DDF00E4F525F5267F04120D688E258F267F06F4
|
||||
:100DEF00120D68E4FCFDC004A905AA06AB07AE25E9
|
||||
:100DFF00AF267C037DE8120271D0001201A98E2567
|
||||
:020E0F008F262C
|
||||
:010E110022BE
|
||||
:0605F300C114C116C11580
|
||||
:10078900E4FFFE752401120DDFC3EF9474EE940E9D
|
||||
:1007990040037F0122E5E630E757D3EF9436EE9424
|
||||
:1007A900055030EF9422EE94024028301612EF944F
|
||||
:1007B90014EE94055007C2167524018003E4F5244C
|
||||
:1007C90030152ED3EF9444EE94024022C2157524BD
|
||||
:1007D90001801ED3EF9436EE94054004D216800BA7
|
||||
:1007E900C3EF9422EE94025002D21553B3FEE4F5FE
|
||||
:0307F90024AF2406
|
||||
:0107FC0022DA
|
||||
:100BDC00E5E620E70953B3FE75F210C21422E5F2E4
|
||||
:100BEC00540C601053B3FEE5F354C0603775F20C2F
|
||||
:100BFC0075F3C022E5F354C0600375F3C012078986
|
||||
:100C0C00EF6021E5F230E417C3789AE694EB18E62E
|
||||
:100C1C00940F500575F210800353B3FED214224387
|
||||
:050C2C00B301C2142217
|
||||
:0405F900C117C1184D
|
||||
:100D2200E5E530E103C21722E5E230E705C217D25A
|
||||
:100D32001822E5E830E00EC217300B29C20B75E825
|
||||
:100D42000175B50122D21730181BE5E630E716C34C
|
||||
:100D5200789AE6941018E6940E4005D217C218222B
|
||||
:060D6200E4F5B5C2172202
|
||||
:0705FD00011DFFC119C11A25
|
||||
:100E3E00E5E230E425E5E25408FF651D601CE5E2BD
|
||||
:100E4E0030E305751C018005E4F51CC21ED219D2D3
|
||||
:0A0E5E001AE4F51FF540F5418F1D61
|
||||
:010E68002267
|
||||
:0B060400C113C111C110C112019D0003
|
||||
:100E6900301208C211C212789D7602301006C210E3
|
||||
:0E0E7900789D7603301306C213789D76012211
|
||||
:03060F000198004F
|
||||
:10000E007893A607EDC31308F608A60508A603E421
|
||||
:03001E0008F622BF
|
||||
:100CD5007893E6603D24FE6007047036D283803445
|
||||
:100CE5007897E6FFC37894965004D2838002C28336
|
||||
:100CF500EFC3789596401DE47897F618E6FFF46003
|
||||
:100D050013EFD394004001167896E670077893F6B2
|
||||
:0D0D15008002C2837893E67898F6180622D3
|
||||
:05061200011E00C11DE6
|
||||
:100E9A00E5E620E706200903301D04C21DC322D35C
|
||||
:010EAA002225
|
||||
:1009B700E4F5D275FE8943FF8075FE0153FFFCF510
|
||||
:1009C700FE75FF0375FE0E75FF05D2DF4387807541
|
||||
:1009D700BA0375AAFD7598D0D299D298D2AC75B7DB
|
||||
:1009E700C3758901758CFC758A17D2A9D28C75FEDF
|
||||
:1009F7000675FF0C75FE0375FF0CC283F58675FE41
|
||||
:100A07000F43FF8075FE4F75FF1075FE1775FF3C8E
|
||||
:100A170075FE1E75FF0CD2A8D2B9D2BBD2AF75F244
|
||||
:100A27001C75F3C075E80C75FE8753FFDF43B310E1
|
||||
:0A0A370075FE7043FF04751E0A22CD
|
||||
:03000300020006F2
|
||||
:0100060032C7
|
||||
:03004B00020ED5CD
|
||||
:060ED50075EB3CD21D325A
|
||||
:03005B00020EDBB7
|
||||
:060EDB0075F30CD21D327C
|
||||
:0F0617000B880000000000000000000000C11C64
|
||||
:100E870074882553F8A6990553E5532275520075C2
|
||||
:030E9700530022E3
|
||||
:0A0E12008E358F368B378A38893908
|
||||
:100E1C00E4FFEFC39536E495355016201BFD78376B
|
||||
:100E2C00E475F00112023B120154D21BF5990F80AC
|
||||
:010E3C00E1D4
|
||||
:010E3D002292
|
||||
:0300230002092AA5
|
||||
:0F092A00C0E0C0D075D000C000C005C006C00737
|
||||
:10093900309904C299C21B309867C298E551146076
|
||||
:100949001F04705DE599B4AA0F755101120E931237
|
||||
:100959000E87700205528049755100120E9380412D
|
||||
:10096900120E8770020552640745527015788EE69B
|
||||
:10097900FEE42409FFE43EFE18E6FDEEF554EF4DD2
|
||||
:10098900F555E55565537004E5546552600BD3E59B
|
||||
:1009990053940BE55294004008120E93755100D2FE
|
||||
:0109A9001C31
|
||||
:0D09AA00D007D006D005D000D0D0D0E0326C
|
||||
:05062600011F00C11ED0
|
||||
:1006E000E5E630E729301402807A301A10E51CB4B0
|
||||
:1006F000010B201E08D21EE4FBFDFF801D7898E64A
|
||||
:1007000064027002E1887BFF7D647F028077301F86
|
||||
:100710000F301A747B047D647F0212000EC21A220D
|
||||
:10072000E51C6401704BE56B7004E56C6043E56BA0
|
||||
:1007300064016005E56CB401167898E6640260090E
|
||||
:100740007BFF7D327F0212000EE4F51FD21D22E5F1
|
||||
:100750006B64027033E56C6402702DE51FC394284E
|
||||
:100760005009051FE4FBFD7F01801AE4FBFDFF80BB
|
||||
:1007700014E51FC394285009051FE4FBFD7F018089
|
||||
:0907800004E4FBFDFF12000E224F
|
||||
:100AAE00300C08C20C120E3E120D22300F05C20F72
|
||||
:100ABE00120CD5300A1BC20A120BDC120DAC78993F
|
||||
:100ACE00A60608A60712029E1206E0120B18120CBA
|
||||
:100ADE0086300D35C20DE51ED394004009151E302B
|
||||
:100AEE001D27C21D8020120E9A501BC2ACC2BBC263
|
||||
:100AFE00B9C2A975FE2953FF7F438702D2ACD2BB80
|
||||
:0A0B0E00D2B9D2A98000751E0A2298
|
||||
:0B004E000000000000000000000000A7
|
||||
:10062B00C109C105C108C102C104C100C106014213
|
||||
:10063B000002450000014400014300C101024700D4
|
||||
:10064B0000027000000672000000000000087A0033
|
||||
:10065B0000000000000000028400000256000002AF
|
||||
:10066B00780000028600000282000002580000168B
|
||||
:10067B005A00000000000000000000000000000015
|
||||
:10068B0000000000000000013F00C1030240000019
|
||||
:02069B00C10795
|
||||
:10002600FF547FF6EFC4131313540122C208D20102
|
||||
:10003600E4F544D20522FF5401F6EFC3135401221E
|
||||
:100EAB00D282EF700753B7CF43B7302253B7CF225D
|
||||
:10029E00E5E8540C60110542E542C394024008E4BF
|
||||
:1002AE00F54275E80C8109301960301758200606A2
|
||||
:1002BE0075B501D20622E4F56BF56CC205C200F5E8
|
||||
:1002CE0045F546E51C7011D202C204C219D209C20C
|
||||
:1002DE0006C28243B7308032C202C208C3E54194DF
|
||||
:1002EE0002E5409400500FE4FF120EAB0541E541CC
|
||||
:1002FE00701805408014E4F5B5D204C219C206F593
|
||||
:10030E0040F54180057F01120EAB30042AC3E54152
|
||||
:10031E009458E5409402501AE54120E0047D248073
|
||||
:10032E00027D257F0D12048F0541E54170090540C0
|
||||
:10033E008005E4FF120EAB2002052000028184C36B
|
||||
:10034E00E5419432E54094005031E54120E00F3014
|
||||
:10035E0000047D24800DE51C70187D24800F300074
|
||||
:10036E00067D257F058008E51C70077D257F0D1213
|
||||
:10037E00048F0541E541700205402230000DC20098
|
||||
:10038E00C202C209E4F5B57F0181192002028184FF
|
||||
:10039E00E5E354AC64AC6003301F12C3E5469458D9
|
||||
:1003AE00E54594024007D200E4F540F54120072EC2
|
||||
:1003BE00C3E5419464E5409400501AE54120E00401
|
||||
:1003CE007D2480027D257F0E12048F0541E541704C
|
||||
:1003DE000D05408009D207D208E4F540F5413008FA
|
||||
:1003EE0050E544C3940150097D2412048508F6801B
|
||||
:1003FE0030E543D394054006120032FF800D789409
|
||||
:10040E00E6601208E66007120032FF020EAB7D2591
|
||||
:10041E00120485800C7895E660077D247F0A12040D
|
||||
:10042E008FE544D3941E40070543E4F5448002054E
|
||||
:10043E00443005210541E54170020540D39414E591
|
||||
:10044E004094004010C205E4F544F543D2827D216C
|
||||
:10045E007F1202048F30011EE544C3946450097567
|
||||
:10046E00FE7843FF03054422C201E4F54475FE788D
|
||||
:10047E0053FFFC43FF01227F0A12048FE47894F6A7
|
||||
:01048E00224B
|
||||
:0A0A41008B358A3689378C388D39E1
|
||||
:100A4B00E4FDFC753A10753B21F53CE5391539AEE3
|
||||
:100A5B0038700215384E60467835E475F001120295
|
||||
:100A6B003B120154F53CFEEE6204E4F53DF53EC34A
|
||||
:100A7B00E53E9408E53D940050D1EC30E70FED25B1
|
||||
:100A8B00E0FFEC33653AFCE53B6FFD8007ED25E0BD
|
||||
:100A9B00FDEC33FC053EE53E70D5053D80D1AE0443
|
||||
:020AAB00AF0595
|
||||
:010AAD002226
|
||||
:04048F008F248D2504
|
||||
:1004930078267C007D007BFF7A00794E7E007F0BFF
|
||||
:1004A30012012EE4F531F532F533F5347526AA85BC
|
||||
:1004B3002527852428F529851C2AE52412024B05C6
|
||||
:1004C3000C0504E10A05190B05200D054F0E058FD8
|
||||
:1004D3000F051911059A120519370000059D752B93
|
||||
:1004E3000EE4F52CFF74722FF8E6FE742D2FF8A698
|
||||
:1004F300060FBF06F0E4FF747A2FF8E6FE74332F7D
|
||||
:10050300F8A6060FBF08F0A19D752B01E4F52CA2F8
|
||||
:100513000333F52DA19DE4F52BF52C807D752B057B
|
||||
:10052300E4F52C752D10F52D752E01E5E654807834
|
||||
:100533009C46F52FE525B4240478848007E525B48B
|
||||
:1005430025057885E6F530E4F531804E752B0AE410
|
||||
:10055300F52C853F2DFFEFFDE53F2DFDE433FCD367
|
||||
:10056300ED9416EC648094804008742E2FF876FF87
|
||||
:10057300800EE53F2F245AF8E6FE742E2FF8A606C8
|
||||
:100583000FBF09D27409253FF53F800E752B01E497
|
||||
:10059300F52C752D018003D20E22E52CFEE42407F1
|
||||
:1005A300FFE43EF533EF452BF5347B007A007926E3
|
||||
:1005B300FDAC33120A418E318F32AD3474272DF8DE
|
||||
:1005C300A607E531FF74282DF8A607C28275FE0E33
|
||||
:1005D30043FF04E534240AFFE43533FE7B007A004D
|
||||
:0B05E3007926120E1275FE0E53FFF376
|
||||
:0105EE0022EA
|
||||
:100800007889E6C4540FFD540360020197EF24F683
|
||||
:10081000602524FD602F14607124D7707AE4FE787F
|
||||
:100820008DE6FFEEC39F506F748F2EF8E6FF747253
|
||||
:100830002EF8A6070E80E8788FE6BD04047870F6DF
|
||||
:10084000227871F622ED64047891701FE6788412A4
|
||||
:1008500000267856F67892E6F54708E67878120092
|
||||
:100860003C7886F67894E67882F622E6788512005F
|
||||
:10087000267857F67892E6F54808E6787912003C33
|
||||
:100880007887F67894E67883F622788FE6BD0404BC
|
||||
:070890007858F6227859F6B2
|
||||
:01089700223E
|
||||
:100C8600E4F524F525F526301C44C21C788EE6FED4
|
||||
:100C9600E42407FFE43EFE18E6FDEEF524EF4DF5ED
|
||||
:100CA600257B007A007988FDAC24120A41AC06AD9A
|
||||
:100CB60007AB25748A2BF8E6FE74892BF8E6FBEB66
|
||||
:0E0CC600B5050BEEB50407788AE6FF120800AC
|
||||
:010CD40022FD
|
||||
:10069D00019C00C11F019B1E14080BB80C1C0CE41F
|
||||
:0E06AD000D480DAC0E420ED80F3C0FD2106857
|
||||
:0B0ECA00EF25E02408F8E6FC08E62213
|
||||
:100B1800E4FFE5E630E715120ECA2432FDE43CFC9A
|
||||
:100B2800C3789AE69D18E69C50108012120ECAFDF2
|
||||
:100B3800C3789AE69D18E69C40040FBF0AD4789CB7
|
||||
:100B4800E6FEEFD39E400418068003789B16789B38
|
||||
:100B5800E6FED394325006EEC3940A5007789CA65A
|
||||
:100B68000718761E789CE6FFD394015003D21F2203
|
||||
:080B7800EFD394024002C21FFA
|
||||
:010B80002252
|
||||
:1006BB00014B00014D00014A00014900014C00C1F2
|
||||
:1006CB000CC10FC10BC10AC10D015000014E00C17D
|
||||
:0406DB000E014F00BD
|
||||
:100C3100E5506050E4F550054BE54BC39405400584
|
||||
:100C4100E4F54BD20C054DE54DC3940A4005E4F59E
|
||||
:100C51004DD20F0549E549C394644005E4F549D2F5
|
||||
:100C61000A054AE54AC394FA401AE4F54AD20B054B
|
||||
:100C71004CE54C9404400DE4F54CD20D0546E54697
|
||||
:050C8100700205452290
|
||||
:03000B00020B8164
|
||||
:100B8100C0E0C0D074FC258CF58C7417258AF58AD9
|
||||
:100B9100755001054EE54EC39405403A754E00303F
|
||||
:100BA1000E34E54FD394045004C282801BE54F30CC
|
||||
:100BB100E00BB40D04C282800FD282800BE54FB4EA
|
||||
:100BC1000E04D2828002C282054FE54FC3941740C2
|
||||
:0B0BD10005C20E754F00D0D0D0E032FE
|
||||
:1008AA00020EBBE493A3F8E493A34003F68001F29B
|
||||
:1008BA0008DFF48029E493A3F85407240CC8C3334F
|
||||
:1008CA00C4540F4420C8834004F456800146F6DF1E
|
||||
:1008DA00E4800B01020408102040809005EFE47EBA
|
||||
:1008EA00019360BCA3FF543F30E509541FFEE49313
|
||||
:1008FA00A360010ECF54C025E060A840B8E493A3DA
|
||||
:10090A00FAE493A3F8E493A3C8C582C8CAC583CA04
|
||||
:10091A00F0A3C8C582C8CAC583CADFE9DEE780BEBC
|
||||
:0106DF00001A
|
||||
:10005E00E709F608DFFA8046E709F208DFFA803E84
|
||||
:10006E0088828C83E709F0A3DFFA8032E309F60871
|
||||
:10007E00DFFA8078E309F208DFFA807088828C83D9
|
||||
:10008E00E309F0A3DFFA806489828A83E0A3F6088D
|
||||
:10009E00DFFA805889828A83E0A3F208DFFA804C67
|
||||
:1000AE0080D280FA80C680D4806980F2803380103E
|
||||
:1000BE0080A680EA809A80A880DA80E280CA8033A7
|
||||
:1000CE0089828A83ECFAE493A3C8C582C8CCC5831F
|
||||
:1000DE00CCF0A3C8C582C8CCC583CCDFE9DEE780EF
|
||||
:1000EE000D89828A83E493A3F608DFF9ECFAA9F06E
|
||||
:1000FE00EDFB2289828A83ECFAE0A3C8C582C8CCC4
|
||||
:10010E00C583CCF0A3C8C582C8CCC583CCDFEADEDC
|
||||
:10011E00E880DB89828A83E493A3F208DFF980CC3E
|
||||
:10012E0088F0EF60010E4E60C388F0ED2402B40437
|
||||
:10013E000050B9F582EB2402B4040050AF232345DE
|
||||
:06014E0082239000AE7355
|
||||
:10015400BB010689828A83E0225002E722BBFE02A9
|
||||
:09016400E32289828A83E49322DC
|
||||
:10016D0075F008758200EF2FFFEE33FECD33CDCC49
|
||||
:10017D0033CCC58233C5829BED9AEC99E5829840CC
|
||||
:10018D000CF582EE9BFEED9AFDEC99FC0FD5F0D6A9
|
||||
:10019D00E4CEFBE4CDFAE4CCF9A88222B800C1B9D3
|
||||
:1001AD000059BA002DEC8BF084CFCECDFCE5F0CB11
|
||||
:1001BD00F97818EF2FFFEE33FEED33FDEC33FCEB4A
|
||||
:1001CD0033FB10D703994004EB99FB0FD8E5E4F905
|
||||
:1001DD00FA227818EF2FFFEE33FEED33FDEC33FCF2
|
||||
:1001ED00C933C910D7059BE99A4007EC9BFCE99AE6
|
||||
:1001FD00F90FD8E0E4C9FAE4CCFB2275F010EF2F2B
|
||||
:10020D00FFEE33FEED33FDCC33CCC833C810D7072A
|
||||
:10021D009BEC9AE899400AED9BFDEC9AFCE899F865
|
||||
:0E022D000FD5F0DAE4CDFBE4CCFAE4C8F922F8
|
||||
:10023B00FAE6FB0808E6F925F0F618E6CA3AF622C4
|
||||
:10024B00D083D082F8E4937012740193700DA3A342
|
||||
:10025B0093F8740193F5828883E473740293686056
|
||||
:06026B00EFA3A3A380DF56
|
||||
:10027100EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D1A
|
||||
:10028100FDE43CFCE8A42EC8C5F03DFDE43CFCEFD8
|
||||
:0D029100A4FFE5F028FEE43DFDE43CFC2266
|
||||
:00000001FF
|
BIN
Out/SY8833A_EVB_mcu_V100_2024_06_14_110912_crc.bin
Normal file
BIN
Out/SY8833A_EVB_mcu_V100_2024_06_14_110912_crc.bin
Normal file
Binary file not shown.
61
Project/HEXBIN.bat
Normal file
61
Project/HEXBIN.bat
Normal file
@ -0,0 +1,61 @@
|
||||
:: @File Name: HEXBIN.bat
|
||||
:: @Version : 1.0
|
||||
:: @Author : Alex-XU
|
||||
:: @Creat Date : 2023-03-30
|
||||
:: @Brief :
|
||||
:: 在keil中,生成hex、bin文件到 Out 文件夹中.
|
||||
:: 复制本文件到keil工程文件所在目录下(/Project目录下)
|
||||
:: 在keil 魔法棒USER里填写
|
||||
:: .\Out.bat $K !P @P
|
||||
:: $K hextobin转换工具位置 !P 工程名 @P 工程目录
|
||||
:: .\HEXBIN.bat .\Objects\hex2bin_TP.exe mcu \Objects\
|
||||
|
||||
::关闭显示
|
||||
@echo off
|
||||
::获取时间
|
||||
set year=%date:~0,4%
|
||||
set month=%date:~5,2%
|
||||
set day=%date:~8,2%
|
||||
set hour=%time:~0,2%
|
||||
set min=%time:~3,2%
|
||||
set sec=%time:~6,2%
|
||||
::创建输出文件夹 Out
|
||||
if exist .\..\Out (
|
||||
echo Out file exist
|
||||
) else (
|
||||
mkdir .\..\Out
|
||||
)
|
||||
|
||||
::设置hex2bin_TP.exe位置 ,\Objects\hex2bin_TP.exe
|
||||
set exe_location=%1
|
||||
::获取工程名 mcu.hex
|
||||
set project_name=%2
|
||||
::设置.hex文件所在目录路径\Objects\
|
||||
set obj_path=%3
|
||||
::设置输出后的文件名
|
||||
set output_name=SY8833A_EVB_%project_name%_V100_%date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
|
||||
|
||||
::将bin文件生成到HEXBIN文件夹 >nul屏蔽成功命令 .\Objects\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 3 0
|
||||
%exe_location% .%obj_path%%project_name%.hex .%obj_path%%output_name%.bin 3 0 >nul
|
||||
::将hex文件重命名
|
||||
ren .%obj_path%%project_name%.hex %output_name%.hex >nul
|
||||
|
||||
ECHO Add CRC16 At the end of the .bin file
|
||||
ECHO -------------------------------------
|
||||
|
||||
SET SREC_PATH=D:\Keil_v5\SREC
|
||||
|
||||
for /f %%i in ('dir /s /b .%obj_path%%output_name%.bin') do (
|
||||
set indexdx=%%~zi
|
||||
)
|
||||
|
||||
ECHO --- size= %indexdx% Bytes ---
|
||||
|
||||
ECHO %SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary
|
||||
%SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary
|
||||
|
||||
del /q ..\Out\*.*
|
||||
::将hex文件复制到HEXBIN文件夹
|
||||
move .%obj_path%%output_name%.hex .\..\Out >nul
|
||||
move .%obj_path%%output_name%.bin .\..\Out >nul
|
||||
move .%obj_path%%output_name%_crc.bin .\..\Out >nul
|
263
Project/Listings/STARTUP.lst
Normal file
263
Project/Listings/STARTUP.lst
Normal file
@ -0,0 +1,263 @@
|
||||
A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 1
|
||||
|
||||
|
||||
MACRO ASSEMBLER A51 V8.2.7.0
|
||||
OBJECT MODULE PLACED IN .\Objects\STARTUP.obj
|
||||
ASSEMBLER INVOKED BY: D:\Keil_v5\C51\BIN\A51.EXE ..\Src\startup\STARTUP.A51 SET(SMALL) DEBUG PRINT(.\Listings\STARTUP.ls
|
||||
t) OBJECT(.\Objects\STARTUP.obj) EP
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
1 $nomod51
|
||||
2 ;------------------------------------------------------------------------------
|
||||
3 ; This file is part of the C51 Compiler package
|
||||
4 ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
|
||||
5 ; Version 8.01
|
||||
6 ;
|
||||
7 ; *** <<< Use Configuration Wizard in Context Menu >>> ***
|
||||
8 ;------------------------------------------------------------------------------
|
||||
9 ; STARTUP.A51: This code is executed after processor reset.
|
||||
10 ;
|
||||
11 ; To translate this file use A51 with the following invocation:
|
||||
12 ;
|
||||
13 ; A51 STARTUP.A51
|
||||
14 ;
|
||||
15 ; To link the modified STARTUP.OBJ file to your application use the following
|
||||
16 ; Lx51 invocation:
|
||||
17 ;
|
||||
18 ; Lx51 your object file list, STARTUP.OBJ controls
|
||||
19 ;
|
||||
20 ;------------------------------------------------------------------------------
|
||||
21 ;
|
||||
22 ; User-defined <h> Power-On Initialization of Memory
|
||||
23 ;
|
||||
24 ; With the following EQU statements the initialization of memory
|
||||
25 ; at processor reset can be defined:
|
||||
26 ;
|
||||
27 ; <o> IDATALEN: IDATA memory size <0x0-0x100>
|
||||
28 ; <i> Note: The absolute start-address of IDATA memory is always 0
|
||||
29 ; <i> The IDATA space overlaps physically the DATA and BIT areas.
|
||||
0100 30 IDATALEN EQU 100H
|
||||
31 ;
|
||||
32 ; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
|
||||
33 ; <i> The absolute start address of XDATA memory
|
||||
0000 34 XDATASTART EQU 0
|
||||
35 ;
|
||||
36 ; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
|
||||
37 ; <i> The length of XDATA memory in bytes.
|
||||
0000 38 XDATALEN EQU 0H
|
||||
39 ;
|
||||
40 ; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
|
||||
41 ; <i> The absolute start address of PDATA memory
|
||||
0000 42 PDATASTART EQU 0H
|
||||
43 ;
|
||||
44 ; <o> PDATALEN: PDATA memory size <0x0-0xFF>
|
||||
45 ; <i> The length of PDATA memory in bytes.
|
||||
0000 46 PDATALEN EQU 0H
|
||||
47 ;
|
||||
48 ;</h>
|
||||
49 ;------------------------------------------------------------------------------
|
||||
50 ;
|
||||
51 ;<h> Reentrant Stack Initialization
|
||||
52 ;
|
||||
53 ; The following EQU statements define the stack pointer for reentrant
|
||||
54 ; functions and initialized it:
|
||||
55 ;
|
||||
56 ; <h> Stack Space for reentrant functions in the SMALL model.
|
||||
57 ; <q> IBPSTACK: Enable SMALL model reentrant stack
|
||||
A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 2
|
||||
|
||||
58 ; <i> Stack space for reentrant functions in the SMALL model.
|
||||
0000 59 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
|
||||
60 ; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
|
||||
61 ; <i> Set the top of the stack to the highest location.
|
||||
0100 62 IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
63 ; </h>
|
||||
64 ;
|
||||
65 ; <h> Stack Space for reentrant functions in the LARGE model.
|
||||
66 ; <q> XBPSTACK: Enable LARGE model reentrant stack
|
||||
67 ; <i> Stack space for reentrant functions in the LARGE model.
|
||||
0000 68 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
|
||||
69 ; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
|
||||
70 ; <i> Set the top of the stack to the highest location.
|
||||
0000 71 XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
|
||||
72 ; </h>
|
||||
73 ;
|
||||
74 ; <h> Stack Space for reentrant functions in the COMPACT model.
|
||||
75 ; <q> PBPSTACK: Enable COMPACT model reentrant stack
|
||||
76 ; <i> Stack space for reentrant functions in the COMPACT model.
|
||||
0000 77 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
|
||||
78 ;
|
||||
79 ; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
|
||||
80 ; <i> Set the top of the stack to the highest location.
|
||||
0100 81 PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
82 ; </h>
|
||||
83 ;</h>
|
||||
84 ;------------------------------------------------------------------------------
|
||||
85 ;
|
||||
86 ; Memory Page for Using the Compact Model with 64 KByte xdata RAM
|
||||
87 ; <e>Compact Model Page Definition
|
||||
88 ;
|
||||
89 ; <i>Define the XDATA page used for PDATA variables.
|
||||
90 ; <i>PPAGE must conform with the PPAGE set in the linker invocation.
|
||||
91 ;
|
||||
92 ; Enable pdata memory page initalization
|
||||
0000 93 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
|
||||
94 ;
|
||||
95 ; <o> PPAGE number <0x0-0xFF>
|
||||
96 ; <i> uppermost 256-byte address of the page used for PDATA variables.
|
||||
0000 97 PPAGE EQU 0
|
||||
98 ;
|
||||
99 ; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
|
||||
100 ; <i> most 8051 variants use P2 as uppermost address byte
|
||||
00A0 101 PPAGE_SFR DATA 0A0H
|
||||
102 ;
|
||||
103 ; </e>
|
||||
104 ;------------------------------------------------------------------------------
|
||||
105
|
||||
106 ; Standard SFR Symbols
|
||||
00E0 107 ACC DATA 0E0H
|
||||
00F0 108 B DATA 0F0H
|
||||
0081 109 SP DATA 81H
|
||||
0082 110 DPL DATA 82H
|
||||
0083 111 DPH DATA 83H
|
||||
008E 112 CKCON DATA 8EH
|
||||
00D2 113 CLKPRE DATA 0D2H
|
||||
0087 114 PCON DATA 87H
|
||||
115
|
||||
116 NAME ?C_STARTUP
|
||||
117
|
||||
118
|
||||
119 ?C_C51STARTUP SEGMENT CODE
|
||||
120 ?STACK SEGMENT IDATA
|
||||
121
|
||||
---- 122 RSEG ?STACK
|
||||
0000 123 DS 1
|
||||
A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 3
|
||||
|
||||
124
|
||||
125 EXTRN CODE (?C_START)
|
||||
126 PUBLIC ?C_STARTUP
|
||||
127
|
||||
---- 128 CSEG AT 0
|
||||
0000 020000 F 129 ?C_STARTUP: LJMP STARTUP1
|
||||
130
|
||||
---- 131 RSEG ?C_C51STARTUP
|
||||
132
|
||||
0000 133 STARTUP1:
|
||||
134 ;Set Wait State to 0x30 and CPU CLK Prescaler to 1 to Accelerate Startup
|
||||
135 ;MOV PCON, #02H ;Enter Standby
|
||||
0000 758E30 136 MOV CKCON, #30H ;Wait State = 0x30
|
||||
0003 75D200 137 MOV CLKPRE, #0 ;CLK Prescaler = 1
|
||||
138
|
||||
139 IF IDATALEN <> 0
|
||||
0006 78FF 140 MOV R0,#IDATALEN - 1
|
||||
0008 E4 141 CLR A
|
||||
0009 F6 142 IDATALOOP: MOV @R0,A
|
||||
000A D8FD 143 DJNZ R0,IDATALOOP
|
||||
144 ENDIF
|
||||
145
|
||||
146 IF XDATALEN <> 0
|
||||
MOV DPTR,#XDATASTART
|
||||
MOV R7,#LOW (XDATALEN)
|
||||
IF (LOW (XDATALEN)) <> 0
|
||||
MOV R6,#(HIGH (XDATALEN)) +1
|
||||
ELSE
|
||||
MOV R6,#HIGH (XDATALEN)
|
||||
ENDIF
|
||||
CLR A
|
||||
XDATALOOP: MOVX @DPTR,A
|
||||
INC DPTR
|
||||
DJNZ R7,XDATALOOP
|
||||
DJNZ R6,XDATALOOP
|
||||
ENDIF
|
||||
160
|
||||
161 IF PPAGEENABLE <> 0
|
||||
MOV PPAGE_SFR,#PPAGE
|
||||
ENDIF
|
||||
164
|
||||
165 IF PDATALEN <> 0
|
||||
MOV R0,#LOW (PDATASTART)
|
||||
MOV R7,#LOW (PDATALEN)
|
||||
CLR A
|
||||
PDATALOOP: MOVX @R0,A
|
||||
INC R0
|
||||
DJNZ R7,PDATALOOP
|
||||
ENDIF
|
||||
173
|
||||
174 IF IBPSTACK <> 0
|
||||
EXTRN DATA (?C_IBP)
|
||||
|
||||
MOV ?C_IBP,#LOW IBPSTACKTOP
|
||||
ENDIF
|
||||
179
|
||||
180 IF XBPSTACK <> 0
|
||||
EXTRN DATA (?C_XBP)
|
||||
|
||||
MOV ?C_XBP,#HIGH XBPSTACKTOP
|
||||
MOV ?C_XBP+1,#LOW XBPSTACKTOP
|
||||
ENDIF
|
||||
186
|
||||
187 IF PBPSTACK <> 0
|
||||
EXTRN DATA (?C_PBP)
|
||||
MOV ?C_PBP,#LOW PBPSTACKTOP
|
||||
A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 4
|
||||
|
||||
ENDIF
|
||||
191
|
||||
000C 758100 F 192 MOV SP,#?STACK-1
|
||||
193
|
||||
194 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
|
||||
195 ;<h> Code Banking
|
||||
196 ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
|
||||
197
|
||||
|
||||
|
||||
|
||||
|
||||
202 ;</h>
|
||||
000F 020000 F 203 LJMP ?C_START
|
||||
204
|
||||
205 END
|
||||
A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 5
|
||||
|
||||
SYMBOL TABLE LISTING
|
||||
------ ----- -------
|
||||
|
||||
|
||||
N A M E T Y P E V A L U E ATTRIBUTES
|
||||
|
||||
?C_C51STARTUP. . . C SEG 0012H REL=UNIT
|
||||
?C_START . . . . . C ADDR ----- EXT
|
||||
?C_STARTUP . . . . C ADDR 0000H A
|
||||
?STACK . . . . . . I SEG 0001H REL=UNIT
|
||||
ACC. . . . . . . . D ADDR 00E0H A
|
||||
B. . . . . . . . . D ADDR 00F0H A
|
||||
CKCON. . . . . . . D ADDR 008EH A
|
||||
CLKPRE . . . . . . D ADDR 00D2H A
|
||||
DPH. . . . . . . . D ADDR 0083H A
|
||||
DPL. . . . . . . . D ADDR 0082H A
|
||||
IBPSTACK . . . . . N NUMB 0000H A
|
||||
IBPSTACKTOP. . . . N NUMB 0100H A
|
||||
IDATALEN . . . . . N NUMB 0100H A
|
||||
IDATALOOP. . . . . C ADDR 0009H R SEG=?C_C51STARTUP
|
||||
PBPSTACK . . . . . N NUMB 0000H A
|
||||
PBPSTACKTOP. . . . N NUMB 0100H A
|
||||
PCON . . . . . . . D ADDR 0087H A
|
||||
PDATALEN . . . . . N NUMB 0000H A
|
||||
PDATASTART . . . . N NUMB 0000H A
|
||||
PPAGE. . . . . . . N NUMB 0000H A
|
||||
PPAGEENABLE. . . . N NUMB 0000H A
|
||||
PPAGE_SFR. . . . . D ADDR 00A0H A
|
||||
SP . . . . . . . . D ADDR 0081H A
|
||||
STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
|
||||
XBPSTACK . . . . . N NUMB 0000H A
|
||||
XBPSTACKTOP. . . . N NUMB 0000H A
|
||||
XDATALEN . . . . . N NUMB 0000H A
|
||||
XDATASTART . . . . N NUMB 0000H A
|
||||
|
||||
|
||||
REGISTER BANK(S) USED: 0
|
||||
|
||||
|
||||
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
356
Project/Listings/adc.lst
Normal file
356
Project/Listings/adc.lst
Normal file
@ -0,0 +1,356 @@
|
||||
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE ADC
|
||||
OBJECT MODULE PLACED IN .\Objects\adc.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\adc\adc.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrIn
|
||||
-c\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key
|
||||
-;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\v
|
||||
-ox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\adc.lst
|
||||
-) TABS(2) OBJECT(.\Objects\adc.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file adc.c
|
||||
5 * @brief adc module
|
||||
6 * @ic TP3102
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2024/03/26 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/08/04 Alex build this file
|
||||
18 ******************************************************************************/
|
||||
19 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
20
|
||||
21 #include "adc.h"
|
||||
22 #include "system.h"
|
||||
23 #include "sys_tim.h"
|
||||
24
|
||||
25 #if ADC_ENABLE
|
||||
26
|
||||
27 /******************************************************************************\
|
||||
28 Macro definitions
|
||||
29 \******************************************************************************/
|
||||
30
|
||||
31 /******************************************************************************\
|
||||
32 Variables definitions
|
||||
33 \******************************************************************************/
|
||||
34
|
||||
35 idata uint16_t Vbat_Adc = 0;
|
||||
36
|
||||
37
|
||||
38 /******************************************************************************\
|
||||
39 Functions definitions
|
||||
40 \******************************************************************************/
|
||||
41
|
||||
42
|
||||
43 /*
|
||||
44 *******************************************************************************
|
||||
45 * uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn)
|
||||
46 *
|
||||
47 * Description : 获取相应通道的电压ADC值。
|
||||
48 *
|
||||
49 * Arguments : NONE
|
||||
50
|
||||
51 * Returns : adc Value (mV)
|
||||
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 2
|
||||
|
||||
52
|
||||
53 * Notes : NONE
|
||||
54 *
|
||||
55 *******************************************************************************
|
||||
56 */
|
||||
57
|
||||
58 uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn)
|
||||
59 {
|
||||
60 1 uint8_t index = 0;
|
||||
61 1 uint16_t adc_data = 0;
|
||||
62 1 uint16_t adc_plus_data = 0;
|
||||
63 1
|
||||
64 1 SFRADDR = ADC_CTL0;
|
||||
65 1 SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
66 1
|
||||
67 1 for(index=0; index<8; index++)
|
||||
68 1 {
|
||||
69 2 ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion
|
||||
70 2
|
||||
71 2 while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
72 2
|
||||
73 2 adc_data = ADC_DATL; //Read low byte first! Lock ADC Value.
|
||||
74 2
|
||||
75 2 adc_data |= (uint16_t)(ADC_DATH << 8);
|
||||
76 2
|
||||
77 2 adc_plus_data += adc_data;
|
||||
78 2 #ifdef _DEBUG_ADC
|
||||
printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data);
|
||||
#endif
|
||||
81 2 // adc_data = 0;
|
||||
82 2 }
|
||||
83 1
|
||||
84 1 adc_data = adc_plus_data >> 3;
|
||||
85 1
|
||||
86 1 #ifdef _DEBUG_ADC
|
||||
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
|
||||
#endif
|
||||
89 1
|
||||
90 1 #ifdef _DEBUG_ADC
|
||||
printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data);
|
||||
#endif
|
||||
93 1
|
||||
94 1 return adc_data;
|
||||
95 1 }
|
||||
96
|
||||
97 /*
|
||||
98 *******************************************************************************
|
||||
99 * uint16_t Vbat_Value(void)
|
||||
100 *
|
||||
101 * Description : Vbat Value.获取电池电压。
|
||||
102 *
|
||||
103 * Arguments : NONE
|
||||
104
|
||||
105 * Returns : Vbat Value (mV)
|
||||
106
|
||||
107 * Notes : NONE
|
||||
108 *
|
||||
109 *******************************************************************************
|
||||
110 */
|
||||
111 uint16_t Vbat_Value(void)
|
||||
112 {
|
||||
113 1 uint16_t n_Vbat_Data = 0;
|
||||
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 3
|
||||
|
||||
114 1 //uint16_t n_ADC_Plus = 0;
|
||||
115 1
|
||||
116 1 n_Vbat_Data = ADC_Chn_Data(ADC_BAT);
|
||||
117 1
|
||||
118 1 #ifdef _DEBUG_ADC
|
||||
printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data);
|
||||
#endif
|
||||
121 1
|
||||
122 1 // n_ADC_Plus = ADC_Chn_Data(ADC_VREF); //获取VREF
|
||||
123 1
|
||||
124 1 n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF * 2 / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvr
|
||||
-ef
|
||||
125 1
|
||||
126 1 #ifdef _DEBUG_ADC
|
||||
printf("bat,Vbat:%d.\r\n",(uint16_t)n_Vbat_Data);
|
||||
#endif
|
||||
129 1
|
||||
130 1 return n_Vbat_Data;
|
||||
131 1 }
|
||||
132
|
||||
133 /*
|
||||
134 *******************************************************************************
|
||||
135 * uint16_t ADC_NTC_Value(void)
|
||||
136 *
|
||||
137 * Description : 获取NTC采样电压
|
||||
138
|
||||
139 * Arguments : NONE
|
||||
140
|
||||
141 * Returns : ADC Value (mV)
|
||||
142
|
||||
143 * Notes : NONE
|
||||
144 *
|
||||
145 *******************************************************************************
|
||||
146 */
|
||||
147 #ifdef ADC_NTC_ENABLE
|
||||
148
|
||||
149 uint16_t ADC_NTC_Value(void)
|
||||
150 {
|
||||
151 1 uint16_t adc_data = 0;
|
||||
152 1 // uint16_t adc_plus_data = 0;
|
||||
153 1
|
||||
154 1 adc_data = ADC_Chn_Data(ADC_CH4);
|
||||
155 1
|
||||
156 1 #ifdef _DEBUG_ADC
|
||||
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
|
||||
#endif
|
||||
159 1 // adc_plus_data = ADC_Chn_Data(ADC_VREF); //获取VREF
|
||||
160 1
|
||||
161 1 adc_data = (uint32_t)(adc_data) * VREF / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvref
|
||||
162 1
|
||||
163 1 #ifdef _DEBUG_ADC
|
||||
printf("Adc,Vadc:%d.\r\n", (uint16_t)adc_data);
|
||||
#endif
|
||||
166 1
|
||||
167 1 return adc_data;
|
||||
168 1 }
|
||||
169 #endif
|
||||
170
|
||||
171
|
||||
172 #endif
|
||||
173
|
||||
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 4
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION _ADC_Chn_Data (BEGIN)
|
||||
; SOURCE LINE # 58
|
||||
;---- Variable 'adc_chn' assigned to Register 'R5' ----
|
||||
0000 AD07 MOV R5,AR7
|
||||
; SOURCE LINE # 59
|
||||
; SOURCE LINE # 60
|
||||
;---- Variable 'index' assigned to Register 'R4' ----
|
||||
0002 E4 CLR A
|
||||
0003 FC MOV R4,A
|
||||
; SOURCE LINE # 61
|
||||
;---- Variable 'adc_data' assigned to Register 'R2/R3' ----
|
||||
0004 FB MOV R3,A
|
||||
0005 FA MOV R2,A
|
||||
; SOURCE LINE # 62
|
||||
0006 F500 R MOV adc_plus_data,A
|
||||
0008 F500 R MOV adc_plus_data+01H,A
|
||||
; SOURCE LINE # 64
|
||||
000A 75FE29 MOV SFRADDR,#029H
|
||||
; SOURCE LINE # 65
|
||||
000D 75FF8B MOV SFRDATA,#08BH
|
||||
; SOURCE LINE # 67
|
||||
0010 ?C0001:
|
||||
; SOURCE LINE # 68
|
||||
; SOURCE LINE # 69
|
||||
0010 ED MOV A,R5
|
||||
0011 C4 SWAP A
|
||||
0012 54F0 ANL A,#0F0H
|
||||
0014 4401 ORL A,#01H
|
||||
0016 F5A5 MOV ADC_CTL1,A
|
||||
0018 ?C0004:
|
||||
; SOURCE LINE # 71
|
||||
0018 E5A5 MOV A,ADC_CTL1
|
||||
001A 20E0FB JB ACC.0,?C0004
|
||||
; SOURCE LINE # 73
|
||||
001D AFA1 MOV R7,ADC_DATL
|
||||
001F AB07 MOV R3,AR7
|
||||
; SOURCE LINE # 75
|
||||
0021 AFA2 MOV R7,ADC_DATH
|
||||
0023 EF MOV A,R7
|
||||
0024 FE MOV R6,A
|
||||
0025 EE MOV A,R6
|
||||
0026 FA MOV R2,A
|
||||
; SOURCE LINE # 77
|
||||
0027 EB MOV A,R3
|
||||
0028 2500 R ADD A,adc_plus_data+01H
|
||||
002A F500 R MOV adc_plus_data+01H,A
|
||||
002C EA MOV A,R2
|
||||
002D 3500 R ADDC A,adc_plus_data
|
||||
002F F500 R MOV adc_plus_data,A
|
||||
; SOURCE LINE # 82
|
||||
0031 0C INC R4
|
||||
0032 BC08DB CJNE R4,#08H,?C0001
|
||||
0035 ?C0002:
|
||||
; SOURCE LINE # 84
|
||||
0035 E500 R MOV A,adc_plus_data+01H
|
||||
0037 AE00 R MOV R6,adc_plus_data
|
||||
0039 7803 MOV R0,#03H
|
||||
003B ?C0009:
|
||||
003B CE XCH A,R6
|
||||
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 5
|
||||
|
||||
003C C3 CLR C
|
||||
003D 13 RRC A
|
||||
003E CE XCH A,R6
|
||||
003F 13 RRC A
|
||||
0040 D8F9 DJNZ R0,?C0009
|
||||
; SOURCE LINE # 94
|
||||
0042 FF MOV R7,A
|
||||
; SOURCE LINE # 95
|
||||
0043 22 RET
|
||||
; FUNCTION _ADC_Chn_Data (END)
|
||||
|
||||
; FUNCTION Vbat_Value (BEGIN)
|
||||
; SOURCE LINE # 111
|
||||
; SOURCE LINE # 112
|
||||
; SOURCE LINE # 113
|
||||
0000 E4 CLR A
|
||||
0001 F500 R MOV n_Vbat_Data,A
|
||||
0003 F500 R MOV n_Vbat_Data+01H,A
|
||||
; SOURCE LINE # 116
|
||||
0005 7F05 MOV R7,#05H
|
||||
0007 120000 R LCALL _ADC_Chn_Data
|
||||
000A 8E00 R MOV n_Vbat_Data,R6
|
||||
000C 8F00 R MOV n_Vbat_Data+01H,R7
|
||||
; SOURCE LINE # 124
|
||||
000E 7F06 MOV R7,#06H
|
||||
0010 120000 R LCALL _ADC_Chn_Data
|
||||
0013 E4 CLR A
|
||||
0014 FC MOV R4,A
|
||||
0015 FD MOV R5,A
|
||||
0016 C004 PUSH AR4
|
||||
0018 A905 MOV R1,AR5
|
||||
001A AA06 MOV R2,AR6
|
||||
001C AB07 MOV R3,AR7
|
||||
001E AE00 R MOV R6,n_Vbat_Data
|
||||
0020 AF00 R MOV R7,n_Vbat_Data+01H
|
||||
0022 7C07 MOV R4,#07H
|
||||
0024 7DD0 MOV R5,#0D0H
|
||||
0026 120000 E LCALL ?C?LIMUL
|
||||
0029 D000 POP AR0
|
||||
002B 120000 E LCALL ?C?ULDIV
|
||||
002E 8E00 R MOV n_Vbat_Data,R6
|
||||
0030 8F00 R MOV n_Vbat_Data+01H,R7
|
||||
; SOURCE LINE # 130
|
||||
; SOURCE LINE # 131
|
||||
0032 22 RET
|
||||
; FUNCTION Vbat_Value (END)
|
||||
|
||||
; FUNCTION ADC_NTC_Value (BEGIN)
|
||||
; SOURCE LINE # 149
|
||||
; SOURCE LINE # 150
|
||||
; SOURCE LINE # 151
|
||||
0000 E4 CLR A
|
||||
0001 F500 R MOV adc_data,A
|
||||
0003 F500 R MOV adc_data+01H,A
|
||||
; SOURCE LINE # 154
|
||||
0005 7F04 MOV R7,#04H
|
||||
0007 120000 R LCALL _ADC_Chn_Data
|
||||
000A 8E00 R MOV adc_data,R6
|
||||
000C 8F00 R MOV adc_data+01H,R7
|
||||
; SOURCE LINE # 161
|
||||
000E 7F06 MOV R7,#06H
|
||||
0010 120000 R LCALL _ADC_Chn_Data
|
||||
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 6
|
||||
|
||||
0013 E4 CLR A
|
||||
0014 FC MOV R4,A
|
||||
0015 FD MOV R5,A
|
||||
0016 C004 PUSH AR4
|
||||
0018 A905 MOV R1,AR5
|
||||
001A AA06 MOV R2,AR6
|
||||
001C AB07 MOV R3,AR7
|
||||
001E AE00 R MOV R6,adc_data
|
||||
0020 AF00 R MOV R7,adc_data+01H
|
||||
0022 7C03 MOV R4,#03H
|
||||
0024 7DE8 MOV R5,#0E8H
|
||||
0026 120000 E LCALL ?C?LIMUL
|
||||
0029 D000 POP AR0
|
||||
002B 120000 E LCALL ?C?ULDIV
|
||||
002E 8E00 R MOV adc_data,R6
|
||||
0030 8F00 R MOV adc_data+01H,R7
|
||||
; SOURCE LINE # 167
|
||||
; SOURCE LINE # 168
|
||||
0032 22 RET
|
||||
; FUNCTION ADC_NTC_Value (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 170 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- 6
|
||||
IDATA SIZE = 2 ----
|
||||
BIT SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
313
Project/Listings/bat.lst
Normal file
313
Project/Listings/bat.lst
Normal file
@ -0,0 +1,313 @@
|
||||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE BAT
|
||||
OBJECT MODULE PLACED IN .\Objects\bat.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\bat\bat.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrIn
|
||||
-c\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key
|
||||
-;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\v
|
||||
-ox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\bat.lst
|
||||
-) TABS(2) OBJECT(.\Objects\bat.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file bat.c
|
||||
5 * @brief Voltage-based RC model gauge algorithm
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2023/02/20 17:35:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2023/02/20 Alex build this file
|
||||
18 ******************************************************************************
|
||||
19 */
|
||||
20 #include "bat.h"
|
||||
21 #include "adc.h"
|
||||
22
|
||||
23 idata uint8_t bat_level = 0;
|
||||
24 bit F_batlevel_low = 0; //电池低压
|
||||
25
|
||||
26 #if BAT_VALUE
|
||||
27
|
||||
28 #define C_offset_bat_level_MAX 50
|
||||
29 #define C_offset_bat_level_MIN 10
|
||||
30
|
||||
31 #define C_bat_level_protect 0
|
||||
32 #define C_bat_level_lowpower 1
|
||||
33
|
||||
34
|
||||
35 //bit F_batlevel_protect = 0; //低电保护
|
||||
36 idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
37
|
||||
38
|
||||
39 #define C_batLevel_SetMax 10
|
||||
40
|
||||
41 /*充电电池电压会浮高,具体电压需要测试。*/
|
||||
42 const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] =
|
||||
43 {
|
||||
44 3000, //1
|
||||
45 3100, //2
|
||||
46 3300, //3
|
||||
47 3400, //4
|
||||
48 3500, //5
|
||||
49 3650, //6
|
||||
50 3800, //7
|
||||
51 3900, //8
|
||||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 2
|
||||
|
||||
52 4050, //9
|
||||
53 4200 //10
|
||||
54 };
|
||||
55 #if 0
|
||||
const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] =
|
||||
{
|
||||
3050, //1
|
||||
3150, //2
|
||||
3350, //3
|
||||
3450, //4
|
||||
3550, //5
|
||||
3700, //6
|
||||
3850, //7
|
||||
3950, //8
|
||||
4100, //9
|
||||
4200 //10
|
||||
};
|
||||
#endif
|
||||
70 void check_bat_level(void)
|
||||
71 {
|
||||
72 1 uint8_t i = 0;
|
||||
73 1 //get bat level
|
||||
74 1 #if ADC_ENABLE
|
||||
75 1 for(i=0; i < C_batLevel_SetMax; i++)
|
||||
76 1 {
|
||||
77 2 #if 0
|
||||
|
||||
if( Vbat_Adc < Boost_batlevel_Threshold[i] )
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
#else
|
||||
85 2 if(CHIP_STA4 & 0x80) //充电
|
||||
86 2 {
|
||||
87 3 if( Vbat_Adc < Boost_batlevel_Threshold[i] + 50 )
|
||||
88 3 break;
|
||||
89 3 }
|
||||
90 2 else //放电
|
||||
91 2 {
|
||||
92 3 if( Vbat_Adc < Boost_batlevel_Threshold[i] )
|
||||
93 3 {
|
||||
94 4 break;
|
||||
95 4 }
|
||||
96 3 }
|
||||
97 2 #endif
|
||||
98 2 }
|
||||
99 1 #endif
|
||||
100 1
|
||||
101 1 if( i > bat_level )
|
||||
102 1 {
|
||||
103 2 offset_bat_level++;
|
||||
104 2 }
|
||||
105 1 else
|
||||
106 1 {
|
||||
107 2 offset_bat_level--;
|
||||
108 2 }
|
||||
109 1
|
||||
110 1 //debounce
|
||||
111 1 if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) )
|
||||
112 1 {
|
||||
113 2 //update
|
||||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 3
|
||||
|
||||
114 2 bat_level = i;
|
||||
115 2 offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
116 2 }
|
||||
117 1 #if 0
|
||||
if( bat_level <= C_bat_level_protect )
|
||||
{
|
||||
F_batlevel_protect = 1;
|
||||
}
|
||||
else if( bat_level > ( C_bat_level_protect + 1 ) )
|
||||
{
|
||||
F_batlevel_protect = 0;
|
||||
}
|
||||
#endif
|
||||
127 1 if( bat_level <= C_bat_level_lowpower )
|
||||
128 1 {
|
||||
129 2 F_batlevel_low = 1;
|
||||
130 2 }
|
||||
131 1 else if( bat_level > (C_bat_level_lowpower + 1) )
|
||||
132 1 {
|
||||
133 2 F_batlevel_low = 0;
|
||||
134 2 }
|
||||
135 1 }
|
||||
136
|
||||
137 #endif
|
||||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 4
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION Com0010 (BEGIN)
|
||||
0000 L?0017:
|
||||
0000 EF MOV A,R7
|
||||
0001 25E0 ADD A,ACC
|
||||
0003 2400 R ADD A,#LOW Boost_batlevel_Threshold
|
||||
0005 F8 MOV R0,A
|
||||
0006 E6 MOV A,@R0
|
||||
0007 FC MOV R4,A
|
||||
0008 08 INC R0
|
||||
0009 E6 MOV A,@R0
|
||||
000A 22 RET
|
||||
; FUNCTION Com0010 (END)
|
||||
|
||||
; FUNCTION check_bat_level (BEGIN)
|
||||
; SOURCE LINE # 70
|
||||
; SOURCE LINE # 71
|
||||
; SOURCE LINE # 72
|
||||
;---- Variable 'i' assigned to Register 'R7' ----
|
||||
0000 E4 CLR A
|
||||
0001 FF MOV R7,A
|
||||
; SOURCE LINE # 75
|
||||
0002 ?C0001:
|
||||
; SOURCE LINE # 76
|
||||
; SOURCE LINE # 85
|
||||
0002 E5E6 MOV A,CHIP_STA4
|
||||
0004 30E715 JNB ACC.7,?C0004
|
||||
; SOURCE LINE # 86
|
||||
; SOURCE LINE # 87
|
||||
0007 120000 R LCALL L?0017
|
||||
000A 2432 ADD A,#032H
|
||||
000C FD MOV R5,A
|
||||
000D E4 CLR A
|
||||
000E 3C ADDC A,R4
|
||||
000F FC MOV R4,A
|
||||
0010 C3 CLR C
|
||||
0011 7800 E MOV R0,#LOW Vbat_Adc+01H
|
||||
0013 E6 MOV A,@R0
|
||||
0014 9D SUBB A,R5
|
||||
0015 18 DEC R0
|
||||
0016 E6 MOV A,@R0
|
||||
0017 9C SUBB A,R4
|
||||
0018 5010 JNC ?C0003
|
||||
; SOURCE LINE # 88
|
||||
001A 8012 SJMP ?C0002
|
||||
; SOURCE LINE # 89
|
||||
001C ?C0004:
|
||||
; SOURCE LINE # 91
|
||||
; SOURCE LINE # 92
|
||||
001C 120000 R LCALL L?0017
|
||||
001F FD MOV R5,A
|
||||
0020 C3 CLR C
|
||||
0021 7800 E MOV R0,#LOW Vbat_Adc+01H
|
||||
0023 E6 MOV A,@R0
|
||||
0024 9D SUBB A,R5
|
||||
0025 18 DEC R0
|
||||
0026 E6 MOV A,@R0
|
||||
0027 9C SUBB A,R4
|
||||
0028 4004 JC ?C0002
|
||||
; SOURCE LINE # 93
|
||||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 5
|
||||
|
||||
; SOURCE LINE # 94
|
||||
; SOURCE LINE # 95
|
||||
; SOURCE LINE # 96
|
||||
; SOURCE LINE # 98
|
||||
002A ?C0003:
|
||||
002A 0F INC R7
|
||||
002B BF0AD4 CJNE R7,#0AH,?C0001
|
||||
002E ?C0002:
|
||||
; SOURCE LINE # 101
|
||||
002E 7800 R MOV R0,#LOW bat_level
|
||||
0030 E6 MOV A,@R0
|
||||
0031 FE MOV R6,A
|
||||
0032 EF MOV A,R7
|
||||
0033 D3 SETB C
|
||||
0034 9E SUBB A,R6
|
||||
0035 4004 JC ?C0008
|
||||
; SOURCE LINE # 102
|
||||
; SOURCE LINE # 103
|
||||
0037 18 DEC R0
|
||||
0038 06 INC @R0
|
||||
; SOURCE LINE # 104
|
||||
0039 8003 SJMP ?C0009
|
||||
003B ?C0008:
|
||||
; SOURCE LINE # 106
|
||||
; SOURCE LINE # 107
|
||||
003B 7800 R MOV R0,#LOW offset_bat_level
|
||||
003D 16 DEC @R0
|
||||
; SOURCE LINE # 108
|
||||
003E ?C0009:
|
||||
; SOURCE LINE # 111
|
||||
003E 7800 R MOV R0,#LOW offset_bat_level
|
||||
0040 E6 MOV A,@R0
|
||||
0041 FE MOV R6,A
|
||||
0042 D3 SETB C
|
||||
0043 9432 SUBB A,#032H
|
||||
0045 5006 JNC ?C0011
|
||||
0047 EE MOV A,R6
|
||||
0048 C3 CLR C
|
||||
0049 940A SUBB A,#0AH
|
||||
004B 5007 JNC ?C0010
|
||||
004D ?C0011:
|
||||
; SOURCE LINE # 112
|
||||
; SOURCE LINE # 114
|
||||
004D 7800 R MOV R0,#LOW bat_level
|
||||
004F A607 MOV @R0,AR7
|
||||
; SOURCE LINE # 115
|
||||
0051 18 DEC R0
|
||||
0052 761E MOV @R0,#01EH
|
||||
; SOURCE LINE # 116
|
||||
0054 ?C0010:
|
||||
; SOURCE LINE # 127
|
||||
0054 7800 R MOV R0,#LOW bat_level
|
||||
0056 E6 MOV A,@R0
|
||||
0057 FF MOV R7,A
|
||||
0058 D3 SETB C
|
||||
0059 9401 SUBB A,#01H
|
||||
005B 5003 JNC ?C0012
|
||||
; SOURCE LINE # 128
|
||||
; SOURCE LINE # 129
|
||||
005D D200 R SETB F_batlevel_low
|
||||
; SOURCE LINE # 130
|
||||
005F 22 RET
|
||||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 6
|
||||
|
||||
0060 ?C0012:
|
||||
; SOURCE LINE # 131
|
||||
0060 EF MOV A,R7
|
||||
0061 D3 SETB C
|
||||
0062 9402 SUBB A,#02H
|
||||
0064 4002 JC ?C0015
|
||||
; SOURCE LINE # 132
|
||||
; SOURCE LINE # 133
|
||||
0066 C200 R CLR F_batlevel_low
|
||||
; SOURCE LINE # 134
|
||||
; SOURCE LINE # 135
|
||||
0068 ?C0015:
|
||||
0068 22 RET
|
||||
; FUNCTION check_bat_level (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 116 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 20 ----
|
||||
IDATA SIZE = 2 ----
|
||||
BIT SIZE = 1 ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
555
Project/Listings/charger_module.lst
Normal file
555
Project/Listings/charger_module.lst
Normal file
@ -0,0 +1,555 @@
|
||||
C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE CHARGER_MODULE
|
||||
OBJECT MODULE PLACED IN .\Objects\charger_module.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\charger\charger_module.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE
|
||||
-INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\in
|
||||
-c;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\user
|
||||
-app;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\L
|
||||
-istings\charger_module.lst) TABS(2) OBJECT(.\Objects\charger_module.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file charger_module.c
|
||||
5 * @brief charger module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/07/12 17:35:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/07/12 Alex build this file
|
||||
18 ******************************************************************************
|
||||
19 */
|
||||
20 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
21 #include "charger_module.h"
|
||||
22 #include "adc.h"
|
||||
23 #include "sys_tim.h"
|
||||
24 #include "discharge_module.h"
|
||||
25 #include "system.h"
|
||||
26 #include "vox_module.h"
|
||||
27 #include "led.h"
|
||||
28
|
||||
29 bit Charger_Done = 0;
|
||||
30
|
||||
31 #if CHARGER_ENABLE
|
||||
32 /******************************************************************************\
|
||||
33 Macro definitions
|
||||
34 \******************************************************************************/
|
||||
35 #define NTC_PRO_DEBOUNCE_TIM 10
|
||||
36
|
||||
37 /******************************************************************************\
|
||||
38 Variables definitions
|
||||
39 \******************************************************************************/
|
||||
40
|
||||
41 //idata TE_CHG_STA ChgStatus; // 系统状态定义
|
||||
42
|
||||
43
|
||||
44
|
||||
45 #ifdef ADC_NTC_ENABLE
|
||||
46
|
||||
47 bit NTC_Low_Pro_Flag = 0;
|
||||
48 bit NTC_High_Pro_Flag = 0;
|
||||
49
|
||||
50 #endif
|
||||
51 /******************************************************************************\
|
||||
C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 2
|
||||
|
||||
52 Functions definitions
|
||||
53 \******************************************************************************/
|
||||
54
|
||||
55 /*
|
||||
56 *******************************************************************************
|
||||
57 * void Charger_init(void)
|
||||
58 *
|
||||
59 * Description : Charger Initialization
|
||||
60 *
|
||||
61 * Arguments : NONE
|
||||
62
|
||||
63 * Returns : NONE
|
||||
64
|
||||
65 * Notes : NONE
|
||||
66 *
|
||||
67 *******************************************************************************
|
||||
68 */
|
||||
69 #if 0
|
||||
void Charger_Init(void)
|
||||
{
|
||||
SFRADDR = PMU_CTL1;
|
||||
SFRDATA |= 0x07; //电池低压检测 enable 信号;电池低压检测档位选择:3.3V
|
||||
/* Setting CV */
|
||||
REG_CHG2 = 0x00; //0:4.20V;1:4.35V
|
||||
/* Setting CHG Current */
|
||||
REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA
|
||||
|
||||
}
|
||||
#endif
|
||||
81
|
||||
82 /*
|
||||
83 *******************************************************************************
|
||||
84 * void Charger_Current_Set(void)
|
||||
85 *
|
||||
86 * Description : Charger Initialization
|
||||
87 *
|
||||
88 * Arguments : NONE
|
||||
89
|
||||
90 * Returns : NONE
|
||||
91
|
||||
92 * Notes : NONE
|
||||
93 *
|
||||
94 *******************************************************************************
|
||||
95 */
|
||||
96 #if 0
|
||||
void Charger_Current_Set(void)
|
||||
{
|
||||
uint16_t Charger_CurADC_Value = 0;
|
||||
/* 通过外部电阻ADC1值设置充电电流值 */
|
||||
Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1);
|
||||
|
||||
|
||||
/* Setting CV */
|
||||
REG_CHG2 = 0x00; //0:4.20V;1:4.35V
|
||||
/* Setting CHG Current */
|
||||
REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA
|
||||
|
||||
}
|
||||
#endif
|
||||
111
|
||||
112 /*
|
||||
113 *******************************************************************************
|
||||
C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 3
|
||||
|
||||
114 * uint8_t Charger_NTC_Control(uint8_t Charge_sta)
|
||||
115 *
|
||||
116 * Description : Charger NTC Control
|
||||
117 * NTC 支持 103 和 104 电阻,NTC 温度检测由软件通过 ADC 采集 NTC 引脚电压。
|
||||
118 * 如果支持电量计温度检测线性化,支持电量计方案 103 的 NTC 需要并一个 8.2k
|
||||
119
|
||||
120 * 电阻(20uA 电流,103 NTC 需要串联 10k 电阻),104 的 NTC 并联 82k 电阻。
|
||||
121 * 在使能充电前,软件先检测NTC 温度,如果 NTC 浮空,屏蔽 NTC 功能,
|
||||
122 * 并锁定;如果 NTC 下拉到 0V,关闭充电和放电。NTC 保护后,软件关闭充电,
|
||||
123 * 温度恢复正常并持续 100ms,再继续充电。
|
||||
124 *
|
||||
125 * Arguments : NTC_Protect_Type_e NTC_Type:Shield 、JEITA or IEC;Charge_sta:Charge or not
|
||||
126
|
||||
127 * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC)
|
||||
128
|
||||
129 * Notes : NONE
|
||||
130 *
|
||||
131 *******************************************************************************
|
||||
132 */
|
||||
133 #ifdef ADC_NTC_ENABLE
|
||||
134 uint8_t PMU_NTC_Control(void)
|
||||
135 {
|
||||
136 1 uint16_t NTC_Adc = 0;
|
||||
137 1 uint8_t NTC_Flag = TRUE;
|
||||
138 1
|
||||
139 1 NTC_Adc = ADC_NTC_Value();
|
||||
140 1
|
||||
141 1 if(NTC_Adc >= 3700) ////屏蔽NTC功能,NTC浮空,屏蔽 NTC 功能,并锁定。
|
||||
142 1 {
|
||||
143 2 return TRUE;
|
||||
144 2 }
|
||||
145 1
|
||||
146 1 if(CHIP_STA4 & 0x80)
|
||||
147 1 {
|
||||
148 2 if(NTC_Adc <= T_0C && NTC_Adc > T_45C) //正常充电
|
||||
149 2 {
|
||||
150 3 if(NTC_Low_Pro_Flag)
|
||||
151 3 {
|
||||
152 4 if( NTC_Adc < T_3C )
|
||||
153 4 {
|
||||
154 5 NTC_Low_Pro_Flag = 0;
|
||||
155 5 NTC_Flag = TRUE;
|
||||
156 5 }
|
||||
157 4 else
|
||||
158 4 {
|
||||
159 5 NTC_Flag = FALSE;
|
||||
160 5 }
|
||||
161 4 }
|
||||
162 3
|
||||
163 3 if(NTC_High_Pro_Flag)
|
||||
164 3 {
|
||||
165 4 if( NTC_Adc > T_42C )
|
||||
166 4 {
|
||||
167 5 NTC_High_Pro_Flag = 0;
|
||||
168 5 NTC_Flag = TRUE;
|
||||
169 5 }
|
||||
170 4 else
|
||||
171 4 {
|
||||
172 5 NTC_Flag = FALSE;
|
||||
173 5 }
|
||||
174 4 }
|
||||
175 3 }
|
||||
C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 4
|
||||
|
||||
176 2 else //异常不充电
|
||||
177 2 {
|
||||
178 3
|
||||
179 3 if(NTC_Adc > T_0C)
|
||||
180 3 {
|
||||
181 4 NTC_Low_Pro_Flag = 1;
|
||||
182 4 }
|
||||
183 3 else
|
||||
184 3 if(NTC_Adc < T_45C)
|
||||
185 3 {
|
||||
186 4 NTC_High_Pro_Flag = 1;
|
||||
187 4 }
|
||||
188 3
|
||||
189 3 CHG_CTL &= ~0x01; //Disable Charger.
|
||||
190 3
|
||||
191 3 NTC_Flag = FALSE;
|
||||
192 3 }
|
||||
193 2 }
|
||||
194 1
|
||||
195 1 return NTC_Flag;
|
||||
196 1 }
|
||||
197 #endif
|
||||
198 /*
|
||||
199 *******************************************************************************
|
||||
200 * void Charger_Handler(void)
|
||||
201 *
|
||||
202 * Description : Charger Handle. ---- 充电过程除了根据 NTC 动态调节充电电流和截止电压外,其他由硬件控制。<E588B6>
|
||||
-涞绻<E6B69E><E7BBBB>
|
||||
203 发生异常,硬件进行相应处理,并发送标志位,软件可以进行相应处理。
|
||||
204 *
|
||||
205 * Arguments : NONE
|
||||
206
|
||||
207 * Returns : NONE
|
||||
208
|
||||
209 * Notes : NONE
|
||||
210 *
|
||||
211 *******************************************************************************
|
||||
212 */
|
||||
213 /*
|
||||
214 1、充电超时:充电超时后,软件关闭充电使能,等待VIN拔出。
|
||||
215 */
|
||||
216 void Charger_Handler(void)
|
||||
217 {
|
||||
218 1 #if 1
|
||||
219 1 if( !(CHIP_STA4 & 0x80) ) //未检测到Power good,则关闭Charger使能后返回。
|
||||
220 1 {
|
||||
221 2 CHG_CTL &= ~0x01; //Disable Charger
|
||||
222 2 IRQ_FLAG9 = 0x10; //未充电,需清Charg complete interrupt中断
|
||||
223 2 Charger_Done = 0;
|
||||
224 2 return;
|
||||
225 2 }
|
||||
226 1
|
||||
227 1 /*各项保护都无需软件处理,只处理充电超时,超时后需要等VBUS重新插拔后才重新开始Charger流程。*/
|
||||
228 1 if ( IRQ_FLAG9 & 0x0C ) //充电超时,Tricle charg and Fast charge timeout
|
||||
229 1 {
|
||||
230 2 CHG_CTL &= ~0x01; //Disable Charger
|
||||
231 2 if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt
|
||||
232 2 {
|
||||
233 3 IRQ_FLAG9 = 0x0C;
|
||||
234 3 IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt
|
||||
235 3 }
|
||||
236 2 return;
|
||||
C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 5
|
||||
|
||||
237 2 }
|
||||
238 1 else /*充电未超时,存在Plug则清Plugin\Plugout int*/
|
||||
239 1 {
|
||||
240 2 if( IRQ_FLAG10 & 0xC0 )
|
||||
241 2 {
|
||||
242 3 IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt
|
||||
243 3 }
|
||||
244 2 }
|
||||
245 1
|
||||
246 1 #ifdef ADC_NTC_ENABLE
|
||||
247 1 /*NTC Handle*/ //使能Charger前先检测NTC温度,异常就不开充电。(CHIP_STA4 & 0x80):PG
|
||||
248 1 if( PMU_NTC_Control() == FALSE ) //NTC保护,不充电。
|
||||
249 1 {
|
||||
250 2 return;
|
||||
251 2 }
|
||||
252 1 #endif
|
||||
253 1
|
||||
254 1 if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt
|
||||
255 1 {
|
||||
256 2 #if ADC_ENABLE
|
||||
257 2
|
||||
258 2 #ifdef _DEBUG_CHARGER
|
||||
printf("Chg Done\r\n");
|
||||
#endif
|
||||
261 2 if( Vbat_Adc < BAT_RECHARG )
|
||||
262 2 {
|
||||
263 3 //CHG_CTL |= 0x01; //Enable Charger
|
||||
264 3 IRQ_FLAG9 = 0x10;
|
||||
265 3 #ifdef _DEBUG_CHARGER
|
||||
printf("En Chg\r\n");
|
||||
#endif
|
||||
268 3 }
|
||||
269 2 else
|
||||
270 2 {
|
||||
271 3 CHG_CTL &= ~0x01; //Disable Charger
|
||||
272 3 #ifdef _DEBUG_CHARGER
|
||||
printf("Dis Chg\r\n");
|
||||
#endif
|
||||
275 3 }
|
||||
276 2 Charger_Done = 1;
|
||||
277 2
|
||||
278 2 #endif
|
||||
279 2 }
|
||||
280 1 else
|
||||
281 1 {
|
||||
282 2 CHG_CTL |= 0x01; //Enable Charger
|
||||
283 2 Charger_Done = 0;
|
||||
284 2 }
|
||||
285 1 #endif
|
||||
286 1 }
|
||||
287
|
||||
288 #endif
|
||||
289
|
||||
C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 6
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION PMU_NTC_Control (BEGIN)
|
||||
; SOURCE LINE # 134
|
||||
; SOURCE LINE # 135
|
||||
; SOURCE LINE # 136
|
||||
;---- Variable 'NTC_Adc' assigned to Register 'R6/R7' ----
|
||||
0000 E4 CLR A
|
||||
0001 FF MOV R7,A
|
||||
0002 FE MOV R6,A
|
||||
; SOURCE LINE # 137
|
||||
0003 750001 R MOV NTC_Flag,#01H
|
||||
; SOURCE LINE # 139
|
||||
0006 120000 E LCALL ADC_NTC_Value
|
||||
; SOURCE LINE # 141
|
||||
0009 C3 CLR C
|
||||
000A EF MOV A,R7
|
||||
000B 9474 SUBB A,#074H
|
||||
000D EE MOV A,R6
|
||||
000E 940E SUBB A,#0EH
|
||||
0010 4003 JC ?C0001
|
||||
; SOURCE LINE # 142
|
||||
; SOURCE LINE # 143
|
||||
0012 7F01 MOV R7,#01H
|
||||
0014 22 RET
|
||||
; SOURCE LINE # 144
|
||||
0015 ?C0001:
|
||||
; SOURCE LINE # 146
|
||||
0015 E5E6 MOV A,CHIP_STA4
|
||||
0017 30E757 JNB ACC.7,?C0003
|
||||
; SOURCE LINE # 147
|
||||
; SOURCE LINE # 148
|
||||
001A D3 SETB C
|
||||
001B EF MOV A,R7
|
||||
001C 9436 SUBB A,#036H
|
||||
001E EE MOV A,R6
|
||||
001F 9405 SUBB A,#05H
|
||||
0021 5030 JNC ?C0004
|
||||
0023 EF MOV A,R7
|
||||
0024 9422 SUBB A,#022H
|
||||
0026 EE MOV A,R6
|
||||
0027 9402 SUBB A,#02H
|
||||
0029 4028 JC ?C0004
|
||||
; SOURCE LINE # 149
|
||||
; SOURCE LINE # 150
|
||||
002B 300012 R JNB NTC_Low_Pro_Flag,?C0005
|
||||
; SOURCE LINE # 151
|
||||
; SOURCE LINE # 152
|
||||
002E EF MOV A,R7
|
||||
002F 9414 SUBB A,#014H
|
||||
0031 EE MOV A,R6
|
||||
0032 9405 SUBB A,#05H
|
||||
0034 5007 JNC ?C0006
|
||||
; SOURCE LINE # 153
|
||||
; SOURCE LINE # 154
|
||||
0036 C200 R CLR NTC_Low_Pro_Flag
|
||||
; SOURCE LINE # 155
|
||||
0038 750001 R MOV NTC_Flag,#01H
|
||||
; SOURCE LINE # 156
|
||||
003B 8003 SJMP ?C0005
|
||||
003D ?C0006:
|
||||
C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 7
|
||||
|
||||
; SOURCE LINE # 158
|
||||
; SOURCE LINE # 159
|
||||
003D E4 CLR A
|
||||
003E F500 R MOV NTC_Flag,A
|
||||
; SOURCE LINE # 160
|
||||
; SOURCE LINE # 161
|
||||
0040 ?C0005:
|
||||
; SOURCE LINE # 163
|
||||
0040 30002E R JNB NTC_High_Pro_Flag,?C0003
|
||||
; SOURCE LINE # 164
|
||||
; SOURCE LINE # 165
|
||||
0043 D3 SETB C
|
||||
0044 EF MOV A,R7
|
||||
0045 9444 SUBB A,#044H
|
||||
0047 EE MOV A,R6
|
||||
0048 9402 SUBB A,#02H
|
||||
004A 4022 JC ?C0026
|
||||
; SOURCE LINE # 166
|
||||
; SOURCE LINE # 167
|
||||
004C C200 R CLR NTC_High_Pro_Flag
|
||||
; SOURCE LINE # 168
|
||||
004E 750001 R MOV NTC_Flag,#01H
|
||||
; SOURCE LINE # 169
|
||||
0051 801E SJMP ?C0003
|
||||
0053 ?C0004:
|
||||
; SOURCE LINE # 177
|
||||
; SOURCE LINE # 179
|
||||
0053 D3 SETB C
|
||||
0054 EF MOV A,R7
|
||||
0055 9436 SUBB A,#036H
|
||||
0057 EE MOV A,R6
|
||||
0058 9405 SUBB A,#05H
|
||||
005A 4004 JC ?C0012
|
||||
; SOURCE LINE # 180
|
||||
; SOURCE LINE # 181
|
||||
005C D200 R SETB NTC_Low_Pro_Flag
|
||||
; SOURCE LINE # 182
|
||||
005E 800B SJMP ?C0013
|
||||
0060 ?C0012:
|
||||
; SOURCE LINE # 184
|
||||
0060 C3 CLR C
|
||||
0061 EF MOV A,R7
|
||||
0062 9422 SUBB A,#022H
|
||||
0064 EE MOV A,R6
|
||||
0065 9402 SUBB A,#02H
|
||||
0067 5002 JNC ?C0013
|
||||
; SOURCE LINE # 185
|
||||
; SOURCE LINE # 186
|
||||
0069 D200 R SETB NTC_High_Pro_Flag
|
||||
; SOURCE LINE # 187
|
||||
006B ?C0013:
|
||||
; SOURCE LINE # 189
|
||||
006B 53B3FE ANL CHG_CTL,#0FEH
|
||||
; SOURCE LINE # 191
|
||||
006E ?C0026:
|
||||
006E E4 CLR A
|
||||
006F F500 R MOV NTC_Flag,A
|
||||
; SOURCE LINE # 192
|
||||
; SOURCE LINE # 193
|
||||
0071 ?C0003:
|
||||
; SOURCE LINE # 195
|
||||
0071 AF00 R MOV R7,NTC_Flag
|
||||
C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 8
|
||||
|
||||
; SOURCE LINE # 196
|
||||
0073 ?C0002:
|
||||
0073 22 RET
|
||||
; FUNCTION PMU_NTC_Control (END)
|
||||
|
||||
; FUNCTION Charger_Handler (BEGIN)
|
||||
; SOURCE LINE # 216
|
||||
; SOURCE LINE # 217
|
||||
; SOURCE LINE # 219
|
||||
0000 E5E6 MOV A,CHIP_STA4
|
||||
0002 20E709 JB ACC.7,?C0015
|
||||
; SOURCE LINE # 220
|
||||
; SOURCE LINE # 221
|
||||
0005 53B3FE ANL CHG_CTL,#0FEH
|
||||
; SOURCE LINE # 222
|
||||
0008 75F210 MOV IRQ_FLAG9,#010H
|
||||
; SOURCE LINE # 223
|
||||
000B C200 R CLR Charger_Done
|
||||
000D 22 RET
|
||||
; SOURCE LINE # 225
|
||||
000E ?C0015:
|
||||
; SOURCE LINE # 228
|
||||
000E E5F2 MOV A,IRQ_FLAG9
|
||||
0010 540C ANL A,#0CH
|
||||
0012 6010 JZ ?C0017
|
||||
; SOURCE LINE # 229
|
||||
; SOURCE LINE # 230
|
||||
0014 53B3FE ANL CHG_CTL,#0FEH
|
||||
; SOURCE LINE # 231
|
||||
0017 E5F3 MOV A,IRQ_FLAG10
|
||||
0019 54C0 ANL A,#0C0H
|
||||
001B 6037 JZ ?C0016
|
||||
; SOURCE LINE # 232
|
||||
; SOURCE LINE # 233
|
||||
001D 75F20C MOV IRQ_FLAG9,#0CH
|
||||
; SOURCE LINE # 234
|
||||
0020 75F3C0 MOV IRQ_FLAG10,#0C0H
|
||||
; SOURCE LINE # 235
|
||||
0023 22 RET
|
||||
; SOURCE LINE # 237
|
||||
0024 ?C0017:
|
||||
; SOURCE LINE # 239
|
||||
; SOURCE LINE # 240
|
||||
0024 E5F3 MOV A,IRQ_FLAG10
|
||||
0026 54C0 ANL A,#0C0H
|
||||
0028 6003 JZ ?C0019
|
||||
; SOURCE LINE # 241
|
||||
; SOURCE LINE # 242
|
||||
002A 75F3C0 MOV IRQ_FLAG10,#0C0H
|
||||
; SOURCE LINE # 243
|
||||
; SOURCE LINE # 244
|
||||
002D ?C0019:
|
||||
; SOURCE LINE # 248
|
||||
002D 120000 R LCALL PMU_NTC_Control
|
||||
0030 EF MOV A,R7
|
||||
0031 6021 JZ ?C0016
|
||||
; SOURCE LINE # 249
|
||||
; SOURCE LINE # 251
|
||||
; SOURCE LINE # 254
|
||||
0033 E5F2 MOV A,IRQ_FLAG9
|
||||
0035 30E417 JNB ACC.4,?C0022
|
||||
; SOURCE LINE # 255
|
||||
C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 9
|
||||
|
||||
; SOURCE LINE # 261
|
||||
0038 C3 CLR C
|
||||
0039 7800 E MOV R0,#LOW Vbat_Adc+01H
|
||||
003B E6 MOV A,@R0
|
||||
003C 94EB SUBB A,#0EBH
|
||||
003E 18 DEC R0
|
||||
003F E6 MOV A,@R0
|
||||
0040 940F SUBB A,#0FH
|
||||
0042 5005 JNC ?C0023
|
||||
; SOURCE LINE # 262
|
||||
; SOURCE LINE # 264
|
||||
0044 75F210 MOV IRQ_FLAG9,#010H
|
||||
; SOURCE LINE # 268
|
||||
0047 8003 SJMP ?C0024
|
||||
0049 ?C0023:
|
||||
; SOURCE LINE # 270
|
||||
; SOURCE LINE # 271
|
||||
0049 53B3FE ANL CHG_CTL,#0FEH
|
||||
; SOURCE LINE # 275
|
||||
004C ?C0024:
|
||||
; SOURCE LINE # 276
|
||||
004C D200 R SETB Charger_Done
|
||||
; SOURCE LINE # 279
|
||||
004E 22 RET
|
||||
004F ?C0022:
|
||||
; SOURCE LINE # 281
|
||||
; SOURCE LINE # 282
|
||||
004F 43B301 ORL CHG_CTL,#01H
|
||||
; SOURCE LINE # 283
|
||||
0052 C200 R CLR Charger_Done
|
||||
; SOURCE LINE # 284
|
||||
; SOURCE LINE # 286
|
||||
0054 ?C0016:
|
||||
0054 22 RET
|
||||
; FUNCTION Charger_Handler (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 201 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- 1
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = 3 ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
313
Project/Listings/discharge_module.lst
Normal file
313
Project/Listings/discharge_module.lst
Normal file
@ -0,0 +1,313 @@
|
||||
C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE DISCHARGE_MODULE
|
||||
OBJECT MODULE PLACED IN .\Objects\discharge_module.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\discharge\discharge_module.c ROM(COMPACT) OPTIMIZE(9,SIZE) BRO
|
||||
-WSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrIn
|
||||
-c\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\
|
||||
-userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT
|
||||
-(.\Listings\discharge_module.lst) TABS(2) OBJECT(.\Objects\discharge_module.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file discharge_module.c
|
||||
5 * @brief discharge module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/07/12 17:35:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/07/12 Alex build this file
|
||||
18 ******************************************************************************
|
||||
19 */
|
||||
20 #include "discharge_module.h"
|
||||
21 #include "vox_module.h"
|
||||
22 #include "adc.h"
|
||||
23 #include "charger_module.h"
|
||||
24 #include "sys_tim.h"
|
||||
25 #include "system.h"
|
||||
26 #include "led.h"
|
||||
27
|
||||
28 bit gBoost_Prepared_Flag = 0; //Boost满足开启条件。
|
||||
29
|
||||
30 #if DISCHARGE_ENABLE
|
||||
31 /******************************************************************************\
|
||||
32 Macro definitions
|
||||
33 \******************************************************************************/
|
||||
34
|
||||
35 /******************************************************************************\
|
||||
36 Variables definitions
|
||||
37 \******************************************************************************/
|
||||
38
|
||||
39
|
||||
40
|
||||
41 bit gBoost_UVLO_Flag = 0;
|
||||
42
|
||||
43 /******************************************************************************\
|
||||
44 Functions definitions
|
||||
45 \******************************************************************************/
|
||||
46
|
||||
47 #if 0
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void DisCharge_Boost_Open(void)
|
||||
*
|
||||
C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 2
|
||||
|
||||
* Description : Boost Open
|
||||
* VIN 存在时,Boost 在电池电压高于 UVLO(硬件关闭 2.8/3.0V,硬件清 boost 使能。开
|
||||
* 软件实现,有 VIN,3.6V,无 VIN,3.3V)和电池存在的情况下才能开启。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void DisCharge_Boost_Open(void)
|
||||
{
|
||||
if( gBoost_Prepared_Flag ) //Boost需满足开启条件
|
||||
{
|
||||
BST_EN = 1; //Boost Enable;异常时由硬件主动关闭。
|
||||
|
||||
#ifdef _DEBUG_DISCHARGE
|
||||
printf("Bst Open\r\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void DisCharge_Boost_Close(void)
|
||||
*
|
||||
* Description : Boost Close;主要是出现异常时由硬件主动关闭,软件在电池LOW电量状态下,是否需要关闭boost输<74>
|
||||
-觯<>
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void DisCharge_Boost_Close(void)
|
||||
{
|
||||
if( (BST_EN & 0x01) && gBoost_Prepared_Flag )
|
||||
{
|
||||
BST_EN = 0; //Boost Disable
|
||||
gBoost_Prepared_Flag = 0;
|
||||
|
||||
#ifdef _DEBUG_DISCHARGE
|
||||
printf("Bst Close\r\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
103 /*
|
||||
104 *******************************************************************************
|
||||
105 * void DisCharge_Handler(void)
|
||||
106 *
|
||||
107 * Description : Boost放电的保护功能包括:输出短路保护,电池 UVLO 保护,放电过流保护,过温保护。
|
||||
108 *
|
||||
109 * Arguments :
|
||||
110
|
||||
111 * Returns :
|
||||
112
|
||||
C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 3
|
||||
|
||||
113 * Notes :
|
||||
114 *
|
||||
115 *******************************************************************************
|
||||
116 */
|
||||
117
|
||||
118 void DisCharge_Handler(void)
|
||||
119 {
|
||||
120 1 /*放电过流保护 --- 硬件实现*/
|
||||
121 1 #if 0
|
||||
gBoost_Prepared_Flag = 1;
|
||||
#else
|
||||
124 1 /*过温保护 --- 硬件实现*/
|
||||
125 1 if( CHIP_STA3 & 0x02 )
|
||||
126 1 {
|
||||
127 2 gBoost_Prepared_Flag = 0;
|
||||
128 2 return;
|
||||
129 2 }
|
||||
130 1
|
||||
131 1 /*Boost Input UVLO 硬件实现*/
|
||||
132 1 if( (CHIP_STA0 & 0x80) ) //用于清软件标志位。
|
||||
133 1 {
|
||||
134 2 gBoost_Prepared_Flag = 0;
|
||||
135 2 gBoost_UVLO_Flag = 1;
|
||||
136 2 return;
|
||||
137 2 }
|
||||
138 1
|
||||
139 1 /*输出短路保护 (使用中断标志位,Boost短路中断发生后会锁存,需要写1清零。)-- 短路保护后一直打嗝或者打嗝BOO
|
||||
-ST_HICCUP_TIM次之后disable boost,打嗝时间 250ms(软件实现)。*/
|
||||
140 1 if( IRQ_FLAG0 & 0x01 )
|
||||
141 1 {
|
||||
142 2 #ifdef _DEBUG_DISCHARGE
|
||||
printf("Boost Pro Output Short!\r\n");
|
||||
#endif
|
||||
145 2 gBoost_Prepared_Flag = 0;
|
||||
146 2
|
||||
147 2 //一直打嗝
|
||||
148 2 if( F_sys_tim_250ms )
|
||||
149 2 {
|
||||
150 3 F_sys_tim_250ms = 0;
|
||||
151 3 IRQ_FLAG0 = 0x01;
|
||||
152 3
|
||||
153 3 BST_EN = 1; //250ms定时开一次Boost
|
||||
154 3 }
|
||||
155 2 return;
|
||||
156 2 }
|
||||
157 1
|
||||
158 1 gBoost_Prepared_Flag = 1;
|
||||
159 1
|
||||
160 1 #if ADC_ENABLE
|
||||
161 1 /*
|
||||
162 1 VIN 存在时,Boost 在电池电压高于 UVLO(硬件关闭 2.8/3.0V,硬件清 boost 使能。开
|
||||
163 1 软件实现,有 VIN,3.6V,无 VIN,3.3V)和电池存在的情况下才能开启。
|
||||
164 1 软件上只作有 VIN,3.6V开boost,无 VIN,3.3V开boost逻辑。
|
||||
165 1 只关注VIN存在时的UVLO恢复Boost情况。无VIN情况下由硬件处理。
|
||||
166 1 */
|
||||
167 1 if ( gBoost_UVLO_Flag )
|
||||
168 1 {
|
||||
169 2 if( CHIP_STA4 & 0x80 ) //Power GOOD
|
||||
170 2 {
|
||||
171 3 if( Vbat_Adc >= OPEN_BOOST_VIN )
|
||||
172 3 {
|
||||
173 4 gBoost_Prepared_Flag = 1;
|
||||
C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 4
|
||||
|
||||
174 4 gBoost_UVLO_Flag = 0;
|
||||
175 4 }
|
||||
176 3 else
|
||||
177 3 {
|
||||
178 4 BST_EN = 0; //Boost Disable
|
||||
179 4 gBoost_Prepared_Flag = 0;
|
||||
180 4 }
|
||||
181 3 }
|
||||
182 2 }
|
||||
183 1
|
||||
184 1 #endif
|
||||
185 1 #endif
|
||||
186 1 }
|
||||
187
|
||||
188 #endif
|
||||
189
|
||||
C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 5
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION DisCharge_Handler (BEGIN)
|
||||
; SOURCE LINE # 118
|
||||
; SOURCE LINE # 119
|
||||
; SOURCE LINE # 125
|
||||
0000 E5E5 MOV A,CHIP_STA3
|
||||
0002 30E103 JNB ACC.1,?C0001
|
||||
; SOURCE LINE # 126
|
||||
; SOURCE LINE # 127
|
||||
0005 C200 R CLR gBoost_Prepared_Flag
|
||||
0007 22 RET
|
||||
; SOURCE LINE # 129
|
||||
0008 ?C0001:
|
||||
; SOURCE LINE # 132
|
||||
0008 E5E2 MOV A,CHIP_STA0
|
||||
000A 30E705 JNB ACC.7,?C0003
|
||||
; SOURCE LINE # 133
|
||||
; SOURCE LINE # 134
|
||||
000D C200 R CLR gBoost_Prepared_Flag
|
||||
; SOURCE LINE # 135
|
||||
000F D200 R SETB gBoost_UVLO_Flag
|
||||
0011 22 RET
|
||||
; SOURCE LINE # 137
|
||||
0012 ?C0003:
|
||||
; SOURCE LINE # 140
|
||||
0012 E5E8 MOV A,IRQ_FLAG0
|
||||
0014 30E00E JNB ACC.0,?C0004
|
||||
; SOURCE LINE # 141
|
||||
; SOURCE LINE # 145
|
||||
0017 C200 R CLR gBoost_Prepared_Flag
|
||||
; SOURCE LINE # 148
|
||||
0019 300029 E JNB F_sys_tim_250ms,?C0002
|
||||
; SOURCE LINE # 149
|
||||
; SOURCE LINE # 150
|
||||
001C C200 E CLR F_sys_tim_250ms
|
||||
; SOURCE LINE # 151
|
||||
001E 75E801 MOV IRQ_FLAG0,#01H
|
||||
; SOURCE LINE # 153
|
||||
0021 75B501 MOV BST_EN,#01H
|
||||
; SOURCE LINE # 154
|
||||
0024 22 RET
|
||||
; SOURCE LINE # 156
|
||||
0025 ?C0004:
|
||||
; SOURCE LINE # 158
|
||||
0025 D200 R SETB gBoost_Prepared_Flag
|
||||
; SOURCE LINE # 167
|
||||
0027 30001B R JNB gBoost_UVLO_Flag,?C0002
|
||||
; SOURCE LINE # 168
|
||||
; SOURCE LINE # 169
|
||||
002A E5E6 MOV A,CHIP_STA4
|
||||
002C 30E716 JNB ACC.7,?C0002
|
||||
; SOURCE LINE # 170
|
||||
; SOURCE LINE # 171
|
||||
002F C3 CLR C
|
||||
0030 7800 E MOV R0,#LOW Vbat_Adc+01H
|
||||
0032 E6 MOV A,@R0
|
||||
0033 9410 SUBB A,#010H
|
||||
0035 18 DEC R0
|
||||
0036 E6 MOV A,@R0
|
||||
0037 940E SUBB A,#0EH
|
||||
C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 6
|
||||
|
||||
0039 4005 JC ?C0008
|
||||
; SOURCE LINE # 172
|
||||
; SOURCE LINE # 173
|
||||
003B D200 R SETB gBoost_Prepared_Flag
|
||||
; SOURCE LINE # 174
|
||||
003D C200 R CLR gBoost_UVLO_Flag
|
||||
; SOURCE LINE # 175
|
||||
003F 22 RET
|
||||
0040 ?C0008:
|
||||
; SOURCE LINE # 177
|
||||
; SOURCE LINE # 178
|
||||
0040 E4 CLR A
|
||||
0041 F5B5 MOV BST_EN,A
|
||||
; SOURCE LINE # 179
|
||||
0043 C200 R CLR gBoost_Prepared_Flag
|
||||
; SOURCE LINE # 180
|
||||
; SOURCE LINE # 181
|
||||
; SOURCE LINE # 182
|
||||
; SOURCE LINE # 186
|
||||
0045 ?C0002:
|
||||
0045 22 RET
|
||||
; FUNCTION DisCharge_Handler (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 70 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = 2 ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
100
Project/Listings/gpio.lst
Normal file
100
Project/Listings/gpio.lst
Normal file
@ -0,0 +1,100 @@
|
||||
C51 COMPILER V9.57.0.0 GPIO 06/14/2024 11:08:36 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE GPIO
|
||||
OBJECT MODULE PLACED IN .\Objects\gpio.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\gpio\gpio.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\Usr
|
||||
-Inc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\k
|
||||
-ey;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc
|
||||
-\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\gpio.
|
||||
-lst) TABS(2) OBJECT(.\Objects\gpio.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file gpio.c
|
||||
5 * @brief gpio module
|
||||
6 * @ic TP3102
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/08/05 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/08/05 Alex build this file
|
||||
18 ******************************************************************************/
|
||||
19 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
20 #include "gpio.h"
|
||||
21 #include "sleep.h"
|
||||
22 #include "userapp.h"
|
||||
23 #include "led.h"
|
||||
24
|
||||
25
|
||||
26 /******************************************************************************\
|
||||
27 Macro definitions
|
||||
28 \******************************************************************************/
|
||||
29
|
||||
30 /******************************************************************************\
|
||||
31 Variables definitions
|
||||
32 \******************************************************************************/
|
||||
33 //uint8_t System_Rst_Cnt = 0; //系统软复位定时器
|
||||
34
|
||||
35 /******************************************************************************\
|
||||
36 Functions definitions
|
||||
37 \******************************************************************************/
|
||||
38
|
||||
39 /*
|
||||
40 *******************************************************************************
|
||||
41 * void Gpio_Init(void)
|
||||
42 *
|
||||
43 * Description : gpio Initialization. --- 系统初始化调用。
|
||||
44 *
|
||||
45 * Arguments :
|
||||
46
|
||||
47 * Returns :
|
||||
48
|
||||
49 * Notes :
|
||||
50 *
|
||||
51 *******************************************************************************
|
||||
C51 COMPILER V9.57.0.0 GPIO 06/14/2024 11:08:36 PAGE 2
|
||||
|
||||
52 */
|
||||
53 #if 0
|
||||
void GPIO_Init(void)
|
||||
{
|
||||
/* GPIO */
|
||||
|
||||
// SFRADDR = P0_OE;
|
||||
// SFRDATA |= 0x1C; //P02,P03,P04设置成输出模式
|
||||
|
||||
SFRADDR = P1_OE;
|
||||
SFRDATA = 0x01;
|
||||
}
|
||||
#endif
|
||||
65
|
||||
66
|
||||
C51 COMPILER V9.57.0.0 GPIO 06/14/2024 11:08:36 PAGE 3
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
|
||||
|
||||
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. 0 WARNING(S), 0 ERROR(S)
|
257
Project/Listings/hall.lst
Normal file
257
Project/Listings/hall.lst
Normal file
@ -0,0 +1,257 @@
|
||||
C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE HALL
|
||||
OBJECT MODULE PLACED IN .\Objects\hall.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\hall\hall.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\Usr
|
||||
-Inc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\k
|
||||
-ey;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc
|
||||
-\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\hall.
|
||||
-lst) TABS(2) OBJECT(.\Objects\hall.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file hall.c
|
||||
5 * @brief hall module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/08/04 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/08/04 Alex build this file
|
||||
18 ******************************************************************************/
|
||||
19 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
20 #include "hall.h"
|
||||
21 #include "key.h"
|
||||
22 #include "led.h"
|
||||
23 #include "vox_module.h"
|
||||
24 #include "userapp.h"
|
||||
25 #include "charger_module.h"
|
||||
26
|
||||
27
|
||||
28
|
||||
29 /******************************************************************************\
|
||||
30 Macro definitions
|
||||
31 \******************************************************************************/
|
||||
32
|
||||
33 /******************************************************************************\
|
||||
34 Variables definitions
|
||||
35 \******************************************************************************/
|
||||
36 uint8_t Hall_Sta_bk = 0xff;
|
||||
37
|
||||
38 CoverStatus_E CoverStatus;
|
||||
39
|
||||
40 bit CoverEvent_Flg = 0; //Hall开关触发事件标志位
|
||||
41 bit CoverEvent_Flg_led = 0;
|
||||
42
|
||||
43 #if KEY_HALL_ENABLE
|
||||
44
|
||||
45 /******************************************************************************\
|
||||
46 Functions definitions
|
||||
47 \******************************************************************************/
|
||||
48
|
||||
49 /*
|
||||
50 *******************************************************************************
|
||||
51 * void Hall_Init(void)
|
||||
C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 2
|
||||
|
||||
52 *
|
||||
53 * Description : Hall Initialization
|
||||
54 *
|
||||
55 * Arguments :
|
||||
56
|
||||
57 * Returns :
|
||||
58
|
||||
59 * Notes :
|
||||
60 *
|
||||
61 *******************************************************************************
|
||||
62 */
|
||||
63 #if 0
|
||||
void Hall_Init(void)
|
||||
{
|
||||
while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after
|
||||
-this bit sets.
|
||||
|
||||
if(CHIP_STA0 & 0x08) //获取HALL初始状态
|
||||
{
|
||||
|
||||
#if HALL_OPEN_LEV_SET
|
||||
CoverStatus = CLOSE;
|
||||
#else
|
||||
CoverStatus = OPEN;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
#if HALL_OPEN_LEV_SET
|
||||
CoverStatus = OPEN;
|
||||
#else
|
||||
CoverStatus = CLOSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
//Hall_Sta_bk = (CHIP_STA0 & 0x08);
|
||||
}
|
||||
#endif
|
||||
90 /*
|
||||
91 *******************************************************************************
|
||||
92 * void Hall_Handle(void)
|
||||
93 *
|
||||
94 * Description : Hall Handle --- 主循环中调用,调用周期10ms。CoverStatus --- 充电仓盖子状态。
|
||||
95 *
|
||||
96 * Arguments : NONE
|
||||
97
|
||||
98 * Returns : NONE
|
||||
99
|
||||
100 * Notes : NONE
|
||||
101 *
|
||||
102 *******************************************************************************
|
||||
103 */
|
||||
104
|
||||
105 void Hall_Handler(void)
|
||||
106 {
|
||||
107 1 uint8_t Hall_Sta = 0;
|
||||
108 1 if( CHIP_STA0 & 0x10 )
|
||||
109 1 {
|
||||
110 2 Hall_Sta = CHIP_STA0 & 0x08;
|
||||
111 2 if( Hall_Sta != Hall_Sta_bk)
|
||||
112 2 {
|
||||
C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 3
|
||||
|
||||
113 3 if(CHIP_STA0 & 0x08) //Hall 高电平
|
||||
114 3 {
|
||||
115 4 //P10 = 1;
|
||||
116 4 #if HALL_OPEN_LEV_SET
|
||||
117 4 CoverStatus = OPEN;
|
||||
118 4 #else
|
||||
CoverStatus = CLOSE;
|
||||
led_blink_1time_flag = 0;
|
||||
#endif
|
||||
122 4
|
||||
123 4 #ifdef _DEBUG_HALL
|
||||
|
||||
#if HALL_OPEN_LEV_SET
|
||||
printf("Open Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0);
|
||||
#else
|
||||
printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
132 4 }
|
||||
133 3 else
|
||||
134 3 {
|
||||
135 4 //P10 = 0;
|
||||
136 4 #if HALL_OPEN_LEV_SET
|
||||
137 4 CoverStatus = CLOSE;
|
||||
138 4 led_blink_1time_flag = 0;
|
||||
139 4 #else
|
||||
CoverStatus = OPEN;
|
||||
#endif
|
||||
142 4
|
||||
143 4 #ifdef _DEBUG_HALL
|
||||
|
||||
#if HALL_OPEN_LEV_SET
|
||||
printf("Close Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0);
|
||||
#else
|
||||
printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
152 4 }
|
||||
153 3
|
||||
154 3 CoverEvent_Flg = 1;
|
||||
155 3 CoverEvent_Flg_led = 1;
|
||||
156 3 LED_On_Timer = 0;
|
||||
157 3 //LED_On_Timer1 = 0;
|
||||
158 3 Vox_TX_Timer = 0;
|
||||
159 3 Hall_Sta_bk = Hall_Sta;
|
||||
160 3 }
|
||||
161 2 }
|
||||
162 1 }
|
||||
163
|
||||
164 #endif
|
||||
165
|
||||
C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 4
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION Hall_Handler (BEGIN)
|
||||
; SOURCE LINE # 105
|
||||
; SOURCE LINE # 106
|
||||
; SOURCE LINE # 107
|
||||
;---- Variable 'Hall_Sta' assigned to Register 'R7' ----
|
||||
; SOURCE LINE # 108
|
||||
0000 E5E2 MOV A,CHIP_STA0
|
||||
0002 30E425 JNB ACC.4,?C0005
|
||||
; SOURCE LINE # 109
|
||||
; SOURCE LINE # 110
|
||||
0005 E5E2 MOV A,CHIP_STA0
|
||||
0007 5408 ANL A,#08H
|
||||
0009 FF MOV R7,A
|
||||
; SOURCE LINE # 111
|
||||
000A 6500 R XRL A,Hall_Sta_bk
|
||||
000C 601C JZ ?C0005
|
||||
; SOURCE LINE # 112
|
||||
; SOURCE LINE # 113
|
||||
000E E5E2 MOV A,CHIP_STA0
|
||||
0010 30E305 JNB ACC.3,?C0003
|
||||
; SOURCE LINE # 114
|
||||
; SOURCE LINE # 117
|
||||
0013 750001 R MOV CoverStatus,#01H
|
||||
; SOURCE LINE # 132
|
||||
0016 8005 SJMP ?C0004
|
||||
0018 ?C0003:
|
||||
; SOURCE LINE # 134
|
||||
; SOURCE LINE # 137
|
||||
0018 E4 CLR A
|
||||
0019 F500 R MOV CoverStatus,A
|
||||
; SOURCE LINE # 138
|
||||
001B C200 E CLR led_blink_1time_flag
|
||||
; SOURCE LINE # 152
|
||||
001D ?C0004:
|
||||
; SOURCE LINE # 154
|
||||
001D D200 R SETB CoverEvent_Flg
|
||||
; SOURCE LINE # 155
|
||||
001F D200 R SETB CoverEvent_Flg_led
|
||||
; SOURCE LINE # 156
|
||||
0021 E4 CLR A
|
||||
0022 F500 E MOV LED_On_Timer,A
|
||||
; SOURCE LINE # 158
|
||||
0024 F500 E MOV Vox_TX_Timer,A
|
||||
0026 F500 E MOV Vox_TX_Timer+01H,A
|
||||
; SOURCE LINE # 159
|
||||
0028 8F00 R MOV Hall_Sta_bk,R7
|
||||
; SOURCE LINE # 160
|
||||
; SOURCE LINE # 161
|
||||
; SOURCE LINE # 162
|
||||
002A ?C0005:
|
||||
002A 22 RET
|
||||
; FUNCTION Hall_Handler (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 43 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 5
|
||||
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 2 ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = 2 ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
212
Project/Listings/key.lst
Normal file
212
Project/Listings/key.lst
Normal file
@ -0,0 +1,212 @@
|
||||
C51 COMPILER V9.57.0.0 KEY 06/14/2024 11:09:11 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE KEY
|
||||
OBJECT MODULE PLACED IN .\Objects\key.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\key\key.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrIn
|
||||
-c\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key
|
||||
-;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\v
|
||||
-ox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\key.lst
|
||||
-) TABS(2) OBJECT(.\Objects\key.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file key.c
|
||||
5 * @brief key module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/08/04 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/08/04 Alex build this file
|
||||
18 ******************************************************************************/
|
||||
19 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
20 #include "key.h"
|
||||
21 #include "system.h"
|
||||
22 #include "led.h"
|
||||
23 #include "sleep.h"
|
||||
24 #include "adc.h"
|
||||
25 #include "bat.h"
|
||||
26 #include "vox_module.h"
|
||||
27
|
||||
28 #if 1
|
||||
29 /******************************************************************************\
|
||||
30 Macro definitions
|
||||
31 \******************************************************************************/
|
||||
32
|
||||
33 /******************************************************************************\
|
||||
34 Variables definitions
|
||||
35 \******************************************************************************/
|
||||
36
|
||||
37 bit Key_Press_short_irq = 0;
|
||||
38 bit Key_Press_l_irq = 0;
|
||||
39 bit Key_Press_ll_irq = 0;
|
||||
40
|
||||
41 bit Key_l_Flag = 0;
|
||||
42
|
||||
43 idata KEY_EVENT_E Event_key = 0;
|
||||
44
|
||||
45 /******************************************************************************\
|
||||
46 Functions definitions
|
||||
47 \******************************************************************************/
|
||||
48
|
||||
49 /*
|
||||
50 *******************************************************************************
|
||||
51 * void Key_Init(void)
|
||||
C51 COMPILER V9.57.0.0 KEY 06/14/2024 11:09:11 PAGE 2
|
||||
|
||||
52 *
|
||||
53 * Description : Hey Initialization
|
||||
54 *
|
||||
55 * Arguments :
|
||||
56
|
||||
57 * Returns :
|
||||
58
|
||||
59 * Notes :
|
||||
60 *
|
||||
61 *******************************************************************************
|
||||
62 */
|
||||
63 #if 0
|
||||
void Key_Init(void)
|
||||
{
|
||||
|
||||
SFRADDR = MFP_CTL1; //Set P05 as key Function
|
||||
SFRDATA &= ~0x3C;
|
||||
SFRDATA |= 0x14;
|
||||
|
||||
SFRADDR = PMU_CTL0;
|
||||
SFRDATA |= 0x02; //Key Detect Enable
|
||||
|
||||
//KEY_CTL = 0x04; //Set all of the functions about KEY are enable.
|
||||
}
|
||||
#endif
|
||||
77
|
||||
78
|
||||
79 /*
|
||||
80 *******************************************************************************
|
||||
81 * void Key_Handler(void)
|
||||
82 *
|
||||
83 * Description : Key Handler --- 主循环中调用,调用周期5ms。其中长按(按键时间大于2s)需要判断抬键动作才触发
|
||||
-。
|
||||
84 CoverStatus --- 充电仓盖子状态。(本函数提供对应Key事件标志位,后续应用待定)
|
||||
85 *
|
||||
86 * Arguments : NONE
|
||||
87
|
||||
88 * Returns : NONE
|
||||
89
|
||||
90 * Notes : NONE
|
||||
91 *
|
||||
92 *******************************************************************************
|
||||
93 */
|
||||
94
|
||||
95 void Key_Handler(void)
|
||||
96 {
|
||||
97 1 if( Key_l_Flag )
|
||||
98 1 {
|
||||
99 2 Key_Press_l_irq = 0;
|
||||
100 2 Key_l_Flag = 0;
|
||||
101 2 /*todo*/
|
||||
102 2 Event_key = KEY_EVENT_L_2S;
|
||||
103 2 /*耳机配对*/
|
||||
104 2
|
||||
105 2 #ifdef _DEBUG_KEY
|
||||
printf("long press\r\n");
|
||||
#endif
|
||||
108 2 }
|
||||
109 1
|
||||
110 1 if( Key_Press_ll_irq )
|
||||
111 1 {
|
||||
112 2 Key_Press_ll_irq = 0;
|
||||
C51 COMPILER V9.57.0.0 KEY 06/14/2024 11:09:11 PAGE 3
|
||||
|
||||
113 2 /*todo*/
|
||||
114 2 Event_key = KEY_EVENT_LL_8S;
|
||||
115 2 // Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
|
||||
116 2
|
||||
117 2 #ifdef _DEBUG_KEY
|
||||
printf("supper long press\r\n");
|
||||
#endif
|
||||
120 2 }
|
||||
121 1
|
||||
122 1 if( Key_Press_short_irq )
|
||||
123 1 {
|
||||
124 2 Key_Press_short_irq = 0;
|
||||
125 2 /*todo*/
|
||||
126 2 Event_key = KEY_EVENT_SHORT;
|
||||
127 2
|
||||
128 2 #ifdef _DEBUG_KEY
|
||||
printf("short press\r\n");
|
||||
#endif
|
||||
131 2
|
||||
132 2 }
|
||||
133 1 }
|
||||
134
|
||||
135
|
||||
136 #endif
|
||||
C51 COMPILER V9.57.0.0 KEY 06/14/2024 11:09:11 PAGE 4
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION Key_Handler (BEGIN)
|
||||
; SOURCE LINE # 95
|
||||
; SOURCE LINE # 96
|
||||
; SOURCE LINE # 97
|
||||
0000 300008 R JNB Key_l_Flag,?C0001
|
||||
; SOURCE LINE # 98
|
||||
; SOURCE LINE # 99
|
||||
0003 C200 R CLR Key_Press_l_irq
|
||||
; SOURCE LINE # 100
|
||||
0005 C200 R CLR Key_l_Flag
|
||||
; SOURCE LINE # 102
|
||||
0007 7800 R MOV R0,#LOW Event_key
|
||||
0009 7602 MOV @R0,#02H
|
||||
; SOURCE LINE # 108
|
||||
000B ?C0001:
|
||||
; SOURCE LINE # 110
|
||||
000B 300006 R JNB Key_Press_ll_irq,?C0002
|
||||
; SOURCE LINE # 111
|
||||
; SOURCE LINE # 112
|
||||
000E C200 R CLR Key_Press_ll_irq
|
||||
; SOURCE LINE # 114
|
||||
0010 7800 R MOV R0,#LOW Event_key
|
||||
0012 7603 MOV @R0,#03H
|
||||
; SOURCE LINE # 120
|
||||
0014 ?C0002:
|
||||
; SOURCE LINE # 122
|
||||
0014 300006 R JNB Key_Press_short_irq,?C0004
|
||||
; SOURCE LINE # 123
|
||||
; SOURCE LINE # 124
|
||||
0017 C200 R CLR Key_Press_short_irq
|
||||
; SOURCE LINE # 126
|
||||
0019 7800 R MOV R0,#LOW Event_key
|
||||
001B 7601 MOV @R0,#01H
|
||||
; SOURCE LINE # 132
|
||||
; SOURCE LINE # 133
|
||||
001D ?C0004:
|
||||
001D 22 RET
|
||||
; FUNCTION Key_Handler (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 30 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = 1 ----
|
||||
BIT SIZE = 4 ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
333
Project/Listings/led.lst
Normal file
333
Project/Listings/led.lst
Normal file
@ -0,0 +1,333 @@
|
||||
C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE LED
|
||||
OBJECT MODULE PLACED IN .\Objects\led.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\led\led.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrIn
|
||||
-c\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key
|
||||
-;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\v
|
||||
-ox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\led.lst
|
||||
-) TABS(2) OBJECT(.\Objects\led.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file led.c
|
||||
5 * @brief led module
|
||||
6 * @ic TP3102
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/08/04 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/08/04 Alex build this file
|
||||
18 ******************************************************************************/
|
||||
19 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
20
|
||||
21 #include "led.h"
|
||||
22
|
||||
23
|
||||
24 #ifdef LED_DISPLAY
|
||||
25
|
||||
26 /******************************************************************************\
|
||||
27 Macro definitions
|
||||
28 \******************************************************************************/
|
||||
29
|
||||
30 /******************************************************************************\
|
||||
31 Variables definitions
|
||||
32 \******************************************************************************/
|
||||
33 static idata TS_LED_INFO LED;
|
||||
34
|
||||
35 idata uint8_t Display_Sta = LED_OFF; // 显示状态
|
||||
36
|
||||
37 /******************************************************************************\
|
||||
38 Functions definitions
|
||||
39 \******************************************************************************/
|
||||
40 #if 0
|
||||
/*
|
||||
* 函数名称 : LED_Init
|
||||
* 功能描述 : LED初始化
|
||||
* 参 数 : NONE
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
void LED_Init(void)
|
||||
/******************************************************************************/
|
||||
{
|
||||
SFRADDR = P0_OE;
|
||||
C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 2
|
||||
|
||||
SFRDATA |= 0x08;
|
||||
|
||||
SFRADDR = P0_DRV;
|
||||
SFRDATA = 0x0C;
|
||||
|
||||
pin_LED_1 = 0;
|
||||
}
|
||||
#endif
|
||||
60 /*
|
||||
61 * 函数名称 : LED_Set
|
||||
62 * 功能描述 : LED工作方式设置
|
||||
63 * 参 数 : State:工作方式 / Period:闪烁周期(频率,单位ms) / Times:闪烁次数,当次数等于0xff时,一<EFBC8C>
|
||||
-鄙痢<E98499>
|
||||
64 * 返回值 : NONE
|
||||
65 */
|
||||
66 /******************************************************************************/
|
||||
67 void LED_Set(uint8_t State,uint8_t Period,uint8_t Times)
|
||||
68 /******************************************************************************/
|
||||
69 {
|
||||
70 1 LED.State = State;
|
||||
71 1 LED.Flash_Duty = Period / 2;
|
||||
72 1 LED.Flash_Period = Period;
|
||||
73 1 LED.Flash_Times = Times;
|
||||
74 1 LED.Timer = 0;
|
||||
75 1 }
|
||||
76
|
||||
77 /*
|
||||
78 * 函数名称 : LED_Service
|
||||
79 * 功能描述 : LED驱动,需放在100ms时间片中
|
||||
80 * 参 数 : NONE
|
||||
81 * 返回值 : NONE
|
||||
82 */
|
||||
83 /******************************************************************************/
|
||||
84 void LED_Drv(void)
|
||||
85 /******************************************************************************/
|
||||
86 {
|
||||
87 1 switch(LED.State)
|
||||
88 1 {
|
||||
89 2 case LED_ON:
|
||||
90 2 LEDR_ON();
|
||||
91 2 break;
|
||||
92 2
|
||||
93 2 case LED_OFF:
|
||||
94 2 LEDR_OFF();
|
||||
95 2 break;
|
||||
96 2
|
||||
97 2 case LED_FLASH:
|
||||
98 2 if( LED.Timer < LED.Flash_Duty )
|
||||
99 2 {
|
||||
100 3 LEDR_ON();
|
||||
101 3 }
|
||||
102 2 else
|
||||
103 2 {
|
||||
104 3 LEDR_OFF();
|
||||
105 3 }
|
||||
106 2
|
||||
107 2 if( LED.Timer >= LED.Flash_Period )//LED.Timer[i]表示累加的时间
|
||||
108 2 {
|
||||
109 3 LED.Timer = 0;
|
||||
110 3
|
||||
111 3 if( LED.Flash_Times == 0xff )
|
||||
112 3 {
|
||||
C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 3
|
||||
|
||||
113 4 //LED.State = LED_KEEP_FLASHING;
|
||||
114 4 break;
|
||||
115 4 }
|
||||
116 3 else
|
||||
117 3 {
|
||||
118 4 if( LED.Flash_Times > 0 )
|
||||
119 4 {
|
||||
120 5 LED.Flash_Times--;
|
||||
121 5 }
|
||||
122 4
|
||||
123 4 if( LED.Flash_Times == 0 )
|
||||
124 4 {
|
||||
125 5 LED.State = LED_OFF;
|
||||
126 5 }
|
||||
127 4 }
|
||||
128 3 }
|
||||
129 2
|
||||
130 2 break;
|
||||
131 2 #if 0
|
||||
case LED_KEEP_FLASHING:
|
||||
if( LED.Timer <= LED.Flash_Duty )
|
||||
{
|
||||
LEDR_ON();
|
||||
}
|
||||
else
|
||||
{
|
||||
LEDR_OFF();
|
||||
}
|
||||
if( LED.Timer >= LED.Flash_Period )
|
||||
{
|
||||
LED.Timer = 0;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
147 2 default:
|
||||
148 2 LEDR_OFF();
|
||||
149 2 break;
|
||||
150 2
|
||||
151 2 }
|
||||
152 1
|
||||
153 1 Display_Sta = LED.State; // 获取当前LED工作状态。
|
||||
154 1
|
||||
155 1 LED.Timer += LED_PLUS_TIME;
|
||||
156 1 }
|
||||
157
|
||||
158 #endif
|
||||
159
|
||||
160
|
||||
C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 4
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION _LED_Set (BEGIN)
|
||||
; SOURCE LINE # 67
|
||||
;---- Variable 'Period' assigned to Register 'R5' ----
|
||||
;---- Variable 'Times' assigned to Register 'R3' ----
|
||||
;---- Variable 'State' assigned to Register 'R7' ----
|
||||
; SOURCE LINE # 69
|
||||
; SOURCE LINE # 70
|
||||
0000 7800 R MOV R0,#LOW LED
|
||||
0002 A607 MOV @R0,AR7
|
||||
; SOURCE LINE # 71
|
||||
0004 ED MOV A,R5
|
||||
0005 C3 CLR C
|
||||
0006 13 RRC A
|
||||
0007 08 INC R0
|
||||
0008 F6 MOV @R0,A
|
||||
; SOURCE LINE # 72
|
||||
0009 08 INC R0
|
||||
000A A605 MOV @R0,AR5
|
||||
; SOURCE LINE # 73
|
||||
000C 08 INC R0
|
||||
000D A603 MOV @R0,AR3
|
||||
; SOURCE LINE # 74
|
||||
000F E4 CLR A
|
||||
0010 08 INC R0
|
||||
0011 F6 MOV @R0,A
|
||||
; SOURCE LINE # 75
|
||||
0012 22 RET
|
||||
; FUNCTION _LED_Set (END)
|
||||
|
||||
; FUNCTION LED_Drv (BEGIN)
|
||||
; SOURCE LINE # 84
|
||||
; SOURCE LINE # 86
|
||||
; SOURCE LINE # 87
|
||||
0000 7800 R MOV R0,#LOW LED
|
||||
0002 E6 MOV A,@R0
|
||||
0003 603D JZ ?C0013
|
||||
0005 24FE ADD A,#0FEH
|
||||
0007 6007 JZ ?C0005
|
||||
0009 04 INC A
|
||||
000A 7036 JNZ ?C0013
|
||||
; SOURCE LINE # 88
|
||||
; SOURCE LINE # 89
|
||||
000C ?C0003:
|
||||
; SOURCE LINE # 90
|
||||
000C D283 SETB pin_LED_1
|
||||
; SOURCE LINE # 91
|
||||
000E 8034 SJMP ?C0002
|
||||
; SOURCE LINE # 93
|
||||
; SOURCE LINE # 97
|
||||
0010 ?C0005:
|
||||
; SOURCE LINE # 98
|
||||
0010 7800 R MOV R0,#LOW LED+04H
|
||||
0012 E6 MOV A,@R0
|
||||
0013 FF MOV R7,A
|
||||
0014 C3 CLR C
|
||||
0015 7800 R MOV R0,#LOW LED+01H
|
||||
0017 96 SUBB A,@R0
|
||||
0018 5004 JNC ?C0006
|
||||
; SOURCE LINE # 99
|
||||
C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 5
|
||||
|
||||
; SOURCE LINE # 100
|
||||
001A D283 SETB pin_LED_1
|
||||
; SOURCE LINE # 101
|
||||
001C 8002 SJMP ?C0007
|
||||
001E ?C0006:
|
||||
; SOURCE LINE # 103
|
||||
; SOURCE LINE # 104
|
||||
001E C283 CLR pin_LED_1
|
||||
; SOURCE LINE # 105
|
||||
0020 ?C0007:
|
||||
; SOURCE LINE # 107
|
||||
0020 EF MOV A,R7
|
||||
0021 C3 CLR C
|
||||
0022 7800 R MOV R0,#LOW LED+02H
|
||||
0024 96 SUBB A,@R0
|
||||
0025 401D JC ?C0002
|
||||
; SOURCE LINE # 108
|
||||
; SOURCE LINE # 109
|
||||
0027 E4 CLR A
|
||||
0028 7800 R MOV R0,#LOW LED+04H
|
||||
002A F6 MOV @R0,A
|
||||
; SOURCE LINE # 111
|
||||
002B 18 DEC R0
|
||||
002C E6 MOV A,@R0
|
||||
002D FF MOV R7,A
|
||||
002E F4 CPL A
|
||||
002F 6013 JZ ?C0002
|
||||
; SOURCE LINE # 112
|
||||
; SOURCE LINE # 114
|
||||
; SOURCE LINE # 115
|
||||
; SOURCE LINE # 117
|
||||
; SOURCE LINE # 118
|
||||
0031 EF MOV A,R7
|
||||
0032 D3 SETB C
|
||||
0033 9400 SUBB A,#00H
|
||||
0035 4001 JC ?C0011
|
||||
; SOURCE LINE # 119
|
||||
; SOURCE LINE # 120
|
||||
0037 16 DEC @R0
|
||||
; SOURCE LINE # 121
|
||||
0038 ?C0011:
|
||||
; SOURCE LINE # 123
|
||||
0038 7800 R MOV R0,#LOW LED+03H
|
||||
003A E6 MOV A,@R0
|
||||
003B 7007 JNZ ?C0002
|
||||
; SOURCE LINE # 124
|
||||
; SOURCE LINE # 125
|
||||
003D 7800 R MOV R0,#LOW LED
|
||||
003F F6 MOV @R0,A
|
||||
; SOURCE LINE # 126
|
||||
; SOURCE LINE # 127
|
||||
; SOURCE LINE # 128
|
||||
; SOURCE LINE # 130
|
||||
0040 8002 SJMP ?C0002
|
||||
; SOURCE LINE # 147
|
||||
0042 ?C0013:
|
||||
; SOURCE LINE # 148
|
||||
0042 C283 CLR pin_LED_1
|
||||
; SOURCE LINE # 149
|
||||
; SOURCE LINE # 151
|
||||
0044 ?C0002:
|
||||
; SOURCE LINE # 153
|
||||
C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 6
|
||||
|
||||
0044 7800 R MOV R0,#LOW LED
|
||||
0046 E6 MOV A,@R0
|
||||
0047 7800 R MOV R0,#LOW Display_Sta
|
||||
0049 F6 MOV @R0,A
|
||||
; SOURCE LINE # 155
|
||||
004A 18 DEC R0
|
||||
004B 06 INC @R0
|
||||
; SOURCE LINE # 156
|
||||
004C 22 RET
|
||||
; FUNCTION LED_Drv (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 96 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = 6 ----
|
||||
BIT SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
124
Project/Listings/main.lst
Normal file
124
Project/Listings/main.lst
Normal file
@ -0,0 +1,124 @@
|
||||
C51 COMPILER V9.57.0.0 MAIN 06/14/2024 11:08:35 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE MAIN
|
||||
OBJECT MODULE PLACED IN .\Objects\main.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\main.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrInc\a
|
||||
-dc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..
|
||||
-\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;
|
||||
-..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\main.lst)
|
||||
-TABS(2) OBJECT(.\Objects\main.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file main.c
|
||||
5 * @brief main module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/07/12 17:35:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/07/12 Alex build this file
|
||||
18 ******************************************************************************
|
||||
19 */
|
||||
20 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
21 #include "define.h"
|
||||
22 #include "userapp.h"
|
||||
23 #include "watchdog.h"
|
||||
24 #include "sys_tim.h"
|
||||
25 #include "system.h"
|
||||
26 #include "led.h"
|
||||
27 #include "charger_module.h"
|
||||
28 #include "adc.h"
|
||||
29 #include "vox_module.h"
|
||||
30
|
||||
31
|
||||
32 /******************************************************************************\
|
||||
33 Macro definitions
|
||||
34 \******************************************************************************/
|
||||
35
|
||||
36 /******************************************************************************\
|
||||
37 Variables definitions
|
||||
38 \******************************************************************************/
|
||||
39
|
||||
40 #ifdef _DEBUG_MAIN
|
||||
const uint8_t Ver[] = "V100";
|
||||
/*程序版本,第一个数代表在硬件存在改动不能兼容之前版本时加1,
|
||||
第二个数在功能存在改动时加1,第三个数在软件调试出现不同的
|
||||
测试版本时改动;高位数字变动时,低位数字清零。*/
|
||||
#endif
|
||||
46
|
||||
47 /******************************************************************************\
|
||||
48 Functions definitions
|
||||
49 \******************************************************************************/
|
||||
50
|
||||
51 void main(void )
|
||||
C51 COMPILER V9.57.0.0 MAIN 06/14/2024 11:08:35 PAGE 2
|
||||
|
||||
52 {
|
||||
53 1 System_Init(); //系统初始化
|
||||
54 1
|
||||
55 1 #ifdef _DEBUG_MAIN
|
||||
printf("System Init(Ver:%s)\r\n",Ver);
|
||||
#endif
|
||||
58 1
|
||||
59 1 while(1)
|
||||
60 1 {
|
||||
61 2
|
||||
62 2 #if WTG_ENABLE
|
||||
63 2 WDT = 1;
|
||||
64 2 SWDT = 1;
|
||||
65 2 #endif
|
||||
66 2 Sys_Tim_Handler(); //定时器
|
||||
67 2
|
||||
68 2 UserAPP();
|
||||
69 2 }
|
||||
70 1 }
|
||||
C51 COMPILER V9.57.0.0 MAIN 06/14/2024 11:08:35 PAGE 3
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION main (BEGIN)
|
||||
; SOURCE LINE # 51
|
||||
; SOURCE LINE # 52
|
||||
; SOURCE LINE # 53
|
||||
0000 120000 E LCALL System_Init
|
||||
0003 ?C0001:
|
||||
; SOURCE LINE # 59
|
||||
; SOURCE LINE # 60
|
||||
; SOURCE LINE # 63
|
||||
0003 D2AE SETB WDT
|
||||
; SOURCE LINE # 64
|
||||
0005 D2BE SETB SWDT
|
||||
; SOURCE LINE # 66
|
||||
0007 120000 E LCALL Sys_Tim_Handler
|
||||
; SOURCE LINE # 68
|
||||
000A 120000 E LCALL UserAPP
|
||||
; SOURCE LINE # 69
|
||||
000D 80F4 SJMP ?C0001
|
||||
; FUNCTION main (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 15 ----
|
||||
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)
|
1826
Project/Listings/mcu.m51
Normal file
1826
Project/Listings/mcu.m51
Normal file
File diff suppressed because it is too large
Load Diff
132
Project/Listings/sleep.lst
Normal file
132
Project/Listings/sleep.lst
Normal file
@ -0,0 +1,132 @@
|
||||
C51 COMPILER V9.57.0.0 SLEEP 06/14/2024 11:08:37 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE SLEEP
|
||||
OBJECT MODULE PLACED IN .\Objects\sleep.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\sleep\sleep.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\U
|
||||
-srInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc
|
||||
-\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrI
|
||||
-nc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\sle
|
||||
-ep.lst) TABS(2) OBJECT(.\Objects\sleep.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file sleep.c
|
||||
5 * @brief sleep module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2023/03/22 17:35:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2023/03/22 Alex build this file
|
||||
18 ******************************************************************************
|
||||
19 */
|
||||
20 #include "sleep.h"
|
||||
21 #include "system.h"
|
||||
22 #include "vox_module.h"
|
||||
23
|
||||
24 #if SLEEP_ENABLE
|
||||
25
|
||||
26 /******************************************************************************\
|
||||
27 Macro definitions
|
||||
28 \******************************************************************************/
|
||||
29
|
||||
30 /******************************************************************************\
|
||||
31 Variables definitions
|
||||
32 \******************************************************************************/
|
||||
33
|
||||
34 uint8_t Decnt_SleepDelay = 0;
|
||||
35
|
||||
36 bit Enter_Sleep_Cnt_Restart_Flag = 0;
|
||||
37
|
||||
38 /******************************************************************************\
|
||||
39 Functions definitions
|
||||
40 \******************************************************************************/
|
||||
41
|
||||
42
|
||||
43 /*
|
||||
44 *******************************************************************************
|
||||
45 * bool Check_Require_Sleep(void )
|
||||
46 *
|
||||
47 * Description : 查询休眠唤醒源标志位函数。
|
||||
48 *
|
||||
49 * Arguments : None
|
||||
50
|
||||
51 * Returns : None
|
||||
C51 COMPILER V9.57.0.0 SLEEP 06/14/2024 11:08:37 PAGE 2
|
||||
|
||||
52
|
||||
53 * Notes : bool Flag
|
||||
54 *
|
||||
55 *******************************************************************************
|
||||
56 */
|
||||
57 bit Check_Require_Sleep(void )
|
||||
58 {
|
||||
59 1 if( ( CHIP_STA4 & 0x80 ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*VBUS Power Go
|
||||
-od存在、有中断、耳机处于充电状态情况下,Boost重载输出,系统不进休眠模式。 */
|
||||
60 1 {
|
||||
61 2 #ifdef _DEBUG_SLEEP
|
||||
printf("Protect\r\n");
|
||||
#endif
|
||||
64 2 Enter_Sleep_Cnt_Restart_Flag = 0;
|
||||
65 2 /*处理对应的保护和中断唤醒事件。*/
|
||||
66 2 return false;
|
||||
67 2 }
|
||||
68 1
|
||||
69 1 return true;
|
||||
70 1 }
|
||||
71
|
||||
72 #endif
|
||||
73
|
||||
C51 COMPILER V9.57.0.0 SLEEP 06/14/2024 11:08:37 PAGE 3
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION Check_Require_Sleep (BEGIN)
|
||||
; SOURCE LINE # 57
|
||||
; SOURCE LINE # 58
|
||||
; SOURCE LINE # 59
|
||||
0000 E5E6 MOV A,CHIP_STA4
|
||||
0002 20E706 JB ACC.7,?C0002
|
||||
0005 200003 E JB Vox_Vout_Enable,?C0002
|
||||
0008 300004 R JNB Enter_Sleep_Cnt_Restart_Flag,?C0001
|
||||
000B ?C0002:
|
||||
; SOURCE LINE # 60
|
||||
; SOURCE LINE # 64
|
||||
000B C200 R CLR Enter_Sleep_Cnt_Restart_Flag
|
||||
; SOURCE LINE # 66
|
||||
000D C3 CLR C
|
||||
000E 22 RET
|
||||
; SOURCE LINE # 67
|
||||
000F ?C0001:
|
||||
; SOURCE LINE # 69
|
||||
000F D3 SETB C
|
||||
; SOURCE LINE # 70
|
||||
0010 ?C0003:
|
||||
0010 22 RET
|
||||
; FUNCTION Check_Require_Sleep (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 17 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 1 ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = 1 ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
541
Project/Listings/sys_tim.lst
Normal file
541
Project/Listings/sys_tim.lst
Normal file
@ -0,0 +1,541 @@
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE SYS_TIM
|
||||
OBJECT MODULE PLACED IN .\Objects\sys_tim.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\timer\sys_tim.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..
|
||||
-\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrI
|
||||
-nc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\Us
|
||||
-rInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\s
|
||||
-ys_tim.lst) TABS(2) OBJECT(.\Objects\sys_tim.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file sys_tim.c
|
||||
5 * @brief Timer module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/09/05 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/09/05 Alex build this file
|
||||
18 ******************************************************************************/
|
||||
19 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
20
|
||||
21 #include "sys_tim.h"
|
||||
22 #include "vox_module.h"
|
||||
23 #include "system.h"
|
||||
24 #include "charger_module.h"
|
||||
25 #include "led.h"
|
||||
26
|
||||
27 /******************************************************************************\
|
||||
28 Macro definitions
|
||||
29 \******************************************************************************/
|
||||
30
|
||||
31 /******************************************************************************\
|
||||
32 Variables definitions
|
||||
33 \******************************************************************************/
|
||||
34 uint8_t cnt_sys_tim_5ms = 0;
|
||||
35 uint8_t cnt_sys_tim_10ms = 0;
|
||||
36 uint8_t cnt_sys_tim_250ms = 0;
|
||||
37 uint8_t cnt_sys_tim_100ms = 0;
|
||||
38 uint8_t cnt_sys_tim_1s = 0;
|
||||
39
|
||||
40 bit F_sys_tim_5ms = 0;
|
||||
41 bit F_sys_tim_10ms = 0;
|
||||
42 bit F_sys_tim_250ms = 0;
|
||||
43 bit F_sys_tim_100ms = 0;
|
||||
44 bit F_sys_tim_1s = 0;
|
||||
45
|
||||
46 uint8_t F_sys_tim0_tick = 0;
|
||||
47
|
||||
48 uint8_t cnt_sys_tim0_5ms = 0;
|
||||
49 bit BES_Puls_Start = 0; //开启BES Reset脉冲信号
|
||||
50
|
||||
51 #if TIMER1_ENABLE
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 2
|
||||
|
||||
bit F_sys_tim1_tick = 0;
|
||||
|
||||
#endif
|
||||
55
|
||||
56 #ifdef VOX_TX_RST_PATTERN
|
||||
57 uint8_t BES_Puls_Cnt = 0; //BES Reset脉冲计数
|
||||
58 //bit BES_Puls_Start = 0; //开启BES Reset脉冲信号
|
||||
59 #endif
|
||||
60
|
||||
61 /******************************************************************************\
|
||||
62 Functions definitions
|
||||
63 \******************************************************************************/
|
||||
64
|
||||
65
|
||||
66 /*
|
||||
67 *******************************************************************************
|
||||
68 * void Sys_Tim_Handler(void )
|
||||
69 *
|
||||
70 * Description : Timer Handle
|
||||
71 *
|
||||
72 * Arguments : NONE
|
||||
73
|
||||
74 * Returns : NONE
|
||||
75
|
||||
76 * Notes : NONE
|
||||
77 *
|
||||
78 *******************************************************************************
|
||||
79 */
|
||||
80 void Sys_Tim_Handler(void)
|
||||
81 {
|
||||
82 1 if(F_sys_tim0_tick == 0)
|
||||
83 1 return;
|
||||
84 1 F_sys_tim0_tick = 0;
|
||||
85 1 //system tick
|
||||
86 1
|
||||
87 1 //---------------5ms----------------------------------------
|
||||
88 1 cnt_sys_tim_5ms++;
|
||||
89 1 if(cnt_sys_tim_5ms >= 5)
|
||||
90 1 {
|
||||
91 2 cnt_sys_tim_5ms = 0;
|
||||
92 2 F_sys_tim_5ms = 1;
|
||||
93 2 }
|
||||
94 1
|
||||
95 1 //---------------10ms----------------------------------------
|
||||
96 1 cnt_sys_tim_10ms++;
|
||||
97 1 if(cnt_sys_tim_10ms >= 10)
|
||||
98 1 {
|
||||
99 2 cnt_sys_tim_10ms = 0;
|
||||
100 2 F_sys_tim_10ms = 1;
|
||||
101 2
|
||||
102 2 }
|
||||
103 1
|
||||
104 1 //---------------100ms----------------------------------------
|
||||
105 1 cnt_sys_tim_100ms++;
|
||||
106 1 if(cnt_sys_tim_100ms >= 100)
|
||||
107 1 {
|
||||
108 2 cnt_sys_tim_100ms = 0;
|
||||
109 2 F_sys_tim_100ms = 1;
|
||||
110 2 }
|
||||
111 1
|
||||
112 1 //-------------------------------------------------
|
||||
113 1 cnt_sys_tim_250ms++;
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 3
|
||||
|
||||
114 1 if(cnt_sys_tim_250ms>=250)
|
||||
115 1 {
|
||||
116 2 cnt_sys_tim_250ms = 0;
|
||||
117 2 F_sys_tim_250ms = 1;
|
||||
118 2 // P10 = !P10;
|
||||
119 2 //-----------------250ms-------------------------
|
||||
120 2 cnt_sys_tim_1s++;
|
||||
121 2 if(cnt_sys_tim_1s >= 4)
|
||||
122 2 {
|
||||
123 3 cnt_sys_tim_1s = 0;
|
||||
124 3 F_sys_tim_1s = 1;
|
||||
125 3 #if VOX_ENABLE
|
||||
126 3 Boost_Open_Atleast_Tim_Cnt++;
|
||||
127 3 #endif
|
||||
128 3 }
|
||||
129 2 }
|
||||
130 1 }
|
||||
131
|
||||
132 /*
|
||||
133 *******************************************************************************
|
||||
134 * void Delay10ms(void) //@11.0592MHz
|
||||
135 *
|
||||
136 * Description : 10ms软定时函数
|
||||
137 *
|
||||
138 * Arguments : NONE
|
||||
139
|
||||
140 * Returns : NONE
|
||||
141
|
||||
142 * Notes : NONE
|
||||
143 *
|
||||
144 *******************************************************************************
|
||||
145 */
|
||||
146 #if 0
|
||||
void Delay10ms(void) //@11.0592MHz
|
||||
{
|
||||
unsigned char i, j;
|
||||
|
||||
i = 108;
|
||||
j = 145;
|
||||
do
|
||||
{
|
||||
while (--j);
|
||||
} while (--i);
|
||||
}
|
||||
#endif
|
||||
159
|
||||
160 /**
|
||||
161 * @brief This function handles sys_tim Handler.
|
||||
162 * @param None
|
||||
163 * @retval None
|
||||
164 * 1ms
|
||||
165 */
|
||||
166 void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B
|
||||
167 {
|
||||
168 1 //1ms
|
||||
169 1 TH0 += C_TIM0_Reload >> 8;
|
||||
170 1 TL0 += C_TIM0_Reload & 0xFF;
|
||||
171 1
|
||||
172 1 F_sys_tim0_tick = 1;
|
||||
173 1
|
||||
174 1 #ifdef VOX_TX_RST_PATTERN
|
||||
175 1
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 4
|
||||
|
||||
176 1 //---------------5ms----------------------------------------
|
||||
177 1 cnt_sys_tim0_5ms++;
|
||||
178 1 if(cnt_sys_tim0_5ms >= 5)
|
||||
179 1 {
|
||||
180 2 cnt_sys_tim0_5ms = 0;
|
||||
181 2 //BES_Reset_Puls();
|
||||
182 2 /*在中断中调用函数,会占用很多内存!*/
|
||||
183 2 if(BES_Puls_Start)
|
||||
184 2 {
|
||||
185 3 if(BES_Puls_Cnt <= 4) //持续5个低电平后加一高电平
|
||||
186 3 {
|
||||
187 4 COM_CTRL = OFF;
|
||||
188 4 }
|
||||
189 3 else
|
||||
190 3 {
|
||||
191 4 if(BES_Puls_Cnt%2)
|
||||
192 4 {
|
||||
193 5
|
||||
194 5 if(BES_Puls_Cnt == 13)
|
||||
195 5 {
|
||||
196 6 COM_CTRL = OFF;
|
||||
197 6 }
|
||||
198 5 else
|
||||
199 5 {
|
||||
200 6 COM_CTRL = ON;
|
||||
201 6 }
|
||||
202 5 }
|
||||
203 4 else
|
||||
204 4 {
|
||||
205 5
|
||||
206 5 if(BES_Puls_Cnt == 14)
|
||||
207 5 {
|
||||
208 6 COM_CTRL = ON;
|
||||
209 6 }
|
||||
210 5 else
|
||||
211 5 {
|
||||
212 6 COM_CTRL = OFF;
|
||||
213 6 }
|
||||
214 5 }
|
||||
215 4 }
|
||||
216 3
|
||||
217 3 BES_Puls_Cnt++;
|
||||
218 3
|
||||
219 3 if(BES_Puls_Cnt >= 23)
|
||||
220 3 {
|
||||
221 4 BES_Puls_Start = 0;
|
||||
222 4 BES_Puls_Cnt = 0;
|
||||
223 4 }
|
||||
224 3 }
|
||||
225 2 }
|
||||
226 1 #endif
|
||||
227 1 }
|
||||
228
|
||||
229 /*
|
||||
230 *******************************************************************************
|
||||
231 * void Sys_Tim0_Init(void)
|
||||
232 *
|
||||
233 * Description : TImer0 Mode1 16bit timer Initialization
|
||||
234 *
|
||||
235 * Arguments : NONE
|
||||
236
|
||||
237 * Returns : NONE
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 5
|
||||
|
||||
238
|
||||
239 * Notes : NONE
|
||||
240 *
|
||||
241 *******************************************************************************
|
||||
242 */
|
||||
243 #if 0
|
||||
void Sys_Tim0_Init(void)
|
||||
{
|
||||
TMOD &= 0xF0;
|
||||
TMOD |= 0x01; //mode 1, 16bit timer
|
||||
|
||||
TH0 = C_TIM0_Reload >> 8;
|
||||
TL0 = C_TIM0_Reload & 0xFF;
|
||||
|
||||
ET0 = 1; //enable time0 interrupt
|
||||
TR0 = 1; //time0 run
|
||||
}
|
||||
#endif
|
||||
256 #if TIMER1_ENABLE
|
||||
|
||||
/**
|
||||
* @brief This function handles sys_tim Handler.
|
||||
* @param None
|
||||
* @retval None
|
||||
* 1ms
|
||||
*/
|
||||
void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B
|
||||
{
|
||||
//1ms
|
||||
TF1 = 0;
|
||||
|
||||
TH1 += C_TIM1_Reload >> 8;
|
||||
TL1 += C_TIM1_Reload & 0xFF;
|
||||
|
||||
F_sys_tim1_tick = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Sys_Tim1_Init(void)
|
||||
*
|
||||
* Description : TImer1 Mode1 16bit timer Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void Sys_Tim1_Init(void)
|
||||
{
|
||||
TMOD &= 0x0F;
|
||||
TMOD |= 0x10; //mode 1, 16bit timer
|
||||
|
||||
TH1 = C_TIM1_Reload >> 8;
|
||||
TL1 = C_TIM1_Reload & 0xFF;
|
||||
|
||||
ET1 = 1; //enable time1 interrupt
|
||||
TR1 = 1; //time1 run
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 6
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
304
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 7
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION Sys_Tim_Handler (BEGIN)
|
||||
; SOURCE LINE # 80
|
||||
; SOURCE LINE # 81
|
||||
; SOURCE LINE # 82
|
||||
0000 E500 R MOV A,F_sys_tim0_tick
|
||||
0002 6050 JZ ?C0002
|
||||
; SOURCE LINE # 84
|
||||
0004 E4 CLR A
|
||||
0005 F500 R MOV F_sys_tim0_tick,A
|
||||
; SOURCE LINE # 88
|
||||
0007 0500 R INC cnt_sys_tim_5ms
|
||||
; SOURCE LINE # 89
|
||||
0009 E500 R MOV A,cnt_sys_tim_5ms
|
||||
000B C3 CLR C
|
||||
000C 9405 SUBB A,#05H
|
||||
000E 4005 JC ?C0003
|
||||
; SOURCE LINE # 90
|
||||
; SOURCE LINE # 91
|
||||
0010 E4 CLR A
|
||||
0011 F500 R MOV cnt_sys_tim_5ms,A
|
||||
; SOURCE LINE # 92
|
||||
0013 D200 R SETB F_sys_tim_5ms
|
||||
; SOURCE LINE # 93
|
||||
0015 ?C0003:
|
||||
; SOURCE LINE # 96
|
||||
0015 0500 R INC cnt_sys_tim_10ms
|
||||
; SOURCE LINE # 97
|
||||
0017 E500 R MOV A,cnt_sys_tim_10ms
|
||||
0019 C3 CLR C
|
||||
001A 940A SUBB A,#0AH
|
||||
001C 4005 JC ?C0004
|
||||
; SOURCE LINE # 98
|
||||
; SOURCE LINE # 99
|
||||
001E E4 CLR A
|
||||
001F F500 R MOV cnt_sys_tim_10ms,A
|
||||
; SOURCE LINE # 100
|
||||
0021 D200 R SETB F_sys_tim_10ms
|
||||
; SOURCE LINE # 102
|
||||
0023 ?C0004:
|
||||
; SOURCE LINE # 105
|
||||
0023 0500 R INC cnt_sys_tim_100ms
|
||||
; SOURCE LINE # 106
|
||||
0025 E500 R MOV A,cnt_sys_tim_100ms
|
||||
0027 C3 CLR C
|
||||
0028 9464 SUBB A,#064H
|
||||
002A 4005 JC ?C0005
|
||||
; SOURCE LINE # 107
|
||||
; SOURCE LINE # 108
|
||||
002C E4 CLR A
|
||||
002D F500 R MOV cnt_sys_tim_100ms,A
|
||||
; SOURCE LINE # 109
|
||||
002F D200 R SETB F_sys_tim_100ms
|
||||
; SOURCE LINE # 110
|
||||
0031 ?C0005:
|
||||
; SOURCE LINE # 113
|
||||
0031 0500 R INC cnt_sys_tim_250ms
|
||||
; SOURCE LINE # 114
|
||||
0033 E500 R MOV A,cnt_sys_tim_250ms
|
||||
0035 C3 CLR C
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 8
|
||||
|
||||
0036 94FA SUBB A,#0FAH
|
||||
0038 401A JC ?C0002
|
||||
; SOURCE LINE # 115
|
||||
; SOURCE LINE # 116
|
||||
003A E4 CLR A
|
||||
003B F500 R MOV cnt_sys_tim_250ms,A
|
||||
; SOURCE LINE # 117
|
||||
003D D200 R SETB F_sys_tim_250ms
|
||||
; SOURCE LINE # 120
|
||||
003F 0500 R INC cnt_sys_tim_1s
|
||||
; SOURCE LINE # 121
|
||||
0041 E500 R MOV A,cnt_sys_tim_1s
|
||||
0043 9404 SUBB A,#04H
|
||||
0045 400D JC ?C0002
|
||||
; SOURCE LINE # 122
|
||||
; SOURCE LINE # 123
|
||||
0047 E4 CLR A
|
||||
0048 F500 R MOV cnt_sys_tim_1s,A
|
||||
; SOURCE LINE # 124
|
||||
004A D200 R SETB F_sys_tim_1s
|
||||
; SOURCE LINE # 126
|
||||
004C 0500 E INC Boost_Open_Atleast_Tim_Cnt+01H
|
||||
004E E500 E MOV A,Boost_Open_Atleast_Tim_Cnt+01H
|
||||
0050 7002 JNZ ?C0020
|
||||
0052 0500 E INC Boost_Open_Atleast_Tim_Cnt
|
||||
0054 ?C0020:
|
||||
; SOURCE LINE # 128
|
||||
; SOURCE LINE # 129
|
||||
; SOURCE LINE # 130
|
||||
0054 ?C0002:
|
||||
0054 22 RET
|
||||
; FUNCTION Sys_Tim_Handler (END)
|
||||
|
||||
; FUNCTION tim0_Interrupt (BEGIN)
|
||||
0000 C0E0 PUSH ACC
|
||||
0002 C0D0 PUSH PSW
|
||||
; SOURCE LINE # 166
|
||||
; SOURCE LINE # 169
|
||||
0004 74FC MOV A,#0FCH
|
||||
0006 258C ADD A,TH0
|
||||
0008 F58C MOV TH0,A
|
||||
; SOURCE LINE # 170
|
||||
000A 7417 MOV A,#017H
|
||||
000C 258A ADD A,TL0
|
||||
000E F58A MOV TL0,A
|
||||
; SOURCE LINE # 172
|
||||
0010 750001 R MOV F_sys_tim0_tick,#01H
|
||||
; SOURCE LINE # 177
|
||||
0013 0500 R INC cnt_sys_tim0_5ms
|
||||
; SOURCE LINE # 178
|
||||
0015 E500 R MOV A,cnt_sys_tim0_5ms
|
||||
0017 C3 CLR C
|
||||
0018 9405 SUBB A,#05H
|
||||
001A 403A JC ?C0019
|
||||
; SOURCE LINE # 179
|
||||
; SOURCE LINE # 180
|
||||
001C 750000 R MOV cnt_sys_tim0_5ms,#00H
|
||||
; SOURCE LINE # 183
|
||||
001F 300034 R JNB BES_Puls_Start,?C0019
|
||||
; SOURCE LINE # 184
|
||||
; SOURCE LINE # 185
|
||||
0022 E500 R MOV A,BES_Puls_Cnt
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 9
|
||||
|
||||
0024 D3 SETB C
|
||||
0025 9404 SUBB A,#04H
|
||||
0027 5004 JNC ?C0010
|
||||
; SOURCE LINE # 186
|
||||
; SOURCE LINE # 187
|
||||
0029 C282 CLR COM_CTRL
|
||||
; SOURCE LINE # 188
|
||||
002B 801B SJMP ?C0011
|
||||
002D ?C0010:
|
||||
; SOURCE LINE # 190
|
||||
; SOURCE LINE # 191
|
||||
002D E500 R MOV A,BES_Puls_Cnt
|
||||
002F 30E00B JNB ACC.0,?C0012
|
||||
; SOURCE LINE # 192
|
||||
; SOURCE LINE # 194
|
||||
0032 B40D04 CJNE A,#0DH,?C0013
|
||||
; SOURCE LINE # 195
|
||||
; SOURCE LINE # 196
|
||||
0035 C282 CLR COM_CTRL
|
||||
; SOURCE LINE # 197
|
||||
0037 800F SJMP ?C0011
|
||||
0039 ?C0013:
|
||||
; SOURCE LINE # 199
|
||||
; SOURCE LINE # 200
|
||||
0039 D282 SETB COM_CTRL
|
||||
; SOURCE LINE # 201
|
||||
; SOURCE LINE # 202
|
||||
003B 800B SJMP ?C0011
|
||||
003D ?C0012:
|
||||
; SOURCE LINE # 204
|
||||
; SOURCE LINE # 206
|
||||
003D E500 R MOV A,BES_Puls_Cnt
|
||||
003F B40E04 CJNE A,#0EH,?C0016
|
||||
; SOURCE LINE # 207
|
||||
; SOURCE LINE # 208
|
||||
0042 D282 SETB COM_CTRL
|
||||
; SOURCE LINE # 209
|
||||
0044 8002 SJMP ?C0011
|
||||
0046 ?C0016:
|
||||
; SOURCE LINE # 211
|
||||
; SOURCE LINE # 212
|
||||
0046 C282 CLR COM_CTRL
|
||||
; SOURCE LINE # 213
|
||||
; SOURCE LINE # 214
|
||||
; SOURCE LINE # 215
|
||||
0048 ?C0011:
|
||||
; SOURCE LINE # 217
|
||||
0048 0500 R INC BES_Puls_Cnt
|
||||
; SOURCE LINE # 219
|
||||
004A E500 R MOV A,BES_Puls_Cnt
|
||||
004C C3 CLR C
|
||||
004D 9417 SUBB A,#017H
|
||||
004F 4005 JC ?C0019
|
||||
; SOURCE LINE # 220
|
||||
; SOURCE LINE # 221
|
||||
0051 C200 R CLR BES_Puls_Start
|
||||
; SOURCE LINE # 222
|
||||
0053 750000 R MOV BES_Puls_Cnt,#00H
|
||||
; SOURCE LINE # 223
|
||||
; SOURCE LINE # 224
|
||||
; SOURCE LINE # 225
|
||||
; SOURCE LINE # 227
|
||||
C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 10
|
||||
|
||||
0056 ?C0019:
|
||||
0056 D0D0 POP PSW
|
||||
0058 D0E0 POP ACC
|
||||
005A 32 RETI
|
||||
; FUNCTION tim0_Interrupt (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 176 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 8 ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = 6 ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
468
Project/Listings/system.lst
Normal file
468
Project/Listings/system.lst
Normal file
@ -0,0 +1,468 @@
|
||||
C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE SYSTEM
|
||||
OBJECT MODULE PLACED IN .\Objects\system.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\system\system.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..
|
||||
-\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrI
|
||||
-nc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\Us
|
||||
-rInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\s
|
||||
-ystem.lst) TABS(2) OBJECT(.\Objects\system.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file system.c
|
||||
5 * @brief system module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/08/04 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/08/15 Alex build this file
|
||||
18 * Attention:1、由于同一个Byte的中断标志位,会分配在不同的中断中,对于清中断标志位(写1清),不能用 |= ,<>
|
||||
-枰<><E69EB0> = ;
|
||||
19 例如:IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag
|
||||
20 2、外部中断0,主要是用于系统唤醒功能,中断处理函数中无需作逻辑功能处理,必需预留接口!
|
||||
21 ******************************************************************************/
|
||||
22 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
23
|
||||
24 #include "system.h"
|
||||
25 #include "gpio.h"
|
||||
26 #include "adc.h"
|
||||
27 #include "hall.h"
|
||||
28 #include "key.h"
|
||||
29 #include "sleep.h"
|
||||
30 #include "uart.h"
|
||||
31 #include "bat.h"
|
||||
32 #include "sys_tim.h"
|
||||
33 #include "charger_module.h"
|
||||
34 #include "discharge_module.h"
|
||||
35 #include "led.h"
|
||||
36 #include "vox_module.h"
|
||||
37 #include "watchdog.h"
|
||||
38 #include "userapp.h"
|
||||
39
|
||||
40 /******************************************************************************\
|
||||
41 Macro definitions
|
||||
42 \******************************************************************************/
|
||||
43
|
||||
44 /******************************************************************************\
|
||||
45 Variables definitions
|
||||
46 \******************************************************************************/
|
||||
47
|
||||
48 /******************************************************************************\
|
||||
49 Functions definitions
|
||||
50 \******************************************************************************/
|
||||
C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 2
|
||||
|
||||
51
|
||||
52
|
||||
53 /*
|
||||
54 *******************************************************************************
|
||||
55 * void System_Init(void)
|
||||
56 *
|
||||
57 * Description : System Initialization
|
||||
58 *
|
||||
59 * Arguments : NONE
|
||||
60
|
||||
61 * Returns : NONE
|
||||
62
|
||||
63 * Notes : NONE
|
||||
64 *
|
||||
65 *******************************************************************************
|
||||
66 */
|
||||
67 void System_Init(void)
|
||||
68 {
|
||||
69 1 CLKPRE = 0x00; //frequency division: 2^0, 12M 后续根据系统功耗情况调整。
|
||||
70 1
|
||||
71 1 /* test,开启IO LDO bias和增加100uA负载。*/
|
||||
72 1 SFRADDR = 0x89;
|
||||
73 1 SFRDATA |= 0x80;
|
||||
74 1
|
||||
75 1 /*test*/
|
||||
76 1 SFRADDR = P0_PD;
|
||||
77 1 SFRDATA &= ~0x03;
|
||||
78 1
|
||||
79 1 #if UART0_ENABLE
|
||||
80 1
|
||||
81 1 SFRADDR = P0_PU;
|
||||
82 1 SFRDATA = 0x03;
|
||||
83 1
|
||||
84 1 //UART0_Init();
|
||||
85 1 SFRADDR = MFP_CTL0;
|
||||
86 1 SFRDATA = 0x05; //P01 as UART's TX,P00 as UART's RX
|
||||
87 1
|
||||
88 1 BD = 1; //Select additional Baudrate generator
|
||||
89 1 PCON |= 0x80; //Baudrate double enable
|
||||
90 1
|
||||
91 1 //baudrate set
|
||||
92 1 S0RELH = HIBYTE(S0REL_VALUE);
|
||||
93 1 S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k
|
||||
94 1
|
||||
95 1 S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity
|
||||
96 1
|
||||
97 1 TI0 = 1;
|
||||
98 1 RI0 = 1;
|
||||
99 1 ES0 = 1; //Enable UART0 IRQ
|
||||
100 1
|
||||
101 1 #endif
|
||||
102 1
|
||||
103 1 #if VOX_ENABLE
|
||||
104 1 //Vox_init(); //上电后,尽快初始化VOX为自动识别模式,为后续识别VOX是否有LOADON做好准备。
|
||||
105 1 VOX_CTL0 = 0xC3; //VOX 负载接入、存在识别功能使能,负载自动识别。打开Vox vds钳压环使能(主要用于VOX 5V
|
||||
-输出)。
|
||||
106 1 /*
|
||||
107 1 SFRADDR = VOX_CON0; //设置VOX输出500mA,负载识别电流2.5uA。
|
||||
108 1 SFRDATA &= 0xE0;
|
||||
109 1 SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA;
|
||||
110 1 */
|
||||
111 1 #endif
|
||||
C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 3
|
||||
|
||||
112 1
|
||||
113 1 //Sys_Tim0_Init();
|
||||
114 1 //TMOD &= 0xF0;
|
||||
115 1 TMOD = 0x01; //mode 1, 16bit timer
|
||||
116 1
|
||||
117 1 TH0 = C_TIM0_Reload >> 8;
|
||||
118 1 TL0 = C_TIM0_Reload & 0xFF;
|
||||
119 1
|
||||
120 1 ET0 = 1; //enable time0 interrupt
|
||||
121 1 TR0 = 1; //time0 run
|
||||
122 1
|
||||
123 1 #if TIMER1_ENABLE
|
||||
|
||||
//Sys_Tim1_Init();
|
||||
|
||||
TMOD |= 0x10; //mode 1, 16bit timer
|
||||
|
||||
TH1 = C_TIM1_Reload >> 8;
|
||||
TL1 = C_TIM1_Reload & 0xFF;
|
||||
|
||||
ET1 = 1; //enable time1 interrupt
|
||||
TR1 = 1; //time1 run
|
||||
|
||||
#endif
|
||||
136 1 /*test,set P1.0 output*/
|
||||
137 1 #if 0
|
||||
SFRADDR = P1_OE;
|
||||
SFRDATA = 0x01;
|
||||
P10 = 0;
|
||||
#endif
|
||||
142 1 /*COM_CTRL Set*/
|
||||
143 1 SFRADDR = P0_OE;
|
||||
144 1 SFRDATA = 0x0C; //COM_CTRL(P02)、LED(P03)配置为GPIO输出
|
||||
145 1
|
||||
146 1 // COM_CTRL = ON; //P02设置高:用于VOUT;设置低:用于UART。
|
||||
147 1
|
||||
148 1 #ifdef LED_DISPLAY
|
||||
149 1 // LED_Init(); // LED pin 配置为GPIO输出
|
||||
150 1
|
||||
151 1 SFRADDR = P0_DRV;
|
||||
152 1 SFRDATA = 0x0C;
|
||||
153 1
|
||||
154 1 pin_LED_1 = 0;
|
||||
155 1 #endif
|
||||
156 1
|
||||
157 1 #if WTG_ENABLE
|
||||
158 1 /* 65ms */
|
||||
159 1 WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32;
|
||||
160 1 /* 1s */
|
||||
161 1 // WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32;
|
||||
162 1 #endif
|
||||
163 1
|
||||
164 1 #ifdef ADC_NTC_ENABLE
|
||||
165 1
|
||||
166 1 SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function
|
||||
167 1 SFRDATA |= 0x80;
|
||||
168 1
|
||||
169 1 SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable.
|
||||
170 1 SFRDATA = 0x10;
|
||||
171 1
|
||||
172 1 #endif
|
||||
173 1
|
||||
C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 4
|
||||
|
||||
174 1 /* Interrupt Enable 根据应用选择必要的中断 */
|
||||
175 1 SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON
|
||||
176 1 SFRDATA = 0x3C;
|
||||
177 1
|
||||
178 1 SFRADDR = IRQ_EN10; //INT4 --- Hall interrupt enable.
|
||||
179 1 SFRDATA = 0x0C;
|
||||
180 1
|
||||
181 1 /* 开外部中断使能 */
|
||||
182 1 EX0 = 1;
|
||||
183 1 EX2 = 1;
|
||||
184 1 EX4 = 1;
|
||||
185 1
|
||||
186 1 EAL = 1; //开总中断。
|
||||
187 1
|
||||
188 1 IRQ_FLAG9 = 0x1C; //清 Charge complete Int、Tricle/Fast Charge Time expire Int
|
||||
189 1 IRQ_FLAG10 = 0xC0; //清 VBUS Plugin\Plugout Int
|
||||
190 1 IRQ_FLAG0 = 0x0C; //Vox短路保护
|
||||
191 1
|
||||
192 1 #if CHARGER_ENABLE
|
||||
193 1
|
||||
194 1 SFRADDR = PMU_CTL7; //合封芯片关闭VBUS OV检测使能
|
||||
195 1 SFRDATA &= ~0x20;
|
||||
196 1
|
||||
197 1 CHG_CTL |= 0x10; //开启充电超时使能
|
||||
198 1
|
||||
199 1 SFRADDR = REG_CHG0;
|
||||
200 1 SFRDATA |= 0x04; //关VDPM环
|
||||
201 1
|
||||
202 1 #endif
|
||||
203 1
|
||||
204 1 #if SLEEP_ENABLE
|
||||
205 1 Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
|
||||
206 1 #endif
|
||||
207 1
|
||||
208 1 }
|
||||
209
|
||||
210 /*
|
||||
211 *******************************************************************************
|
||||
212 * void EX0_isr(void ) interrupt Interrupt_Vector_IE0
|
||||
213 *
|
||||
214 * Description : System External Intterupt 0
|
||||
215 *
|
||||
216 * Arguments : NONE
|
||||
217
|
||||
218 * Returns : NONE
|
||||
219
|
||||
220 * Notes : NONE
|
||||
221 *
|
||||
222 *******************************************************************************
|
||||
223 */
|
||||
224 void EX0_isr(void) interrupt Interrupt_Vector_IE0
|
||||
225 {
|
||||
226 1
|
||||
227 1 }
|
||||
228
|
||||
229 /*
|
||||
230 *******************************************************************************
|
||||
231 * void EX2_isr(void) interrupt Interrupt_Vector_IE2
|
||||
232 *
|
||||
233 * Description : System External Intterupt 2
|
||||
234 *
|
||||
235 * Arguments : NONE
|
||||
C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 5
|
||||
|
||||
236
|
||||
237 * Returns : NONE
|
||||
238
|
||||
239 * Notes : NONE
|
||||
240 *
|
||||
241 *******************************************************************************
|
||||
242 */
|
||||
243
|
||||
244 void EX2_isr(void) interrupt Interrupt_Vector_IE2
|
||||
245 {
|
||||
246 1 IRQ_FLAG3 = 0x3C;
|
||||
247 1
|
||||
248 1 #if SLEEP_ENABLE
|
||||
249 1 // if( !Enter_Sleep_Cnt_Restart_Flag )
|
||||
250 1 {
|
||||
251 2 Enter_Sleep_Cnt_Restart_Flag = 1;
|
||||
252 2 }
|
||||
253 1 #endif
|
||||
254 1 }
|
||||
255
|
||||
256 /*
|
||||
257 *******************************************************************************
|
||||
258 * void EX4_isr(void) interrupt Interrupt_Vector_IE4
|
||||
259 *
|
||||
260 * Description : System External Intterupt 4
|
||||
261 *
|
||||
262 * Arguments : NONE
|
||||
263
|
||||
264 * Returns : NONE
|
||||
265
|
||||
266 * Notes : NONE
|
||||
267 *
|
||||
268 *******************************************************************************
|
||||
269 */
|
||||
270 void EX4_isr(void) interrupt Interrupt_Vector_IE4
|
||||
271 {
|
||||
272 1
|
||||
273 1 IRQ_FLAG10 = 0x0C;
|
||||
274 1
|
||||
275 1 #if SLEEP_ENABLE
|
||||
276 1
|
||||
277 1 //if( !Enter_Sleep_Cnt_Restart_Flag )
|
||||
278 1 {
|
||||
279 2 Enter_Sleep_Cnt_Restart_Flag = 1;
|
||||
280 2 }
|
||||
281 1
|
||||
282 1 #endif
|
||||
283 1 }
|
||||
284
|
||||
C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 6
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION System_Init (BEGIN)
|
||||
; SOURCE LINE # 67
|
||||
; SOURCE LINE # 68
|
||||
; SOURCE LINE # 69
|
||||
0000 E4 CLR A
|
||||
0001 F5D2 MOV CLKPRE,A
|
||||
; SOURCE LINE # 72
|
||||
0003 75FE89 MOV SFRADDR,#089H
|
||||
; SOURCE LINE # 73
|
||||
0006 43FF80 ORL SFRDATA,#080H
|
||||
; SOURCE LINE # 76
|
||||
0009 75FE01 MOV SFRADDR,#01H
|
||||
; SOURCE LINE # 77
|
||||
000C 53FFFC ANL SFRDATA,#0FCH
|
||||
; SOURCE LINE # 81
|
||||
000F F5FE MOV SFRADDR,A
|
||||
; SOURCE LINE # 82
|
||||
0011 75FF03 MOV SFRDATA,#03H
|
||||
; SOURCE LINE # 85
|
||||
0014 75FE0E MOV SFRADDR,#0EH
|
||||
; SOURCE LINE # 86
|
||||
0017 75FF05 MOV SFRDATA,#05H
|
||||
; SOURCE LINE # 88
|
||||
001A D2DF SETB BD
|
||||
; SOURCE LINE # 89
|
||||
001C 438780 ORL PCON,#080H
|
||||
; SOURCE LINE # 92
|
||||
001F 75BA03 MOV S0RELH,#03H
|
||||
; SOURCE LINE # 93
|
||||
0022 75AAFD MOV S0RELL,#0FDH
|
||||
; SOURCE LINE # 95
|
||||
0025 7598D0 MOV S0CON,#0D0H
|
||||
; SOURCE LINE # 97
|
||||
0028 D299 SETB TI0
|
||||
; SOURCE LINE # 98
|
||||
002A D298 SETB RI0
|
||||
; SOURCE LINE # 99
|
||||
002C D2AC SETB ES0
|
||||
; SOURCE LINE # 105
|
||||
002E 75B7C3 MOV VOX_CTL0,#0C3H
|
||||
; SOURCE LINE # 115
|
||||
0031 758901 MOV TMOD,#01H
|
||||
; SOURCE LINE # 117
|
||||
0034 758CFC MOV TH0,#0FCH
|
||||
; SOURCE LINE # 118
|
||||
0037 758A17 MOV TL0,#017H
|
||||
; SOURCE LINE # 120
|
||||
003A D2A9 SETB ET0
|
||||
; SOURCE LINE # 121
|
||||
003C D28C SETB TR0
|
||||
; SOURCE LINE # 143
|
||||
003E 75FE06 MOV SFRADDR,#06H
|
||||
; SOURCE LINE # 144
|
||||
0041 75FF0C MOV SFRDATA,#0CH
|
||||
; SOURCE LINE # 151
|
||||
0044 75FE03 MOV SFRADDR,#03H
|
||||
; SOURCE LINE # 152
|
||||
0047 75FF0C MOV SFRDATA,#0CH
|
||||
; SOURCE LINE # 154
|
||||
C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 7
|
||||
|
||||
004A C283 CLR pin_LED_1
|
||||
; SOURCE LINE # 159
|
||||
004C F586 MOV WDTREL,A
|
||||
; SOURCE LINE # 166
|
||||
004E 75FE0F MOV SFRADDR,#0FH
|
||||
; SOURCE LINE # 167
|
||||
0051 43FF80 ORL SFRDATA,#080H
|
||||
; SOURCE LINE # 169
|
||||
0054 75FE4F MOV SFRADDR,#04FH
|
||||
; SOURCE LINE # 170
|
||||
0057 75FF10 MOV SFRDATA,#010H
|
||||
; SOURCE LINE # 175
|
||||
005A 75FE17 MOV SFRADDR,#017H
|
||||
; SOURCE LINE # 176
|
||||
005D 75FF3C MOV SFRDATA,#03CH
|
||||
; SOURCE LINE # 178
|
||||
0060 75FE1E MOV SFRADDR,#01EH
|
||||
; SOURCE LINE # 179
|
||||
0063 75FF0C MOV SFRDATA,#0CH
|
||||
; SOURCE LINE # 182
|
||||
0066 D2A8 SETB EX0
|
||||
; SOURCE LINE # 183
|
||||
0068 D2B9 SETB EX2
|
||||
; SOURCE LINE # 184
|
||||
006A D2BB SETB EX4
|
||||
; SOURCE LINE # 186
|
||||
006C D2AF SETB EAL
|
||||
; SOURCE LINE # 188
|
||||
006E 75F21C MOV IRQ_FLAG9,#01CH
|
||||
; SOURCE LINE # 189
|
||||
0071 75F3C0 MOV IRQ_FLAG10,#0C0H
|
||||
; SOURCE LINE # 190
|
||||
0074 75E80C MOV IRQ_FLAG0,#0CH
|
||||
; SOURCE LINE # 194
|
||||
0077 75FE87 MOV SFRADDR,#087H
|
||||
; SOURCE LINE # 195
|
||||
007A 53FFDF ANL SFRDATA,#0DFH
|
||||
; SOURCE LINE # 197
|
||||
007D 43B310 ORL CHG_CTL,#010H
|
||||
; SOURCE LINE # 199
|
||||
0080 75FE70 MOV SFRADDR,#070H
|
||||
; SOURCE LINE # 200
|
||||
0083 43FF04 ORL SFRDATA,#04H
|
||||
; SOURCE LINE # 205
|
||||
0086 75000A E MOV Decnt_SleepDelay,#0AH
|
||||
; SOURCE LINE # 208
|
||||
0089 22 RET
|
||||
; FUNCTION System_Init (END)
|
||||
|
||||
; FUNCTION EX0_isr (BEGIN)
|
||||
; SOURCE LINE # 224
|
||||
; SOURCE LINE # 227
|
||||
0000 32 RETI
|
||||
; FUNCTION EX0_isr (END)
|
||||
|
||||
; FUNCTION EX2_isr (BEGIN)
|
||||
; SOURCE LINE # 244
|
||||
; SOURCE LINE # 246
|
||||
0000 75EB3C MOV IRQ_FLAG3,#03CH
|
||||
; SOURCE LINE # 250
|
||||
; SOURCE LINE # 251
|
||||
0003 D200 E SETB Enter_Sleep_Cnt_Restart_Flag
|
||||
C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 8
|
||||
|
||||
; SOURCE LINE # 252
|
||||
; SOURCE LINE # 254
|
||||
0005 32 RETI
|
||||
; FUNCTION EX2_isr (END)
|
||||
|
||||
; FUNCTION EX4_isr (BEGIN)
|
||||
; SOURCE LINE # 270
|
||||
; SOURCE LINE # 273
|
||||
0000 75F30C MOV IRQ_FLAG10,#0CH
|
||||
; SOURCE LINE # 278
|
||||
; SOURCE LINE # 279
|
||||
0003 D200 E SETB Enter_Sleep_Cnt_Restart_Flag
|
||||
; SOURCE LINE # 280
|
||||
; SOURCE LINE # 283
|
||||
0005 32 RETI
|
||||
; FUNCTION EX4_isr (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 151 ----
|
||||
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)
|
610
Project/Listings/uart.lst
Normal file
610
Project/Listings/uart.lst
Normal file
@ -0,0 +1,610 @@
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE UART
|
||||
OBJECT MODULE PLACED IN .\Objects\uart.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\uart\uart.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\Usr
|
||||
-Inc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\k
|
||||
-ey;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc
|
||||
-\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\uart.
|
||||
-lst) TABS(2) OBJECT(.\Objects\uart.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file uart.c
|
||||
5 * @brief uart module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/12/14 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/12/14 Alex build this file
|
||||
18 ******************************************************************************/
|
||||
19 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
20 #include "uart.h"
|
||||
21 #include "system.h"
|
||||
22 #include "vox_module.h"
|
||||
23
|
||||
24
|
||||
25 #if UART0_ENABLE
|
||||
26
|
||||
27 /******************************************************************************\
|
||||
28 Macro definitions
|
||||
29 \******************************************************************************/
|
||||
30 #define NONE_PARITY 0 //无校验
|
||||
31 #define ODD_PARITY 1 //奇校验
|
||||
32 #define EVEN_PARITY 2 //偶校验
|
||||
33 #define MARK_PARITY 3 //标记校验
|
||||
34 #define SPACE_PARITY 4 //空白校验
|
||||
35
|
||||
36 #define PARITYBIT EVEN_PARITY //定义校验位
|
||||
37
|
||||
38 /******************************************************************************\
|
||||
39 Variables definitions
|
||||
40 \******************************************************************************/
|
||||
41
|
||||
42 bit busy0;
|
||||
43
|
||||
44 #ifdef VOX_RX
|
||||
45 idata uint8_t RX0_Buffer[COM0_Data_Lenth] = 0; //接收缓冲
|
||||
46 bit Uart0_RX_Finish_Flag = 0;
|
||||
47 #endif
|
||||
48
|
||||
49 #endif
|
||||
50
|
||||
51 #ifdef _DEBUG_ALL
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 2
|
||||
|
||||
char putchar(char c)
|
||||
{
|
||||
|
||||
while(!TI0);
|
||||
TI0 = 0;
|
||||
return (S0BUF = c);
|
||||
|
||||
// Uart0SendData(c);
|
||||
// return(c);
|
||||
}
|
||||
#endif
|
||||
63
|
||||
64 #if UART0_ENABLE
|
||||
65
|
||||
66 /*
|
||||
67 *******************************************************************************
|
||||
68 * void UART0_Init(void)
|
||||
69 *
|
||||
70 * Description : UART0 Initialization UART0用于debug、打印、透传功能
|
||||
71 *
|
||||
72 * Arguments : NONE
|
||||
73
|
||||
74 * Returns : NONE
|
||||
75
|
||||
76 * Notes : NONE
|
||||
77 *
|
||||
78 *******************************************************************************
|
||||
79 */
|
||||
80 #if 0
|
||||
void UART0_Init(void)
|
||||
{
|
||||
SFRADDR = MFP_CTL0;
|
||||
SFRDATA &= ~0x0C;
|
||||
SFRDATA |= 0x04; //P01 as UART's TX
|
||||
|
||||
BD = 1; //Select additional Baudrate generator
|
||||
PCON |= 0x80; //Baudrate double enable
|
||||
|
||||
//baudrate set
|
||||
S0RELH = HIBYTE(S0REL_VALUE);
|
||||
S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k
|
||||
|
||||
S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity
|
||||
|
||||
TI0 = 1;
|
||||
RI0 = 1;
|
||||
ES0 = 1; //Enable UART0 IRQ
|
||||
}
|
||||
#endif
|
||||
101 /*
|
||||
102 *******************************************************************************
|
||||
103 * void Uart0SendData(uint8_t Txdata)
|
||||
104 *
|
||||
105 * Description : UART0 Send Data
|
||||
106 *
|
||||
107 * Arguments : NONE
|
||||
108
|
||||
109 * Returns : NONE
|
||||
110
|
||||
111 * Notes : NONE
|
||||
112 *
|
||||
113 *******************************************************************************
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 3
|
||||
|
||||
114 */
|
||||
115 #if 0
|
||||
void Uart0SendData(uint8_t Txdata)
|
||||
{
|
||||
while(busy0);
|
||||
ACC = Txdata;
|
||||
if (P) //根据P来设置校验位
|
||||
{
|
||||
#if (PARITYBIT == ODD_PARITY)
|
||||
TB80 = 0; //设置校验位为0
|
||||
#elif (PARITYBIT == EVEN_PARITY)
|
||||
TB80 = 1; //设置校验位为1
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#if (PARITYBIT == ODD_PARITY)
|
||||
TB80 = 1; //设置校验位为1
|
||||
#elif (PARITYBIT == EVEN_PARITY)
|
||||
TB80 = 0; //设置校验位为0
|
||||
#endif
|
||||
}
|
||||
busy0 = 1;
|
||||
S0BUF = ACC;
|
||||
}
|
||||
#endif
|
||||
140
|
||||
141 /*
|
||||
142 *******************************************************************************
|
||||
143 * void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf)
|
||||
144 *
|
||||
145 * Description : UART0 Send Packet
|
||||
146 *
|
||||
147 * Arguments : NONE
|
||||
148
|
||||
149 * Returns : NONE
|
||||
150
|
||||
151 * Notes : NONE
|
||||
152 *
|
||||
153 *******************************************************************************
|
||||
154 */
|
||||
155 #ifdef VOX_TX
|
||||
156
|
||||
157 void Uart0SendPacket(uint16_t Length,uint8_t *TransBuf)
|
||||
158 {
|
||||
159 1 uint8_t i = 0;
|
||||
160 1 for(i=0;i<Length;i++)
|
||||
161 1 {
|
||||
162 2 //Uart0SendData(*TransBuf++);
|
||||
163 2
|
||||
164 2 while(busy0);
|
||||
165 2 ACC = *TransBuf++;
|
||||
166 2 busy0 = 1;
|
||||
167 2 S0BUF = ACC;
|
||||
168 2 }
|
||||
169 1 }
|
||||
170 #endif
|
||||
171
|
||||
172 #endif
|
||||
173
|
||||
174 #if UART0_ENABLE
|
||||
175
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 4
|
||||
|
||||
176 #if defined(QIANCHENG) //岍丞
|
||||
|
||||
#define Vox_Comm_Data_Len 5
|
||||
|
||||
#elif defined(ZHONGKELANXUN) //中科蓝讯
|
||||
|
||||
#define Vox_Comm_Data_Len 5
|
||||
|
||||
#elif defined(XIAOMI)
|
||||
185
|
||||
186 #define Vox_Comm_Data_Len 7
|
||||
187
|
||||
188 #endif
|
||||
189
|
||||
190
|
||||
191 /*uart0中断处理函数*/
|
||||
192 void uart0_Interrupt(void) interrupt Interrupt_Vector_RI_TI
|
||||
193 {
|
||||
194 1 static uint8_t Rx0Status;
|
||||
195 1 #ifdef XIAOMI
|
||||
196 1
|
||||
197 1 static uint16_t RX0_Cnt;
|
||||
198 1 static uint16_t RX0DataLen;
|
||||
199 1
|
||||
200 1 #else
|
||||
|
||||
static uint8_t RX0_Cnt;
|
||||
static uint8_t RX0DataLen;
|
||||
|
||||
#endif
|
||||
206 1 /*处理UART0发送中断*/
|
||||
207 1 if(TI0)
|
||||
208 1 {
|
||||
209 2 TI0 = 0;
|
||||
210 2 busy0 = 0;
|
||||
211 2 }
|
||||
212 1
|
||||
213 1 /*处理UART0接收中断*/
|
||||
214 1 if(RI0)
|
||||
215 1 {
|
||||
216 2 RI0 = 0;
|
||||
217 2
|
||||
218 2 #ifdef VOX_RX
|
||||
219 2
|
||||
220 2 #if defined(QIANCHENG) //岍丞
|
||||
|
||||
switch(Rx0Status)
|
||||
{
|
||||
case 0:
|
||||
if(S0BUF == 0xA5)
|
||||
{
|
||||
Rx0Status = 1;
|
||||
|
||||
RX0_Cnt = 0;
|
||||
|
||||
RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
|
||||
RX0_Cnt++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Rx0Status = 0;
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 5
|
||||
|
||||
|
||||
RX0_Cnt = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
|
||||
RX0_Cnt++;
|
||||
|
||||
if( RX0_Cnt == Vox_Comm_Data_Len )
|
||||
{
|
||||
RX0DataLen = RX0_Buffer[4] + 5; //获取数据长度
|
||||
}
|
||||
|
||||
if( (RX0DataLen == RX0_Cnt) || (RX0_Cnt > COM0_Data_Lenth) ) //当接收到的data个数等于RX0DataLen,这<EFBC8C>
|
||||
-崾<>敬未<E695AC>洹<EFBFBD>
|
||||
{
|
||||
RX0_Cnt = 0;
|
||||
Rx0Status = 0;
|
||||
Uart0_RX_Finish_Flag = 1;
|
||||
}
|
||||
}
|
||||
|
||||
#elif defined(ZHONGKELANXUN) //中科蓝讯
|
||||
|
||||
switch(Rx0Status)
|
||||
{
|
||||
case 0:
|
||||
if( S0BUF == (BOXHEADER >> 8) )
|
||||
{
|
||||
Rx0Status = 1;
|
||||
|
||||
RX0_Cnt = 0;
|
||||
|
||||
RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
|
||||
RX0_Cnt++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Rx0Status = 0;
|
||||
|
||||
RX0_Cnt = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if(S0BUF == BOXHEADER)
|
||||
{
|
||||
Rx0Status = 2;
|
||||
|
||||
RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
|
||||
RX0_Cnt++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Rx0Status = 0;
|
||||
|
||||
RX0_Cnt = 0;
|
||||
}
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 6
|
||||
|
||||
break;
|
||||
case 1:
|
||||
RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
|
||||
if(RX0DataLen == RX0_Cnt - 6)
|
||||
{
|
||||
RX0_Cnt = 0;
|
||||
Rx0Status = 0;
|
||||
Uart0_RX_Finish_Flag = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
RX0_Cnt++;
|
||||
|
||||
if(RX0_Cnt == 5)
|
||||
{
|
||||
RX0DataLen = RX0_Buffer[4]; //获取数据长度 length,length不包括Checksum
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#elif defined(XIAOMI) //小米
|
||||
321 2
|
||||
322 2 switch(Rx0Status)
|
||||
323 2 {
|
||||
324 3 case 0:
|
||||
325 3
|
||||
326 3 if(S0BUF == 0xAA)
|
||||
327 3 {
|
||||
328 4 Rx0Status = 1;
|
||||
329 4
|
||||
330 4 RX0_Cnt = 0;
|
||||
331 4
|
||||
332 4 RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
333 4
|
||||
334 4 RX0_Cnt++;
|
||||
335 4 }
|
||||
336 3 else
|
||||
337 3 {
|
||||
338 4 Rx0Status = 0;
|
||||
339 4
|
||||
340 4 RX0_Cnt = 0;
|
||||
341 4 }
|
||||
342 3 break;
|
||||
343 3
|
||||
344 3 case 1:
|
||||
345 3
|
||||
346 3 RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
347 3
|
||||
348 3 RX0_Cnt++;
|
||||
349 3
|
||||
350 3 if( RX0_Cnt == Vox_Comm_Data_Len )
|
||||
351 3 {
|
||||
352 4 RX0DataLen = RX0_Buffer[5] | (RX0_Buffer[6] << 8) + 9; //获取数据长度,Headr(1Byte) + Trandsmit Dir(1
|
||||
-Byte) + CMD(2Bytes) + datalen(2Bytes) + CRC16(2Bytes)
|
||||
353 4 }
|
||||
354 3
|
||||
355 3 if( (RX0DataLen == RX0_Cnt) || (RX0_Cnt > COM0_Data_Lenth) ) //当接收到的data个数等于RX0DataLen,这结
|
||||
-束本次传输。
|
||||
356 3 {
|
||||
357 4 RX0_Cnt = 0;
|
||||
358 4 Rx0Status = 0;
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 7
|
||||
|
||||
359 4 Uart0_RX_Finish_Flag = 1;
|
||||
360 4 }
|
||||
361 3 }
|
||||
362 2
|
||||
363 2
|
||||
364 2
|
||||
365 2 #endif
|
||||
366 2
|
||||
367 2 #endif
|
||||
368 2 }
|
||||
369 1 }
|
||||
370
|
||||
371 #endif
|
||||
372
|
||||
373
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 8
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION Com0015 (BEGIN)
|
||||
0000 L?0022:
|
||||
0000 7400 R MOV A,#LOW RX0_Buffer
|
||||
0002 2500 R ADD A,RX0_Cnt+01H
|
||||
0004 F8 MOV R0,A
|
||||
0005 A699 MOV @R0,S0BUF
|
||||
0007 0500 R INC RX0_Cnt+01H
|
||||
0009 E500 R MOV A,RX0_Cnt+01H
|
||||
000B 22 RET
|
||||
000C L?0023:
|
||||
000C L?0024:
|
||||
000C 750000 R MOV RX0_Cnt,#00H
|
||||
000F 750000 R MOV RX0_Cnt+01H,#00H
|
||||
0012 22 RET
|
||||
; FUNCTION Com0015 (END)
|
||||
|
||||
; FUNCTION _Uart0SendPacket (BEGIN)
|
||||
; SOURCE LINE # 157
|
||||
0000 8E00 R MOV Length,R6
|
||||
0002 8F00 R MOV Length+01H,R7
|
||||
0004 8B00 R MOV TransBuf,R3
|
||||
0006 8A00 R MOV TransBuf+01H,R2
|
||||
0008 8900 R MOV TransBuf+02H,R1
|
||||
; SOURCE LINE # 158
|
||||
; SOURCE LINE # 159
|
||||
;---- Variable 'i' assigned to Register 'R7' ----
|
||||
000A E4 CLR A
|
||||
000B FF MOV R7,A
|
||||
; SOURCE LINE # 160
|
||||
000C ?C0001:
|
||||
000C EF MOV A,R7
|
||||
000D C3 CLR C
|
||||
000E 9500 R SUBB A,Length+01H
|
||||
0010 E4 CLR A
|
||||
0011 9500 R SUBB A,Length
|
||||
0013 5016 JNC ?C0006
|
||||
; SOURCE LINE # 161
|
||||
0015 ?C0004:
|
||||
; SOURCE LINE # 164
|
||||
0015 2000FD R JB busy0,?C0004
|
||||
; SOURCE LINE # 165
|
||||
0018 7800 R MOV R0,#LOW TransBuf
|
||||
001A E4 CLR A
|
||||
001B 75F001 MOV B,#01H
|
||||
001E 120000 E LCALL ?C?PLDIIDATA
|
||||
0021 120000 E LCALL ?C?CLDPTR
|
||||
; SOURCE LINE # 166
|
||||
0024 D200 R SETB busy0
|
||||
; SOURCE LINE # 167
|
||||
0026 F599 MOV S0BUF,A
|
||||
; SOURCE LINE # 168
|
||||
0028 0F INC R7
|
||||
0029 80E1 SJMP ?C0001
|
||||
; SOURCE LINE # 169
|
||||
002B ?C0006:
|
||||
002B 22 RET
|
||||
; FUNCTION _Uart0SendPacket (END)
|
||||
|
||||
; FUNCTION uart0_Interrupt (BEGIN)
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 9
|
||||
|
||||
0000 C0E0 PUSH ACC
|
||||
0002 C0D0 PUSH PSW
|
||||
0004 75D000 MOV PSW,#00H
|
||||
0007 C000 PUSH AR0
|
||||
0009 C005 PUSH AR5
|
||||
000B C006 PUSH AR6
|
||||
000D C007 PUSH AR7
|
||||
; SOURCE LINE # 192
|
||||
; SOURCE LINE # 207
|
||||
000F 309904 JNB TI0,?C0007
|
||||
; SOURCE LINE # 208
|
||||
; SOURCE LINE # 209
|
||||
0012 C299 CLR TI0
|
||||
; SOURCE LINE # 210
|
||||
0014 C200 R CLR busy0
|
||||
; SOURCE LINE # 211
|
||||
0016 ?C0007:
|
||||
; SOURCE LINE # 214
|
||||
0016 309867 JNB RI0,?C0017
|
||||
; SOURCE LINE # 215
|
||||
; SOURCE LINE # 216
|
||||
0019 C298 CLR RI0
|
||||
; SOURCE LINE # 322
|
||||
001B E500 R MOV A,Rx0Status
|
||||
001D 14 DEC A
|
||||
001E 601F JZ ?C0013
|
||||
0020 04 INC A
|
||||
0021 705D JNZ ?C0017
|
||||
; SOURCE LINE # 323
|
||||
; SOURCE LINE # 324
|
||||
0023 ?C0010:
|
||||
; SOURCE LINE # 326
|
||||
0023 E599 MOV A,S0BUF
|
||||
0025 B4AA0F CJNE A,#0AAH,?C0011
|
||||
; SOURCE LINE # 327
|
||||
; SOURCE LINE # 328
|
||||
0028 750001 R MOV Rx0Status,#01H
|
||||
; SOURCE LINE # 330
|
||||
002B 120000 R LCALL L?0023
|
||||
; SOURCE LINE # 332
|
||||
; SOURCE LINE # 334
|
||||
002E 120000 R LCALL L?0022
|
||||
0031 7002 JNZ ?C0018
|
||||
0033 0500 R INC RX0_Cnt
|
||||
0035 ?C0018:
|
||||
; SOURCE LINE # 335
|
||||
0035 8049 SJMP ?C0017
|
||||
0037 ?C0011:
|
||||
; SOURCE LINE # 337
|
||||
; SOURCE LINE # 338
|
||||
0037 750000 R MOV Rx0Status,#00H
|
||||
; SOURCE LINE # 340
|
||||
003A 120000 R LCALL L?0023
|
||||
; SOURCE LINE # 341
|
||||
; SOURCE LINE # 342
|
||||
003D 8041 SJMP ?C0017
|
||||
; SOURCE LINE # 344
|
||||
003F ?C0013:
|
||||
; SOURCE LINE # 346
|
||||
; SOURCE LINE # 348
|
||||
003F 120000 R LCALL L?0022
|
||||
0042 7002 JNZ ?C0019
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 10
|
||||
|
||||
0044 0500 R INC RX0_Cnt
|
||||
0046 ?C0019:
|
||||
; SOURCE LINE # 350
|
||||
0046 6407 XRL A,#07H
|
||||
0048 4500 R ORL A,RX0_Cnt
|
||||
004A 7015 JNZ ?C0014
|
||||
; SOURCE LINE # 351
|
||||
; SOURCE LINE # 352
|
||||
004C 7800 R MOV R0,#LOW RX0_Buffer+06H
|
||||
004E E6 MOV A,@R0
|
||||
004F FE MOV R6,A
|
||||
0050 E4 CLR A
|
||||
0051 2409 ADD A,#09H
|
||||
0053 FF MOV R7,A
|
||||
0054 E4 CLR A
|
||||
0055 3E ADDC A,R6
|
||||
0056 FE MOV R6,A
|
||||
0057 18 DEC R0
|
||||
0058 E6 MOV A,@R0
|
||||
0059 FD MOV R5,A
|
||||
005A EE MOV A,R6
|
||||
005B F500 R MOV RX0DataLen,A
|
||||
005D EF MOV A,R7
|
||||
005E 4D ORL A,R5
|
||||
005F F500 R MOV RX0DataLen+01H,A
|
||||
; SOURCE LINE # 353
|
||||
0061 ?C0014:
|
||||
; SOURCE LINE # 355
|
||||
0061 E500 R MOV A,RX0DataLen+01H
|
||||
0063 6500 R XRL A,RX0_Cnt+01H
|
||||
0065 7004 JNZ ?C0020
|
||||
0067 E500 R MOV A,RX0DataLen
|
||||
0069 6500 R XRL A,RX0_Cnt
|
||||
006B ?C0020:
|
||||
006B 600B JZ ?C0016
|
||||
006D D3 SETB C
|
||||
006E E500 R MOV A,RX0_Cnt+01H
|
||||
0070 940B SUBB A,#0BH
|
||||
0072 E500 R MOV A,RX0_Cnt
|
||||
0074 9400 SUBB A,#00H
|
||||
0076 4008 JC ?C0017
|
||||
0078 ?C0016:
|
||||
; SOURCE LINE # 356
|
||||
; SOURCE LINE # 357
|
||||
0078 120000 R LCALL L?0024
|
||||
; SOURCE LINE # 358
|
||||
007B 750000 R MOV Rx0Status,#00H
|
||||
; SOURCE LINE # 359
|
||||
007E D200 R SETB Uart0_RX_Finish_Flag
|
||||
; SOURCE LINE # 360
|
||||
; SOURCE LINE # 361
|
||||
; SOURCE LINE # 368
|
||||
; SOURCE LINE # 369
|
||||
0080 ?C0017:
|
||||
0080 D007 POP AR7
|
||||
0082 D006 POP AR6
|
||||
0084 D005 POP AR5
|
||||
0086 D000 POP AR0
|
||||
0088 D0D0 POP PSW
|
||||
008A D0E0 POP ACC
|
||||
008C 32 RETI
|
||||
; FUNCTION uart0_Interrupt (END)
|
||||
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 11
|
||||
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 204 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 5 5
|
||||
IDATA SIZE = 11 ----
|
||||
BIT SIZE = 2 ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
744
Project/Listings/userapp.lst
Normal file
744
Project/Listings/userapp.lst
Normal file
@ -0,0 +1,744 @@
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE USERAPP
|
||||
OBJECT MODULE PLACED IN .\Objects\userapp.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\userapp\userapp.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(
|
||||
-..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\Us
|
||||
-rInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\
|
||||
-UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings
|
||||
-\userapp.lst) TABS(2) OBJECT(.\Objects\userapp.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file UserApp.c
|
||||
5 * @brief UserApp module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2023/03/27 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2023/03/27 Alex build this file
|
||||
18 ******************************************************************************/
|
||||
19 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
20
|
||||
21 #include "userapp.h"
|
||||
22 #include "gpio.h"
|
||||
23 #include "adc.h"
|
||||
24 #include "hall.h"
|
||||
25 #include "key.h"
|
||||
26 #include "sleep.h"
|
||||
27 #include "system.h"
|
||||
28 #include "bat.h"
|
||||
29 #include "sys_tim.h"
|
||||
30 #include "charger_module.h"
|
||||
31 #include "discharge_module.h"
|
||||
32 #include "led.h"
|
||||
33 #include "vox_module.h"
|
||||
34
|
||||
35 /******************************************************************************\
|
||||
36 Macro definitions
|
||||
37 \******************************************************************************/
|
||||
38
|
||||
39 /******************************************************************************\
|
||||
40 Variables definitions
|
||||
41 \******************************************************************************/
|
||||
42
|
||||
43 uint8_t LED_On_Timer = 0; //led亮时间计时
|
||||
44 //uint8_t LED_On_Timer1 = 0; //led亮时间计时
|
||||
45
|
||||
46 bit led_blink_1time_flag = 0;
|
||||
47
|
||||
48 /******************************************************************************\
|
||||
49 Functions definitions
|
||||
50 \******************************************************************************/
|
||||
51
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 2
|
||||
|
||||
52 /*****************************************************************************
|
||||
53 * Function : void LED_Display_App(void)
|
||||
54 * Description : 5ms调用周期
|
||||
55 * Input : None
|
||||
56 * Output : None
|
||||
57 * Return : None
|
||||
58 * Note : None
|
||||
59 *****************************************************************************/
|
||||
60 /*
|
||||
61 充电:
|
||||
62 1、充电中,无其它行为打断时,开关盒状态下都显示充电常亮灯效(1Hz闪烁);
|
||||
63 2、充满,常亮;可被其它灯效打断;
|
||||
64
|
||||
65 非充电:
|
||||
66 1、首次使用开盖灯效:①高电:亮4s后灭;②低电:1Hz闪4s后灭;
|
||||
67 2、非首次使用开盖灯效:①耳机在盒:亮4s后灭;②耳机不在盒:????
|
||||
68 ③充电中,开盖闪一下,如何闪?亮多久后灭?
|
||||
69 3、关盖灯效,高电:亮4s后灭;低电:1Hz闪4s后灭;
|
||||
70 4、关盒状态下无灯效显示;
|
||||
71
|
||||
72 */
|
||||
73 #ifdef LED_DISPLAY
|
||||
74
|
||||
75 void LED_Display_App(void)
|
||||
76 {
|
||||
77 1 #if 0
|
||||
if( CoverEvent_Flg_led ) //Hall开关盒状态发送改变,非充电(高电)LED亮4s灭、(低电)闪4次(1Hz);充电
|
||||
-LED闪一下后进入1Hz闪烁。
|
||||
{
|
||||
#if 1
|
||||
if( F_batlevel_low ) //盒子电池低电,闪4次后灭。说明:在系统上电期间,由于Bat_level初始化为0,Bat_leve
|
||||
-l要等于ADC对应的电量值,需要5s的debounce;因此在上电期间,开关盖灯效会不正确。
|
||||
{
|
||||
LED_R_FLASH(100,4);
|
||||
CoverEvent_Flg_led = 0;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
/*配对状态灯效显示*/
|
||||
if( (CoverStatus == OPEN) && ( (Vox_Pairing_State[VOL_CHAN] != VOX_PAIR_NONE) || (Vox_Pairing_State[VOR
|
||||
-_CHAN] != VOX_PAIR_NONE) ) ) /* 开盖状态,有耳机在仓。显示配对灯效 */
|
||||
{
|
||||
if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_ING) || (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_ING) )
|
||||
- /*配对中,LED闪,频率2Hz*/
|
||||
{
|
||||
if (Display_Sta != LED_FLASH)
|
||||
{
|
||||
LED_R_KEEP_FLASHING(50);
|
||||
}
|
||||
LED_On_Timer = 0;
|
||||
|
||||
}
|
||||
else
|
||||
if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_OK) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_OK) ) /*
|
||||
-配对成功*/
|
||||
{
|
||||
if( LED_On_Timer < LED_ON_CNT ) //配对成功,LED亮4s后灭。
|
||||
{
|
||||
LED_On_Timer++;
|
||||
LED_R_ON();
|
||||
}
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 3
|
||||
|
||||
else
|
||||
{
|
||||
LED_R_OFF();
|
||||
// CoverEvent_Flg_led = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( (CHIP_STA4 & 0x80) && (CoverStatus == OPEN) ) //盒子充电中开盖,灯闪一下,无论当前灯是什么状态,
|
||||
-灭100ms后恢复原来的灯效。
|
||||
{
|
||||
if( !led_blink_1time_flag ) //问题:充电中,LED灯效为1Hz闪烁,如果这个灭100ms在闪的高电平中有效果
|
||||
-,如果在闪的低电平中,没效果。
|
||||
{
|
||||
led_blink_1time_flag = 1;
|
||||
LED_R_OFF();
|
||||
CoverEvent_Flg_led = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if( LED_On_Timer < LED_ON_CNT ) //开关盖,盒子非低电,LED亮4s后灭。
|
||||
{
|
||||
LED_On_Timer++;
|
||||
LED_R_ON();
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_R_OFF();
|
||||
if( CoverStatus == CLOSE )
|
||||
{
|
||||
CoverEvent_Flg_led = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 有充电时, LED闪烁
|
||||
|
||||
// 充电LED指示
|
||||
if (CHIP_STA4 & 0x80)
|
||||
{
|
||||
if (Display_Sta != LED_FLASH) // 充电中,LED闪烁
|
||||
{
|
||||
LED_R_KEEP_FLASHING(100);
|
||||
}
|
||||
}
|
||||
else // 未充电, 则将其熄灭
|
||||
{
|
||||
LED_R_OFF();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
163 1
|
||||
164 1 if (CHIP_STA4 & 0x80) //充电中
|
||||
165 1 {
|
||||
166 2 if ( Charger_Done ) // 充电完成,LED常亮
|
||||
167 2 {
|
||||
168 3 LED_R_ON();
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 4
|
||||
|
||||
169 3 }
|
||||
170 2 else
|
||||
171 2 {
|
||||
172 3 if ( CoverEvent_Flg_led && (CoverStatus == OPEN) ) //盒子充电中开盖,灯闪一下,无论当前灯是什么状态,<E68081>
|
||||
-<2D>100ms后恢复原来的灯效。
|
||||
173 3 {
|
||||
174 4 if( !led_blink_1time_flag ) //问题:充电中,LED灯效为1Hz闪烁,如果这个灭100ms在闪的高电平中有效果<E69588>
|
||||
-<2D>绻<EFBFBD>谏恋牡偷缙街校<E8A197>恍Ч<E6818D><D0A7>
|
||||
175 4 {
|
||||
176 5 led_blink_1time_flag = 1;
|
||||
177 5 LED_R_OFF();
|
||||
178 5 CoverEvent_Flg_led = 0;
|
||||
179 5 return;
|
||||
180 5 }
|
||||
181 4 }
|
||||
182 3
|
||||
183 3 if (Display_Sta != LED_FLASH) // 充电中,LED闪烁
|
||||
184 3 {
|
||||
185 4 LED_R_KEEP_FLASHING(100);
|
||||
186 4 }
|
||||
187 3 }
|
||||
188 2 }
|
||||
189 1 else
|
||||
190 1 {
|
||||
191 2 if( F_batlevel_low ) //盒子电池低电,闪4次后灭。说明:在系统上电期间,由于Bat_level初始化为0,Bat_leve
|
||||
-l要等于ADC对应的电量值,需要5s的debounce;因此在上电期间,开关盖灯效会不正确。
|
||||
192 2 {
|
||||
193 3 if (CoverEvent_Flg_led) // 充电中,LED闪烁
|
||||
194 3 {
|
||||
195 4 LED_R_FLASH(100,4);
|
||||
196 4 CoverEvent_Flg_led = 0;
|
||||
197 4 }
|
||||
198 3 }
|
||||
199 2 else
|
||||
200 2 {
|
||||
201 3 /*配对状态灯效显示*/
|
||||
202 3 if( (CoverStatus == OPEN) && ( (Vox_Pairing_State[VOL_CHAN] != VOX_PAIR_NONE) || (Vox_Pairing_State[VOR
|
||||
-_CHAN] != VOX_PAIR_NONE) ) ) /* 开盖状态,有耳机在仓。显示配对灯效 */
|
||||
203 3 {
|
||||
204 4 if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_ING) || (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_ING) )
|
||||
-/*配对中,LED闪,频率2Hz*/
|
||||
205 4 {
|
||||
206 5 if (Display_Sta != LED_FLASH)
|
||||
207 5 {
|
||||
208 6 LED_R_KEEP_FLASHING(50);
|
||||
209 6 }
|
||||
210 5 LED_On_Timer = 0;
|
||||
211 5 Enter_Sleep_Cnt_Restart_Flag = 1;
|
||||
212 5
|
||||
213 5 }
|
||||
214 4 else
|
||||
215 4 if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_OK) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_OK) ) /*
|
||||
-配对成功*/
|
||||
216 4 {
|
||||
217 5 if( LED_On_Timer < LED_ON_CNT ) //配对成功,LED亮4s后灭。
|
||||
218 5 {
|
||||
219 6 LED_On_Timer++;
|
||||
220 6 LED_R_ON();
|
||||
221 6 }
|
||||
222 5 else
|
||||
223 5 {
|
||||
224 6 LED_R_OFF();
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 5
|
||||
|
||||
225 6 }
|
||||
226 5 }
|
||||
227 4 }
|
||||
228 3 else
|
||||
229 3 {
|
||||
230 4 if( LED_On_Timer < LED_ON_CNT ) //开关盖,盒子非低电,LED亮4s后灭。
|
||||
231 4 {
|
||||
232 5 LED_On_Timer++;
|
||||
233 5 LED_R_ON();
|
||||
234 5 }
|
||||
235 4 else
|
||||
236 4 {
|
||||
237 5 LED_R_OFF();
|
||||
238 5 }
|
||||
239 4 }
|
||||
240 3 }
|
||||
241 2 }
|
||||
242 1 }
|
||||
243
|
||||
244 #endif
|
||||
245 /*****************************************************************************
|
||||
246 * Function : UserAPP
|
||||
247 * Description : 5ms调用周期
|
||||
248 * Input : None
|
||||
249 * Output : None
|
||||
250 * Return : None
|
||||
251 * Note : None
|
||||
252 *****************************************************************************/
|
||||
253 void UserAPP(void)
|
||||
254 {
|
||||
255 1 if( F_sys_tim_5ms )
|
||||
256 1 {
|
||||
257 2 F_sys_tim_5ms = 0;
|
||||
258 2
|
||||
259 2 #if KEY_HALL_ENABLE
|
||||
260 2 //Key_Handler(); //按键检测
|
||||
261 2 Hall_Handler(); //开关盖检测
|
||||
262 2 #endif
|
||||
263 2
|
||||
264 2 #if DISCHARGE_ENABLE
|
||||
265 2 DisCharge_Handler(); //放电boost功能
|
||||
266 2 #endif
|
||||
267 2
|
||||
268 2 }
|
||||
269 1
|
||||
270 1 #ifdef LED_DISPLAY
|
||||
271 1
|
||||
272 1 if(F_sys_tim_10ms)
|
||||
273 1 {
|
||||
274 2 F_sys_tim_10ms = 0;
|
||||
275 2 LED_Drv();
|
||||
276 2 }
|
||||
277 1
|
||||
278 1 #endif
|
||||
279 1
|
||||
280 1 if( F_sys_tim_100ms )
|
||||
281 1 {
|
||||
282 2 F_sys_tim_100ms = 0;
|
||||
283 2
|
||||
284 2 Key_Handler();
|
||||
285 2
|
||||
286 2 #if CHARGER_ENABLE
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 6
|
||||
|
||||
287 2 Charger_Handler(); //充电功能
|
||||
288 2 #endif
|
||||
289 2
|
||||
290 2 #if ADC_ENABLE
|
||||
291 2 Vbat_Adc = Vbat_Value(); //获取Bat电压
|
||||
292 2 #endif
|
||||
293 2
|
||||
294 2 #if VOX_ENABLE
|
||||
295 2 Vox_Det_Machine(); //开关盖盒子功能逻辑。
|
||||
296 2 #endif
|
||||
297 2
|
||||
298 2 #ifdef LED_DISPLAY
|
||||
299 2 LED_Display_App(); //LED 灯效
|
||||
300 2 #endif
|
||||
301 2
|
||||
302 2 #if BAT_VALUE
|
||||
303 2 check_bat_level(); //电量计
|
||||
304 2 #endif
|
||||
305 2
|
||||
306 2 #ifdef VOX_RX
|
||||
307 2 HandleVoxCommMsg();
|
||||
308 2 #endif
|
||||
309 2 }
|
||||
310 1
|
||||
311 1 if( F_sys_tim_1s )
|
||||
312 1 {
|
||||
313 2 F_sys_tim_1s = 0;
|
||||
314 2
|
||||
315 2 #if SLEEP_ENABLE
|
||||
316 2
|
||||
317 2 /*1、唤醒后工作Ns后进入Sleep Mode,N需要大于100ms。
|
||||
318 2 2、有VIN存在的情况下,系不会进入sleep mode。
|
||||
319 2 */
|
||||
320 2
|
||||
321 2 if( Decnt_SleepDelay > 0 ) /*能否在数字中实现此功能?*/
|
||||
322 2 {
|
||||
323 3 Decnt_SleepDelay--;
|
||||
324 3
|
||||
325 3 /*倒数进Sleep Mode过程中出现了KEY\HALL\Loadon\IOFF中断,则重新计时。*/
|
||||
326 3 if( Enter_Sleep_Cnt_Restart_Flag )
|
||||
327 3 {
|
||||
328 4 Enter_Sleep_Cnt_Restart_Flag = 0;
|
||||
329 4 Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
|
||||
330 4 }
|
||||
331 3
|
||||
332 3 return;
|
||||
333 3 }
|
||||
334 2
|
||||
335 2 if( Check_Require_Sleep() )
|
||||
336 2 {
|
||||
337 3 /* 唤醒中断使能设置 */
|
||||
338 3
|
||||
339 3 //SFRADDR = WKUP_EN0;
|
||||
340 3 //SFRDATA = 0xE6; //wake0 up enable.
|
||||
341 3
|
||||
342 3 //SFRADDR = WKUP_EN3;
|
||||
343 3 //SFRDATA = 0xFF; //wake3 up enable.VOX loadon wake up.
|
||||
344 3
|
||||
345 3 /* Enter Sleep */
|
||||
346 3 /* InSleep Handler */ //Disable All IRQ
|
||||
347 3 #if UART0_ENABLE
|
||||
348 3 ES0 = 0; //UART0 IRQ Disable
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 7
|
||||
|
||||
349 3 #endif
|
||||
350 3 EX4 = 0;
|
||||
351 3 EX2 = 0;
|
||||
352 3 ET0 = 0; //timer0 IRQ Disable
|
||||
353 3 #if TIMER1_ENABLE
|
||||
ET1 = 0; //timer1 IRQ Disable
|
||||
#endif
|
||||
356 3
|
||||
357 3 SFRADDR = ADC_CTL0;
|
||||
358 3 SFRDATA &= ~0x80; //ADC Disable.
|
||||
359 3
|
||||
360 3 PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system
|
||||
361 3
|
||||
362 3 /* OutSleep Handler */ //Enable IRQ
|
||||
363 3 #if UART0_ENABLE
|
||||
364 3 ES0 = 1; //UART0 IRQ
|
||||
365 3 #endif
|
||||
366 3 EX4 = 1;
|
||||
367 3 EX2 = 1;
|
||||
368 3 ET0 = 1; //timer0 IRQ
|
||||
369 3 #if TIMER1_ENABLE
|
||||
ET1 = 1; //timer1 IRQ
|
||||
#endif
|
||||
372 3 Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
|
||||
373 3 }
|
||||
374 2 else
|
||||
375 2 {
|
||||
376 3 Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
|
||||
377 3 }
|
||||
378 2 #endif
|
||||
379 2 }
|
||||
380 1 }
|
||||
381
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 8
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
; FUNCTION LED_Display_App (BEGIN)
|
||||
; SOURCE LINE # 75
|
||||
; SOURCE LINE # 76
|
||||
; SOURCE LINE # 164
|
||||
0000 E5E6 MOV A,CHIP_STA4
|
||||
0002 30E729 JNB ACC.7,?C0001
|
||||
; SOURCE LINE # 165
|
||||
; SOURCE LINE # 166
|
||||
0005 300002 E JNB Charger_Done,?C0002
|
||||
; SOURCE LINE # 167
|
||||
; SOURCE LINE # 168
|
||||
; SOURCE LINE # 169
|
||||
0008 807A SJMP ?C0033
|
||||
000A ?C0002:
|
||||
; SOURCE LINE # 171
|
||||
; SOURCE LINE # 172
|
||||
000A 300010 E JNB CoverEvent_Flg_led,?C0004
|
||||
000D E500 E MOV A,CoverStatus
|
||||
000F B4010B CJNE A,#01H,?C0004
|
||||
; SOURCE LINE # 173
|
||||
; SOURCE LINE # 174
|
||||
0012 200008 R JB led_blink_1time_flag,?C0004
|
||||
; SOURCE LINE # 175
|
||||
; SOURCE LINE # 176
|
||||
0015 D200 R SETB led_blink_1time_flag
|
||||
; SOURCE LINE # 177
|
||||
0017 E4 CLR A
|
||||
0018 FB MOV R3,A
|
||||
0019 FD MOV R5,A
|
||||
001A FF MOV R7,A
|
||||
; SOURCE LINE # 178
|
||||
001B 801D SJMP ?C0034
|
||||
; SOURCE LINE # 180
|
||||
; SOURCE LINE # 181
|
||||
001D ?C0004:
|
||||
; SOURCE LINE # 183
|
||||
001D 7800 E MOV R0,#LOW Display_Sta
|
||||
001F E6 MOV A,@R0
|
||||
0020 6402 XRL A,#02H
|
||||
0022 7002 JNZ $ + 4H
|
||||
0024 0100 R AJMP ?C0006
|
||||
; SOURCE LINE # 184
|
||||
; SOURCE LINE # 185
|
||||
0026 7BFF MOV R3,#0FFH
|
||||
0028 7D64 MOV R5,#064H
|
||||
002A 7F02 MOV R7,#02H
|
||||
; SOURCE LINE # 186
|
||||
; SOURCE LINE # 187
|
||||
; SOURCE LINE # 188
|
||||
002C 8077 SJMP ?C0038
|
||||
002E ?C0001:
|
||||
; SOURCE LINE # 190
|
||||
; SOURCE LINE # 191
|
||||
002E 30000F E JNB F_batlevel_low,?C0009
|
||||
; SOURCE LINE # 192
|
||||
; SOURCE LINE # 193
|
||||
0031 300074 E JNB CoverEvent_Flg_led,?C0006
|
||||
; SOURCE LINE # 194
|
||||
; SOURCE LINE # 195
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 9
|
||||
|
||||
0034 7B04 MOV R3,#04H
|
||||
0036 7D64 MOV R5,#064H
|
||||
0038 7F02 MOV R7,#02H
|
||||
003A ?C0034:
|
||||
003A 120000 E LCALL _LED_Set
|
||||
; SOURCE LINE # 196
|
||||
003D C200 E CLR CoverEvent_Flg_led
|
||||
; SOURCE LINE # 197
|
||||
; SOURCE LINE # 198
|
||||
003F 22 RET
|
||||
0040 ?C0009:
|
||||
; SOURCE LINE # 200
|
||||
; SOURCE LINE # 202
|
||||
0040 E500 E MOV A,CoverStatus
|
||||
0042 6401 XRL A,#01H
|
||||
0044 704B JNZ ?C0012
|
||||
0046 E500 E MOV A,Vox_Pairing_State+024H
|
||||
0048 7004 JNZ ?C0013
|
||||
004A E500 E MOV A,Vox_Pairing_State+025H
|
||||
004C 6043 JZ ?C0012
|
||||
004E ?C0013:
|
||||
; SOURCE LINE # 203
|
||||
; SOURCE LINE # 204
|
||||
004E E500 E MOV A,Vox_Pairing_State+024H
|
||||
0050 6401 XRL A,#01H
|
||||
0052 6005 JZ ?C0015
|
||||
0054 E500 E MOV A,Vox_Pairing_State+025H
|
||||
0056 B40116 CJNE A,#01H,?C0014
|
||||
0059 ?C0015:
|
||||
; SOURCE LINE # 205
|
||||
; SOURCE LINE # 206
|
||||
0059 7800 E MOV R0,#LOW Display_Sta
|
||||
005B E6 MOV A,@R0
|
||||
005C 6402 XRL A,#02H
|
||||
005E 6009 JZ ?C0016
|
||||
; SOURCE LINE # 207
|
||||
; SOURCE LINE # 208
|
||||
0060 7BFF MOV R3,#0FFH
|
||||
0062 7D32 MOV R5,#032H
|
||||
0064 7F02 MOV R7,#02H
|
||||
0066 120000 E LCALL _LED_Set
|
||||
; SOURCE LINE # 209
|
||||
0069 ?C0016:
|
||||
; SOURCE LINE # 210
|
||||
0069 E4 CLR A
|
||||
006A F500 R MOV LED_On_Timer,A
|
||||
; SOURCE LINE # 211
|
||||
006C D200 E SETB Enter_Sleep_Cnt_Restart_Flag
|
||||
; SOURCE LINE # 213
|
||||
006E 22 RET
|
||||
006F ?C0014:
|
||||
; SOURCE LINE # 215
|
||||
006F E500 E MOV A,Vox_Pairing_State+024H
|
||||
0071 6402 XRL A,#02H
|
||||
0073 7033 JNZ ?C0006
|
||||
0075 E500 E MOV A,Vox_Pairing_State+025H
|
||||
0077 6402 XRL A,#02H
|
||||
0079 702D JNZ ?C0006
|
||||
; SOURCE LINE # 216
|
||||
; SOURCE LINE # 217
|
||||
007B E500 R MOV A,LED_On_Timer
|
||||
007D C3 CLR C
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 10
|
||||
|
||||
007E 9428 SUBB A,#028H
|
||||
0080 5009 JNC ?C0019
|
||||
; SOURCE LINE # 218
|
||||
; SOURCE LINE # 219
|
||||
0082 0500 R INC LED_On_Timer
|
||||
; SOURCE LINE # 220
|
||||
0084 ?C0033:
|
||||
0084 E4 CLR A
|
||||
0085 FB MOV R3,A
|
||||
0086 FD MOV R5,A
|
||||
0087 7F01 MOV R7,#01H
|
||||
0089 ?C0035:
|
||||
; SOURCE LINE # 221
|
||||
0089 801A SJMP ?C0038
|
||||
008B ?C0019:
|
||||
; SOURCE LINE # 223
|
||||
; SOURCE LINE # 224
|
||||
008B E4 CLR A
|
||||
008C FB MOV R3,A
|
||||
008D FD MOV R5,A
|
||||
008E FF MOV R7,A
|
||||
008F ?C0036:
|
||||
; SOURCE LINE # 225
|
||||
; SOURCE LINE # 226
|
||||
; SOURCE LINE # 227
|
||||
008F 8014 SJMP ?C0038
|
||||
0091 ?C0012:
|
||||
; SOURCE LINE # 229
|
||||
; SOURCE LINE # 230
|
||||
0091 E500 R MOV A,LED_On_Timer
|
||||
0093 C3 CLR C
|
||||
0094 9428 SUBB A,#028H
|
||||
0096 5009 JNC ?C0022
|
||||
; SOURCE LINE # 231
|
||||
; SOURCE LINE # 232
|
||||
0098 0500 R INC LED_On_Timer
|
||||
; SOURCE LINE # 233
|
||||
009A E4 CLR A
|
||||
009B FB MOV R3,A
|
||||
009C FD MOV R5,A
|
||||
009D 7F01 MOV R7,#01H
|
||||
009F ?C0037:
|
||||
; SOURCE LINE # 234
|
||||
009F 8004 SJMP ?C0038
|
||||
00A1 ?C0022:
|
||||
; SOURCE LINE # 236
|
||||
; SOURCE LINE # 237
|
||||
00A1 E4 CLR A
|
||||
00A2 FB MOV R3,A
|
||||
00A3 FD MOV R5,A
|
||||
00A4 FF MOV R7,A
|
||||
00A5 ?C0038:
|
||||
00A5 120000 E LCALL _LED_Set
|
||||
; SOURCE LINE # 238
|
||||
; SOURCE LINE # 239
|
||||
; SOURCE LINE # 240
|
||||
; SOURCE LINE # 241
|
||||
; SOURCE LINE # 242
|
||||
00A8 ?C0006:
|
||||
00A8 22 RET
|
||||
; FUNCTION LED_Display_App (END)
|
||||
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 11
|
||||
|
||||
; FUNCTION UserAPP (BEGIN)
|
||||
; SOURCE LINE # 253
|
||||
; SOURCE LINE # 254
|
||||
; SOURCE LINE # 255
|
||||
0000 300008 E JNB F_sys_tim_5ms,?C0024
|
||||
; SOURCE LINE # 256
|
||||
; SOURCE LINE # 257
|
||||
0003 C200 E CLR F_sys_tim_5ms
|
||||
; SOURCE LINE # 261
|
||||
0005 120000 E LCALL Hall_Handler
|
||||
; SOURCE LINE # 265
|
||||
0008 120000 E LCALL DisCharge_Handler
|
||||
; SOURCE LINE # 268
|
||||
000B ?C0024:
|
||||
; SOURCE LINE # 272
|
||||
000B 300005 E JNB F_sys_tim_10ms,?C0025
|
||||
; SOURCE LINE # 273
|
||||
; SOURCE LINE # 274
|
||||
000E C200 E CLR F_sys_tim_10ms
|
||||
; SOURCE LINE # 275
|
||||
0010 120000 E LCALL LED_Drv
|
||||
; SOURCE LINE # 276
|
||||
0013 ?C0025:
|
||||
; SOURCE LINE # 280
|
||||
0013 30001E E JNB F_sys_tim_100ms,?C0026
|
||||
; SOURCE LINE # 281
|
||||
; SOURCE LINE # 282
|
||||
0016 C200 E CLR F_sys_tim_100ms
|
||||
; SOURCE LINE # 284
|
||||
0018 120000 E LCALL Key_Handler
|
||||
; SOURCE LINE # 287
|
||||
001B 120000 E LCALL Charger_Handler
|
||||
; SOURCE LINE # 291
|
||||
001E 120000 E LCALL Vbat_Value
|
||||
0021 7800 E MOV R0,#LOW Vbat_Adc
|
||||
0023 A606 MOV @R0,AR6
|
||||
0025 08 INC R0
|
||||
0026 A607 MOV @R0,AR7
|
||||
; SOURCE LINE # 295
|
||||
0028 120000 E LCALL Vox_Det_Machine
|
||||
; SOURCE LINE # 299
|
||||
002B 120000 R LCALL LED_Display_App
|
||||
; SOURCE LINE # 303
|
||||
002E 120000 E LCALL check_bat_level
|
||||
; SOURCE LINE # 307
|
||||
0031 120000 E LCALL HandleVoxCommMsg
|
||||
; SOURCE LINE # 309
|
||||
0034 ?C0026:
|
||||
; SOURCE LINE # 311
|
||||
0034 300035 E JNB F_sys_tim_1s,?C0030
|
||||
; SOURCE LINE # 312
|
||||
; SOURCE LINE # 313
|
||||
0037 C200 E CLR F_sys_tim_1s
|
||||
; SOURCE LINE # 321
|
||||
0039 E500 E MOV A,Decnt_SleepDelay
|
||||
003B D3 SETB C
|
||||
003C 9400 SUBB A,#00H
|
||||
003E 4009 JC ?C0028
|
||||
; SOURCE LINE # 322
|
||||
; SOURCE LINE # 323
|
||||
0040 1500 E DEC Decnt_SleepDelay
|
||||
; SOURCE LINE # 326
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 12
|
||||
|
||||
0042 300027 E JNB Enter_Sleep_Cnt_Restart_Flag,?C0030
|
||||
; SOURCE LINE # 327
|
||||
; SOURCE LINE # 328
|
||||
0045 C200 E CLR Enter_Sleep_Cnt_Restart_Flag
|
||||
; SOURCE LINE # 329
|
||||
; SOURCE LINE # 330
|
||||
0047 8020 SJMP ?C0040
|
||||
; SOURCE LINE # 333
|
||||
0049 ?C0028:
|
||||
; SOURCE LINE # 335
|
||||
0049 120000 E LCALL Check_Require_Sleep
|
||||
004C 501B JNC ?C0031
|
||||
; SOURCE LINE # 336
|
||||
; SOURCE LINE # 348
|
||||
004E C2AC CLR ES0
|
||||
; SOURCE LINE # 350
|
||||
0050 C2BB CLR EX4
|
||||
; SOURCE LINE # 351
|
||||
0052 C2B9 CLR EX2
|
||||
; SOURCE LINE # 352
|
||||
0054 C2A9 CLR ET0
|
||||
; SOURCE LINE # 357
|
||||
0056 75FE29 MOV SFRADDR,#029H
|
||||
; SOURCE LINE # 358
|
||||
0059 53FF7F ANL SFRDATA,#07FH
|
||||
; SOURCE LINE # 360
|
||||
005C 438702 ORL PCON,#02H
|
||||
; SOURCE LINE # 364
|
||||
005F D2AC SETB ES0
|
||||
; SOURCE LINE # 366
|
||||
0061 D2BB SETB EX4
|
||||
; SOURCE LINE # 367
|
||||
0063 D2B9 SETB EX2
|
||||
; SOURCE LINE # 368
|
||||
0065 D2A9 SETB ET0
|
||||
; SOURCE LINE # 372
|
||||
0067 ?C0039:
|
||||
; SOURCE LINE # 373
|
||||
0067 8000 SJMP ?C0040
|
||||
0069 ?C0031:
|
||||
; SOURCE LINE # 375
|
||||
; SOURCE LINE # 376
|
||||
0069 ?C0040:
|
||||
0069 75000A E MOV Decnt_SleepDelay,#0AH
|
||||
; SOURCE LINE # 377
|
||||
; SOURCE LINE # 379
|
||||
; SOURCE LINE # 380
|
||||
006C ?C0030:
|
||||
006C 22 RET
|
||||
; FUNCTION UserAPP (END)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 278 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 1 ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = 1 ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 13
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
2632
Project/Listings/vox_module.lst
Normal file
2632
Project/Listings/vox_module.lst
Normal file
File diff suppressed because it is too large
Load Diff
130
Project/Listings/watchdog.lst
Normal file
130
Project/Listings/watchdog.lst
Normal file
@ -0,0 +1,130 @@
|
||||
C51 COMPILER V9.57.0.0 WATCHDOG 06/14/2024 11:08:38 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE WATCHDOG
|
||||
OBJECT MODULE PLACED IN .\Objects\watchdog.obj
|
||||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\watchdog\watchdog.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDI
|
||||
-R(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\
|
||||
-UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;.
|
||||
-.\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listin
|
||||
-gs\watchdog.lst) TABS(2) OBJECT(.\Objects\watchdog.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 ******************************************************************************
|
||||
3 *
|
||||
4 * @file watchdog.c
|
||||
5 * @brief watchdog module
|
||||
6 *
|
||||
7 *
|
||||
8 * @version 1.0
|
||||
9 * @date 2022/08/04 15:00:40
|
||||
10 * @author Alex Xu
|
||||
11 *
|
||||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
13 * All Rights Reserved
|
||||
14 *
|
||||
15 * History:
|
||||
16 * Revision Date Author Desc
|
||||
17 * 1.0.0 2022/08/04 Alex build this file
|
||||
18 ******************************************************************************/
|
||||
19 /*_____ I N C L U D E S ____________________________________________________*/
|
||||
20 #include "watchdog.h"
|
||||
21 #if 0
|
||||
/*_____ D E F I N I T I O N S ______________________________________________*/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*_____ F U N C T I O N S __________________________________________________*/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Watchdog_Init(uint8_t watchdog_time)
|
||||
*
|
||||
* Description : watchdog Initialization. WDT_TM = 0,则看门狗时钟为系统时钟的12分频,否则为系统时钟。
|
||||
wdtrel.7=1 则看门狗计数器时钟为Sys_Fre/12*32,wdtrel.7=0 则看门狗计数器时钟为Sys_Fre/12*2.
|
||||
Sys_Fre = 12MHz,wdtrel.7=0时,定时器范围:
|
||||
(1/Sys_Fre)*12*2*256~(1/Sys_Fre)*12*2*256*128 = 5ms~65ms
|
||||
|
||||
Sys_Fre = 12MHz,wdtrel.7=1时,定时器范围:
|
||||
(1/Sys_Fre)*12*32*256~(1/Sys_Fre)*12*32*256*128 = 80ms~1s
|
||||
C51 COMPILER V9.57.0.0 WATCHDOG 06/14/2024 11:08:38 PAGE 2
|
||||
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Watchdog_Init(uint8_t watchdog_time)
|
||||
{
|
||||
switch(watchdog_time)
|
||||
{
|
||||
case _WDT_TIME_65ms_:
|
||||
WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32;
|
||||
break;
|
||||
case _WDT_TIME_1s_:
|
||||
WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32;
|
||||
break;
|
||||
}
|
||||
SWDT = 1; //Watchdog Start
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Watchdog_Clear(void)
|
||||
*
|
||||
* Description : Feed watchdog 在系统初始化时未进行看门狗初始化,则不能在程序中进行喂狗操作!!!
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void Watchdog_Clear(void)
|
||||
{
|
||||
WDT = 1;
|
||||
SWDT = 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
C51 COMPILER V9.57.0.0 WATCHDOG 06/14/2024 11:08:38 PAGE 3
|
||||
|
||||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||||
|
||||
|
||||
|
||||
|
||||
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. 0 WARNING(S), 0 ERROR(S)
|
2
Project/Objects/ExtDll.iex
Normal file
2
Project/Objects/ExtDll.iex
Normal file
@ -0,0 +1,2 @@
|
||||
[EXTDLL]
|
||||
Count=0
|
BIN
Project/Objects/STARTUP.obj
Normal file
BIN
Project/Objects/STARTUP.obj
Normal file
Binary file not shown.
1
Project/Objects/adc.__i
Normal file
1
Project/Objects/adc.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\adc\adc.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\adc.lst) TABS (2) OBJECT(.\Objects\adc.obj)
|
BIN
Project/Objects/adc.obj
Normal file
BIN
Project/Objects/adc.obj
Normal file
Binary file not shown.
1
Project/Objects/bat.__i
Normal file
1
Project/Objects/bat.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\bat\bat.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\bat.lst) TABS (2) OBJECT(.\Objects\bat.obj)
|
BIN
Project/Objects/bat.obj
Normal file
BIN
Project/Objects/bat.obj
Normal file
Binary file not shown.
0
Project/Objects/bin.bin
Normal file
0
Project/Objects/bin.bin
Normal file
1
Project/Objects/charger_module.__i
Normal file
1
Project/Objects/charger_module.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\charger\charger_module.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\charger_module.lst) TABS (2) OBJECT(.\Objects\charger_module.obj)
|
BIN
Project/Objects/charger_module.obj
Normal file
BIN
Project/Objects/charger_module.obj
Normal file
Binary file not shown.
14
Project/Objects/crc_add.bat
Normal file
14
Project/Objects/crc_add.bat
Normal file
@ -0,0 +1,14 @@
|
||||
@echo off
|
||||
ECHO Add CRC16 At the end of the document
|
||||
ECHO -------------------------------------
|
||||
|
||||
SET SREC_PATH=D:\Keil_v5\SREC
|
||||
|
||||
for /f %%i in ('dir /s /b .\Objects\bin.bin') do (
|
||||
set indexdx=%%~zi
|
||||
)
|
||||
|
||||
ECHO --- size= %indexdx% Byte----
|
||||
|
||||
ECHO %SREC_PATH%\srec_cat.exe .\Objects\bin.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .\Objects\bin_crc.bin -Binary
|
||||
%SREC_PATH%\srec_cat.exe .\Objects\bin.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .\Objects\bin_crc.bin -Binary
|
1
Project/Objects/discharge_module.__i
Normal file
1
Project/Objects/discharge_module.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\discharge\discharge_module.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\discharge_module.lst) TABS (2) OBJECT(.\Objects\discharge_module.obj)
|
BIN
Project/Objects/discharge_module.obj
Normal file
BIN
Project/Objects/discharge_module.obj
Normal file
Binary file not shown.
1
Project/Objects/gpio.__i
Normal file
1
Project/Objects/gpio.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\gpio\gpio.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\gpio.lst) TABS (2) OBJECT(.\Objects\gpio.obj)
|
BIN
Project/Objects/gpio.obj
Normal file
BIN
Project/Objects/gpio.obj
Normal file
Binary file not shown.
1
Project/Objects/hall.__i
Normal file
1
Project/Objects/hall.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\hall\hall.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\hall.lst) TABS (2) OBJECT(.\Objects\hall.obj)
|
BIN
Project/Objects/hall.obj
Normal file
BIN
Project/Objects/hall.obj
Normal file
Binary file not shown.
BIN
Project/Objects/hex2bin_TP.exe
Normal file
BIN
Project/Objects/hex2bin_TP.exe
Normal file
Binary file not shown.
1
Project/Objects/key.__i
Normal file
1
Project/Objects/key.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\key\key.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\key.lst) TABS (2) OBJECT(.\Objects\key.obj)
|
BIN
Project/Objects/key.obj
Normal file
BIN
Project/Objects/key.obj
Normal file
Binary file not shown.
1
Project/Objects/led.__i
Normal file
1
Project/Objects/led.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\led\led.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\led.lst) TABS (2) OBJECT(.\Objects\led.obj)
|
BIN
Project/Objects/led.obj
Normal file
BIN
Project/Objects/led.obj
Normal file
Binary file not shown.
1
Project/Objects/main.__i
Normal file
1
Project/Objects/main.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\main.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\main.lst) TABS (2) OBJECT(.\Objects\main.obj)
|
BIN
Project/Objects/main.obj
Normal file
BIN
Project/Objects/main.obj
Normal file
Binary file not shown.
BIN
Project/Objects/mcu
Normal file
BIN
Project/Objects/mcu
Normal file
Binary file not shown.
43
Project/Objects/mcu.build_log.htm
Normal file
43
Project/Objects/mcu.build_log.htm
Normal file
@ -0,0 +1,43 @@
|
||||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>µVision Build Log</h1>
|
||||
<h2>Tool Versions:</h2>
|
||||
IDE-Version: ¦ÌVision V5.30.0.0
|
||||
Copyright (C) 2020 ARM Ltd and ARM Germany GmbH. All rights reserved.
|
||||
License Information: Alex Xu, 11111, LIC=D0MW3-APQZV-3AGDP-M9Z84-PG19P-UP7ZC
|
||||
|
||||
Tool Versions:
|
||||
Toolchain: PK51 Prof. Developers Kit Version: 9.57.0.0
|
||||
Toolchain Path: D:\Keil_v5\C51\BIN
|
||||
C Compiler: C51.exe V9.57.0.0
|
||||
Assembler: A51.exe V8.2.7.0
|
||||
Linker/Locator: BL51.exe V6.22.2.0
|
||||
Library Manager: LIB51.exe V4.30.1.0
|
||||
Hex Converter: OH51.exe V2.7.0.0
|
||||
CPU DLL: S8051.DLL V3.113.0.0
|
||||
Dialog DLL: DCore51.DLL V2.81.6.0
|
||||
Target DLL: SY8831.dll V1.00
|
||||
Dialog DLL: TCore51.DLL V2.66.4.0
|
||||
|
||||
<h2>Project:</h2>
|
||||
E:\todaywork\20240325_tp3310\Both_Way_Comm_SY8833\zklxun_SY8833\Project\TP3102_Demo.uvproj
|
||||
Project File Date: 06/14/2024
|
||||
|
||||
<h2>Output:</h2>
|
||||
Build target 'Target 1'
|
||||
compiling userapp.c...
|
||||
linking...
|
||||
Program Size: data=159.0 xdata=0 code=3796
|
||||
creating hex file from ".\Objects\mcu"...
|
||||
User command #2: .\Objects\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 3 0
|
||||
Traceback (most recent call last):
|
||||
File "main.py", line 76, in <module>
|
||||
File "main.py", line 56, in hex2bin
|
||||
IndexError: list assignment index out of range
|
||||
[25276] Failed to execute script 'main' due to unhandled exception!
|
||||
".\Objects\mcu" - 0 Error(s), 0 Warning(s).
|
||||
Build Time Elapsed: 00:00:01
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
285
Project/Objects/mcu.hex
Normal file
285
Project/Objects/mcu.hex
Normal file
@ -0,0 +1,285 @@
|
||||
:030000000208985B
|
||||
:10089800758E3075D20078FFE4F6D8FD75819D021B
|
||||
:0208A80008E561
|
||||
:0F0EBE001209B7D2AED2BE120C34120A4180F420
|
||||
:0405EF00029900006D
|
||||
:020D6B00AD07D2
|
||||
:100D6D00E4FCFBFAF527F52875FE2975FF8BEDC41C
|
||||
:100D7D0054F04401F5A5E5A520E0FBAFA1AB07AF0D
|
||||
:100D8D00A2EFFEEEFAEB2528F528EA3527F5270C1C
|
||||
:100D9D00BC08DBE528AE277803CEC313CE13D8F9F4
|
||||
:010DAD00FF46
|
||||
:010DAE002222
|
||||
:100DAF00E4F524F5257F05120D6B8E248F257F0624
|
||||
:100DBF00120D6BE4FCFDC004A905AA06AB07AE2417
|
||||
:100DCF00AF257C077DD0120271D0001201A98E24AD
|
||||
:020DDF008F255E
|
||||
:010DE10022EF
|
||||
:100DE200E4F525F5267F04120D6B8E258F267F06EE
|
||||
:100DF200120D6BE4FCFDC004A905AA06AB07AE25E3
|
||||
:100E0200AF267C037DE8120271D0001201A98E2563
|
||||
:020E12008F2629
|
||||
:010E140022BB
|
||||
:0605F300C114C116C11580
|
||||
:10078900E4FFFE752401120DE2C3EF9474EE940E9A
|
||||
:1007990040037F0122E5E630E757D3EF9436EE9424
|
||||
:1007A900055030EF9422EE94024028301612EF944F
|
||||
:1007B90014EE94055007C2167524018003E4F5244C
|
||||
:1007C90030152ED3EF9444EE94024022C2157524BD
|
||||
:1007D90001801ED3EF9436EE94054004D216800BA7
|
||||
:1007E900C3EF9422EE94025002D21553B3FEE4F5FE
|
||||
:0307F90024AF2406
|
||||
:0107FC0022DA
|
||||
:100BDF00E5E620E70953B3FE75F210C21422E5F2E1
|
||||
:100BEF00540C601053B3FEE5F354C0603775F20C2C
|
||||
:100BFF0075F3C022E5F354C0600375F3C012078983
|
||||
:100C0F00EF6021E5F230E417C3789AE694EB18E62B
|
||||
:100C1F00940F500575F210800353B3FED214224384
|
||||
:050C2F00B301C2142214
|
||||
:0405F900C117C1184D
|
||||
:100D2500E5E530E103C21722E5E230E705C217D257
|
||||
:100D35001822E5E830E00EC217300B29C20B75E822
|
||||
:100D45000175B50122D21730181BE5E630E716C349
|
||||
:100D5500789AE6941018E6940E4005D217C2182228
|
||||
:060D6500E4F5B5C21722FF
|
||||
:0705FD00011DFFC119C11A25
|
||||
:100E4100E5E230E425E5E25408FF651D601CE5E2BA
|
||||
:100E510030E305751C018005E4F51CC21ED219D2D0
|
||||
:0A0E61001AE4F51FF540F5418F1D5E
|
||||
:010E6B002264
|
||||
:0B060400C113C111C110C112019D0003
|
||||
:100E6C00301208C211C212789D7602301006C210E0
|
||||
:0E0E7C00789D7603301306C213789D7601220E
|
||||
:03060F000198004F
|
||||
:10000E007893A607EDC31308F608A60508A603E421
|
||||
:03001E0008F622BF
|
||||
:100CD8007893E6603D24FE6007047036D283803442
|
||||
:100CE8007897E6FFC37894965004D2838002C28333
|
||||
:100CF800EFC3789596401DE47897F618E6FFF46000
|
||||
:100D080013EFD394004001167896E670077893F6AF
|
||||
:0D0D18008002C2837893E67898F6180622D0
|
||||
:05061200011E00C11DE6
|
||||
:100E9D00E5E620E706200903301D04C21DC322D359
|
||||
:010EAD002222
|
||||
:1009B700E4F5D275FE8943FF8075FE0153FFFCF510
|
||||
:1009C700FE75FF0375FE0E75FF05D2DF4387807541
|
||||
:1009D700BA0375AAFD7598D0D299D298D2AC75B7DB
|
||||
:1009E700C3758901758CFC758A17D2A9D28C75FEDF
|
||||
:1009F7000675FF0C75FE0375FF0CC283F58675FE41
|
||||
:100A07000F43FF8075FE4F75FF1075FE1775FF3C8E
|
||||
:100A170075FE1E75FF0CD2A8D2B9D2BBD2AF75F244
|
||||
:100A27001C75F3C075E80C75FE8753FFDF43B310E1
|
||||
:0A0A370075FE7043FF04751E0A22CD
|
||||
:03000300020006F2
|
||||
:0100060032C7
|
||||
:03004B00020ED8CA
|
||||
:060ED80075EB3CD21D3257
|
||||
:03005B00020EDEB4
|
||||
:060EDE0075F30CD21D3279
|
||||
:0F0617000B880000000000000000000000C11C64
|
||||
:100E8A0074882553F8A6990553E5532275520075BF
|
||||
:030E9A00530022E0
|
||||
:0A0E15008E358F368B378A38893905
|
||||
:100E1F00E4FFEFC39536E495355016201BFD783768
|
||||
:100E2F00E475F00112023B120154D21BF5990F80A9
|
||||
:010E3F00E1D1
|
||||
:010E4000228F
|
||||
:0300230002092AA5
|
||||
:0F092A00C0E0C0D075D000C000C005C006C00737
|
||||
:10093900309904C299C21B309867C298E551146076
|
||||
:100949001F04705DE599B4AA0F755101120E961234
|
||||
:100959000E8A700205528049755100120E96804127
|
||||
:10096900120E8A70020552640745527015788EE698
|
||||
:10097900FEE42409FFE43EFE18E6FDEEF554EF4DD2
|
||||
:10098900F555E55565537004E5546552600BD3E59B
|
||||
:1009990053940BE55294004008120E96755100D2FB
|
||||
:0109A9001C31
|
||||
:0D09AA00D007D006D005D000D0D0D0E0326C
|
||||
:05062600011F00C11ED0
|
||||
:1006E000E5E630E729301402807A301A10E51CB4B0
|
||||
:1006F000010B201E08D21EE4FBFDFF801D7898E64A
|
||||
:1007000064027002E1887BFF7D647F028077301F86
|
||||
:100710000F301A747B047D647F0212000EC21A220D
|
||||
:10072000E51C6401704BE56B7004E56C6043E56BA0
|
||||
:1007300064016005E56CB401167898E6640260090E
|
||||
:100740007BFF7D327F0212000EE4F51FD21D22E5F1
|
||||
:100750006B64027033E56C6402702DE51FC394284E
|
||||
:100760005009051FE4FBFD7F01801AE4FBFDFF80BB
|
||||
:1007700014E51FC394285009051FE4FBFD7F018089
|
||||
:0907800004E4FBFDFF12000E224F
|
||||
:100A4100300C08C20C120E41120D25300F05C20FD9
|
||||
:100A5100120CD8300A1EC20A120E6C120BDF120DD4
|
||||
:100A6100AF7899A60608A60712029E1206E0120B9D
|
||||
:100A71001B120C89300D35C20DE51ED394004009BF
|
||||
:100A8100151E301D27C21D8020120E9D501BC2ACA9
|
||||
:100A9100C2BBC2B9C2A975FE2953FF7F438702D2E7
|
||||
:0D0AA100ACD2BBD2B9D2A98000751E0A22CA
|
||||
:0B004E000000000000000000000000A7
|
||||
:10062B00C109C105C108C102C104C100C106014213
|
||||
:10063B000002450000014400014300C101024700D4
|
||||
:10064B0000027000000672000000000000087A0033
|
||||
:10065B0000000000000000028400000256000002AF
|
||||
:10066B00780000028600000282000002580000168B
|
||||
:10067B005A00000000000000000000000000000015
|
||||
:10068B0000000000000000013F00C1030240000019
|
||||
:02069B00C10795
|
||||
:10002600FF547FF6EFC4131313540122C208D20102
|
||||
:10003600E4F544D20522FF5401F6EFC3135401221E
|
||||
:100EAE00D282EF700753B7CF43B7302253B7CF225A
|
||||
:10029E00E5E8540C60110542E542C394024008E4BF
|
||||
:1002AE00F54275E80C8109301960301758200606A2
|
||||
:1002BE0075B501D20622E4F56BF56CC205C200F5E8
|
||||
:1002CE0045F546E51C7011D202C204C219D209C20C
|
||||
:1002DE0006C28243B7308032C202C208C3E54194DF
|
||||
:1002EE0002E5409400500FE4FF120EAE0541E541C9
|
||||
:1002FE00701805408014E4F5B5D204C219C206F593
|
||||
:10030E0040F54180057F01120EAE30042AC3E5414F
|
||||
:10031E009458E5409402501AE54120E0047D248073
|
||||
:10032E00027D257F0D12048F0541E54170090540C0
|
||||
:10033E008005E4FF120EAE2002052000028184C368
|
||||
:10034E00E5419432E54094005031E54120E00F3014
|
||||
:10035E0000047D24800DE51C70187D24800F300074
|
||||
:10036E00067D257F058008E51C70077D257F0D1213
|
||||
:10037E00048F0541E541700205402230000DC20098
|
||||
:10038E00C202C209E4F5B57F0181192002028184FF
|
||||
:10039E00E5E354AC64AC6003301F12C3E5469458D9
|
||||
:1003AE00E54594024007D200E4F540F54120072EC2
|
||||
:1003BE00C3E5419464E5409400501AE54120E00401
|
||||
:1003CE007D2480027D257F0E12048F0541E541704C
|
||||
:1003DE000D05408009D207D208E4F540F5413008FA
|
||||
:1003EE0050E544C3940150097D2412048508F6801B
|
||||
:1003FE0030E543D394054006120032FF800D789409
|
||||
:10040E00E6601208E66007120032FF020EAE7D258E
|
||||
:10041E00120485800C7895E660077D247F0A12040D
|
||||
:10042E008FE544D3941E40070543E4F5448002054E
|
||||
:10043E00443005210541E54170020540D39414E591
|
||||
:10044E004094004010C205E4F544F543D2827D216C
|
||||
:10045E007F1202048F30011EE544C3946450097567
|
||||
:10046E00FE7843FF03054422C201E4F54475FE788D
|
||||
:10047E0053FFFC43FF01227F0A12048FE47894F6A7
|
||||
:01048E00224B
|
||||
:0A0AAE008B358A3689378C388D3974
|
||||
:100AB800E4FDFC753A10753B21F53CE5391539AE76
|
||||
:100AC80038700215384E60467835E475F001120228
|
||||
:100AD8003B120154F53CFEEE6204E4F53DF53EC3DD
|
||||
:100AE800E53E9408E53D940050D1EC30E70FED2544
|
||||
:100AF800E0FFEC33653AFCE53B6FFD8007ED25E050
|
||||
:100B0800FDEC33FC053EE53E70D5053D80D1AE04D5
|
||||
:020B1800AF0527
|
||||
:010B1A0022B8
|
||||
:04048F008F248D2504
|
||||
:1004930078267C007D007BFF7A00794E7E007F0BFF
|
||||
:1004A30012012EE4F531F532F533F5347526AA85BC
|
||||
:1004B3002527852428F529851C2AE52412024B05C6
|
||||
:1004C3000C0504E10A05190B05200D054F0E058FD8
|
||||
:1004D3000F051911059A120519370000059D752B93
|
||||
:1004E3000EE4F52CFF74722FF8E6FE742D2FF8A698
|
||||
:1004F300060FBF06F0E4FF747A2FF8E6FE74332F7D
|
||||
:10050300F8A6060FBF08F0A19D752B01E4F52CA2F8
|
||||
:100513000333F52DA19DE4F52BF52C807D752B057B
|
||||
:10052300E4F52C752D10F52D752E01E5E654807834
|
||||
:100533009C46F52FE525B4240478848007E525B48B
|
||||
:1005430025057885E6F530E4F531804E752B0AE410
|
||||
:10055300F52C853F2DFFEFFDE53F2DFDE433FCD367
|
||||
:10056300ED9416EC648094804008742E2FF876FF87
|
||||
:10057300800EE53F2F245AF8E6FE742E2FF8A606C8
|
||||
:100583000FBF09D27409253FF53F800E752B01E497
|
||||
:10059300F52C752D018003D20E22E52CFEE42407F1
|
||||
:1005A300FFE43EF533EF452BF5347B007A007926E3
|
||||
:1005B300FDAC33120AAE8E318F32AD3474272DF871
|
||||
:1005C300A607E531FF74282DF8A607C28275FE0E33
|
||||
:1005D30043FF04E534240AFFE43533FE7B007A004D
|
||||
:0B05E3007926120E1575FE0E53FFF373
|
||||
:0105EE0022EA
|
||||
:100800007889E6C4540FFD540360020197EF24F683
|
||||
:10081000602524FD602F14607124D7707AE4FE787F
|
||||
:100820008DE6FFEEC39F506F748F2EF8E6FF747253
|
||||
:100830002EF8A6070E80E8788FE6BD04047870F6DF
|
||||
:10084000227871F622ED64047891701FE6788412A4
|
||||
:1008500000267856F67892E6F54708E67878120092
|
||||
:100860003C7886F67894E67882F622E6788512005F
|
||||
:10087000267857F67892E6F54808E6787912003C33
|
||||
:100880007887F67894E67883F622788FE6BD0404BC
|
||||
:070890007858F6227859F6B2
|
||||
:01089700223E
|
||||
:100C8900E4F524F525F526301C44C21C788EE6FED1
|
||||
:100C9900E42407FFE43EFE18E6FDEEF524EF4DF5EA
|
||||
:100CA900257B007A007988FDAC24120AAEAC06AD2A
|
||||
:100CB90007AB25748A2BF8E6FE74892BF8E6FBEB63
|
||||
:0E0CC900B5050BEEB50407788AE6FF120800A9
|
||||
:010CD70022FA
|
||||
:10069D00019C00C11F019B1E14080BB80C1C0CE41F
|
||||
:0E06AD000D480DAC0E420ED80F3C0FD2106857
|
||||
:0B0ECD00EF25E02408F8E6FC08E62210
|
||||
:100B1B00E4FFE5E630E715120ECD2432FDE43CFC94
|
||||
:100B2B00C3789AE69D18E69C50108012120ECDFDEC
|
||||
:100B3B00C3789AE69D18E69C40040FBF0AD4789CB4
|
||||
:100B4B00E6FEEFD39E400418068003789B16789B35
|
||||
:100B5B00E6FED394325006EEC3940A5007789CA657
|
||||
:100B6B000718761E789CE6FFD394015003D21F2200
|
||||
:080B7B00EFD394024002C21FF7
|
||||
:010B8300224F
|
||||
:1006BB00014B00014D00014A00014900014C00C1F2
|
||||
:1006CB000CC10FC10BC10AC10D015000014E00C17D
|
||||
:0406DB000E014F00BD
|
||||
:100C3400E5506050E4F550054BE54BC39405400581
|
||||
:100C4400E4F54BD20C054DE54DC3940A4005E4F59B
|
||||
:100C54004DD20F0549E549C394644005E4F549D2F2
|
||||
:100C64000A054AE54AC394FA401AE4F54AD20B0548
|
||||
:100C74004CE54C9404400DE4F54CD20D0546E54694
|
||||
:050C840070020545228D
|
||||
:03000B00020B8461
|
||||
:100B8400C0E0C0D074FC258CF58C7417258AF58AD6
|
||||
:100B9400755001054EE54EC39405403A754E00303C
|
||||
:100BA4000E34E54FD394045004C282801BE54F30C9
|
||||
:100BB400E00BB40D04C282800FD282800BE54FB4E7
|
||||
:100BC4000E04D2828002C282054FE54FC3941740BF
|
||||
:0B0BD40005C20E754F00D0D0D0E032FB
|
||||
:1008AA00020EBEE493A3F8E493A34003F68001F298
|
||||
:1008BA0008DFF48029E493A3F85407240CC8C3334F
|
||||
:1008CA00C4540F4420C8834004F456800146F6DF1E
|
||||
:1008DA00E4800B01020408102040809005EFE47EBA
|
||||
:1008EA00019360BCA3FF543F30E509541FFEE49313
|
||||
:1008FA00A360010ECF54C025E060A840B8E493A3DA
|
||||
:10090A00FAE493A3F8E493A3C8C582C8CAC583CA04
|
||||
:10091A00F0A3C8C582C8CAC583CADFE9DEE780BEBC
|
||||
:0106DF00001A
|
||||
:10005E00E709F608DFFA8046E709F208DFFA803E84
|
||||
:10006E0088828C83E709F0A3DFFA8032E309F60871
|
||||
:10007E00DFFA8078E309F208DFFA807088828C83D9
|
||||
:10008E00E309F0A3DFFA806489828A83E0A3F6088D
|
||||
:10009E00DFFA805889828A83E0A3F208DFFA804C67
|
||||
:1000AE0080D280FA80C680D4806980F2803380103E
|
||||
:1000BE0080A680EA809A80A880DA80E280CA8033A7
|
||||
:1000CE0089828A83ECFAE493A3C8C582C8CCC5831F
|
||||
:1000DE00CCF0A3C8C582C8CCC583CCDFE9DEE780EF
|
||||
:1000EE000D89828A83E493A3F608DFF9ECFAA9F06E
|
||||
:1000FE00EDFB2289828A83ECFAE0A3C8C582C8CCC4
|
||||
:10010E00C583CCF0A3C8C582C8CCC583CCDFEADEDC
|
||||
:10011E00E880DB89828A83E493A3F208DFF980CC3E
|
||||
:10012E0088F0EF60010E4E60C388F0ED2402B40437
|
||||
:10013E000050B9F582EB2402B4040050AF232345DE
|
||||
:06014E0082239000AE7355
|
||||
:10015400BB010689828A83E0225002E722BBFE02A9
|
||||
:09016400E32289828A83E49322DC
|
||||
:10016D0075F008758200EF2FFFEE33FECD33CDCC49
|
||||
:10017D0033CCC58233C5829BED9AEC99E5829840CC
|
||||
:10018D000CF582EE9BFEED9AFDEC99FC0FD5F0D6A9
|
||||
:10019D00E4CEFBE4CDFAE4CCF9A88222B800C1B9D3
|
||||
:1001AD000059BA002DEC8BF084CFCECDFCE5F0CB11
|
||||
:1001BD00F97818EF2FFFEE33FEED33FDEC33FCEB4A
|
||||
:1001CD0033FB10D703994004EB99FB0FD8E5E4F905
|
||||
:1001DD00FA227818EF2FFFEE33FEED33FDEC33FCF2
|
||||
:1001ED00C933C910D7059BE99A4007EC9BFCE99AE6
|
||||
:1001FD00F90FD8E0E4C9FAE4CCFB2275F010EF2F2B
|
||||
:10020D00FFEE33FEED33FDCC33CCC833C810D7072A
|
||||
:10021D009BEC9AE899400AED9BFDEC9AFCE899F865
|
||||
:0E022D000FD5F0DAE4CDFBE4CCFAE4C8F922F8
|
||||
:10023B00FAE6FB0808E6F925F0F618E6CA3AF622C4
|
||||
:10024B00D083D082F8E4937012740193700DA3A342
|
||||
:10025B0093F8740193F5828883E473740293686056
|
||||
:06026B00EFA3A3A380DF56
|
||||
:10027100EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D1A
|
||||
:10028100FDE43CFCE8A42EC8C5F03DFDE43CFCEFD8
|
||||
:0D029100A4FFE5F028FEE43DFDE43CFC2266
|
||||
:00000001FF
|
19
Project/Objects/mcu.lnp
Normal file
19
Project/Objects/mcu.lnp
Normal file
@ -0,0 +1,19 @@
|
||||
".\Objects\STARTUP.obj",
|
||||
".\Objects\main.obj",
|
||||
".\Objects\adc.obj",
|
||||
".\Objects\charger_module.obj",
|
||||
".\Objects\discharge_module.obj",
|
||||
".\Objects\gpio.obj",
|
||||
".\Objects\hall.obj",
|
||||
".\Objects\key.obj",
|
||||
".\Objects\led.obj",
|
||||
".\Objects\sleep.obj",
|
||||
".\Objects\system.obj",
|
||||
".\Objects\uart.obj",
|
||||
".\Objects\userapp.obj",
|
||||
".\Objects\vox_module.obj",
|
||||
".\Objects\watchdog.obj",
|
||||
".\Objects\bat.obj",
|
||||
".\Objects\sys_tim.obj"
|
||||
TO ".\Objects\mcu"
|
||||
PRINT(".\Listings\mcu.m51") RAMSIZE(256)
|
1
Project/Objects/sleep.__i
Normal file
1
Project/Objects/sleep.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\sleep\sleep.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\sleep.lst) TABS (2) OBJECT(.\Objects\sleep.obj)
|
BIN
Project/Objects/sleep.obj
Normal file
BIN
Project/Objects/sleep.obj
Normal file
Binary file not shown.
1
Project/Objects/sys_tim.__i
Normal file
1
Project/Objects/sys_tim.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\timer\sys_tim.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\sys_tim.lst) TABS (2) OBJECT(.\Objects\sys_tim.obj)
|
BIN
Project/Objects/sys_tim.obj
Normal file
BIN
Project/Objects/sys_tim.obj
Normal file
Binary file not shown.
1
Project/Objects/system.__i
Normal file
1
Project/Objects/system.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\system\system.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\system.lst) TABS (2) OBJECT(.\Objects\system.obj)
|
BIN
Project/Objects/system.obj
Normal file
BIN
Project/Objects/system.obj
Normal file
Binary file not shown.
99
Project/Objects/test.txt
Normal file
99
Project/Objects/test.txt
Normal file
@ -0,0 +1,99 @@
|
||||
:020000040000FA
|
||||
:200000000203CB02000632000000000209D175B7C3750B02750C02220000000208987429A5
|
||||
:200020002FF8A605EBC313FE742C2FF8A606742F2FF8A60374322FF8A61574352FF8E4F617
|
||||
:2000400022000000000000000000000209B80000000000000000000000000002084A75F002
|
||||
:2000600008758200EF2FFFEE33FECD33CDCC33CCC58233C5829BED9AEC99E58298400CF505
|
||||
:2000800082EE9BFEED9AFDEC99FC0FD5F0D6E4CEFBE4CDFAE4CCF9A88222B800C1B90059D0
|
||||
:2000A000BA002DEC8BF084CFCECDFCE5F0CBF97818EF2FFFEE33FEED33FDEC33FCEB33FB52
|
||||
:2000C00010D703994004EB99FB0FD8E5E4F9FA227818EF2FFFEE33FEED33FDEC33FCC93315
|
||||
:2000E000C910D7059BE99A4007EC9BFCE99AF90FD8E0E4C9FAE4CCFB2275F010EF2FFFEE2C
|
||||
:2001000033FEED33FDCC33CCC833C810D7079BEC9AE899400AED9BFDEC9AFCE899F80FD5C5
|
||||
:20012000F0DAE4CDFBE4CCFAE4C8F922EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02DFDE43CFC5C
|
||||
:20014000E8A42EC8C5F03DFDE43CFCEFA4FFE5F028FEE43DFDE43CFC2220120302022CE5DF
|
||||
:200160000C1460361470030202142402600302022FE5B720E505E4FF120A140508E508C3F8
|
||||
:200180009402500302022FE4F508E5E35488FFBF8002D20A750C0102022FE5E3548864885D
|
||||
:2001A0007045050FE50FC39428500302022FE4F50F300A107F01120A14D2067515057B6455
|
||||
:2001C0007D02801ED208050AE50AC39496400AE4F50A7F01120A14C208E4F5157B327D037B
|
||||
:2001E0007F0112001E8048E5E35488FFBF801AE4F50FF50AD20AF515FB7D017F0112001E95
|
||||
:2002000030062CC20AC2068026E5E354887020750C02801B7F01120A14E4F50FF50AF5085C
|
||||
:20022000C20AE5E330E708E4F50C8003750B02E5E830E3120510E510C394024009E4F5109A
|
||||
:2002400075E808750C0222201203020317E50B1460361470030202FF2402600302031AE592
|
||||
:20026000B720E405E4FF1209FF0511E511C39402500302031AE4F511E5E35424FFBF2002E0
|
||||
:20028000D209750B0102031AE5E3542464247046050DE50DC39428500302031AE4F50D305A
|
||||
:2002A00009127F011209FFD20B7515057B647D02E41F801DD2070509E509C39496400AE42F
|
||||
:2002C000F5097F011209FFC207E4F5157B327D03FF12001E8044E5E35424FFBF2019E4F59F
|
||||
:2002E0000DF509D209F515FB7D01FF12001E300B29C209C20B8023E5E35424701D80187FE3
|
||||
:20030000011209FFE4F511F50DF509C209E5E330E508E4F50B8003750B02E5E830E2120549
|
||||
:200320000EE50EC394024009E4F50E75E804750B0222E4FE74292EF8E6607624FE600E1429
|
||||
:2003400060472402706BAF06120A298069742C2EF974352EF8E6C397AF065005120A29806D
|
||||
:2003600003120A3D742F2EF974352EF8E6C3974045E4F674322EF8E6D39400400116E67023
|
||||
:200380003574292EF8E4F6802D742C2EF974352EF8E6D397AF065005120A298003120A3DCD
|
||||
:2003A000742F2EF974352EF8E6C3974009E4F68005AF06120A3D0EEE64036003020334E4CB
|
||||
:2003C000FE74352EF8060EBE03F722758E3075D20078FFE4F6D8FD758139020418020A95D4
|
||||
:2003E000E493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F1F
|
||||
:200400004420C8834004F456800146F6DFE4800B01020408102040809005DCE47E019360CE
|
||||
:20042000BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE49340
|
||||
:20044000A3F8E493A3C8C582C8CAC583CAF0A3C8C582C8CAC583CADFE9DEE780BEE4FE75CC
|
||||
:2004600012017F041204DEC3EF94FFEE94024003AF1222E5E630E763D3EF9436EE9405505B
|
||||
:2004800030EF9422EE94024028301912EF9414EE94055007C2197512018003E4F5123018B2
|
||||
:2004A0003AD3EF9444EE9402402EC218751201802A051FE51FD3940A4021E4F51FD3EF9422
|
||||
:2004C00036EE94054004D219800BC3EF9422EE94025002D21853B3FEE4F512AF1222AD07F7
|
||||
:2004E000E4FCF513F514F515F51675FE2975FF8BEDC454F04401F5A5E5A520E0FBAFA1753D
|
||||
:2005000013008F14AFA2EFFEEE4213E5142516F516E5133515F515E4F513F5140CBC08D084
|
||||
:20052000E516AE157803CEC313CE13D8F9F5148E131208E28E158F16AE13AF147C037DE8D6
|
||||
:2005400012012CC006C007AE15AF16AB07AA06E4F9F8D007D00612009A8E138F1422E4F578
|
||||
:20056000D275FE8943FF8075FE0153FFFC12000E120A63120A7475FE0D75FF01120A8575EF
|
||||
:2005800015067B197D02E4FF12001E7515067B197D027F0112001E7515067B197D027F02A3
|
||||
:2005A00012001EE4F58675FE0F43FF8075FE4F75FF10120A5175FE1775FF3C75FE1B75FF79
|
||||
:2005C000FC75FE1E75FF0CD2A8D2B9D2BBD2AF75F21875F3C075E80C75280A2202380000E8
|
||||
:2005E000C119C118011F00C113C112C114012600C105C101C100C104C103C10201250001C9
|
||||
:200600002400C196C117C115012800C11AC10AC109010B02011100010D00010900C1070117
|
||||
:200620000C02010800010F00010A00C108010E00011000C10BC106011B00011D00011A00B7
|
||||
:20064000011900011C00C10EC110C10DC10CC10F011E00C11100E4FDF512F513F514F51564
|
||||
:2006600075FE2975FF8B75A551E5A520E0FBAFA17512008F13AFA2EFFEEE4212E5132515C4
|
||||
:20068000F515E5123514F514E4F512F5130DBD08D5E515AE147802CEC313CE13D8F9F513D9
|
||||
:2006A0008E121208E28E148F15AE12AF137C037DE812012CC006C007AE14AF15AB07AA063E
|
||||
:2006C000E4F9F8D007D00612009A8E128F1322300E0EC20E12096012099612073D1207A52C
|
||||
:2006E000301005C210120332300C12C20C1206567838A60608A607120247120159300F3CBF
|
||||
:20070000C20FE528D3940040091528301A2EC21A80271209E9EF602175FE2175FFE675FE3E
|
||||
:200720002475FFFFC2BBC2B9C2A9C2AB438702D2BBD2B9D2A9D2AB800075280A22E5E53033
|
||||
:20074000E105C213C21222E5E230E707C213C212D21422E5E830E010C213C212300D45C278
|
||||
:200760000D75E80175B50122D21330141EE5E630E719C37839E6941018E6940E4006D213B6
|
||||
:20078000C2148007E4F5B5C213C212301316E5B520E00375B5010526E526C3940A4005D2F6
|
||||
:2007A00012E4F52622E5E620E70653B3FEC21522E5F2540C600FE5F354C0600675F20C7551
|
||||
:2007C000F3C0C21522E5F354C0600375F3C012045DEF7003C21522E5F230E419C215C37812
|
||||
:2007E00039E694EB18E6940F500743B30175F2102253B3FE2243B301D21522E51E604AE41C
|
||||
:20080000F51E051BE51BC394054005E4F51BD20E051DE51DC3940A4005E4F51DD210051970
|
||||
:20082000E519C394644005E4F519D20C051AE51AC394FA4014E4F51AD20DB290051CE51CF1
|
||||
:2008400094044005E4F51CD20F22C0E0C0D075D000C006C007AFF38FF3AEEF8EEFEE30E481
|
||||
:2008600002D205EE30E502D201EE30E604D200C201EE30E307300104C201D204EF30E3044E
|
||||
:20088000D2028006EF30E202D203201A02D21AD007D006D0D0D0E032C0E0C0F0C083C082FA
|
||||
:2008A000C0D075D000C000C001C002C003C004C005C006C007C28F158D749B258BF58B30E5
|
||||
:2008C0001503120922D211D007D006D005D004D003D002D001D000D0D0D082D083D0F0D06F
|
||||
:2008E000E032E4FDFBFAF517F51875FE2975FF8B75A561E5A520E0FBAFA1AB07AFA2EFFE1C
|
||||
:20090000EEFAEB2518F518EA3517F517E4FAFB0DBD08DDE518AE177803CEC313CE13D8F95D
|
||||
:20092000FF22E525D395245004D2848002C284E525C394AA400FE4F525301704152480052D
|
||||
:20094000301602052474AAD395245006D217C216800BE524D394015004D216C21705252208
|
||||
:20096000300410C201C2047515057B327D027F0212001E30000EC2007515087B327D027F01
|
||||
:200980000212001E30050EC2057515037B327D027F0212001E2230030C752701C203E4F515
|
||||
:2009A00015FBFD800D30020FE4F527C202F515FB7D017F0212001E22C0E0C0D075D000C00D
|
||||
:2009C00007AFEB8FEB201A02D21AD007D0D0D0E032C0E0C0D074FC258CF58C7417258AF57A
|
||||
:2009E0008A751E01D0D0D0E032E5E620E709200906200A03301A05C21A7F00227F0122EFC3
|
||||
:200A000014600A04700D53B7EE43B7102253B7EF43B70122EF14600A04700D53B7DD43B7CE
|
||||
:200A2000202253B7DF43B70222EF14600A14600A24027008D28322D28222D28422EF14601C
|
||||
:200A40000A14600A24027008C28322C28222C28422E5E230E4FBE5E230E304E4F5272275F0
|
||||
:200A60002701225389F0438901758CFC758A17D2A9D28C2253890F438910758DFF758B9B22
|
||||
:200A8000D2ABD28E2275FE0675FF1C75FE0375FF3F5380E32212055ED2AED2BE1207FB12A2
|
||||
:200AA00006CF80F400000000000000000000000000000000000000000000000000000000ED
|
||||
:200AC000000000000000000000000000000000000000000000000000000000000000000016
|
||||
:200AE0000000000000000000000000000000000000000000000000000000000000000000F6
|
||||
:200B00000000000000000000000000000000000000000000000000000000000000000000D5
|
||||
:200B20000000000000000000000000000000000000000000000000000000000000000000B5
|
||||
:200B4000000000000000000000000000000000000000000000000000000000000000000095
|
||||
:200B6000000000000000000000000000000000000000000000000000000000000000000075
|
||||
:200B8000000000000000000000000000000000000000000000000000000000000000000055
|
||||
:200BA000000000000000000000000000000000000000000000000000000000000000000035
|
||||
:200BC000000000000000000000000000000000000000000000000000000000000000000015
|
||||
:200BE0000000000000000000000000000000000000000000000000000000000000000000F5
|
||||
:020C00000D8263
|
||||
:00000001FF
|
1
Project/Objects/uart.__i
Normal file
1
Project/Objects/uart.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\uart\uart.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\uart.lst) TABS (2) OBJECT(.\Objects\uart.obj)
|
BIN
Project/Objects/uart.obj
Normal file
BIN
Project/Objects/uart.obj
Normal file
Binary file not shown.
1
Project/Objects/userapp.__i
Normal file
1
Project/Objects/userapp.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\userapp\userapp.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\userapp.lst) TABS (2) OBJECT(.\Objects\userapp.obj)
|
BIN
Project/Objects/userapp.obj
Normal file
BIN
Project/Objects/userapp.obj
Normal file
Binary file not shown.
1
Project/Objects/vox_module.__i
Normal file
1
Project/Objects/vox_module.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\vox\vox_module.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\vox_module.lst) TABS (2) OBJECT(.\Objects\vox_module.obj)
|
BIN
Project/Objects/vox_module.obj
Normal file
BIN
Project/Objects/vox_module.obj
Normal file
Binary file not shown.
1
Project/Objects/watchdog.__i
Normal file
1
Project/Objects/watchdog.__i
Normal file
@ -0,0 +1 @@
|
||||
"..\UsrSrc\watchdog\watchdog.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\watchdog.lst) TABS (2) OBJECT(.\Objects\watchdog.obj)
|
BIN
Project/Objects/watchdog.obj
Normal file
BIN
Project/Objects/watchdog.obj
Normal file
Binary file not shown.
3727
Project/TP3102_Demo.uvgui.GH
Normal file
3727
Project/TP3102_Demo.uvgui.GH
Normal file
File diff suppressed because one or more lines are too long
3682
Project/TP3102_Demo.uvgui.GH.bak
Normal file
3682
Project/TP3102_Demo.uvgui.GH.bak
Normal file
File diff suppressed because one or more lines are too long
449
Project/TP3102_Demo.uvopt
Normal file
449
Project/TP3102_Demo.uvopt
Normal file
@ -0,0 +1,449 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Extensions>
|
||||
<cExt>*.c</cExt>
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj; *.o</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLK51>12000000</CLK51>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>1</RunSim>
|
||||
<RunTarget>0</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>120</PageWidth>
|
||||
<PageLength>65</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>1</CCode>
|
||||
<CListInc>0</CListInc>
|
||||
<CSymb>0</CSymb>
|
||||
<LinkerCodeListing>0</LinkerCodeListing>
|
||||
</ListingPage>
|
||||
<OPTXL>
|
||||
<LMap>1</LMap>
|
||||
<LComments>1</LComments>
|
||||
<LGenerateSymbols>1</LGenerateSymbols>
|
||||
<LLibSym>1</LLibSym>
|
||||
<LLines>1</LLines>
|
||||
<LLocSym>1</LLocSym>
|
||||
<LPubSym>1</LPubSym>
|
||||
<LXref>0</LXref>
|
||||
<LExpSel>0</LExpSel>
|
||||
</OPTXL>
|
||||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>255</CpuCode>
|
||||
<Books>
|
||||
<Book>
|
||||
<Number>0</Number>
|
||||
<Title>Data Sheet</Title>
|
||||
<Path>DATASHTS\CAST\CAST_R8051XC.PDF</Path>
|
||||
</Book>
|
||||
</Books>
|
||||
<DebugOpt>
|
||||
<uSim>1</uSim>
|
||||
<uTrg>0</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>1</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>10</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon>BIN\SY8831.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGDC51</Key>
|
||||
<Name>(94=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(81=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(1201=-1,-1,-1,-1,0)(90=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(5045=-1,-1,-1,-1,0)(5046=-1,-1,-1,-1,0)(5031=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(5015=-1,-1,-1,-1,0)(5160=-1,-1,-1,-1,0)(5057=-1,-1,-1,-1,0)(5166=-1,-1,-1,-1,0)(5164=-1,-1,-1,-1,0)(5165=-1,-1,-1,-1,0)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>SY8831</Key>
|
||||
<Name>-S14 -B921600 -O1799</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGTC51</Key>
|
||||
<Name></Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>TP3102</Key>
|
||||
<Name>-S14 -B921600 -O1799</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>n_ADC_Plus,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>1</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>n_Vbat_Data,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>2</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>F_sys_tim_1s</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>3</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>Protect_Type_Flg</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>4</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>Decnt_SleepDelay</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow1>
|
||||
<Mm>
|
||||
<WinNumber>1</WinNumber>
|
||||
<SubType>0</SubType>
|
||||
<ItemText>X:0</ItemText>
|
||||
<AccSizeX>0</AccSizeX>
|
||||
</Mm>
|
||||
</MemoryWindow1>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>1</periodic>
|
||||
<aLwin>1</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>1</viewmode>
|
||||
<vrSel>0</vrSel>
|
||||
<aSym>0</aSym>
|
||||
<aTbox>0</aTbox>
|
||||
<AscS1>0</AscS1>
|
||||
<AscS2>0</AscS2>
|
||||
<AscS3>0</AscS3>
|
||||
<aSer3>0</aSer3>
|
||||
<eProf>0</eProf>
|
||||
<aLa>0</aLa>
|
||||
<aPa1>0</aPa1>
|
||||
<AscS4>0</AscS4>
|
||||
<aSer4>0</aSer4>
|
||||
<StkLoc>1</StkLoc>
|
||||
<TrcWin>0</TrcWin>
|
||||
<newCpu>0</newCpu>
|
||||
<uProt>0</uProt>
|
||||
</DebugFlag>
|
||||
<LintExecutable></LintExecutable>
|
||||
<LintConfigFile></LintConfigFile>
|
||||
<bLintAuto>0</bLintAuto>
|
||||
<bAutoGenD>0</bAutoGenD>
|
||||
<LntExFlags>0</LntExFlags>
|
||||
<pMisraName></pMisraName>
|
||||
<pszMrule></pszMrule>
|
||||
<pSingCmds></pSingCmds>
|
||||
<pMultCmds></pMultCmds>
|
||||
<pMisraNamep></pMisraNamep>
|
||||
<pszMrulep></pszMrulep>
|
||||
<pSingCmdsp></pSingCmdsp>
|
||||
<pMultCmdsp></pMultCmdsp>
|
||||
</TargetOption>
|
||||
</Target>
|
||||
|
||||
<Group>
|
||||
<GroupName>Startup</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>1</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Src\startup\STARTUP.A51</PathWithFileName>
|
||||
<FilenameWithoutPath>STARTUP.A51</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>UsrSrc</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>2</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\main.c</PathWithFileName>
|
||||
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>3</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\adc\adc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>adc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>4</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\charger\charger_module.c</PathWithFileName>
|
||||
<FilenameWithoutPath>charger_module.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>5</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\discharge\discharge_module.c</PathWithFileName>
|
||||
<FilenameWithoutPath>discharge_module.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\gpio\gpio.c</PathWithFileName>
|
||||
<FilenameWithoutPath>gpio.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\hall\hall.c</PathWithFileName>
|
||||
<FilenameWithoutPath>hall.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\key\key.c</PathWithFileName>
|
||||
<FilenameWithoutPath>key.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\led\led.c</PathWithFileName>
|
||||
<FilenameWithoutPath>led.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\sleep\sleep.c</PathWithFileName>
|
||||
<FilenameWithoutPath>sleep.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\system\system.c</PathWithFileName>
|
||||
<FilenameWithoutPath>system.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\uart\uart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>uart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\userapp\userapp.c</PathWithFileName>
|
||||
<FilenameWithoutPath>userapp.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\vox\vox_module.c</PathWithFileName>
|
||||
<FilenameWithoutPath>vox_module.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\watchdog\watchdog.c</PathWithFileName>
|
||||
<FilenameWithoutPath>watchdog.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\bat\bat.c</PathWithFileName>
|
||||
<FilenameWithoutPath>bat.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\timer\sys_tim.c</PathWithFileName>
|
||||
<FilenameWithoutPath>sys_tim.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
490
Project/TP3102_Demo.uvproj
Normal file
490
Project/TP3102_Demo.uvproj
Normal file
@ -0,0 +1,490 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>R8051XC</Device>
|
||||
<Vendor>CAST, Inc.</Vendor>
|
||||
<Cpu>IRAM(0-0xFF) CLOCK(24000000) MOD517DP MDU_R515</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId>4129</DeviceId>
|
||||
<RegisterFile>REG51XC.H</RegisterFile>
|
||||
<MemoryEnv></MemoryEnv>
|
||||
<Cmp></Cmp>
|
||||
<Asm></Asm>
|
||||
<Linker></Linker>
|
||||
<OHString></OHString>
|
||||
<InfinionOptionDll></InfinionOptionDll>
|
||||
<SLE66CMisc></SLE66CMisc>
|
||||
<SLE66AMisc></SLE66AMisc>
|
||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||
<SFDFile></SFDFile>
|
||||
<bCustSvd>0</bCustSvd>
|
||||
<UseEnv>0</UseEnv>
|
||||
<BinPath></BinPath>
|
||||
<IncludePath></IncludePath>
|
||||
<LibPath></LibPath>
|
||||
<RegisterFilePath>Evatronix\</RegisterFilePath>
|
||||
<DBRegisterFilePath>Evatronix\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||
<OutputName>mcu</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
<HexFormatSelection>0</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
<nStopB2X>0</nStopB2X>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>1</RunUserProg2>
|
||||
<UserProg1Name>.\HEXBIN.bat .\Objects\hex2bin_TP.exe mcu \Objects\</UserProg1Name>
|
||||
<UserProg2Name>.\Objects\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 3 0</UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopA1X>0</nStopA1X>
|
||||
<nStopA2X>0</nStopA2X>
|
||||
</AfterMake>
|
||||
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||
<SVCSIdString></SVCSIdString>
|
||||
</TargetCommonOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||
<PublicsOnly>0</PublicsOnly>
|
||||
<StopOnExitCode>3</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
<BankNo>65535</BankNo>
|
||||
</CommonProperty>
|
||||
<DllOption>
|
||||
<SimDllName>S8051.DLL</SimDllName>
|
||||
<SimDllArguments>-PMW -DPC -BSE</SimDllArguments>
|
||||
<SimDlgDll>DCore51.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pR8051XC -o38081BDBFFF</SimDlgDllArguments>
|
||||
<TargetDllName>S8051.DLL</TargetDllName>
|
||||
<TargetDllArguments></TargetDllArguments>
|
||||
<TargetDlgDll>TCore51.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-pR8051XC</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
<Simulator>
|
||||
<UseSimulator>1</UseSimulator>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>1</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Simulator>
|
||||
<Target>
|
||||
<UseTarget>0</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>1</RestoreTracepoints>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>10</TargetSelection>
|
||||
<SimDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
</SimDlls>
|
||||
<TargetDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
<Driver>BIN\SY8831.dll</Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>0</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||
<Capability>0</Capability>
|
||||
<DriverSelection>-1</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>0</bUseTDR>
|
||||
<Flash2></Flash2>
|
||||
<Flash3>"" ()</Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<Target51>
|
||||
<Target51Misc>
|
||||
<MemoryModel>0</MemoryModel>
|
||||
<RTOS>0</RTOS>
|
||||
<RomSize>1</RomSize>
|
||||
<DataHold>0</DataHold>
|
||||
<XDataHold>0</XDataHold>
|
||||
<UseOnchipRom>0</UseOnchipRom>
|
||||
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||
<UseOnchipXram>0</UseOnchipXram>
|
||||
<HadIRAM>1</HadIRAM>
|
||||
<HadXRAM>0</HadXRAM>
|
||||
<HadIROM>0</HadIROM>
|
||||
<Moda2>0</Moda2>
|
||||
<Moddp2>0</Moddp2>
|
||||
<Modp2>0</Modp2>
|
||||
<Mod517dp>1</Mod517dp>
|
||||
<Mod517au>0</Mod517au>
|
||||
<Mode2>0</Mode2>
|
||||
<useCB>0</useCB>
|
||||
<useXB>0</useXB>
|
||||
<useL251>0</useL251>
|
||||
<useA251>0</useA251>
|
||||
<Mx51>0</Mx51>
|
||||
<ModC812>0</ModC812>
|
||||
<ModCont>0</ModCont>
|
||||
<Lp51>0</Lp51>
|
||||
<useXBS>0</useXBS>
|
||||
<ModDA>0</ModDA>
|
||||
<ModAB2>0</ModAB2>
|
||||
<Mx51P>0</Mx51P>
|
||||
<hadXRAM2>0</hadXRAM2>
|
||||
<uocXram2>0</uocXram2>
|
||||
<hadXRAM3>0</hadXRAM3>
|
||||
<ModC2>0</ModC2>
|
||||
<ModH2>0</ModH2>
|
||||
<Mdu_R515>1</Mdu_R515>
|
||||
<Mdu_F120>0</Mdu_F120>
|
||||
<Psoc>0</Psoc>
|
||||
<hadIROM2>0</hadIROM2>
|
||||
<hadIROM3>0</hadIROM3>
|
||||
<ModSmx2>0</ModSmx2>
|
||||
<cBanks>0</cBanks>
|
||||
<xBanks>0</xBanks>
|
||||
<OnChipMemories>
|
||||
<RCB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0xffff</Size>
|
||||
</RCB>
|
||||
<RXB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</RXB>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocr1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr1>
|
||||
<Ocr2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr2>
|
||||
<Ocr3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr3>
|
||||
<IRO>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IRO>
|
||||
<IRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x100</Size>
|
||||
</IRA>
|
||||
<XRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA>
|
||||
<XRA512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA512>
|
||||
<IROM512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM512>
|
||||
<XRA513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA513>
|
||||
<IROM513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM513>
|
||||
</OnChipMemories>
|
||||
</Target51Misc>
|
||||
<C51>
|
||||
<RegisterColoring>0</RegisterColoring>
|
||||
<VariablesInOrder>0</VariablesInOrder>
|
||||
<IntegerPromotion>1</IntegerPromotion>
|
||||
<uAregs>0</uAregs>
|
||||
<UseInterruptVector>1</UseInterruptVector>
|
||||
<Fuzzy>3</Fuzzy>
|
||||
<Optimize>9</Optimize>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<SizeSpeed>0</SizeSpeed>
|
||||
<ObjectExtend>1</ObjectExtend>
|
||||
<ACallAJmp>0</ACallAJmp>
|
||||
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer</IncludePath>
|
||||
</VariousControls>
|
||||
</C51>
|
||||
<Ax51>
|
||||
<UseMpl>0</UseMpl>
|
||||
<UseStandard>1</UseStandard>
|
||||
<UseCase>0</UseCase>
|
||||
<UseMod51>0</UseMod51>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Ax51>
|
||||
<Lx51>
|
||||
<useFile>0</useFile>
|
||||
<linkonly>0</linkonly>
|
||||
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<DataOverlaying>1</DataOverlaying>
|
||||
<OverlayString></OverlayString>
|
||||
<MiscControls></MiscControls>
|
||||
<DisableWarningNumbers></DisableWarningNumbers>
|
||||
<LinkerCmdFile></LinkerCmdFile>
|
||||
<Assign></Assign>
|
||||
<ReserveString></ReserveString>
|
||||
<CClasses></CClasses>
|
||||
<UserClasses></UserClasses>
|
||||
<CSection></CSection>
|
||||
<UserSection></UserSection>
|
||||
<CodeBaseAddress></CodeBaseAddress>
|
||||
<XDataBaseAddress></XDataBaseAddress>
|
||||
<PDataBaseAddress></PDataBaseAddress>
|
||||
<BitBaseAddress></BitBaseAddress>
|
||||
<DataBaseAddress></DataBaseAddress>
|
||||
<IDataBaseAddress></IDataBaseAddress>
|
||||
<Precede></Precede>
|
||||
<Stack></Stack>
|
||||
<CodeSegmentName></CodeSegmentName>
|
||||
<XDataSegmentName></XDataSegmentName>
|
||||
<BitSegmentName></BitSegmentName>
|
||||
<DataSegmentName></DataSegmentName>
|
||||
<IDataSegmentName></IDataSegmentName>
|
||||
</Lx51>
|
||||
</Target51>
|
||||
</TargetOption>
|
||||
<Groups>
|
||||
<Group>
|
||||
<GroupName>Startup</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>STARTUP.A51</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>..\Src\startup\STARTUP.A51</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>UsrSrc</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>adc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\adc\adc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>charger_module.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\charger\charger_module.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>discharge_module.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\discharge\discharge_module.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>gpio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\gpio\gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>hall.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\hall\hall.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>key.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\key\key.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>led.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\led\led.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sleep.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\sleep\sleep.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>system.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\system\system.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\uart\uart.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>userapp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\userapp\userapp.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>vox_module.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\vox\vox_module.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>watchdog.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\watchdog\watchdog.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>bat.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\bat\bat.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sys_tim.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\timer\sys_tim.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
<LayerInfo>
|
||||
<Layers>
|
||||
<Layer>
|
||||
<LayName><Project Info></LayName>
|
||||
<LayDesc></LayDesc>
|
||||
<LayUrl></LayUrl>
|
||||
<LayKeys></LayKeys>
|
||||
<LayCat></LayCat>
|
||||
<LayLic></LayLic>
|
||||
<LayTarg>0</LayTarg>
|
||||
<LayPrjMark>1</LayPrjMark>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</LayerInfo>
|
||||
|
||||
</Project>
|
0
Project/test.txt
Normal file
0
Project/test.txt
Normal file
205
Src/startup/STARTUP.A51
Normal file
205
Src/startup/STARTUP.A51
Normal file
@ -0,0 +1,205 @@
|
||||
$NOMOD51
|
||||
;------------------------------------------------------------------------------
|
||||
; This file is part of the C51 Compiler package
|
||||
; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
|
||||
; Version 8.01
|
||||
;
|
||||
; *** <<< Use Configuration Wizard in Context Menu >>> ***
|
||||
;------------------------------------------------------------------------------
|
||||
; STARTUP.A51: This code is executed after processor reset.
|
||||
;
|
||||
; To translate this file use A51 with the following invocation:
|
||||
;
|
||||
; A51 STARTUP.A51
|
||||
;
|
||||
; To link the modified STARTUP.OBJ file to your application use the following
|
||||
; Lx51 invocation:
|
||||
;
|
||||
; Lx51 your object file list, STARTUP.OBJ controls
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; User-defined <h> Power-On Initialization of Memory
|
||||
;
|
||||
; With the following EQU statements the initialization of memory
|
||||
; at processor reset can be defined:
|
||||
;
|
||||
; <o> IDATALEN: IDATA memory size <0x0-0x100>
|
||||
; <i> Note: The absolute start-address of IDATA memory is always 0
|
||||
; <i> The IDATA space overlaps physically the DATA and BIT areas.
|
||||
IDATALEN EQU 100H
|
||||
;
|
||||
; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
|
||||
; <i> The absolute start address of XDATA memory
|
||||
XDATASTART EQU 0
|
||||
;
|
||||
; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
|
||||
; <i> The length of XDATA memory in bytes.
|
||||
XDATALEN EQU 0H
|
||||
;
|
||||
; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
|
||||
; <i> The absolute start address of PDATA memory
|
||||
PDATASTART EQU 0H
|
||||
;
|
||||
; <o> PDATALEN: PDATA memory size <0x0-0xFF>
|
||||
; <i> The length of PDATA memory in bytes.
|
||||
PDATALEN EQU 0H
|
||||
;
|
||||
;</h>
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;<h> Reentrant Stack Initialization
|
||||
;
|
||||
; The following EQU statements define the stack pointer for reentrant
|
||||
; functions and initialized it:
|
||||
;
|
||||
; <h> Stack Space for reentrant functions in the SMALL model.
|
||||
; <q> IBPSTACK: Enable SMALL model reentrant stack
|
||||
; <i> Stack space for reentrant functions in the SMALL model.
|
||||
IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
|
||||
; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
|
||||
; <i> Set the top of the stack to the highest location.
|
||||
IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
; </h>
|
||||
;
|
||||
; <h> Stack Space for reentrant functions in the LARGE model.
|
||||
; <q> XBPSTACK: Enable LARGE model reentrant stack
|
||||
; <i> Stack space for reentrant functions in the LARGE model.
|
||||
XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
|
||||
; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
|
||||
; <i> Set the top of the stack to the highest location.
|
||||
XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
|
||||
; </h>
|
||||
;
|
||||
; <h> Stack Space for reentrant functions in the COMPACT model.
|
||||
; <q> PBPSTACK: Enable COMPACT model reentrant stack
|
||||
; <i> Stack space for reentrant functions in the COMPACT model.
|
||||
PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
|
||||
;
|
||||
; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
|
||||
; <i> Set the top of the stack to the highest location.
|
||||
PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
; </h>
|
||||
;</h>
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; Memory Page for Using the Compact Model with 64 KByte xdata RAM
|
||||
; <e>Compact Model Page Definition
|
||||
;
|
||||
; <i>Define the XDATA page used for PDATA variables.
|
||||
; <i>PPAGE must conform with the PPAGE set in the linker invocation.
|
||||
;
|
||||
; Enable pdata memory page initalization
|
||||
PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
|
||||
;
|
||||
; <o> PPAGE number <0x0-0xFF>
|
||||
; <i> uppermost 256-byte address of the page used for PDATA variables.
|
||||
PPAGE EQU 0
|
||||
;
|
||||
; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
|
||||
; <i> most 8051 variants use P2 as uppermost address byte
|
||||
PPAGE_SFR DATA 0A0H
|
||||
;
|
||||
; </e>
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
; Standard SFR Symbols
|
||||
ACC DATA 0E0H
|
||||
B DATA 0F0H
|
||||
SP DATA 81H
|
||||
DPL DATA 82H
|
||||
DPH DATA 83H
|
||||
CKCON DATA 8EH
|
||||
CLKPRE DATA 0D2H
|
||||
PCON DATA 87H
|
||||
|
||||
NAME ?C_STARTUP
|
||||
|
||||
|
||||
?C_C51STARTUP SEGMENT CODE
|
||||
?STACK SEGMENT IDATA
|
||||
|
||||
RSEG ?STACK
|
||||
DS 1
|
||||
|
||||
EXTRN CODE (?C_START)
|
||||
PUBLIC ?C_STARTUP
|
||||
|
||||
CSEG AT 0
|
||||
?C_STARTUP: LJMP STARTUP1
|
||||
|
||||
RSEG ?C_C51STARTUP
|
||||
|
||||
STARTUP1:
|
||||
;Set Wait State to 0x30 and CPU CLK Prescaler to 1 to Accelerate Startup
|
||||
;MOV PCON, #02H ;Enter Standby
|
||||
MOV CKCON, #30H ;Wait State = 0x30
|
||||
MOV CLKPRE, #0 ;CLK Prescaler = 1
|
||||
|
||||
IF IDATALEN <> 0
|
||||
MOV R0,#IDATALEN - 1
|
||||
CLR A
|
||||
IDATALOOP: MOV @R0,A
|
||||
DJNZ R0,IDATALOOP
|
||||
ENDIF
|
||||
|
||||
IF XDATALEN <> 0
|
||||
MOV DPTR,#XDATASTART
|
||||
MOV R7,#LOW (XDATALEN)
|
||||
IF (LOW (XDATALEN)) <> 0
|
||||
MOV R6,#(HIGH (XDATALEN)) +1
|
||||
ELSE
|
||||
MOV R6,#HIGH (XDATALEN)
|
||||
ENDIF
|
||||
CLR A
|
||||
XDATALOOP: MOVX @DPTR,A
|
||||
INC DPTR
|
||||
DJNZ R7,XDATALOOP
|
||||
DJNZ R6,XDATALOOP
|
||||
ENDIF
|
||||
|
||||
IF PPAGEENABLE <> 0
|
||||
MOV PPAGE_SFR,#PPAGE
|
||||
ENDIF
|
||||
|
||||
IF PDATALEN <> 0
|
||||
MOV R0,#LOW (PDATASTART)
|
||||
MOV R7,#LOW (PDATALEN)
|
||||
CLR A
|
||||
PDATALOOP: MOVX @R0,A
|
||||
INC R0
|
||||
DJNZ R7,PDATALOOP
|
||||
ENDIF
|
||||
|
||||
IF IBPSTACK <> 0
|
||||
EXTRN DATA (?C_IBP)
|
||||
|
||||
MOV ?C_IBP,#LOW IBPSTACKTOP
|
||||
ENDIF
|
||||
|
||||
IF XBPSTACK <> 0
|
||||
EXTRN DATA (?C_XBP)
|
||||
|
||||
MOV ?C_XBP,#HIGH XBPSTACKTOP
|
||||
MOV ?C_XBP+1,#LOW XBPSTACKTOP
|
||||
ENDIF
|
||||
|
||||
IF PBPSTACK <> 0
|
||||
EXTRN DATA (?C_PBP)
|
||||
MOV ?C_PBP,#LOW PBPSTACKTOP
|
||||
ENDIF
|
||||
|
||||
MOV SP,#?STACK-1
|
||||
|
||||
; This code is required if you use L51_BANK.A51 with Banking Mode 4
|
||||
;<h> Code Banking
|
||||
; <q> Select Bank 0 for L51_BANK.A51 Mode 4
|
||||
#if 0
|
||||
; <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
|
||||
EXTRN CODE (?B_SWITCH0)
|
||||
CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
|
||||
#endif
|
||||
;</h>
|
||||
LJMP ?C_START
|
||||
|
||||
END
|
54
TP3310_Demo.si4project/Backup/adc(1863).h
Normal file
54
TP3310_Demo.si4project/Backup/adc(1863).h
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.h
|
||||
* @brief adc module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __ADC_H__
|
||||
#define __ADC_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
#define VREF 1000
|
||||
|
||||
//extern idata uint16_t g_VREF_Value; //IREF ϵͳÉϵçʱ²É¼¯Ò»´Î¡£
|
||||
|
||||
typedef enum {
|
||||
ADC_CH0 = 0x00,
|
||||
ADC_CH1,
|
||||
ADC_CH2,
|
||||
ADC_CH3,
|
||||
ADC_CH4,
|
||||
}ADC_CHANNELS_E;
|
||||
|
||||
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
extern void Adc_Init(void);
|
||||
|
||||
extern uint16_t Vref_AdcValue(void);
|
||||
|
||||
extern uint16_t Vbat_Value(void);
|
||||
|
||||
extern uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
175
TP3310_Demo.si4project/Backup/adc(3747).c
Normal file
175
TP3310_Demo.si4project/Backup/adc(3747).c
Normal file
@ -0,0 +1,175 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.c
|
||||
* @brief adc module
|
||||
* @ic TP3102
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/03/26 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/08/04 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "adc.h"
|
||||
#include "system.h"
|
||||
#include "sys_tim.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
idata uint16_t Vbat_Adc = 0;
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn)
|
||||
*
|
||||
* Description : 获取相应通道的电压ADC值。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : adc Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t adc_data = 0;
|
||||
uint16_t adc_plus_data = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(index=0; index<8; index++)
|
||||
{
|
||||
ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
adc_data = ADC_DATL; //Read low byte first! Lock ADC Value.
|
||||
|
||||
adc_data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
adc_plus_data += adc_data;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data);
|
||||
#endif
|
||||
adc_data = 0;
|
||||
}
|
||||
|
||||
adc_data = adc_plus_data >> 3;
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data);
|
||||
#endif
|
||||
|
||||
return adc_data;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vbat_Value(void)
|
||||
*
|
||||
* Description : Vbat Value.获取电池电压。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Vbat Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint16_t Vbat_Value(void)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t n_Vbat_Data = 0;
|
||||
uint16_t n_ADC_Plus = 0;
|
||||
|
||||
n_Vbat_Data = ADC_Chn_Data(ADC_BAT);
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data);
|
||||
#endif
|
||||
|
||||
n_ADC_Plus = ADC_Chn_Data(ADC_VREF); //获取VREF
|
||||
|
||||
n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF * 2 / n_ADC_Plus; //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat,Vbat:%d,vref:%d.\r\n",(uint16_t)n_Vbat_Data, n_ADC_Plus);
|
||||
#endif
|
||||
|
||||
return n_Vbat_Data;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t ADC_NTC_Value(void)
|
||||
*
|
||||
* Description : 获取NTC采样电压
|
||||
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : ADC Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifdef ADC_NTC_ENABLE
|
||||
|
||||
uint16_t ADC_NTC_Value(void)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t adc_data = 0;
|
||||
uint16_t adc_plus_data = 0;
|
||||
|
||||
adc_data = ADC_Chn_Data(ADC_CH0);
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
|
||||
#endif
|
||||
adc_plus_data = ADC_Chn_Data(ADC_VREF); //获取VREF
|
||||
|
||||
adc_data = (uint32_t)(adc_data) * VREF / adc_plus_data; //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data);
|
||||
#endif
|
||||
|
||||
return adc_data;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
277
TP3310_Demo.si4project/Backup/adc(3991).c
Normal file
277
TP3310_Demo.si4project/Backup/adc(3991).c
Normal file
@ -0,0 +1,277 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.c
|
||||
* @brief adc module
|
||||
* @ic TP3102
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/03/26 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/08/04 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "adc.h"
|
||||
#include "system.h"
|
||||
#include "sys_tim.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
idata uint16_t g_VREF_Value = 0; //IREF 系统上电时采集一次。
|
||||
|
||||
idata uint16_t Vbat_Adc = 0;
|
||||
|
||||
idata uint16_t VNTC_Adc = 0;
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Adc_Init(void)
|
||||
*
|
||||
* Description : ADC Initialization. --- 系统初始化调用。
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Adc_Init(void)
|
||||
{
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function
|
||||
SFRDATA &= 0x3F;
|
||||
SFRDATA |= 0x80;
|
||||
|
||||
SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable.
|
||||
SFRDATA = 0x10;
|
||||
|
||||
#endif
|
||||
|
||||
//g_VREF_Value = Vref_AdcValue();
|
||||
//g_VREF_Value = 311;
|
||||
}
|
||||
|
||||
#if 1
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vref_AdcValue(void)
|
||||
*
|
||||
* Description : Vref Value.获取基准参考电压ADC值。系统上电采集一次。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Iref Value (mA)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
uint16_t Vref_AdcValue(void)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t n_Vref_Data = 0;
|
||||
uint16_t n_ADC_Plus = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B -- ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for( index=0; index<8; index++ )
|
||||
{
|
||||
ADC_CTL1 = 0x61; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vref_Data = ADC_DATL;
|
||||
|
||||
n_Vref_Data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
n_ADC_Plus += n_Vref_Data;
|
||||
|
||||
n_Vref_Data = 0;
|
||||
}
|
||||
|
||||
n_Vref_Data = (n_ADC_Plus / 8);
|
||||
|
||||
return n_Vref_Data;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vbat_Value(void)
|
||||
*
|
||||
* Description : Vbat Value.获取电池电压。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Vbat Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint16_t Vbat_Value(void)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t n_Vbat_Data = 0;
|
||||
uint16_t n_ADC_Plus = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for( index=0; index<8; index++ )
|
||||
{
|
||||
ADC_CTL1 = 0x51; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vbat_Data = ADC_DATL;
|
||||
|
||||
n_Vbat_Data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
n_ADC_Plus += n_Vbat_Data;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Vbat:%d,plus:%d.\r\n",(uint16_t)n_Vbat_Data,(uint16_t)n_ADC_Plus);
|
||||
#endif
|
||||
n_Vbat_Data = 0;
|
||||
}
|
||||
|
||||
n_Vbat_Data = ( n_ADC_Plus / 4 ); //Vbat采样值为二分压值。
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data);
|
||||
#endif
|
||||
|
||||
g_VREF_Value = Vref_AdcValue(); //获取VREF
|
||||
|
||||
n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF / g_VREF_Value; //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat,Vbat:%d,vref:%d.\r\n",(uint16_t)n_Vbat_Data, g_VREF_Value);
|
||||
#endif
|
||||
|
||||
return n_Vbat_Data;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
*
|
||||
* Description : ADC_Chn_Value. ADC0 ~ ADC4。
|
||||
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : ADC Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t adc_data = 0;
|
||||
uint16_t adc_plus_data = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(index=0; index<8; index++)
|
||||
{
|
||||
ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
adc_data = ADC_DATL; //Read low byte first! Lock ADC Value.
|
||||
|
||||
adc_data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
adc_plus_data += adc_data;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data);
|
||||
#endif
|
||||
adc_data = 0;
|
||||
}
|
||||
|
||||
adc_data = adc_plus_data / 8;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
|
||||
#endif
|
||||
g_VREF_Value = Vref_AdcValue(); //获取VREF
|
||||
|
||||
adc_plus_data = (uint32_t)(adc_data) * VREF / g_VREF_Value; //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_plus_data, (uint16_t)g_VREF_Value);
|
||||
#endif
|
||||
|
||||
return adc_plus_data;
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
|
||||
void ADC_Value_Machine(void)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
uint8_t index = 0;
|
||||
uint16_t adc_data[8] = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x83; //0x83--ADC EN; Successive mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(i=0; i<7; i++)
|
||||
{
|
||||
ADC_CTL1 = (i << 4); //Channel set
|
||||
ADC_CTL1 |= 1; //Start conversion
|
||||
|
||||
for(index=0; index<8; index++)
|
||||
{
|
||||
while( !(IRQ_FLAG10 & 0x01) ); //Wait for conversion complete
|
||||
IRQ_FLAG10 = 1; //Write 1 to clear
|
||||
|
||||
adc_data[i] = ADC_DATL; //Read low byte first!
|
||||
|
||||
adc_data[i] = adc_data[i] + (u16)(ADC_DATH << 8);
|
||||
}
|
||||
|
||||
ADC_CTL1 &= 0xFE; //Stop conversion
|
||||
IRQ_FLAG10 = 1; //Write 1 to clear--Clear possible flag before stop conversion!!!
|
||||
}
|
||||
|
||||
g_VREF_Value = adc_data[6] / 8;
|
||||
|
||||
Vbat_Adc = (uint32_t)(adc_data[5] / 4) * VREF / g_VREF_Value; //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
VNTC_Adc = (uint32_t)(adc_data[4] / 8) * VREF / g_VREF_Value; //Vadx = VREF*DATAadx/DATAvref;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
173
TP3310_Demo.si4project/Backup/adc(4033).c
Normal file
173
TP3310_Demo.si4project/Backup/adc(4033).c
Normal file
@ -0,0 +1,173 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.c
|
||||
* @brief adc module
|
||||
* @ic TP3102
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/03/26 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/08/04 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "adc.h"
|
||||
#include "system.h"
|
||||
#include "sys_tim.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
idata uint16_t Vbat_Adc = 0;
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn)
|
||||
*
|
||||
* Description : 获取相应通道的电压ADC值。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : adc Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t adc_data = 0;
|
||||
uint16_t adc_plus_data = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(index=0; index<8; index++)
|
||||
{
|
||||
ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
adc_data = ADC_DATL; //Read low byte first! Lock ADC Value.
|
||||
|
||||
adc_data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
adc_plus_data += adc_data;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data);
|
||||
#endif
|
||||
// adc_data = 0;
|
||||
}
|
||||
|
||||
adc_data = adc_plus_data >> 3;
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data);
|
||||
#endif
|
||||
|
||||
return adc_data;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vbat_Value(void)
|
||||
*
|
||||
* Description : Vbat Value.获取电池电压。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Vbat Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint16_t Vbat_Value(void)
|
||||
{
|
||||
uint16_t n_Vbat_Data = 0;
|
||||
//uint16_t n_ADC_Plus = 0;
|
||||
|
||||
n_Vbat_Data = ADC_Chn_Data(ADC_BAT);
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data);
|
||||
#endif
|
||||
|
||||
// n_ADC_Plus = ADC_Chn_Data(ADC_VREF); //获取VREF
|
||||
|
||||
n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF * 2 / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat,Vbat:%d.\r\n",(uint16_t)n_Vbat_Data);
|
||||
#endif
|
||||
|
||||
return n_Vbat_Data;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t ADC_NTC_Value(void)
|
||||
*
|
||||
* Description : 获取NTC采样电压
|
||||
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : ADC Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifdef ADC_NTC_ENABLE
|
||||
|
||||
uint16_t ADC_NTC_Value(void)
|
||||
{
|
||||
uint16_t adc_data = 0;
|
||||
// uint16_t adc_plus_data = 0;
|
||||
|
||||
adc_data = ADC_Chn_Data(ADC_CH0);
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
|
||||
#endif
|
||||
// adc_plus_data = ADC_Chn_Data(ADC_VREF); //获取VREF
|
||||
|
||||
adc_data = (uint32_t)(adc_data) * VREF / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Adc,Vadc:%d.\r\n", (uint16_t)adc_data);
|
||||
#endif
|
||||
|
||||
return adc_data;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
203
TP3310_Demo.si4project/Backup/adc(4064).c
Normal file
203
TP3310_Demo.si4project/Backup/adc(4064).c
Normal file
@ -0,0 +1,203 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.c
|
||||
* @brief adc module
|
||||
* @ic TP3102
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/03/26 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/08/04 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "adc.h"
|
||||
#include "system.h"
|
||||
#include "sys_tim.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
idata uint16_t Vbat_Adc = 0;
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vref_AdcValue(void)
|
||||
*
|
||||
* Description : Vref Value.获取基准参考电压ADC值。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Iref Value (mA)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
static uint16_t Vref_AdcValue(void)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t n_Vref_Data = 0;
|
||||
uint16_t n_ADC_Plus = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B -- ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for( index=0; index<8; index++ )
|
||||
{
|
||||
ADC_CTL1 = 0x61; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vref_Data = ADC_DATL;
|
||||
|
||||
n_Vref_Data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
n_ADC_Plus += n_Vref_Data;
|
||||
|
||||
n_Vref_Data = 0;
|
||||
}
|
||||
|
||||
n_Vref_Data = (n_ADC_Plus / 8);
|
||||
|
||||
return n_Vref_Data;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vbat_Value(void)
|
||||
*
|
||||
* Description : Vbat Value.获取电池电压。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Vbat Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint16_t Vbat_Value(void)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t n_Vbat_Data = 0;
|
||||
uint16_t n_ADC_Plus = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for( index=0; index<8; index++ )
|
||||
{
|
||||
ADC_CTL1 = 0x51; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vbat_Data = ADC_DATL;
|
||||
|
||||
n_Vbat_Data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
n_ADC_Plus += n_Vbat_Data;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Vbat:%d,plus:%d.\r\n",(uint16_t)n_Vbat_Data,(uint16_t)n_ADC_Plus);
|
||||
#endif
|
||||
n_Vbat_Data = 0;
|
||||
}
|
||||
|
||||
n_Vbat_Data = ( n_ADC_Plus / 4 ); //Vbat采样值为二分压值。
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data);
|
||||
#endif
|
||||
|
||||
n_ADC_Plus = Vref_AdcValue(); //获取VREF
|
||||
|
||||
n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF / n_ADC_Plus; //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat,Vbat:%d,vref:%d.\r\n",(uint16_t)n_Vbat_Data, n_ADC_Plus);
|
||||
#endif
|
||||
|
||||
return n_Vbat_Data;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
*
|
||||
* Description : ADC_Chn_Value. ADC0 ~ ADC4。
|
||||
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : ADC Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t adc_data = 0;
|
||||
uint16_t adc_plus_data = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(index=0; index<8; index++)
|
||||
{
|
||||
ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
adc_data = ADC_DATL; //Read low byte first! Lock ADC Value.
|
||||
|
||||
adc_data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
adc_plus_data += adc_data;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data);
|
||||
#endif
|
||||
adc_data = 0;
|
||||
}
|
||||
|
||||
adc_data = adc_plus_data / 8;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
|
||||
#endif
|
||||
adc_plus_data = Vref_AdcValue(); //获取VREF
|
||||
|
||||
adc_data = (uint32_t)(adc_data) * VREF / adc_plus_data; //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data);
|
||||
#endif
|
||||
|
||||
return adc_data;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
51
TP3310_Demo.si4project/Backup/adc(4158).h
Normal file
51
TP3310_Demo.si4project/Backup/adc(4158).h
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.h
|
||||
* @brief adc module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __ADC_H__
|
||||
#define __ADC_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
#define VREF 1000
|
||||
|
||||
extern idata uint16_t Vbat_Adc;
|
||||
|
||||
extern uint16_t Vbat_Value(void);
|
||||
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
typedef enum {
|
||||
ADC_CH0 = 0x00,
|
||||
ADC_CH1,
|
||||
ADC_CH2,
|
||||
ADC_CH3,
|
||||
ADC_CH4,
|
||||
}ADC_CHANNELS_E;
|
||||
|
||||
extern uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
55
TP3310_Demo.si4project/Backup/adc(4706).h
Normal file
55
TP3310_Demo.si4project/Backup/adc(4706).h
Normal file
@ -0,0 +1,55 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.h
|
||||
* @brief adc module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __ADC_H__
|
||||
#define __ADC_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
#define VREF 1000
|
||||
|
||||
//extern idata uint16_t g_VREF_Value; //IREF ϵͳÉϵçʱ²É¼¯Ò»´Î¡£
|
||||
|
||||
extern uint16_t Vbat_Value(void);
|
||||
|
||||
extern void Adc_Init(void);
|
||||
|
||||
extern uint16_t Vref_AdcValue(void);
|
||||
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
typedef enum {
|
||||
ADC_CH0 = 0x00,
|
||||
ADC_CH1,
|
||||
ADC_CH2,
|
||||
ADC_CH3,
|
||||
ADC_CH4,
|
||||
}ADC_CHANNELS_E;
|
||||
|
||||
extern uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
203
TP3310_Demo.si4project/Backup/adc(5034).c
Normal file
203
TP3310_Demo.si4project/Backup/adc(5034).c
Normal file
@ -0,0 +1,203 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.c
|
||||
* @brief adc module
|
||||
* @ic TP3102
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/03/26 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/08/04 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "adc.h"
|
||||
#include "system.h"
|
||||
#include "sys_tim.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
idata uint16_t Vbat_Adc = 0;
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vref_AdcValue(void)
|
||||
*
|
||||
* Description : Vref Value.获取基准参考电压ADC值。系统上电采集一次。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Iref Value (mA)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
static uint16_t Vref_AdcValue(void)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t n_Vref_Data = 0;
|
||||
uint16_t n_ADC_Plus = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B -- ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for( index=0; index<8; index++ )
|
||||
{
|
||||
ADC_CTL1 = 0x61; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vref_Data = ADC_DATL;
|
||||
|
||||
n_Vref_Data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
n_ADC_Plus += n_Vref_Data;
|
||||
|
||||
n_Vref_Data = 0;
|
||||
}
|
||||
|
||||
n_Vref_Data = (n_ADC_Plus / 8);
|
||||
|
||||
return n_Vref_Data;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vbat_Value(void)
|
||||
*
|
||||
* Description : Vbat Value.获取电池电压。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Vbat Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint16_t Vbat_Value(void)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t n_Vbat_Data = 0;
|
||||
uint16_t n_ADC_Plus = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for( index=0; index<8; index++ )
|
||||
{
|
||||
ADC_CTL1 = 0x51; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vbat_Data = ADC_DATL;
|
||||
|
||||
n_Vbat_Data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
n_ADC_Plus += n_Vbat_Data;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Vbat:%d,plus:%d.\r\n",(uint16_t)n_Vbat_Data,(uint16_t)n_ADC_Plus);
|
||||
#endif
|
||||
n_Vbat_Data = 0;
|
||||
}
|
||||
|
||||
n_Vbat_Data = ( n_ADC_Plus / 4 ); //Vbat采样值为二分压值。
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data);
|
||||
#endif
|
||||
|
||||
n_ADC_Plus = Vref_AdcValue(); //获取VREF
|
||||
|
||||
n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF / n_ADC_Plus; //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("bat,Vbat:%d,vref:%d.\r\n",(uint16_t)n_Vbat_Data, n_ADC_Plus);
|
||||
#endif
|
||||
|
||||
return n_Vbat_Data;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
*
|
||||
* Description : ADC_Chn_Value. ADC0 ~ ADC4。
|
||||
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : ADC Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t adc_data = 0;
|
||||
uint16_t adc_plus_data = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(index=0; index<8; index++)
|
||||
{
|
||||
ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
adc_data = ADC_DATL; //Read low byte first! Lock ADC Value.
|
||||
|
||||
adc_data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
adc_plus_data += adc_data;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data);
|
||||
#endif
|
||||
adc_data = 0;
|
||||
}
|
||||
|
||||
adc_data = adc_plus_data / 8;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
|
||||
#endif
|
||||
adc_plus_data = Vref_AdcValue(); //获取VREF
|
||||
|
||||
adc_data = (uint32_t)(adc_data) * VREF / adc_plus_data; //Vadx = VREF*DATAadx/DATAvref
|
||||
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data);
|
||||
#endif
|
||||
|
||||
return adc_data;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
214
TP3310_Demo.si4project/Backup/adc(5134).c
Normal file
214
TP3310_Demo.si4project/Backup/adc(5134).c
Normal file
@ -0,0 +1,214 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.c
|
||||
* @brief adc module
|
||||
* @ic TP3102
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/03/26 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/08/04 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "adc.h"
|
||||
#include "system.h"
|
||||
#include "sys_tim.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
idata uint16_t g_VREF_Value = 0; //IREF 系统上电时采集一次。
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vref_AdcValue(void)
|
||||
*
|
||||
* Description : Vref Value.获取基准参考电压ADC值。系统上电采集一次。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Iref Value (mA)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint16_t Vref_AdcValue(void)
|
||||
{
|
||||
uint16_t n_Vref_Data = 0;
|
||||
uint32_t n_ADC_Plus = 0;
|
||||
uint8_t index = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for( index=0; index<8; index++ )
|
||||
{
|
||||
ADC_CTL1 = (0x06 << 4) | 0x01; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vref_Data = ADC_DATL;
|
||||
|
||||
n_Vref_Data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
n_ADC_Plus += n_Vref_Data;
|
||||
|
||||
n_Vref_Data = 0;
|
||||
}
|
||||
|
||||
n_Vref_Data = (uint16_t)(n_ADC_Plus / 8);
|
||||
|
||||
return n_Vref_Data;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Adc_Init(void)
|
||||
*
|
||||
* Description : ADC Initialization. --- 系统初始化调用。
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Adc_Init(void)
|
||||
{
|
||||
#if 0
|
||||
SFRADDR = MFP_CTL0; //Set P01 Pinmux As AD1 Function
|
||||
SFRDATA &= 0xCF;
|
||||
SFRDATA |= 0x20;
|
||||
#endif
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
SFRADDR = MFP_CTL1; //Set P04 Pinmux As AD3 Function
|
||||
SFRDATA = 0x02;
|
||||
|
||||
SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable.
|
||||
SFRDATA = 0x08;
|
||||
#endif
|
||||
g_VREF_Value = Vref_AdcValue();
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vbat_Value(void)
|
||||
*
|
||||
* Description : Vbat Value.获取电池电压。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Vbat Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint16_t Vbat_Value(void)
|
||||
{
|
||||
uint16_t n_Vbat_Data = 0;
|
||||
uint32_t n_ADC_Plus = 0;
|
||||
uint8_t index = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for( index=0; index<8; index++ )
|
||||
{
|
||||
ADC_CTL1 = (0x05 << 4) | 0x01; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vbat_Data = ADC_DATL;
|
||||
|
||||
n_Vbat_Data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
n_ADC_Plus += n_Vbat_Data;
|
||||
|
||||
n_Vbat_Data = 0;
|
||||
}
|
||||
|
||||
n_Vbat_Data = (uint16_t)(n_ADC_Plus / 4); //Vbat采样值为二分压值。
|
||||
|
||||
n_Vbat_Data = (uint32_t)( (VREF * n_Vbat_Data) / g_VREF_Value ); //Vadx = VREF*DATAadx/DATAvref
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Get Adc Value,Vbat:%d,Vref:%d.\r\n",(uint16_t)n_Vbat_Data, (uint16_t)g_VREF_Value);
|
||||
#endif
|
||||
return n_Vbat_Data;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
*
|
||||
* Description : ADC_Chn_Value. ADC0 ~ ADC4。
|
||||
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : ADC Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if ADC_CHN_ENABLE
|
||||
uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
uint16_t adc_data = 0;
|
||||
uint16_t Vadx_data = 0;
|
||||
uint32_t adc_plus_data = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(index=0; index<8; index++)
|
||||
{
|
||||
ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
adc_data = ADC_DATL; //Read low byte first!
|
||||
|
||||
adc_data |= (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
adc_plus_data += adc_data;
|
||||
|
||||
adc_data = 0;
|
||||
}
|
||||
|
||||
adc_data = adc_plus_data / 8;
|
||||
|
||||
Vadx_data = (uint32_t)( (VREF * adc_data) / g_VREF_Value ); //Vadx = VREF*DATAadx/DATAvref
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Get Adc Value,Adc_Chn:%d,Vadc:%d,Vref:%d.\r\n", (uint16_t)(ADC_CTL1>>4), (uint16_t)Vadx_data, (uint16_t)g_VREF_Value);
|
||||
#endif
|
||||
return (uint16_t)Vadx_data;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
221
TP3310_Demo.si4project/Backup/adc(6650).c
Normal file
221
TP3310_Demo.si4project/Backup/adc(6650).c
Normal file
@ -0,0 +1,221 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.c
|
||||
* @brief adc module
|
||||
* @ic TP3102
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/03/26 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/08/04 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "adc.h"
|
||||
#include "system.h"
|
||||
#include "sys_tim.h"
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
idata uint16_t g_VREF_Value = 0; //IREF 系统上电时采集一次。
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vref_AdcValue(void)
|
||||
*
|
||||
* Description : Vref Value.获取基准参考电压ADC值。系统上电采集一次。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Iref Value (mA)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if ADC_ENABLE
|
||||
uint16_t Vref_AdcValue(void)
|
||||
{
|
||||
uint16_t n_Vref_Data = 0;
|
||||
uint32_t n_ADC_Plus = 0;
|
||||
uint8_t index = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(index=0;index<8;index++)
|
||||
{
|
||||
ADC_CTL1 = (0x06 << 4); //Channel set
|
||||
ADC_CTL1 |= 1; //Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vref_Data = ADC_DATL;
|
||||
|
||||
n_Vref_Data += (uint16_t)(ADC_DATH<< 8);
|
||||
|
||||
n_ADC_Plus += n_Vref_Data;
|
||||
|
||||
n_Vref_Data = 0;
|
||||
}
|
||||
|
||||
n_Vref_Data = n_ADC_Plus / 8;
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Get Adc Value,Vref:%d \r\n",(uint16_t)n_Vref_Data);
|
||||
#endif
|
||||
return n_Vref_Data;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Adc_Init(void)
|
||||
*
|
||||
* Description : ADC Initialization. --- 系统初始化调用。
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if ADC_ENABLE
|
||||
void Adc_Init(void)
|
||||
{
|
||||
#if 0
|
||||
SFRADDR = MFP_CTL0; //Set P01 Pinmux As AD1 Function
|
||||
SFRDATA &= 0xCF;
|
||||
SFRDATA |= 0x20;
|
||||
|
||||
SFRADDR = MFP_CTL1; //Set P04 Pinmux As AD3 Function
|
||||
SFRDATA |= 0x02;
|
||||
|
||||
SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable.
|
||||
SFRDATA = 0x0A;
|
||||
#endif
|
||||
g_VREF_Value = Vref_AdcValue();
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t Vbat_Value(void)
|
||||
*
|
||||
* Description : Vbat Value.获取电池电压。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Vbat Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if ADC_ENABLE
|
||||
uint16_t Vbat_Value(void)
|
||||
{
|
||||
uint16_t n_Vbat_Data = 0;
|
||||
uint32_t n_ADC_Plus = 0;
|
||||
uint8_t index = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(index=0;index<8;index++)
|
||||
{
|
||||
ADC_CTL1 = (0x05 << 4); //Channel set
|
||||
ADC_CTL1 |= 1; //Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
n_Vbat_Data = ADC_DATL;
|
||||
|
||||
n_Vbat_Data += (uint16_t)(ADC_DATH << 8);
|
||||
|
||||
n_ADC_Plus += n_Vbat_Data;
|
||||
|
||||
n_Vbat_Data = 0;
|
||||
}
|
||||
|
||||
n_Vbat_Data = n_ADC_Plus / 4; //Vbat采样值为二分压值。
|
||||
|
||||
n_Vbat_Data = (uint32_t)(VREF * n_Vbat_Data / g_VREF_Value); //Vadx = VREF*DATAadx/DATAvref
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Get Adc Value,Vbat:%d \r\n",(uint16_t)n_Vbat_Data);
|
||||
#endif
|
||||
return n_Vbat_Data;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
*
|
||||
* Description : ADC_Chn_Value. ADC0 ~ ADC4。
|
||||
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : ADC Value (mV)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if ADC_ENABLE
|
||||
uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn)
|
||||
{
|
||||
|
||||
uint8_t index = 0;
|
||||
uint16_t adc_data = 0;
|
||||
uint16_t Vadx_data = 0;
|
||||
uint32_t adc_plus_data = 0;
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
for(index=0; index<8; index++)
|
||||
{
|
||||
ADC_CTL1 = (adc_chn << 4); //Channel set
|
||||
ADC_CTL1 |= 1; //Start conversion
|
||||
|
||||
while(ADC_CTL1 & 0x01); //Wait for conversion complete
|
||||
|
||||
adc_data = ADC_DATL; //Read low byte first!
|
||||
|
||||
adc_data += (u16)(ADC_DATH << 8);
|
||||
|
||||
adc_plus_data += adc_data;
|
||||
|
||||
adc_data = 0;
|
||||
}
|
||||
|
||||
adc_data = adc_plus_data / 8;
|
||||
|
||||
Vadx_data = (uint32_t)(VREF * adc_data / g_VREF_Value); //Vadx = VREF*DATAadx/DATAvref
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("Get Adc Value,Adc_Chn:%d,Adc:%d \r\n",ADC_CTL1>>4,Vadx_data);
|
||||
#endif
|
||||
return (uint16_t)Vadx_data;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
53
TP3310_Demo.si4project/Backup/adc(6747).h
Normal file
53
TP3310_Demo.si4project/Backup/adc(6747).h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.h
|
||||
* @brief adc module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __ADC_H__
|
||||
#define __ADC_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
#define VREF 1000
|
||||
|
||||
extern idata uint16_t Vbat_Adc;
|
||||
|
||||
extern uint16_t Vbat_Value(void);
|
||||
|
||||
typedef enum {
|
||||
ADC_CH0 = 0x00,
|
||||
ADC_CH1,
|
||||
ADC_CH2,
|
||||
ADC_CH3,
|
||||
ADC_CH4,
|
||||
ADC_BAT,
|
||||
ADC_VREF,
|
||||
}ADC_CHANNELS_E;
|
||||
|
||||
#ifdef ADC_NTC_ENABLE
|
||||
|
||||
extern uint16_t ADC_NTC_Value(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
127
TP3310_Demo.si4project/Backup/bat(1019).c
Normal file
127
TP3310_Demo.si4project/Backup/bat(1019).c
Normal file
@ -0,0 +1,127 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.c
|
||||
* @brief Voltage-based RC model gauge algorithm
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/02/20 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/02/20 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "bat.h"
|
||||
#include "adc.h"
|
||||
|
||||
idata uint8_t bat_level = 0;
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
#define C_offset_bat_level_MAX 50
|
||||
#define C_offset_bat_level_MIN 10
|
||||
|
||||
#define C_bat_level_protect 0
|
||||
#define C_bat_level_lowpower 1
|
||||
|
||||
bit F_batlevel_low ; //电池低压
|
||||
bit F_batlevel_protect ;
|
||||
idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
|
||||
|
||||
#define C_batLevel_SetMax 10
|
||||
|
||||
/*充电电池电压会浮高,具体电压需要测试。*/
|
||||
const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] =
|
||||
{
|
||||
3000, //1
|
||||
3100, //2
|
||||
3300, //3
|
||||
3400, //4
|
||||
3500, //5
|
||||
3650, //6
|
||||
3800, //7
|
||||
3900, //8
|
||||
4050, //9
|
||||
4200 //10
|
||||
};
|
||||
|
||||
const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] =
|
||||
{
|
||||
3050, //1
|
||||
3150, //2
|
||||
3350, //3
|
||||
3450, //4
|
||||
3550, //5
|
||||
3700, //6
|
||||
3850, //7
|
||||
3950, //8
|
||||
4100, //9
|
||||
4200 //10
|
||||
};
|
||||
|
||||
void check_bat_level(void)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
//get bat level
|
||||
#if ADC_ENABLE
|
||||
for(i=0; i < C_batLevel_SetMax; i++)
|
||||
{
|
||||
if(CHIP_STA4 & 0x80) //充电
|
||||
{
|
||||
if( Vbat_Adc < Charging_batlevel_Threshold1[i] )
|
||||
break;
|
||||
}
|
||||
else //放电
|
||||
{
|
||||
if( Vbat_Adc < Boost_batlevel_Threshold[i] )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if( i > bat_level )
|
||||
{
|
||||
offset_bat_level++;
|
||||
}
|
||||
else
|
||||
{
|
||||
offset_bat_level--;
|
||||
}
|
||||
|
||||
//debounce
|
||||
if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) )
|
||||
{
|
||||
//update
|
||||
bat_level = i;
|
||||
offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_protect )
|
||||
{
|
||||
F_batlevel_protect = 1;
|
||||
}
|
||||
else if( bat_level > ( C_bat_level_protect + 1 ) )
|
||||
{
|
||||
F_batlevel_protect = 0;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_lowpower )
|
||||
{
|
||||
F_batlevel_low = 1;
|
||||
}
|
||||
else if( bat_level > (C_bat_level_lowpower + 1) )
|
||||
{
|
||||
F_batlevel_low = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
38
TP3310_Demo.si4project/Backup/bat(261).h
Normal file
38
TP3310_Demo.si4project/Backup/bat(261).h
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.h
|
||||
* @brief bat module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __BAT_H__
|
||||
#define __BAT_H__
|
||||
|
||||
#include "define.h"
|
||||
extern idata uint8_t bat_level;
|
||||
extern bit F_batlevel_low; //µç³ØµÍѹ
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
|
||||
extern bit F_batlevel_protect; //µÍµç±£»¤
|
||||
|
||||
extern void check_bat_level(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
128
TP3310_Demo.si4project/Backup/bat(4532).c
Normal file
128
TP3310_Demo.si4project/Backup/bat(4532).c
Normal file
@ -0,0 +1,128 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.c
|
||||
* @brief Voltage-based RC model gauge algorithm
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/02/20 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/02/20 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "bat.h"
|
||||
#include "adc.h"
|
||||
|
||||
idata uint8_t bat_level = 0;
|
||||
bit F_batlevel_low = 0; //电池低压
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
#define C_offset_bat_level_MAX 50
|
||||
#define C_offset_bat_level_MIN 10
|
||||
|
||||
#define C_bat_level_protect 0
|
||||
#define C_bat_level_lowpower 1
|
||||
|
||||
|
||||
bit F_batlevel_protect = 0; //低电保护
|
||||
idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
|
||||
|
||||
#define C_batLevel_SetMax 10
|
||||
|
||||
/*充电电池电压会浮高,具体电压需要测试。*/
|
||||
const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] =
|
||||
{
|
||||
3000, //1
|
||||
3100, //2
|
||||
3300, //3
|
||||
3400, //4
|
||||
3500, //5
|
||||
3650, //6
|
||||
3800, //7
|
||||
3900, //8
|
||||
4050, //9
|
||||
4200 //10
|
||||
};
|
||||
|
||||
const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] =
|
||||
{
|
||||
3050, //1
|
||||
3150, //2
|
||||
3350, //3
|
||||
3450, //4
|
||||
3550, //5
|
||||
3700, //6
|
||||
3850, //7
|
||||
3950, //8
|
||||
4100, //9
|
||||
4200 //10
|
||||
};
|
||||
|
||||
void check_bat_level(void)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
//get bat level
|
||||
#if ADC_ENABLE
|
||||
for(i=0; i < C_batLevel_SetMax; i++)
|
||||
{
|
||||
if(CHIP_STA4 & 0x80) //充电
|
||||
{
|
||||
if( Vbat_Adc < Charging_batlevel_Threshold1[i] )
|
||||
break;
|
||||
}
|
||||
else //放电
|
||||
{
|
||||
if( Vbat_Adc < Boost_batlevel_Threshold[i] )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if( i > bat_level )
|
||||
{
|
||||
offset_bat_level++;
|
||||
}
|
||||
else
|
||||
{
|
||||
offset_bat_level--;
|
||||
}
|
||||
|
||||
//debounce
|
||||
if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) )
|
||||
{
|
||||
//update
|
||||
bat_level = i;
|
||||
offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_protect )
|
||||
{
|
||||
F_batlevel_protect = 1;
|
||||
}
|
||||
else if( bat_level > ( C_bat_level_protect + 1 ) )
|
||||
{
|
||||
F_batlevel_protect = 0;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_lowpower )
|
||||
{
|
||||
F_batlevel_low = 1;
|
||||
}
|
||||
else if( bat_level > (C_bat_level_lowpower + 1) )
|
||||
{
|
||||
F_batlevel_low = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
95
TP3310_Demo.si4project/Backup/bat(5818).c
Normal file
95
TP3310_Demo.si4project/Backup/bat(5818).c
Normal file
@ -0,0 +1,95 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.c
|
||||
* @brief Voltage-based RC model gauge algorithm
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/02/20 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/02/20 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "bat.h"
|
||||
#include "adc.h"
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
#define C_offset_bat_level_MAX 50
|
||||
#define C_offset_bat_level_MIN 10
|
||||
|
||||
#define C_bat_level_protect 0
|
||||
#define C_bat_level_lowpower 1
|
||||
|
||||
bit F_batlevel_low ;
|
||||
bit F_batlevel_protect ;
|
||||
idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
|
||||
idata uint8_t bat_level = 0;
|
||||
#define C_batLevel_SetMax 5
|
||||
|
||||
|
||||
const uint16_t C_batlevel_Threshold[C_batLevel_SetMax] =
|
||||
{
|
||||
3000, //1
|
||||
3300, //2
|
||||
3650, //3
|
||||
4000, //4
|
||||
4200 //5
|
||||
};
|
||||
|
||||
void check_bat_level(void)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
//get bat level
|
||||
#if ADC_ENABLE
|
||||
for(i=0; i < C_batLevel_SetMax; i++)
|
||||
{
|
||||
if( Vbat_Adc < C_batlevel_Threshold[i] )
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if( i > bat_level )
|
||||
{
|
||||
offset_bat_level ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
offset_bat_level --;
|
||||
}
|
||||
|
||||
//debounce
|
||||
if( (offset_bat_level >C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) )
|
||||
{
|
||||
//update
|
||||
bat_level = i;
|
||||
offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_protect )
|
||||
{
|
||||
F_batlevel_protect = 1;
|
||||
}
|
||||
else if( bat_level > ( C_bat_level_protect+1 ) )
|
||||
{
|
||||
F_batlevel_protect = 0;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_lowpower )
|
||||
{
|
||||
F_batlevel_low = 1;
|
||||
}
|
||||
else if( bat_level > (C_bat_level_lowpower+1) )
|
||||
{
|
||||
F_batlevel_low = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
35
TP3310_Demo.si4project/Backup/bat(5988).h
Normal file
35
TP3310_Demo.si4project/Backup/bat(5988).h
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.h
|
||||
* @brief bat module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __BAT_H__
|
||||
#define __BAT_H__
|
||||
|
||||
#include "define.h"
|
||||
extern idata uint8_t bat_level;
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
|
||||
extern void check_bat_level(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
28
TP3310_Demo.si4project/Backup/bat(6162).h
Normal file
28
TP3310_Demo.si4project/Backup/bat(6162).h
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.h
|
||||
* @brief bat module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __BAT_H__
|
||||
#define __BAT_H__
|
||||
|
||||
#include "define.h"
|
||||
//extern idata uint8_t bat_level;
|
||||
|
||||
#endif
|
||||
|
24
TP3310_Demo.si4project/Backup/bat(6540).c
Normal file
24
TP3310_Demo.si4project/Backup/bat(6540).c
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.c
|
||||
* @brief Voltage-based RC model gauge algorithm
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/02/20 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/02/20 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "bat.h"
|
||||
#include "adc.h"
|
||||
|
||||
//idata uint8_t bat_level = 0;
|
||||
|
30
TP3310_Demo.si4project/Backup/bat(6790).h
Normal file
30
TP3310_Demo.si4project/Backup/bat(6790).h
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.h
|
||||
* @brief bat module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __BAT_H__
|
||||
#define __BAT_H__
|
||||
|
||||
#include "define.h"
|
||||
extern idata uint8_t bat_level;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
34
TP3310_Demo.si4project/Backup/bat(6814).h
Normal file
34
TP3310_Demo.si4project/Backup/bat(6814).h
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.h
|
||||
* @brief bat module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __BAT_H__
|
||||
#define __BAT_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
extern idata uint8_t bat_level;
|
||||
extern void check_bat_level(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
93
TP3310_Demo.si4project/Backup/bat(7674).c
Normal file
93
TP3310_Demo.si4project/Backup/bat(7674).c
Normal file
@ -0,0 +1,93 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.c
|
||||
* @brief Voltage-based RC model gauge algorithm
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/02/20 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/02/20 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "bat.h"
|
||||
#include "adc.h"
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
#define C_offset_bat_level_MAX 50
|
||||
#define C_offset_bat_level_MIN 10
|
||||
|
||||
#define C_bat_level_protect 0
|
||||
#define C_bat_level_lowpower 1
|
||||
|
||||
bit F_batlevel_low ;
|
||||
bit F_batlevel_protect ;
|
||||
idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
|
||||
idata uint8_t bat_level = 0;
|
||||
#define C_batLevel_SetMax 5
|
||||
|
||||
|
||||
const uint16_t C_batlevel_Threshold[C_batLevel_SetMax] =
|
||||
{
|
||||
2900, //1
|
||||
3300, //2
|
||||
3450, //3
|
||||
4200, //4
|
||||
4500 //5
|
||||
};
|
||||
|
||||
void check_bat_level(void)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
//get bat level
|
||||
for(i=0; i < C_batLevel_SetMax; i++)
|
||||
{
|
||||
if(Vbat_Adc < C_batlevel_Threshold[i])
|
||||
break;
|
||||
}
|
||||
if(i > bat_level)
|
||||
{
|
||||
offset_bat_level ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
offset_bat_level --;
|
||||
}
|
||||
|
||||
//debounce
|
||||
if((offset_bat_level >C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN))
|
||||
{
|
||||
//update
|
||||
bat_level = i;
|
||||
offset_bat_level = (C_offset_bat_level_MAX+C_offset_bat_level_MIN)/2;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_protect )
|
||||
{
|
||||
F_batlevel_protect = 1;
|
||||
}
|
||||
else if( bat_level > ( C_bat_level_protect+1 ) )
|
||||
{
|
||||
F_batlevel_protect = 0;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_lowpower )
|
||||
{
|
||||
F_batlevel_low = 1;
|
||||
}
|
||||
else if( bat_level > (C_bat_level_lowpower+1) )
|
||||
{
|
||||
F_batlevel_low = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
24
TP3310_Demo.si4project/Backup/bat(770).c
Normal file
24
TP3310_Demo.si4project/Backup/bat(770).c
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.c
|
||||
* @brief Voltage-based RC model gauge algorithm
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/02/20 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/02/20 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "bat.h"
|
||||
#include "adc.h"
|
||||
|
||||
idata uint8_t bat_level = 0;
|
||||
|
37
TP3310_Demo.si4project/Backup/bat(7882).h
Normal file
37
TP3310_Demo.si4project/Backup/bat(7882).h
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.h
|
||||
* @brief bat module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __BAT_H__
|
||||
#define __BAT_H__
|
||||
|
||||
#include "define.h"
|
||||
extern idata uint8_t bat_level;
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
extern bit F_batlevel_low; //µç³ØµÍѹ
|
||||
extern bit F_batlevel_protect; //µÍµç±£»¤
|
||||
|
||||
extern void check_bat_level(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
127
TP3310_Demo.si4project/Backup/bat(8043).c
Normal file
127
TP3310_Demo.si4project/Backup/bat(8043).c
Normal file
@ -0,0 +1,127 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.c
|
||||
* @brief Voltage-based RC model gauge algorithm
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/02/20 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/02/20 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "bat.h"
|
||||
#include "adc.h"
|
||||
|
||||
idata uint8_t bat_level = 0;
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
#define C_offset_bat_level_MAX 50
|
||||
#define C_offset_bat_level_MIN 10
|
||||
|
||||
#define C_bat_level_protect 0
|
||||
#define C_bat_level_lowpower 1
|
||||
|
||||
bit F_batlevel_low = 0; //电池低压
|
||||
bit F_batlevel_protect = 0; //低电保护
|
||||
idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
|
||||
|
||||
#define C_batLevel_SetMax 10
|
||||
|
||||
/*充电电池电压会浮高,具体电压需要测试。*/
|
||||
const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] =
|
||||
{
|
||||
3000, //1
|
||||
3100, //2
|
||||
3300, //3
|
||||
3400, //4
|
||||
3500, //5
|
||||
3650, //6
|
||||
3800, //7
|
||||
3900, //8
|
||||
4050, //9
|
||||
4200 //10
|
||||
};
|
||||
|
||||
const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] =
|
||||
{
|
||||
3050, //1
|
||||
3150, //2
|
||||
3350, //3
|
||||
3450, //4
|
||||
3550, //5
|
||||
3700, //6
|
||||
3850, //7
|
||||
3950, //8
|
||||
4100, //9
|
||||
4200 //10
|
||||
};
|
||||
|
||||
void check_bat_level(void)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
//get bat level
|
||||
#if ADC_ENABLE
|
||||
for(i=0; i < C_batLevel_SetMax; i++)
|
||||
{
|
||||
if(CHIP_STA4 & 0x80) //充电
|
||||
{
|
||||
if( Vbat_Adc < Charging_batlevel_Threshold1[i] )
|
||||
break;
|
||||
}
|
||||
else //放电
|
||||
{
|
||||
if( Vbat_Adc < Boost_batlevel_Threshold[i] )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if( i > bat_level )
|
||||
{
|
||||
offset_bat_level++;
|
||||
}
|
||||
else
|
||||
{
|
||||
offset_bat_level--;
|
||||
}
|
||||
|
||||
//debounce
|
||||
if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) )
|
||||
{
|
||||
//update
|
||||
bat_level = i;
|
||||
offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_protect )
|
||||
{
|
||||
F_batlevel_protect = 1;
|
||||
}
|
||||
else if( bat_level > ( C_bat_level_protect + 1 ) )
|
||||
{
|
||||
F_batlevel_protect = 0;
|
||||
}
|
||||
|
||||
if( bat_level <= C_bat_level_lowpower )
|
||||
{
|
||||
F_batlevel_low = 1;
|
||||
}
|
||||
else if( bat_level > (C_bat_level_lowpower + 1) )
|
||||
{
|
||||
F_batlevel_low = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
294
TP3310_Demo.si4project/Backup/charger_module(151).c
Normal file
294
TP3310_Demo.si4project/Backup/charger_module(151).c
Normal file
@ -0,0 +1,294 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file charger_module.c
|
||||
* @brief charger module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2022/07/12 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "charger_module.h"
|
||||
#include "adc.h"
|
||||
#include "sys_tim.h"
|
||||
#include "discharge_module.h"
|
||||
#include "system.h"
|
||||
#include "vox_module.h"
|
||||
#include "led.h"
|
||||
|
||||
|
||||
#if CHARGER_ENABLE
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define NTC_PRO_DEBOUNCE_TIM 10
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
idata TE_CHG_STA ChgStatus; // 系统状态定义
|
||||
|
||||
#ifdef ADC_NTC_ENABLE
|
||||
|
||||
bit NTC_Low_Pro_Flag = 0;
|
||||
bit NTC_High_Pro_Flag = 0;
|
||||
|
||||
uint8_t NTC_Pro_Debounce_Cnt = 0;
|
||||
|
||||
#endif
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_init(void)
|
||||
*
|
||||
* Description : Charger Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void Charger_Init(void)
|
||||
{
|
||||
SFRADDR = PMU_CTL1;
|
||||
SFRDATA |= 0x07; //电池低压检测 enable 信号;电池低压检测档位选择:3.3V
|
||||
/* Setting CV */
|
||||
REG_CHG2 = 0x00; //0:4.20V;1:4.35V
|
||||
/* Setting CHG Current */
|
||||
REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_Current_Set(void)
|
||||
*
|
||||
* Description : Charger Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void Charger_Current_Set(void)
|
||||
{
|
||||
uint16_t Charger_CurADC_Value = 0;
|
||||
/* 通过外部电阻ADC1值设置充电电流值 */
|
||||
Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1);
|
||||
|
||||
|
||||
/* Setting CV */
|
||||
REG_CHG2 = 0x00; //0:4.20V;1:4.35V
|
||||
/* Setting CHG Current */
|
||||
REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint8_t Charger_NTC_Control(uint8_t Charge_sta)
|
||||
*
|
||||
* Description : Charger NTC Control
|
||||
* NTC 支持 103 和 104 电阻,NTC 温度检测由软件通过 ADC 采集 NTC 引脚电压。
|
||||
* 如果支持电量计温度检测线性化,支持电量计方案 103 的 NTC 需要并一个 8.2k
|
||||
|
||||
* 电阻(20uA 电流,103 NTC 需要串联 10k 电阻),104 的 NTC 并联 82k 电阻。
|
||||
* 在使能充电前,软件先检测NTC 温度,如果 NTC 浮空,屏蔽 NTC 功能,
|
||||
* 并锁定;如果 NTC 下拉到 0V,关闭充电和放电。NTC 保护后,软件关闭充电,
|
||||
* 温度恢复正常并持续 250ms,再继续充电。
|
||||
*
|
||||
* Arguments : NTC_Protect_Type_e NTC_Type:Shield 、JEITA or IEC;Charge_sta:Charge or not
|
||||
|
||||
* Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint8_t PMU_NTC_Control(void)
|
||||
{
|
||||
uint16_t NTC_Adc = 0;
|
||||
uint8_t NTC_Flag = TRUE;
|
||||
|
||||
#ifdef ADC_NTC_ENABLE
|
||||
|
||||
NTC_Adc = ADC_NTC_Value();
|
||||
|
||||
if(NTC_Adc >= 0x2FF) ////屏蔽NTC功能,NTC浮空,屏蔽 NTC 功能,并锁定。
|
||||
{
|
||||
return NTC_Flag;
|
||||
}
|
||||
|
||||
if(CHIP_STA4 & 0x80)
|
||||
{
|
||||
if(NTC_Adc <= T_0C && NTC_Adc > T_45C) //正常充电
|
||||
{
|
||||
if(NTC_Low_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc < T_3C )
|
||||
{
|
||||
NTC_Low_Pro_Flag = 0;
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if(NTC_High_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc > T_42C )
|
||||
{
|
||||
NTC_High_Pro_Flag = 0;
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else //异常不充电
|
||||
{
|
||||
NTC_Pro_Debounce_Cnt++;
|
||||
if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms
|
||||
{
|
||||
NTC_Pro_Debounce_Cnt = 0;
|
||||
|
||||
if(NTC_Adc > T_0C)
|
||||
{
|
||||
NTC_Low_Pro_Flag = 1;
|
||||
}
|
||||
else
|
||||
if(NTC_Adc < T_45C)
|
||||
{
|
||||
NTC_High_Pro_Flag = 1;
|
||||
}
|
||||
|
||||
CHG_CTL &= ~0x01; //Disable Charger.
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return NTC_Flag;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_Handler(void)
|
||||
*
|
||||
* Description : Charger Handle. ---- 充电过程除了根据 NTC 动态调节充电电流和截止电压外,其他由硬件控制。充电过程
|
||||
发生异常,硬件进行相应处理,并发送标志位,软件可以进行相应处理。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
/*
|
||||
1、充电超时:充电超时后,软件关闭充电使能,等待VIN拔出。
|
||||
*/
|
||||
void Charger_Handler(void)
|
||||
{
|
||||
#if 1
|
||||
if( !(CHIP_STA4 & 0x80) ) //未检测到Power good,则关闭Charger使能后返回。
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
IRQ_FLAG9 = 0x10; //未充电,需清Charg complete interrupt中断
|
||||
ChgStatus = CHG_STA_PULLOUT;
|
||||
return;
|
||||
}
|
||||
|
||||
/*各项保护都无需软件处理,只处理充电超时,超时后需要等VBUS重新插拔后才重新开始Charger流程。*/
|
||||
if ( IRQ_FLAG9 & 0x0C ) //充电超时,Tricle charg and Fast charge timeout
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt
|
||||
{
|
||||
IRQ_FLAG9 = 0x0C;
|
||||
IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt
|
||||
}
|
||||
return;
|
||||
}
|
||||
else /*充电未超时,存在Plug则清Plugin\Plugout int*/
|
||||
{
|
||||
if( IRQ_FLAG10 & 0xC0 )
|
||||
{
|
||||
IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt
|
||||
}
|
||||
}
|
||||
|
||||
/*NTC Handle*/ //使能Charger前先检测NTC温度,异常就不开充电。(CHIP_STA4 & 0x80):PG
|
||||
if( PMU_NTC_Control() == FALSE ) //NTC保护,不充电。
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt
|
||||
{
|
||||
#if ADC_ENABLE
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Chg Done\r\n");
|
||||
#endif
|
||||
if( Vbat_Adc < BAT_RECHARG )
|
||||
{
|
||||
//CHG_CTL |= 0x01; //Enable Charger
|
||||
IRQ_FLAG9 = 0x10;
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("En Chg\r\n");
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Dis Chg\r\n");
|
||||
#endif
|
||||
}
|
||||
ChgStatus = CHG_STA_COMPLETED;
|
||||
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
CHG_CTL |= 0x01; //Enable Charger
|
||||
ChgStatus = CHG_STA_ING;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
288
TP3310_Demo.si4project/Backup/charger_module(1631).c
Normal file
288
TP3310_Demo.si4project/Backup/charger_module(1631).c
Normal file
@ -0,0 +1,288 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file charger_module.c
|
||||
* @brief charger module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2022/07/12 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "charger_module.h"
|
||||
#include "adc.h"
|
||||
#include "sys_tim.h"
|
||||
#include "discharge_module.h"
|
||||
#include "system.h"
|
||||
#include "vox_module.h"
|
||||
#include "led.h"
|
||||
|
||||
|
||||
#if CHARGER_ENABLE
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define NTC_PRO_DEBOUNCE_TIM 10
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
//idata TE_CHG_STA ChgStatus; // 系统状态定义
|
||||
|
||||
bit Charger_Done = 0;
|
||||
|
||||
#ifdef ADC_NTC_ENABLE
|
||||
|
||||
bit NTC_Low_Pro_Flag = 0;
|
||||
bit NTC_High_Pro_Flag = 0;
|
||||
|
||||
#endif
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_init(void)
|
||||
*
|
||||
* Description : Charger Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void Charger_Init(void)
|
||||
{
|
||||
SFRADDR = PMU_CTL1;
|
||||
SFRDATA |= 0x07; //电池低压检测 enable 信号;电池低压检测档位选择:3.3V
|
||||
/* Setting CV */
|
||||
REG_CHG2 = 0x00; //0:4.20V;1:4.35V
|
||||
/* Setting CHG Current */
|
||||
REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_Current_Set(void)
|
||||
*
|
||||
* Description : Charger Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void Charger_Current_Set(void)
|
||||
{
|
||||
uint16_t Charger_CurADC_Value = 0;
|
||||
/* 通过外部电阻ADC1值设置充电电流值 */
|
||||
Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1);
|
||||
|
||||
|
||||
/* Setting CV */
|
||||
REG_CHG2 = 0x00; //0:4.20V;1:4.35V
|
||||
/* Setting CHG Current */
|
||||
REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint8_t Charger_NTC_Control(uint8_t Charge_sta)
|
||||
*
|
||||
* Description : Charger NTC Control
|
||||
* NTC 支持 103 和 104 电阻,NTC 温度检测由软件通过 ADC 采集 NTC 引脚电压。
|
||||
* 如果支持电量计温度检测线性化,支持电量计方案 103 的 NTC 需要并一个 8.2k
|
||||
|
||||
* 电阻(20uA 电流,103 NTC 需要串联 10k 电阻),104 的 NTC 并联 82k 电阻。
|
||||
* 在使能充电前,软件先检测NTC 温度,如果 NTC 浮空,屏蔽 NTC 功能,
|
||||
* 并锁定;如果 NTC 下拉到 0V,关闭充电和放电。NTC 保护后,软件关闭充电,
|
||||
* 温度恢复正常并持续 100ms,再继续充电。
|
||||
*
|
||||
* Arguments : NTC_Protect_Type_e NTC_Type:Shield 、JEITA or IEC;Charge_sta:Charge or not
|
||||
|
||||
* Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifdef ADC_NTC_ENABLE
|
||||
uint8_t PMU_NTC_Control(void)
|
||||
{
|
||||
uint16_t NTC_Adc = 0;
|
||||
uint8_t NTC_Flag = TRUE;
|
||||
|
||||
NTC_Adc = ADC_NTC_Value();
|
||||
|
||||
if(NTC_Adc >= 0x2FF) ////屏蔽NTC功能,NTC浮空,屏蔽 NTC 功能,并锁定。
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if(CHIP_STA4 & 0x80)
|
||||
{
|
||||
if(NTC_Adc <= T_0C && NTC_Adc > T_45C) //正常充电
|
||||
{
|
||||
if(NTC_Low_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc < T_3C )
|
||||
{
|
||||
NTC_Low_Pro_Flag = 0;
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if(NTC_High_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc > T_42C )
|
||||
{
|
||||
NTC_High_Pro_Flag = 0;
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else //异常不充电
|
||||
{
|
||||
|
||||
if(NTC_Adc > T_0C)
|
||||
{
|
||||
NTC_Low_Pro_Flag = 1;
|
||||
}
|
||||
else
|
||||
if(NTC_Adc < T_45C)
|
||||
{
|
||||
NTC_High_Pro_Flag = 1;
|
||||
}
|
||||
|
||||
CHG_CTL &= ~0x01; //Disable Charger.
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return NTC_Flag;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_Handler(void)
|
||||
*
|
||||
* Description : Charger Handle. ---- 充电过程除了根据 NTC 动态调节充电电流和截止电压外,其他由硬件控制。充电过程
|
||||
发生异常,硬件进行相应处理,并发送标志位,软件可以进行相应处理。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
/*
|
||||
1、充电超时:充电超时后,软件关闭充电使能,等待VIN拔出。
|
||||
*/
|
||||
void Charger_Handler(void)
|
||||
{
|
||||
#if 1
|
||||
if( !(CHIP_STA4 & 0x80) ) //未检测到Power good,则关闭Charger使能后返回。
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
IRQ_FLAG9 = 0x10; //未充电,需清Charg complete interrupt中断
|
||||
Charger_Done = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
/*各项保护都无需软件处理,只处理充电超时,超时后需要等VBUS重新插拔后才重新开始Charger流程。*/
|
||||
if ( IRQ_FLAG9 & 0x0C ) //充电超时,Tricle charg and Fast charge timeout
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt
|
||||
{
|
||||
IRQ_FLAG9 = 0x0C;
|
||||
IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt
|
||||
}
|
||||
return;
|
||||
}
|
||||
else /*充电未超时,存在Plug则清Plugin\Plugout int*/
|
||||
{
|
||||
if( IRQ_FLAG10 & 0xC0 )
|
||||
{
|
||||
IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ADC_NTC_ENABLE
|
||||
/*NTC Handle*/ //使能Charger前先检测NTC温度,异常就不开充电。(CHIP_STA4 & 0x80):PG
|
||||
if( PMU_NTC_Control() == FALSE ) //NTC保护,不充电。
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt
|
||||
{
|
||||
#if ADC_ENABLE
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Chg Done\r\n");
|
||||
#endif
|
||||
if( Vbat_Adc < BAT_RECHARG )
|
||||
{
|
||||
//CHG_CTL |= 0x01; //Enable Charger
|
||||
IRQ_FLAG9 = 0x10;
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("En Chg\r\n");
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Dis Chg\r\n");
|
||||
#endif
|
||||
}
|
||||
Charger_Done = 1;
|
||||
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
CHG_CTL |= 0x01; //Enable Charger
|
||||
Charger_Done = 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
415
TP3310_Demo.si4project/Backup/charger_module(1740).c
Normal file
415
TP3310_Demo.si4project/Backup/charger_module(1740).c
Normal file
@ -0,0 +1,415 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file charger_module.c
|
||||
* @brief charger module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2022/07/12 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "charger_module.h"
|
||||
#include "adc.h"
|
||||
#include "sys_tim.h"
|
||||
#include "discharge_module.h"
|
||||
#include "system.h"
|
||||
#include "vox_module.h"
|
||||
|
||||
|
||||
#if CHARGER_ENABLE
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define NTC_PRO_DEBOUNCE_TIM 10
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
bit Charger_Done = 0;
|
||||
|
||||
bit NTC_Low_Pro_Flag = 0;
|
||||
bit NTC_High_Pro_Flag = 0;
|
||||
|
||||
uint8_t NTC_Pro_Debounce_Cnt = 0;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_init(void)
|
||||
*
|
||||
* Description : Charger Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void Charger_Init(void)
|
||||
{
|
||||
//SFRADDR = PMU_CTL1;
|
||||
//SFRDATA |= 0x07; //电池低压检测 enable 信号;电池低压检测档位选择:3.3V
|
||||
/* Setting CV */
|
||||
// REG_CHG2 = 0x00; //0:4.20V;1:4.35V
|
||||
/* Setting CHG Current */
|
||||
// REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA
|
||||
|
||||
#if SET_CHG_TIM
|
||||
/* Set Charge Time*/
|
||||
Set_Charger_Time();
|
||||
|
||||
#endif
|
||||
|
||||
CHG_CTL &= ~0x80;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Set_Charge_Time(void)
|
||||
*
|
||||
* Description : Set Charger Time
|
||||
*
|
||||
* Arguments : void
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#if SET_CHG_TIM
|
||||
void Set_Charger_Time(void)
|
||||
{
|
||||
CHG_CTL &= 0xF0;
|
||||
CHG_CTL |= 0x10; //Safety timer enable
|
||||
CHG_CTL |= 0x01 << 3; //设置涓流时间:0:1 hour;1:2:hours
|
||||
|
||||
CHG_CTL |= 0x03 << 2; //设置恒流恒压时间:00:3 hours;01:5 hours;10:8 hours;11:13 hours
|
||||
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint8_t Charger_NTC_Control(uint8_t Charge_sta)
|
||||
*
|
||||
* Description : Charger NTC Control
|
||||
* NTC 支持 103 和 104 电阻,NTC 温度检测由软件通过 ADC 采集 NTC 引脚电压。
|
||||
* 如果支持电量计温度检测线性化,支持电量计方案 103 的 NTC 需要并一个 8.2k
|
||||
|
||||
* 电阻(20uA 电流,103 NTC 需要串联 10k 电阻),104 的 NTC 并联 82k 电阻。
|
||||
* 在使能充电前,软件先检测NTC 温度,如果 NTC 浮空,屏蔽 NTC 功能,
|
||||
* 并锁定;如果 NTC 下拉到 0V,关闭充电和放电。NTC 保护后,软件关闭充电,
|
||||
* 温度恢复正常并持续 250ms,再继续充电。
|
||||
*
|
||||
* Arguments : NTC_Protect_Type_e NTC_Type:Shield 、JEITA or IEC;Charge_sta:Charge or not
|
||||
|
||||
* Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint8_t PMU_NTC_Control(void)
|
||||
{
|
||||
uint16_t NTC_Adc = 0;
|
||||
uint8_t NTC_Flag = TRUE;
|
||||
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
NTC_Adc = ADC_Chn_Value(ADC_CH4);
|
||||
|
||||
if(NTC_Adc >= 0x2FF) ////屏蔽NTC功能,NTC浮空,屏蔽 NTC 功能,并锁定。
|
||||
{
|
||||
return NTC_Flag;
|
||||
}
|
||||
|
||||
if(CHIP_STA4 & 0x80)
|
||||
{
|
||||
if(NTC_Adc <= T_0C && NTC_Adc > T_45C) //正常充电
|
||||
{
|
||||
NTC_Flag = TRUE;
|
||||
if(NTC_Low_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc < T_3C )
|
||||
{
|
||||
NTC_Low_Pro_Flag = 0;
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if(NTC_High_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc > T_42C )
|
||||
{
|
||||
NTC_High_Pro_Flag = 0;
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else //异常不充电
|
||||
{
|
||||
NTC_Pro_Debounce_Cnt++;
|
||||
if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms
|
||||
{
|
||||
NTC_Pro_Debounce_Cnt = 0;
|
||||
|
||||
if(NTC_Adc > T_0C)
|
||||
{
|
||||
NTC_Low_Pro_Flag = 1;
|
||||
}
|
||||
else
|
||||
if(NTC_Adc < T_45C)
|
||||
{
|
||||
NTC_High_Pro_Flag = 1;
|
||||
}
|
||||
|
||||
CHG_CTL &= ~0x01; //Disable Charger.
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("NTC Pro!NTC_Adc:%d,CHG_CTL:0x%x,(line:%d)\r\n",(uint16)NTC_Adc,(uint16)CHG_CTL,(uint16)__LINE__);
|
||||
#endif
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return NTC_Flag;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_Protect_Handle(void)
|
||||
*
|
||||
* Description : Charger Protect Handle(输入 UVLO 保护,输入过压保护,电池过压保护,电池短路保护,NTC 保护,过温保护,ICH 短路保护)
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns :uint8_t Protect_Type_Flg (bit0~bit8分别代表不同的保护类型。)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint8_t Charger_Protect_Handle(void)
|
||||
{
|
||||
uint8_t Pro_Flag = TRUE;
|
||||
|
||||
if( CHIP_STA3 & 0x02 ) //过温(Die ot)保护
|
||||
{
|
||||
Protect_Type_Flg |= DIE_OT_PRO_TYPE;
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Chg Pro DIR OT!\r\n");
|
||||
#endif
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if( CHIP_STA3 & 0x20 ) //VIN Over voltage
|
||||
{
|
||||
Protect_Type_Flg |= VBUS_OVERVOL_PRO_TYPE;
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Chg Pro Over Vol!\r\n");
|
||||
#endif
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if(Protect_Type_Flg & VBUS_OVERVOL_PRO_TYPE)
|
||||
{
|
||||
if( !(CHIP_STA3 & 0x20) ) //系统解除VBUS Over Vol后进入正常工作模式,清标志位。
|
||||
{
|
||||
Protect_Type_Flg &= ~VBUS_OVERVOL_PRO_TYPE;
|
||||
Pro_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if( CHIP_STA4 & 0x10 ) //Charger BAT over voltage
|
||||
{
|
||||
Protect_Type_Flg |= BAT_OVERVOL_PRO_TYPE;
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Chg Pro Bat Over Vol!\r\n");
|
||||
#endif
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if(Protect_Type_Flg & BAT_OVERVOL_PRO_TYPE)
|
||||
{
|
||||
if( !(CHIP_STA4 & 0x10) ) //系统解除Charger BAT over voltage后进入正常工作模式,清标志位。
|
||||
{
|
||||
Protect_Type_Flg &= ~BAT_OVERVOL_PRO_TYPE;
|
||||
Pro_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return Pro_Flag;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint8_t VIN_Detect_Handle(void)
|
||||
*
|
||||
* Description : VIN Detect Handle
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : Plug State (0:NO Plug; 1:Plug Out; 2:Plug In)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
uint8_t VIN_Detect_Handle(void)
|
||||
{
|
||||
uint8_t VIN_Plug_State = 0;
|
||||
|
||||
switch(g_Plug_Irq_Flg)
|
||||
{
|
||||
case 0:
|
||||
|
||||
VIN_Plug_State = 0;
|
||||
|
||||
break;
|
||||
case VBUS_PLGOUT_FLG:
|
||||
|
||||
VIN_Plug_State = 1;
|
||||
Charger_Done = 0;
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Vin PlugOut(line:%d)\r\n",(uint16)__LINE__);
|
||||
#endif
|
||||
#if 1
|
||||
/* 充电过程中 VIN 拔出,会触发 DPM!DPM 功能可以通过软件关闭! */
|
||||
if(CHIP_STA4 & 0x40) //Charger vin DPM status
|
||||
{
|
||||
SFRADDR = REG_CHG0;
|
||||
|
||||
SFRDATA &= ~0x04; //关闭DPM环
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case VBUS_PLGIN_FLG:
|
||||
|
||||
if(CHIP_STA4 & 0x80) //Power Good
|
||||
{
|
||||
VIN_Plug_State = 2;
|
||||
g_Bat_Det_Flag = 1;
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Vin PlugIn(line:%d)\r\n",(uint16)__LINE__);
|
||||
#endif
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
g_Plug_Irq_Flg = 0;
|
||||
return VIN_Plug_State;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_Handler(void)
|
||||
*
|
||||
* Description : Charger Handle. ---- 充电过程除了根据 NTC 动态调节充电电流和截止电压外,其他由硬件控制。充电过程
|
||||
发生异常,硬件进行相应处理,并发送标志位,软件可以进行相应处理。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
/*
|
||||
1、充电超时:充电超时后,软件关闭充电使能,等待VIN拔出。
|
||||
*/
|
||||
void Charger_Handler(void)
|
||||
{
|
||||
uint8_t Ret = 0;
|
||||
uint16_t Bat_Adc = 0;
|
||||
|
||||
Ret = Charger_Protect_Handle(); //Get Charger Protect Type.
|
||||
if(Ret == FALSE) //保护,不开启后续充电。
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
return;
|
||||
}
|
||||
|
||||
/*NTC Handle*/
|
||||
Ret = PMU_NTC_Control(); //使能Charger前先检测NTC温度,异常就不开充电。(CHIP_STA4 & 0x80):PG
|
||||
if(Ret == FALSE) //NTC保护,不充电。
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if( !(CHIP_STA4 & 0x80) ) //未检测到Power good,则关闭Charger使能后返回。
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
Charger_Done = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if( Charger_Done )
|
||||
{
|
||||
|
||||
#if ADC_ENABLE
|
||||
Bat_Adc = Vbat_Value(); //获取Bat电压
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Charge Done!\r\n");
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
if( Bat_Adc < BAT_RECHARG )
|
||||
{
|
||||
CHG_CTL |= 0x01; //Enable Charger
|
||||
Charger_Done = 0;
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Enable Charge!\r\n");
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Disable Charge!\r\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CHG_CTL |= 0x01; //Enable Charger
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
64
TP3310_Demo.si4project/Backup/charger_module(1840).h
Normal file
64
TP3310_Demo.si4project/Backup/charger_module(1840).h
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file Charger_module.h
|
||||
* @brief charger module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __CHARGER_MODULE_H__
|
||||
#define __CHARGER_MODULE_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
// 充电状态定义
|
||||
typedef enum
|
||||
{
|
||||
CHG_STA_ING, // 充电中
|
||||
CHG_STA_COMPLETED, // 充电完成
|
||||
CHG_STA_PULLOUT, // 充电器拔出
|
||||
} TE_CHG_STA;
|
||||
|
||||
|
||||
extern idata TE_CHG_STA ChgStatus; // 系统状态定义
|
||||
|
||||
#if CHARGER_ENABLE
|
||||
/*充电电流设置,在系统初始化时通过配置寄存器REG_CHG1配置。
|
||||
|
||||
REG_CHG1 = CHG_CURRENT_300MA;
|
||||
|
||||
*/
|
||||
#define CHG_CURRENT_100MA 0x00
|
||||
#define CHG_CURRENT_200MA 0x01
|
||||
#define CHG_CURRENT_250MA 0x02
|
||||
#define CHG_CURRENT_300MA 0x03
|
||||
#define CHG_CURRENT_350MA 0x04
|
||||
#define CHG_CURRENT_400MA 0x05
|
||||
#define CHG_CURRENT_450MA 0x06
|
||||
#define CHG_CURRENT_500MA 0x07
|
||||
|
||||
|
||||
#define CHG_CONSTANT_CUR_TIM 1
|
||||
|
||||
#define DIE_OT_RECOVER_TIM 25 //NTC保护后,恢复正常后等待250ms重新开启充电
|
||||
|
||||
|
||||
|
||||
extern void Charger_Handler(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
291
TP3310_Demo.si4project/Backup/charger_module(1953).c
Normal file
291
TP3310_Demo.si4project/Backup/charger_module(1953).c
Normal file
@ -0,0 +1,291 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file charger_module.c
|
||||
* @brief charger module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2022/07/12 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2022/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "charger_module.h"
|
||||
#include "adc.h"
|
||||
#include "sys_tim.h"
|
||||
#include "discharge_module.h"
|
||||
#include "system.h"
|
||||
#include "vox_module.h"
|
||||
#include "led.h"
|
||||
|
||||
|
||||
#if CHARGER_ENABLE
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define NTC_PRO_DEBOUNCE_TIM 10
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
bit NTC_Low_Pro_Flag = 0;
|
||||
bit NTC_High_Pro_Flag = 0;
|
||||
|
||||
uint8_t NTC_Pro_Debounce_Cnt = 0;
|
||||
|
||||
#endif
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_init(void)
|
||||
*
|
||||
* Description : Charger Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void Charger_Init(void)
|
||||
{
|
||||
SFRADDR = PMU_CTL1;
|
||||
SFRDATA |= 0x07; //电池低压检测 enable 信号;电池低压检测档位选择:3.3V
|
||||
/* Setting CV */
|
||||
REG_CHG2 = 0x00; //0:4.20V;1:4.35V
|
||||
/* Setting CHG Current */
|
||||
REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_Current_Set(void)
|
||||
*
|
||||
* Description : Charger Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void Charger_Current_Set(void)
|
||||
{
|
||||
uint16_t Charger_CurADC_Value = 0;
|
||||
/* 通过外部电阻ADC1值设置充电电流值 */
|
||||
Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1);
|
||||
|
||||
|
||||
/* Setting CV */
|
||||
REG_CHG2 = 0x00; //0:4.20V;1:4.35V
|
||||
/* Setting CHG Current */
|
||||
REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint8_t Charger_NTC_Control(uint8_t Charge_sta)
|
||||
*
|
||||
* Description : Charger NTC Control
|
||||
* NTC 支持 103 和 104 电阻,NTC 温度检测由软件通过 ADC 采集 NTC 引脚电压。
|
||||
* 如果支持电量计温度检测线性化,支持电量计方案 103 的 NTC 需要并一个 8.2k
|
||||
|
||||
* 电阻(20uA 电流,103 NTC 需要串联 10k 电阻),104 的 NTC 并联 82k 电阻。
|
||||
* 在使能充电前,软件先检测NTC 温度,如果 NTC 浮空,屏蔽 NTC 功能,
|
||||
* 并锁定;如果 NTC 下拉到 0V,关闭充电和放电。NTC 保护后,软件关闭充电,
|
||||
* 温度恢复正常并持续 250ms,再继续充电。
|
||||
*
|
||||
* Arguments : NTC_Protect_Type_e NTC_Type:Shield 、JEITA or IEC;Charge_sta:Charge or not
|
||||
|
||||
* Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
uint8_t PMU_NTC_Control(void)
|
||||
{
|
||||
uint16_t NTC_Adc = 0;
|
||||
uint8_t NTC_Flag = TRUE;
|
||||
|
||||
#if ADC_CHN_ENABLE
|
||||
|
||||
NTC_Adc = ADC_Chn_Value(ADC_CH4);
|
||||
|
||||
if(NTC_Adc >= 0x2FF) ////屏蔽NTC功能,NTC浮空,屏蔽 NTC 功能,并锁定。
|
||||
{
|
||||
return NTC_Flag;
|
||||
}
|
||||
|
||||
if(CHIP_STA4 & 0x80)
|
||||
{
|
||||
if(NTC_Adc <= T_0C && NTC_Adc > T_45C) //正常充电
|
||||
{
|
||||
if(NTC_Low_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc < T_3C )
|
||||
{
|
||||
NTC_Low_Pro_Flag = 0;
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if(NTC_High_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc > T_42C )
|
||||
{
|
||||
NTC_High_Pro_Flag = 0;
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else //异常不充电
|
||||
{
|
||||
NTC_Pro_Debounce_Cnt++;
|
||||
if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms
|
||||
{
|
||||
NTC_Pro_Debounce_Cnt = 0;
|
||||
|
||||
if(NTC_Adc > T_0C)
|
||||
{
|
||||
NTC_Low_Pro_Flag = 1;
|
||||
}
|
||||
else
|
||||
if(NTC_Adc < T_45C)
|
||||
{
|
||||
NTC_High_Pro_Flag = 1;
|
||||
}
|
||||
|
||||
CHG_CTL &= ~0x01; //Disable Charger.
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return NTC_Flag;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_Handler(void)
|
||||
*
|
||||
* Description : Charger Handle. ---- 充电过程除了根据 NTC 动态调节充电电流和截止电压外,其他由硬件控制。充电过程
|
||||
发生异常,硬件进行相应处理,并发送标志位,软件可以进行相应处理。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
/*
|
||||
1、充电超时:充电超时后,软件关闭充电使能,等待VIN拔出。
|
||||
*/
|
||||
void Charger_Handler(void)
|
||||
{
|
||||
if( !(CHIP_STA4 & 0x80) ) //未检测到Power good,则关闭Charger使能后返回。
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt
|
||||
|
||||
#ifdef BREATHING_LIGHT //关闭LED UI显示,呼吸灯
|
||||
Breathing_Light_On = 0;
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
/*各项保护都无需软件处理,只处理充电超时,超时后需要等VBUS重新插拔后才重新开始Charger流程。*/
|
||||
if ( IRQ_FLAG9 & 0x08 ) //充电超时
|
||||
{
|
||||
if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt
|
||||
{
|
||||
IRQ_FLAG9 = 0x08;
|
||||
IRQ_FLAG10 = 0xC0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/*NTC Handle*/ //使能Charger前先检测NTC温度,异常就不开充电。(CHIP_STA4 & 0x80):PG
|
||||
if( PMU_NTC_Control() == FALSE ) //NTC保护,不充电。
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef BREATHING_LIGHT //LED UI显示,呼吸灯
|
||||
Breathing_Light_On = 1;
|
||||
#endif
|
||||
|
||||
if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt
|
||||
{
|
||||
#ifdef LED_DISPLAY
|
||||
LED_B_OFF();
|
||||
#endif
|
||||
#if ADC_ENABLE
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Chg Done\r\n");
|
||||
#endif
|
||||
if( Vbat_Adc < BAT_RECHARG )
|
||||
{
|
||||
CHG_CTL |= 0x01; //Enable Charger
|
||||
IRQ_FLAG9 = 0x10;
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("En Chg\r\n");
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
CHG_CTL &= ~0x01; //Disable Charger
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Dis Chg\r\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
CHG_CTL |= 0x01; //Enable Charger
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
52
TP3310_Demo.si4project/Backup/charger_module(2186).h
Normal file
52
TP3310_Demo.si4project/Backup/charger_module(2186).h
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file Charger_module.h
|
||||
* @brief charger module
|
||||
*
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2023/05/12 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2023/07/12 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __CHARGER_MODULE_H__
|
||||
#define __CHARGER_MODULE_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
|
||||
#if CHARGER_ENABLE
|
||||
/*充电电流设置,在系统初始化时通过配置寄存器REG_CHG1配置。
|
||||
|
||||
REG_CHG1 = CHG_CURRENT_300MA;
|
||||
|
||||
*/
|
||||
#define CHG_CURRENT_100MA 0x00
|
||||
#define CHG_CURRENT_200MA 0x01
|
||||
#define CHG_CURRENT_250MA 0x02
|
||||
#define CHG_CURRENT_300MA 0x03
|
||||
#define CHG_CURRENT_350MA 0x04
|
||||
#define CHG_CURRENT_400MA 0x05
|
||||
#define CHG_CURRENT_450MA 0x06
|
||||
#define CHG_CURRENT_500MA 0x07
|
||||
|
||||
|
||||
#define CHG_CONSTANT_CUR_TIM 1
|
||||
|
||||
#define DIE_OT_RECOVER_TIM 25 //NTC保护后,恢复正常后等待250ms重新开启充电
|
||||
|
||||
extern void Charger_Handler(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user