init
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
||||
SET C51INC=D:\Program Files\Keil_v5\C51\Inc;D:\Program Files\Keil_v5\C51\Inc\Cast
|
||||
SET C51LIB=D:\Program Files\Keil_v5\C51\Lib
|
||||
SET CPU_TYPE=R8051XC2
|
||||
SET CPU_VENDOR=CAST, Inc.
|
||||
SET UV2_TARGET=CA51F5
|
||||
SET CPU_XTAL=0x016E3600
|
||||
"D:\Program Files\Keil_v5\C51\BIN\C51.EXE" @".\hex\main.__i"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\C51.EXE" @".\hex\delay.__i"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\C51.EXE" @".\hex\SYSTEM~1.__I"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\C51.EXE" @".\hex\uart.__i"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\C51.EXE" @".\hex\INTERR~1.__I"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\C51.EXE" @".\hex\rf_send.__i"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\C51.EXE" @".\hex\debug.__i"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\C51.EXE" @".\hex\ts_api.__i"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\A51.EXE" @".\hex\STARTUP._ia"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\LX51.EXE" @".\hex\CA51FX~1.LNP"
|
||||
"D:\Program Files\Keil_v5\C51\BIN\OHX51.EXE" ".\hex\ca51fx_onoff" HEX
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,510 @@
|
||||
<?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</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc; *.md</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>CA51F5</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLK51>24000000</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>.\lst\</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>0</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>0</CpuCode>
|
||||
<DebugOpt>
|
||||
<uSim>0</uSim>
|
||||
<uTrg>1</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>0</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>0</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>13</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon>BIN\CA8051.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGTC51</Key>
|
||||
<Name></Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>CA8051</Key>
|
||||
<Name>-S4 -B57600 -O-858993460</Name>
|
||||
</SetRegEntry>
|
||||
<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>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint>
|
||||
<Bp>
|
||||
<Number>0</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>432</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>1</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>436</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>2</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>433</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>3</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>437</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>4</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>400</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>5</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>402</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>6</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>403</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>7</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>399</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>8</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>401</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>9</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>431</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>10</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>435</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
</Breakpoint>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>KeysFlagSN</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>0</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>0</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>Sources</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>1</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\main.c</PathWithFileName>
|
||||
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>2</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\Library\Sources\delay.c</PathWithFileName>
|
||||
<FilenameWithoutPath>delay.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>3</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\Library\Sources\system_clock.c</PathWithFileName>
|
||||
<FilenameWithoutPath>system_clock.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>4</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\Library\Sources\uart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>uart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>5</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\interrupt.c</PathWithFileName>
|
||||
<FilenameWithoutPath>interrupt.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\rf_send.c</PathWithFileName>
|
||||
<FilenameWithoutPath>rf_send.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>TS_lib</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\TS_Lib\Sources\debug.c</PathWithFileName>
|
||||
<FilenameWithoutPath>debug.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>.\TS_Lib\Sources\ts_api.c</PathWithFileName>
|
||||
<FilenameWithoutPath>ts_api.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileType>4</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\TS_Lib\Sources\ts_service.LIB</PathWithFileName>
|
||||
<FilenameWithoutPath>ts_service.LIB</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>Lib</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\Library\Lib\STARTUP.A51</PathWithFileName>
|
||||
<FilenameWithoutPath>STARTUP.A51</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
||||
@@ -0,0 +1,445 @@
|
||||
<?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>CA51F5</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<uAC6>8</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>R8051XC2</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>4918</DeviceId>
|
||||
<RegisterFile>REG51XC2.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>Cast\</RegisterFilePath>
|
||||
<DBRegisterFilePath>Cast\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\hex\</OutputDirectory>
|
||||
<OutputName>ca51fx_onoff</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\lst\</ListingPath>
|
||||
<HexFormatSelection>0</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>1</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>0</RunUserProg2>
|
||||
<UserProg1Name>make_bin.bat</UserProg1Name>
|
||||
<UserProg2Name></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>-pR8051XC2 -o38081BFBFFF</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>0</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>1</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>0</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>0</RestoreTracepoints>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>13</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\CA8051.dll</Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>1</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>2</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>1</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>0x2000</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>0x200</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>8</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></IncludePath>
|
||||
</VariousControls>
|
||||
</C51>
|
||||
<Ax51>
|
||||
<UseMpl>0</UseMpl>
|
||||
<UseStandard>1</UseStandard>
|
||||
<UseCase>0</UseCase>
|
||||
<UseMod51>1</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>REMOVEUNUSED</MiscControls>
|
||||
<DisableWarningNumbers></DisableWarningNumbers>
|
||||
<LinkerCmdFile></LinkerCmdFile>
|
||||
<Assign></Assign>
|
||||
<ReserveString></ReserveString>
|
||||
<CClasses></CClasses>
|
||||
<UserClasses></UserClasses>
|
||||
<CSection></CSection>
|
||||
<UserSection></UserSection>
|
||||
<CodeBaseAddress>0X0000-0X3FFF</CodeBaseAddress>
|
||||
<XDataBaseAddress>0X0000-0X0FFF</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>Sources</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>delay.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\Library\Sources\delay.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>system_clock.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\Library\Sources\system_clock.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\Library\Sources\uart.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>interrupt.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\interrupt.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>rf_send.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\rf_send.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>TS_lib</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>debug.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\TS_Lib\Sources\debug.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>ts_api.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\TS_Lib\Sources\ts_api.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>ts_service.LIB</FileName>
|
||||
<FileType>4</FileType>
|
||||
<FilePath>.\TS_Lib\Sources\ts_service.LIB</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Lib</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>STARTUP.A51</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>.\Library\Lib\STARTUP.A51</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
</Project>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
#ifndef _Delay_H_
|
||||
#define _Delay_H_
|
||||
/*********************************************************************************************************************/
|
||||
void Delay_50us(unsigned int n);
|
||||
void Delay_ms(unsigned char n);
|
||||
/*********************************************************************************************************************/
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#ifndef _Delay_H_
|
||||
#define _Delay_H_
|
||||
/*********************************************************************************************************************/
|
||||
void Delay_50us(unsigned int n);
|
||||
void Delay_ms(unsigned int delay_nms);
|
||||
/*********************************************************************************************************************/
|
||||
#endif
|
||||
@@ -0,0 +1,26 @@
|
||||
//EPxCON寄存器定义
|
||||
#define EPIE(N) (N<<7) //N=0-1
|
||||
#define EPPL(N) (N<<6) //N=0-1
|
||||
|
||||
//EPIF定义
|
||||
#define EPIF2 (1<<2)
|
||||
#define EPIF1 (1<<1)
|
||||
#define EPIF0 (1<<0)
|
||||
enum
|
||||
{
|
||||
P00_INDEX = 0,
|
||||
P01_INDEX = 1,
|
||||
P02_INDEX = 2,
|
||||
P03_INDEX = 3,
|
||||
P04_INDEX = 4,
|
||||
P05_INDEX = 5,
|
||||
P06_INDEX = 6,
|
||||
P07_INDEX = 7,
|
||||
|
||||
P30_INDEX = 8,
|
||||
P31_INDEX = 9,
|
||||
P32_INDEX = 10,
|
||||
P33_INDEX = 11,
|
||||
P34_INDEX = 12,
|
||||
P35_INDEX = 13,
|
||||
};
|
||||
@@ -0,0 +1,32 @@
|
||||
#ifndef FLASH_H
|
||||
#define FLASH_H
|
||||
enum
|
||||
{
|
||||
CMD_DATA_AREA_READ = 1,
|
||||
CMD_DATA_AREA_WIRTE = 2,
|
||||
CMD_DATA_AREA_ERASE_SECTOR = 3,
|
||||
CMD_FLASH_ERASE_ALL = 4,
|
||||
CMD_CODE_AREA_READ = 5,
|
||||
CMD_CODE_AREA_WRITE = 6,
|
||||
CMD_CODE_AREA_ERASE_SECTOR = 7,
|
||||
};
|
||||
enum
|
||||
{
|
||||
CMD_FLASH_UNLOCK = 0x28,
|
||||
CMD_CODE_AREA_UNLOCK = 0x29,
|
||||
CMD_DATA_AREA_UNLOCK = 0x2A,
|
||||
CMD_FLASH_LOCK = 0xAA,
|
||||
};
|
||||
|
||||
//źÄ´ćĆ÷FSCMDÎťś¨Ňĺ
|
||||
#define IFEN (1<<7)
|
||||
|
||||
|
||||
void Data_Area_Sector_Erase(unsigned char SectorNumber);
|
||||
void Data_Area_Write_Byte(unsigned int Address,unsigned char Data);
|
||||
void Data_Area_Mass_Write(unsigned int Address,unsigned char *pData,unsigned int Length);
|
||||
unsigned char Data_Area_Read_Byte(unsigned int Address);
|
||||
void Data_Area_Mass_Read(unsigned int Address,unsigned char *pData,unsigned int Length);
|
||||
void Code_Area_Sector_Erase(unsigned char SectorNumber);
|
||||
unsigned long int GetChipID(void);
|
||||
#endif
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
//I2CCONś¨Ňĺ
|
||||
#define I2CE(N) (N<<7)
|
||||
#define I2CIE(N) (N<<6)
|
||||
#define STA(N) (N<<5)
|
||||
#define STP(N) (N<<4)
|
||||
#define CKHD(N) (N<<3)
|
||||
#define AAK(N) (N<<2)
|
||||
#define CBSE(N) (N<<1)
|
||||
#define STFE(N) (N<<0)
|
||||
|
||||
//I2CADRś¨Ňĺ
|
||||
#define GCE(N) (N<<7) //N = 0~1
|
||||
|
||||
//I2CFLGś¨Ňĺ
|
||||
#define I2CF (1<<0)
|
||||
|
||||
|
||||
typedef enum {
|
||||
I2CE_disable = 0,
|
||||
I2CE_enable = 1,
|
||||
} I2CE_TypeDef;
|
||||
|
||||
typedef enum {
|
||||
I2CIE_disable = 0,
|
||||
I2CIE_enable = 1,
|
||||
} I2CIE_TypeDef;
|
||||
|
||||
typedef enum {
|
||||
STFE_disable = 0,
|
||||
STFE_enable = 1,
|
||||
} STFE_TypeDef;
|
||||
|
||||
|
||||
typedef enum {
|
||||
I2C_SEL_P30_P31 = 0,
|
||||
I2C_SEL_P03_P02 = 1,
|
||||
} I2CIOS_TypeDef;
|
||||
void I2C_init(I2CE_TypeDef i2ce,I2CIE_TypeDef i2cie,STFE_TypeDef stfe,unsigned char i2cadr,unsigned char i2ccr);
|
||||
void I2C_SelectComPin(I2CIOS_TypeDef i2cios);
|
||||
@@ -0,0 +1,110 @@
|
||||
#ifndef PWM_H
|
||||
#define PWM_H
|
||||
|
||||
//PWMxCON
|
||||
#define PWMIE(N) (N<<7) //N=0-1
|
||||
#define PWMTOG(N) (N<<6) //N=0-1
|
||||
#define PWMMOD(N) (N<<3) //N=0-7
|
||||
#define PWMPOL(N) (N<<2) //N=0-1
|
||||
#define PWMCKS_SYS 0
|
||||
#define PWMCKS_IL 1
|
||||
#define PWMCKS_IH 2
|
||||
|
||||
|
||||
//PWMIF
|
||||
#define PWM5IF (1<<5)
|
||||
#define PWM4IF (1<<4)
|
||||
#define PWM3IF (1<<3)
|
||||
#define PWM2IF (1<<2)
|
||||
#define PWM1IF (1<<1)
|
||||
#define PWM0IF (1<<0)
|
||||
|
||||
//LEFLG
|
||||
#define LEF1 (1<<7)
|
||||
#define LEBSY1 (1<<6)
|
||||
#define LEF0 (1<<3)
|
||||
#define LEBSY0 (1<<2)
|
||||
|
||||
//PWMCON
|
||||
#define TIE(N) (N<<7)
|
||||
#define ZIE(N) (N<<6)
|
||||
#define PIE(N) (N<<5)
|
||||
#define NIE(N) (N<<4)
|
||||
#define MS(N) (N<<3) //ÖÐÐÄ¶ÔÆëģʽ
|
||||
#define MOD(N) (N<<0) //»¥²¹Ä£Ê½
|
||||
|
||||
#define CKS(N) (N) //N=0~6
|
||||
|
||||
|
||||
//PWMCFG
|
||||
#define TOG(N) (N<<7)
|
||||
|
||||
|
||||
typedef enum {
|
||||
PWM_CH0 = 0,
|
||||
PWM_CH1 = 1,
|
||||
PWM_CH2 = 2,
|
||||
PWM_CH3 = 3,
|
||||
PWM_CH4 = 4,
|
||||
PWM_CH5 = 5,
|
||||
} PWM_Channel_TypeDef;
|
||||
|
||||
typedef enum {
|
||||
PWMIE_off = 0,
|
||||
PWMIE_on = 1,
|
||||
} PWMIE_TypeDef;
|
||||
|
||||
typedef enum {
|
||||
CKS_SYS = 0,
|
||||
CKS_IL = 1,
|
||||
CKS_IH = 2,
|
||||
} PWM_CKS_TypeDef;
|
||||
|
||||
typedef enum {
|
||||
Toggle_Off = 0,
|
||||
Toggle_On = 1,
|
||||
} PWM_Toggle_TypeDef;
|
||||
|
||||
|
||||
|
||||
|
||||
void PWM0_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal);
|
||||
void PWM1_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal,
|
||||
unsigned char pwmmod);
|
||||
void PWM2_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal,
|
||||
unsigned char pwmmod);
|
||||
void PWM3_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal);
|
||||
void PWM4_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal);
|
||||
void PWM5_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal);
|
||||
void PWM0_CfgDivDuty(unsigned int DIV,unsigned int DUT);
|
||||
void PWM1_CfgDivDuty(unsigned int DIV,unsigned int DUT);
|
||||
void PWM2_CfgDivDuty(unsigned int DIV,unsigned int DUT);
|
||||
void PWM3_CfgDivDuty(unsigned int DIV,unsigned int DUT);
|
||||
void PWM4_CfgDivDuty(unsigned int DIV,unsigned int DUT);
|
||||
void PWM5_CfgDivDuty(unsigned int DIV,unsigned int DUT);
|
||||
void PWM_CfgLedut(unsigned int Ledut);
|
||||
void PWM_CfgLedwtm(unsigned int Ledwtm);
|
||||
void PWM1_WriteLedat(unsigned char Ledat);
|
||||
void PWM2_WriteLedat(unsigned char Ledat);
|
||||
void PWM_Enable(PWM_Channel_TypeDef Pwmch);
|
||||
void PWM_Disable(PWM_Channel_TypeDef Pwmch);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,9 @@
|
||||
//PCON¶¨Òå
|
||||
#define STOP (1<<1)
|
||||
#define IDLE (1<<0)
|
||||
|
||||
|
||||
void StopEnter(void);
|
||||
unsigned char CheckStopCondition(void);
|
||||
void IdleEnter(void);
|
||||
unsigned char CheckIdleCondition(void);
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef SYS_CLOCK_H
|
||||
#define SYS_CLOCK_H
|
||||
|
||||
//CKCON寄存器定义
|
||||
#define IHCKE (1<<7)
|
||||
#define ILCKE (1<<6)
|
||||
|
||||
#define SCKS (1<<0) //0-IH,1-IL
|
||||
|
||||
#define CKSEL_IRCH 0
|
||||
#define CKSEL_IRCL 1
|
||||
|
||||
|
||||
void Sys_Clk_Set_IRCH(void);
|
||||
void Sys_Clk_Set_IRCL(void);
|
||||
#endif
|
||||
@@ -0,0 +1,5 @@
|
||||
//TMCON¶¨Òå
|
||||
#define TME(N) (N<<7) //N=0-1
|
||||
#define TMF (1<<0)
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
|
||||
#define UART0_TX_BUF_SIZE 20
|
||||
#define UART0_RX_BUF_SIZE 20
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char head;
|
||||
unsigned char tail;
|
||||
}T_Buf_Info;
|
||||
|
||||
|
||||
#ifdef _UART_C_
|
||||
#ifdef UART0_EN
|
||||
T_Buf_Info xdata uart0_send;
|
||||
T_Buf_Info xdata uart0_rev;
|
||||
unsigned char uart0_tx_buf[UART0_TX_BUF_SIZE];
|
||||
unsigned char xdata uart0_rx_buf[UART0_RX_BUF_SIZE];
|
||||
bit uart0_tx_flag;
|
||||
#endif
|
||||
#else
|
||||
#ifdef UART0_EN
|
||||
extern T_Buf_Info xdata uart0_send;
|
||||
extern T_Buf_Info xdata uart0_rev;
|
||||
extern unsigned char uart0_tx_buf[UART0_TX_BUF_SIZE];
|
||||
extern unsigned char xdata uart0_rx_buf[UART0_RX_BUF_SIZE];
|
||||
extern bit uart0_tx_flag;
|
||||
#endif
|
||||
#endif
|
||||
#ifndef UART0_EN
|
||||
#define Uart0_PutChar(n)
|
||||
#endif
|
||||
|
||||
#ifdef UART0_EN
|
||||
void Uart0_PutChar(unsigned char bdat);
|
||||
void Uart0_Initial(unsigned long int baudrate);
|
||||
void UART0_RX_ISR(void);
|
||||
void UART0_TX_ISR(void);
|
||||
#endif
|
||||
|
||||
#ifdef PRINT_EN
|
||||
void uart_printf(char *fmt,...);
|
||||
#endif
|
||||
@@ -0,0 +1,28 @@
|
||||
#ifndef WDT_H
|
||||
#define WDT_H
|
||||
/*************************************************************************************************************/
|
||||
//WDCON¶¨Òå
|
||||
#define WDTS(N) (N<<6) //N=0~2
|
||||
#define WDRE(N) (N<<0) //N=0~1
|
||||
|
||||
|
||||
//WDFLG¶¨Òå
|
||||
#define WDIF (1<<1)
|
||||
#define WDRF (1<<0)
|
||||
|
||||
|
||||
typedef enum {
|
||||
WDTS_DISABLE = 0,
|
||||
WDTS_IRCH = 1,
|
||||
WDTS_IRCL = 2,
|
||||
} WDTS_TypeDef;
|
||||
|
||||
typedef enum {
|
||||
WDRE_int = 0,
|
||||
WDRE_reset = 1,
|
||||
} WDRE_TypeDef;
|
||||
|
||||
void WDT_init(WDTS_TypeDef wdts,WDRE_TypeDef wdre,unsigned int wdtvh);
|
||||
void WDT_FeedDog(void);
|
||||
/*************************************************************************************************************/
|
||||
#endif
|
||||
@@ -0,0 +1,198 @@
|
||||
$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 80H
|
||||
;
|
||||
; <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 0
|
||||
;
|
||||
; <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
|
||||
|
||||
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:
|
||||
|
||||
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
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef _Delay_C_
|
||||
#define _Delay_C_
|
||||
/*********************************************************************************************************************/
|
||||
void Delay_50us(unsigned int n)
|
||||
{
|
||||
unsigned char i;
|
||||
while(n--)
|
||||
{
|
||||
for(i=0;i<71;i++);
|
||||
}
|
||||
}
|
||||
void Delay_ms(unsigned int delay_nms)
|
||||
{
|
||||
while(delay_nms--)
|
||||
{
|
||||
Delay_50us(20);
|
||||
}
|
||||
}
|
||||
/*********************************************************************************************************************/
|
||||
#endif
|
||||
@@ -0,0 +1,245 @@
|
||||
#ifndef _FLASH_C_
|
||||
#define _FLASH_C_
|
||||
/*********************************************************************************************************************/
|
||||
#include "ca51f5_config.h"
|
||||
#include "../../includes/ca51f5sfr.h"
|
||||
#include "../../includes/ca51f5xsfr.h"
|
||||
#include "../../includes/gpiodef_f5.h"
|
||||
|
||||
#include "../../includes/system.h"
|
||||
#include "../../Library/includes/flash.h"
|
||||
#include <intrins.h>
|
||||
/*********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************
|
||||
函 数 名:Data_Area_Erase_Sector
|
||||
功能描述:擦除数据区空间的一个扇区
|
||||
函数说明:
|
||||
输 入:unsigned char SectorNumber 扇区号,范围 0-255
|
||||
返 回:无
|
||||
***********************************************************************************/
|
||||
void Data_Area_Sector_Erase(unsigned char SectorNumber)
|
||||
{
|
||||
unsigned int SectorAddress;
|
||||
FSCMD = 0;
|
||||
SectorAddress = 0x80*SectorNumber;
|
||||
LOCK = CMD_DATA_AREA_UNLOCK; //数据区解锁
|
||||
PTSH = (unsigned char)(SectorAddress>>8); //填写扇区地址
|
||||
PTSL = (unsigned char)(SectorAddress); //填写扇区地址
|
||||
FSCMD = CMD_DATA_AREA_ERASE_SECTOR; //执行擦除扇区操作
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
}
|
||||
/***********************************************************************************
|
||||
函 数 名:Data_Area_Write_Byte
|
||||
功能描述:向FLASH数据区写入一个字节数据
|
||||
输 入:unsigned int Address 数据区空间写入地址
|
||||
unsigned char Data 写入数据
|
||||
返 回:无
|
||||
***********************************************************************************/
|
||||
void Data_Area_Write_Byte(unsigned int Address,unsigned char Data)
|
||||
{
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_DATA_AREA_UNLOCK; //数据区解锁
|
||||
PTSH = (unsigned char)(Address>>8); //填写高位地址
|
||||
PTSL = (unsigned char)Address; //填写低位地址
|
||||
FSCMD = CMD_DATA_AREA_WIRTE; //执行写操作
|
||||
FSDAT = Data; //装载数据
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
}
|
||||
/***********************************************************************************
|
||||
函 数 名:Data_Area_Mass_Write
|
||||
功能描述:向FLASH数据区批量写入数据
|
||||
输 入:unsigned int wAddress 数据区空间写入起始地址
|
||||
unsigned char *pData 数据指针,指向写入数据缓存数组
|
||||
unsigned char Length 写入数据长度
|
||||
返 回:无
|
||||
***********************************************************************************/
|
||||
void Data_Area_Mass_Write(unsigned int Address,unsigned char *pData,unsigned int Length)
|
||||
{
|
||||
unsigned int i;
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_DATA_AREA_UNLOCK; //数据区解锁
|
||||
PTSH = (unsigned char)(Address>>8); //填写高位地址
|
||||
PTSL = (unsigned char)Address; //填写低位地址
|
||||
FSCMD = CMD_DATA_AREA_WIRTE; //执行写操作
|
||||
for(i = 0; i < Length; i++)
|
||||
{
|
||||
FSDAT = *pData++; //装载数据
|
||||
}
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
}
|
||||
/***********************************************************************************
|
||||
函 数 名:Data_Area_Read_Byte
|
||||
功能描述:从FLASH数据区读出一字节数据
|
||||
输 入:unsigned int Address 数据区空间读地址
|
||||
返 回:读取的一字节数据
|
||||
***********************************************************************************/
|
||||
unsigned char Data_Area_Read_Byte(unsigned int Address)
|
||||
{
|
||||
unsigned char Data_Temp;
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_DATA_AREA_UNLOCK; //数据区解锁
|
||||
PTSH = (unsigned char)(Address>>8); //填写高位地址
|
||||
PTSL = (unsigned char)Address; //填写低位地址
|
||||
FSCMD = CMD_DATA_AREA_READ; //执行读操作
|
||||
Data_Temp = FSDAT;
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
return Data_Temp;
|
||||
}
|
||||
/***********************************************************************************
|
||||
函 数 名:Data_Area_Mass_Read
|
||||
功能描述:从FLASH数据区批量读出数据
|
||||
输 入:unsigned int Address 数据区空间读起始地址
|
||||
unsigned char *pData 数据指针,指向读出数据缓存数组
|
||||
unsigned char Length 读数据长度
|
||||
返 回:无
|
||||
***********************************************************************************/
|
||||
void Data_Area_Mass_Read(unsigned int Address,unsigned char *pData,unsigned int Length)
|
||||
{
|
||||
unsigned int i;
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_DATA_AREA_UNLOCK; //数据区解锁
|
||||
PTSH = (unsigned char)(Address>>8); //填写高位地址
|
||||
PTSL = (unsigned char)Address; //填写低位地址
|
||||
FSCMD = CMD_DATA_AREA_READ; //执行读操作
|
||||
for(i = 0; i < Length; i++)
|
||||
{
|
||||
*pData++ = FSDAT;
|
||||
}
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
}
|
||||
/***********************************************************************************
|
||||
函 数 名:Code_Area_Erase_Sector
|
||||
功能描述:擦除程序区空间的一个扇区
|
||||
函数说明:
|
||||
输 入:unsigned char SectorNumber 扇区号,范围 0-255
|
||||
返 回:无
|
||||
***********************************************************************************/
|
||||
void Code_Area_Sector_Erase(unsigned char SectorNumber)
|
||||
{
|
||||
unsigned int SectorAddress;
|
||||
FSCMD = 0;
|
||||
SectorAddress = 0x80*SectorNumber;
|
||||
LOCK = CMD_CODE_AREA_UNLOCK; //程序区解锁
|
||||
PTSH = (unsigned char)(SectorAddress>>8); //填写扇区地址
|
||||
PTSL = (unsigned char)(SectorAddress); //填写扇区地址
|
||||
FSCMD = CMD_CODE_AREA_ERASE_SECTOR; //执行擦除扇区操作
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
}
|
||||
/***********************************************************************************
|
||||
函 数 名:Code_Area_Write_Byte
|
||||
功能描述:向FLASH程序区写入一个字节数据
|
||||
输 入:unsigned int Address 程序区空间写入地址
|
||||
unsigned char Data 写入数据
|
||||
返 回:无
|
||||
***********************************************************************************/
|
||||
void Code_Area_Write_Byte(unsigned int Address,unsigned char Data)
|
||||
{
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_CODE_AREA_UNLOCK; //数据区解锁
|
||||
PTSH = (unsigned char)(Address>>8); //填写高位地址
|
||||
PTSL = (unsigned char)Address; //填写低位地址
|
||||
FSCMD = CMD_CODE_AREA_WRITE; //执行写操作
|
||||
FSDAT = Data; //装载数据
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
}
|
||||
/***********************************************************************************
|
||||
函 数 名:Code_Area_Mass_Write
|
||||
功能描述:向FLASH程序区批量写入数据
|
||||
输 入:unsigned int Address 程序区空间写入起始地址
|
||||
unsigned char *pData 数据指针,指向写入数据缓存数组
|
||||
unsigned char Length 写入数据长度
|
||||
返 回:无
|
||||
***********************************************************************************/
|
||||
void Code_Area_Mass_Write(unsigned int Address,unsigned char *pData,unsigned int Length)
|
||||
{
|
||||
unsigned int i;
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_CODE_AREA_UNLOCK; //数据区解锁
|
||||
PTSH = (unsigned char)(Address>>8); //填写高位地址
|
||||
PTSL = (unsigned char)Address; //填写低位地址
|
||||
FSCMD = CMD_CODE_AREA_WRITE; //执行写操作
|
||||
for(i = 0; i < Length; i++)
|
||||
{
|
||||
FSDAT = *pData++; //装载数据
|
||||
}
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
}
|
||||
/***********************************************************************************
|
||||
函 数 名:Code_Area_Read_Byte
|
||||
功能描述:从FLASH程序区读出一字节数据
|
||||
输 入:unsigned int Address 程序区空间读地址
|
||||
返 回:读取的一字节数据
|
||||
***********************************************************************************/
|
||||
unsigned char Code_Area_Read_Byte(unsigned int Address)
|
||||
{
|
||||
unsigned char Data_Temp;
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_CODE_AREA_UNLOCK; //数据区解锁
|
||||
PTSH = (unsigned char)(Address>>8); //填写高位地址
|
||||
PTSL = (unsigned char)Address; //填写低位地址
|
||||
FSCMD = CMD_CODE_AREA_READ; //执行读操作
|
||||
Data_Temp = FSDAT;
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
return Data_Temp;
|
||||
}
|
||||
/***********************************************************************************
|
||||
函 数 名: Code_Area_Mass_Read
|
||||
功能描述: 从FLASH程序区批量读出数据
|
||||
输 入: unsigned int Address 程序区空间读起始地址
|
||||
unsigned char *pData 数据指针,指向读出数据缓存数组
|
||||
unsigned char Length 读数据长度
|
||||
返 回: 无
|
||||
***********************************************************************************/
|
||||
void Code_Area_Mass_Read(unsigned int Address,unsigned char *pData,unsigned int Length)
|
||||
{
|
||||
unsigned int i;
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_CODE_AREA_UNLOCK; //数据区解锁
|
||||
PTSH = (unsigned char)(Address>>8); //填写高位地址
|
||||
PTSL = (unsigned char)Address; //填写低位地址
|
||||
FSCMD = CMD_CODE_AREA_READ; //执行读操作
|
||||
for(i = 0; i < Length; i++)
|
||||
{
|
||||
*pData++ = FSDAT;
|
||||
}
|
||||
FSCMD = 0;
|
||||
LOCK = CMD_FLASH_LOCK; //对FLASH加锁
|
||||
}
|
||||
|
||||
/***********************************************************************************
|
||||
函 数 名: GetChipID
|
||||
功能描述: 从芯片读出芯片识别码(每个芯片都有唯一的识别码)
|
||||
输 入: 无
|
||||
返 回: 32位滚码
|
||||
***********************************************************************************/
|
||||
unsigned long int GetChipID(void)
|
||||
{
|
||||
unsigned long int ID;
|
||||
LOCK = 0x2B;
|
||||
FSCMD = 0x80;
|
||||
PTSH = 0x00;
|
||||
PTSL = 0x00;
|
||||
FSCMD = 0x81;
|
||||
ID = FSDAT;
|
||||
ID *= 256;
|
||||
ID |= FSDAT;
|
||||
ID *= 256;
|
||||
ID |= FSDAT;
|
||||
ID *= 256;
|
||||
ID |= FSDAT;
|
||||
FSCMD = 0;
|
||||
LOCK = 0xAA;
|
||||
return ID;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,35 @@
|
||||
#ifndef _I2C_C_
|
||||
#define _I2C_C_
|
||||
|
||||
/*********************************************************************************************************************/
|
||||
#include "ca51f5_config.h"
|
||||
#include "../../../includes/ca51f5sfr.h"
|
||||
#include "../../../includes/ca51f5xsfr.h"
|
||||
#include "../../../includes/gpiodef_f5.h"
|
||||
|
||||
#include "../../../includes/system.h"
|
||||
#include "../../../Library/includes/i2c.h"
|
||||
#include <intrins.h>
|
||||
/*********************************************************************************************************************/
|
||||
void I2C_init(I2CE_TypeDef i2ce,I2CIE_TypeDef i2cie,STFE_TypeDef stfe,unsigned char i2cadr,unsigned char i2ccr)
|
||||
{
|
||||
I2CCON = I2CE(i2ce) | I2CIE(i2cie) | STA(0) | STP(0)| CKHD(1) | AAK(1)| CBSE(0) | STFE(stfe);
|
||||
I2CADR = GCE(0)|(i2cadr>>1);
|
||||
I2CCR = (i2ccr>>1);
|
||||
}
|
||||
|
||||
void I2C_SelectComPin(I2CIOS_TypeDef i2cios)
|
||||
{
|
||||
I2CIOS = i2cios;
|
||||
if(i2cios == I2C_SEL_P30_P31)
|
||||
{
|
||||
GPIO_Init(P30F,P30_I2C_SDA_SETTING | PU_EN);
|
||||
GPIO_Init(P31F,P31_I2C_SCL_SETTING | PU_EN);
|
||||
}
|
||||
else if(i2cios == I2C_SEL_P03_P02)
|
||||
{
|
||||
GPIO_Init(P03F,P03_I2C_SDA_SETTING | PU_EN);
|
||||
GPIO_Init(P02F,P02_I2C_SCL_SETTING | PU_EN);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,269 @@
|
||||
#ifndef _PWM_C_
|
||||
#define _PWM_C_
|
||||
|
||||
/*********************************************************************************************************************/
|
||||
#include "../../includes/ca51f5sfr.h"
|
||||
#include "../../includes/ca51f5xsfr.h"
|
||||
|
||||
#include "../../Library/includes/pwm.h"
|
||||
#include <intrins.h>
|
||||
/*********************************************************************************************************************/
|
||||
/******************************************************************************
|
||||
函数名:PWM0_init
|
||||
功能描述:PWM0通道功能初始化
|
||||
输入参数: ie PWM0中断开关设置
|
||||
cks PWM0时钟源设置
|
||||
toggle PWM0是否反相输出设置
|
||||
Prescal PWM0时钟分频设置
|
||||
返回值: 无
|
||||
|
||||
******************************************************************************/
|
||||
void PWM0_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal)
|
||||
{
|
||||
PWM0CON = PWMIE(ie) | PWMTOG(toggle) | cks;
|
||||
PWM0CKD = Prescal;
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名:PWM1_init
|
||||
功能描述:PWM1通道功能初始化
|
||||
输入参数: ie PWM1中断开关设置
|
||||
cks PWM1时钟源设置
|
||||
toggle PWM1是否反相输出设置
|
||||
Prescal PWM1时钟分频设置
|
||||
pwmmod pwmmod=0:PWM模式,pwmmod>0:级联LED驱动模式,同时pwmmod表示发送pwmmod个字节插入延时时间
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM1_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal,
|
||||
unsigned char pwmmod)
|
||||
{
|
||||
PWM1CON = PWMIE(ie) | PWMTOG(toggle) | PWMMOD(pwmmod) | PWMPOL(0) | cks;
|
||||
PWM1CKD = Prescal;
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名:PWM2_init
|
||||
功能描述:PWM2通道功能初始化
|
||||
输入参数: ie PWM2中断开关设置
|
||||
cks PWM2时钟源设置
|
||||
toggle PWM2是否反相输出设置
|
||||
Prescal PWM2时钟分频设置
|
||||
pwmmod pwmmod=0:PWM模式,pwmmod>0:级联LED驱动模式,同时pwmmod表示发送pwmmod个字节插入延时时间
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM2_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal,
|
||||
unsigned char pwmmod)
|
||||
{
|
||||
PWM2CON = PWMIE(ie) | PWMTOG(toggle) | PWMMOD(pwmmod) | PWMPOL(0) | cks;
|
||||
PWM2CKD = Prescal;
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名:PWM3_init
|
||||
功能描述:PWM3通道功能初始化
|
||||
输入参数: ie PWM3中断开关设置
|
||||
cks PWM3时钟源设置
|
||||
toggle PWM3是否反相输出设置
|
||||
Prescal PWM3时钟分频设置
|
||||
返回值: 无
|
||||
|
||||
******************************************************************************/
|
||||
void PWM3_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal)
|
||||
{
|
||||
PWM3CON = PWMIE(ie) | PWMTOG(toggle) | cks;
|
||||
PWM3CKD = Prescal;
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名:PWM4_init
|
||||
功能描述:PWM4通道功能初始化
|
||||
输入参数: ie PWM4中断开关设置
|
||||
cks PWM4时钟源设置
|
||||
toggle PWM4是否反相输出设置
|
||||
Prescal PWM4时钟分频设置
|
||||
返回值: 无
|
||||
|
||||
******************************************************************************/
|
||||
void PWM4_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal)
|
||||
{
|
||||
PWM4CON = PWMIE(ie) | PWMTOG(toggle) | cks;
|
||||
PWM4CKD = Prescal;
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名:PWM5_init
|
||||
功能描述:PWM5通道功能初始化
|
||||
输入参数: ie PWM5中断开关设置
|
||||
cks PWM5时钟源设置
|
||||
toggle PWM5是否反相输出设置
|
||||
Prescal PWM5时钟分频设置
|
||||
返回值: 无
|
||||
|
||||
******************************************************************************/
|
||||
void PWM5_init( PWMIE_TypeDef ie,
|
||||
PWM_CKS_TypeDef cks,
|
||||
PWM_Toggle_TypeDef toggle,
|
||||
unsigned char Prescal)
|
||||
{
|
||||
PWM5CON = PWMIE(ie) | PWMTOG(toggle) | cks;
|
||||
PWM5CKD = Prescal;
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM0_CfgDivDuty
|
||||
功能描述:设置PWM0周期和占空比
|
||||
输入参数: DIV PWM周期设置
|
||||
DUT PWM占空比设置
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM0_CfgDivDuty(unsigned int DIV,unsigned int DUT)
|
||||
{
|
||||
PWM0DIVH = (unsigned char)(DIV>>8);
|
||||
PWM0DIVL = (unsigned char)(DIV);
|
||||
PWM0DUTH = (unsigned char)(DUT>>8);
|
||||
PWM0DUTL = (unsigned char)(DUT);
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM1_CfgDivDuty
|
||||
功能描述:设置PWM1周期和占空比
|
||||
输入参数: DIV PWM周期设置
|
||||
DUT PWM占空比设置
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM1_CfgDivDuty(unsigned int DIV,unsigned int DUT)
|
||||
{
|
||||
PWM1DIVH = (unsigned char)(DIV>>8);
|
||||
PWM1DIVL = (unsigned char)(DIV);
|
||||
PWM1DUTH = (unsigned char)(DUT>>8);
|
||||
PWM1DUTL = (unsigned char)(DUT);
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM2_CfgDivDuty
|
||||
功能描述:设置PWM2周期和占空比
|
||||
输入参数: DIV PWM周期设置
|
||||
DUT PWM占空比设置
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM2_CfgDivDuty(unsigned int DIV,unsigned int DUT)
|
||||
{
|
||||
PWM2DIVH = (unsigned char)(DIV>>8);
|
||||
PWM2DIVL = (unsigned char)(DIV);
|
||||
PWM2DUTH = (unsigned char)(DUT>>8);
|
||||
PWM2DUTL = (unsigned char)(DUT);
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM3_CfgDivDuty
|
||||
功能描述:设置PWM0周期和占空比
|
||||
输入参数: DIV PWM周期设置
|
||||
DUT PWM占空比设置
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM3_CfgDivDuty(unsigned int DIV,unsigned int DUT)
|
||||
{
|
||||
PWM3DIVH = (unsigned char)(DIV>>8);
|
||||
PWM3DIVL = (unsigned char)(DIV);
|
||||
PWM3DUTH = (unsigned char)(DUT>>8);
|
||||
PWM3DUTL = (unsigned char)(DUT);
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM4_CfgDivDuty
|
||||
功能描述:设置PWM4周期和占空比
|
||||
输入参数: DIV PWM周期设置
|
||||
DUT PWM占空比设置
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM4_CfgDivDuty(unsigned int DIV,unsigned int DUT)
|
||||
{
|
||||
PWM4DIVH = (unsigned char)(DIV>>8);
|
||||
PWM4DIVL = (unsigned char)(DIV);
|
||||
PWM4DUTH = (unsigned char)(DUT>>8);
|
||||
PWM4DUTL = (unsigned char)(DUT);
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM5_CfgDivDuty
|
||||
功能描述:设置PWM5周期和占空比
|
||||
输入参数: DIV PWM周期设置
|
||||
DUT PWM占空比设置
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM5_CfgDivDuty(unsigned int DIV,unsigned int DUT)
|
||||
{
|
||||
PWM5DIVH = (unsigned char)(DIV>>8);
|
||||
PWM5DIVL = (unsigned char)(DIV);
|
||||
PWM5DUTH = (unsigned char)(DUT>>8);
|
||||
PWM5DUTL = (unsigned char)(DUT);
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM_CfgLedut
|
||||
功能描述:PWM1/2为级联LED驱动模式时,设置发送位为1时PWM占空比
|
||||
输入参数: Ledut 发送位为1时PWM占空比
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM_CfgLedut(unsigned int Ledut)
|
||||
{
|
||||
LEDUTH = (unsigned char)(Ledut>>8);
|
||||
LEDUTL = (unsigned char)(Ledut);
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM_CfgLedwtm
|
||||
功能描述:PWM1/2为级联LED驱动模式时,设置延时时间
|
||||
输入参数: Ledwtm 延时的PWM时钟周期数
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM_CfgLedwtm(unsigned int Ledwtm)
|
||||
{
|
||||
LEDWTMH = (unsigned char)(Ledwtm>>8);
|
||||
LEDWTML = (unsigned char)(Ledwtm);
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM1_WriteLedat
|
||||
功能描述:PWM1为级联LED驱动模式时,发送1字节数据
|
||||
输入参数: Ledat 待发送的数据
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM1_WriteLedat(unsigned char Ledat)
|
||||
{
|
||||
while(LEFLG & LEF0);
|
||||
LEDAT0 = Ledat;
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM2_WriteLedat
|
||||
功能描述:PWM2为级联LED驱动模式时,发送1字节数据
|
||||
输入参数: Ledat 待发送的数据
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM2_WriteLedat(unsigned char Ledat)
|
||||
{
|
||||
while(LEFLG & LEF1);
|
||||
LEDAT1 = Ledat;
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM_Enable
|
||||
功能描述:PWM使能
|
||||
输入参数: Pwmch ,使能的PWM通道
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM_Enable(PWM_Channel_TypeDef Pwmch)
|
||||
{
|
||||
PWMEN |= 1<<Pwmch;
|
||||
}
|
||||
/******************************************************************************
|
||||
函数名: PWM_Disable
|
||||
功能描述:PWM禁能
|
||||
输入参数: Pwmch ,禁能的PWM通道
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void PWM_Disable(PWM_Channel_TypeDef Pwmch)
|
||||
{
|
||||
PWMEN &= ~(1<<Pwmch);
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
#ifndef _STOP_IDLE_C_
|
||||
#define _STOP_IDLE_C_
|
||||
/*********************************************************************************************************************/
|
||||
#include "ca51f5_config.h"
|
||||
#include "../../includes/ca51f5sfr.h"
|
||||
#include "../../includes/ca51f5xsfr.h"
|
||||
#include "../../includes/gpiodef_f5.h"
|
||||
|
||||
#include "../../includes/system.h"
|
||||
#include "../../Library/includes/stop_idle.h"
|
||||
#include <intrins.h>
|
||||
/*********************************************************************************************************************/
|
||||
/******************************************************************************************
|
||||
函数名:StopEnter
|
||||
功能说明:进入STOP模式
|
||||
输入参数:无
|
||||
返回值: 无
|
||||
******************************************************************************************/
|
||||
void StopEnter(void)
|
||||
{
|
||||
PCON |= STOP;
|
||||
_nop_();
|
||||
_nop_();
|
||||
}
|
||||
|
||||
/******************************************************************************************
|
||||
函数名:CheckStopCondition
|
||||
功能说明:检查进入STOP模式的条件(注:如果STPSTH、STPSTL不为0,即使执行STOP指令,芯片也不会进入STOP)
|
||||
输入参数:无
|
||||
返回值: 0:不能进入STOP; 1: 可以进入STOP
|
||||
******************************************************************************************/
|
||||
unsigned char CheckStopCondition(void)
|
||||
{
|
||||
if(STPST) return 0;
|
||||
else return 1;
|
||||
}
|
||||
|
||||
/******************************************************************************************
|
||||
函数名: IdleEnter
|
||||
功能说明:进入IDLE模式
|
||||
输入参数:无
|
||||
返回值: 无
|
||||
******************************************************************************************/
|
||||
void IdleEnter(void)
|
||||
{
|
||||
PCON |= IDLE;
|
||||
_nop_();
|
||||
_nop_();
|
||||
}
|
||||
|
||||
/******************************************************************************************
|
||||
函数名:CheckIdleCondition
|
||||
功能说明:检查进入IDLE模式的条件(注:如果IDLSTH、IDLSTL不为0,即使执行IDLE指令,芯片也不会进入IDLE)
|
||||
输入参数:无
|
||||
返回值: 0:不能进入IDLE; 1: 可以进入IDLE
|
||||
******************************************************************************************/
|
||||
unsigned char CheckIdleCondition(void)
|
||||
{
|
||||
if(IDLST) return 0;
|
||||
else return 1;
|
||||
}
|
||||
/*********************************************************************************************************************/
|
||||
#endif
|
||||
@@ -0,0 +1,24 @@
|
||||
#ifndef _SYSTEM_CLOCK_C_
|
||||
#define _SYSTEM_CLOCK_C_
|
||||
/*********************************************************************************************************************/
|
||||
#include "ca51f5_config.h"
|
||||
#include "../../includes/ca51f5sfr.h"
|
||||
#include "../../includes/ca51f5xsfr.h"
|
||||
#include "../../includes/gpiodef_f5.h"
|
||||
|
||||
#include "../../includes/system.h"
|
||||
#include "../../Library/includes/system_clock.h"
|
||||
#include <intrins.h>
|
||||
/*********************************************************************************************************************/
|
||||
void Sys_Clk_Set_IRCH(void)
|
||||
{
|
||||
CKCON |= IHCKE;
|
||||
CKCON = (CKCON&0xFE) | CKSEL_IRCH;
|
||||
}
|
||||
void Sys_Clk_Set_IRCL(void)
|
||||
{
|
||||
CKCON |= ILCKE;
|
||||
CKCON = (CKCON&0xFE) | CKSEL_IRCL;
|
||||
}
|
||||
/*********************************************************************************************************************/
|
||||
#endif
|
||||
@@ -0,0 +1,139 @@
|
||||
#ifndef _UART_C_
|
||||
#define _UART_C_
|
||||
#include "ca51f5_config.h"
|
||||
#include "../../includes/ca51f5sfr.h"
|
||||
#include "../../includes/ca51f5xsfr.h"
|
||||
#include "../../includes/gpiodef_f5.h"
|
||||
#include "../../includes/system.h"
|
||||
|
||||
#include "../../Library/includes/uart.h"
|
||||
#include <intrins.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <absacc.h>
|
||||
/*********************************************************************************************************************/
|
||||
/*********************************************************************************************************************/
|
||||
#ifdef UART0_EN
|
||||
/*********************************************************************************************************************
|
||||
注意:以下波特率配置参数前提条件是系统时钟为16MHz,如果修改系统时钟频率,波特率配置参数须另行计算。
|
||||
***********************************************************************************************************************/
|
||||
void Uart0_Initial(unsigned long int baudrate)
|
||||
{
|
||||
code unsigned long int BR_TAB[]=
|
||||
{
|
||||
1200,
|
||||
2400,
|
||||
4800,
|
||||
9600,
|
||||
19200,
|
||||
38400,
|
||||
57600,
|
||||
115200,
|
||||
};
|
||||
code unsigned int BR_SET_TAB[][2]=
|
||||
{
|
||||
{416,31},
|
||||
{208,31},
|
||||
{104,31},
|
||||
{52,31},
|
||||
{26,31},
|
||||
{13,31},
|
||||
{10,27},
|
||||
{5,27},
|
||||
};
|
||||
unsigned int value_temp;
|
||||
unsigned char i;
|
||||
|
||||
uart0_send.head = 0;
|
||||
uart0_send.tail = 0;
|
||||
uart0_rev.head = 0;
|
||||
uart0_rev.tail = 0;
|
||||
uart0_tx_flag = 0;
|
||||
|
||||
GPIO_Init(P31F,P31_UART0_RX_SETTING);
|
||||
GPIO_Init(P30F,P30_UART0_TX_SETTING);
|
||||
|
||||
for(i=0;i<sizeof(BR_TAB)/4;i++)
|
||||
{
|
||||
if(baudrate == BR_TAB[i])
|
||||
{
|
||||
value_temp = 0x10000 - BR_SET_TAB[i][0];
|
||||
UDCKS = 0x80 | BR_SET_TAB[i][1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(i == sizeof(BR_TAB)/4) return; //如果所设置的波特率不在表格中,可自行添加。
|
||||
|
||||
T2CON = 0x24;
|
||||
T2CH = (unsigned char)(value_temp>>8);
|
||||
T2CL = (unsigned char)(value_temp);
|
||||
TH2 = (unsigned char)(value_temp>>8);
|
||||
TL2 = (unsigned char)(value_temp);;
|
||||
TR2 = 1;
|
||||
|
||||
S0CON = 0x50;
|
||||
ES0 = 1;
|
||||
}
|
||||
void Uart0_PutChar(unsigned char bdat)
|
||||
{
|
||||
unsigned char free_space;
|
||||
unsigned char tail_tmp;
|
||||
while(1)
|
||||
{
|
||||
tail_tmp = uart0_send.tail;
|
||||
if(uart0_send.head < tail_tmp)
|
||||
{
|
||||
free_space = tail_tmp - uart0_send.head;
|
||||
}
|
||||
else
|
||||
{
|
||||
free_space = UART0_TX_BUF_SIZE + tail_tmp - uart0_send.head;
|
||||
}
|
||||
if(free_space > 1)
|
||||
{
|
||||
ES0 = 0;
|
||||
uart0_send.head++;
|
||||
uart0_send.head %= UART0_TX_BUF_SIZE;
|
||||
uart0_tx_buf[uart0_send.head] = bdat;
|
||||
if(!uart0_tx_flag)
|
||||
{
|
||||
ES0 = 1;
|
||||
uart0_send.tail++;
|
||||
uart0_send.tail %= UART0_TX_BUF_SIZE;
|
||||
S0BUF=uart0_tx_buf[uart0_send.tail];
|
||||
uart0_tx_flag = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ES0 = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
void UART0_RX_ISR (void)
|
||||
{
|
||||
RI0 = 0;
|
||||
uart0_rev.head++;
|
||||
uart0_rev.head %= UART0_RX_BUF_SIZE;
|
||||
uart0_rx_buf[uart0_rev.head]=S0BUF;
|
||||
}
|
||||
void UART0_TX_ISR (void)
|
||||
{
|
||||
TI0 = 0;
|
||||
if(uart0_send.head!=uart0_send.tail)
|
||||
{
|
||||
uart0_send.tail++;
|
||||
uart0_send.tail %= UART0_TX_BUF_SIZE;
|
||||
S0BUF=uart0_tx_buf[uart0_send.tail];
|
||||
}
|
||||
else
|
||||
{
|
||||
uart0_tx_flag=0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/*********************************************************************************************************************/
|
||||
#endif
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef _WDT_C_
|
||||
#define _WDT_C_
|
||||
/*********************************************************************************************************************/
|
||||
#include "../../includes/ca51f5sfr.h"
|
||||
#include "../../includes/ca51f5xsfr.h"
|
||||
#include "../../includes/system.h"
|
||||
#include "../../Library/includes/wdt.h"
|
||||
#include <intrins.h>
|
||||
/*********************************************************************************************************************/
|
||||
/*****************************************************************************
|
||||
函数名:WDT_init
|
||||
功能描述:初始化看门狗
|
||||
输入参数:wdts 看门狗时钟源设置
|
||||
wdre 看门狗模式设置
|
||||
wdtch 看门狗时间设置
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void WDT_init(WDTS_TypeDef wdts,WDRE_TypeDef wdre,unsigned int wdtvh)
|
||||
{
|
||||
WDCON = WDTS(wdts) | WDRE(wdre);
|
||||
WDVTHH = (unsigned char)(wdtvh>>8);
|
||||
WDVTHL = (unsigned char)(wdtvh);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
函数名:WDT_FeedDog
|
||||
功能描述:刷新看门狗
|
||||
输入参数:无
|
||||
返回值: 无
|
||||
******************************************************************************/
|
||||
void WDT_FeedDog(void)
|
||||
{
|
||||
WDFLG = 0xA5;
|
||||
}
|
||||
/*********************************************************************************************************************/
|
||||
#endif
|
||||
@@ -0,0 +1,177 @@
|
||||
#ifndef _TS_API_H
|
||||
#define _TS_API_H
|
||||
|
||||
#ifdef _TK_API_C_
|
||||
/***************************************************************************************************************/
|
||||
/***************************************************************************************************************/
|
||||
TSState_T idata TS_State;
|
||||
|
||||
TYPE_SN idata PreKeysFlagSN;
|
||||
TYPE_SN xdata KeysFlagSN;
|
||||
#if TK_FREQ_JUMP_EN
|
||||
unsigned char xdata NowTKFreqIndex;
|
||||
#endif
|
||||
unsigned int TS_Key;
|
||||
unsigned int TS_LongKeyTimer;
|
||||
unsigned char TK_State;
|
||||
|
||||
bit TS_CycleScanDoneFlag;
|
||||
unsigned char idata TS_Cnt;
|
||||
unsigned int xdata TS_RawData[OPENED_TS_COUNT+1];
|
||||
unsigned int xdata TS_BaseLineData[OPENED_TS_COUNT];
|
||||
unsigned int xdata TS_FirstAreaData[OPENED_TS_COUNT];
|
||||
unsigned char xdata TS_AreaConfirmTimer[OPENED_TS_COUNT];
|
||||
unsigned int xdata TS_PostData[OPENED_TS_COUNT+1];
|
||||
#if TK_FREQ_JUMP_EN
|
||||
unsigned int xdata TS_JumpFreqData[2][OPENED_TS_COUNT+1];
|
||||
#endif
|
||||
#if (TS_ACQ_TIMES > 1)
|
||||
unsigned char xdata TS_Acq_Counter = 0;
|
||||
unsigned int xdata TS_DataSum[OPENED_TS_COUNT+1];
|
||||
#endif
|
||||
#if SUPPORT_KEY
|
||||
unsigned int xdata TSKey_FingerThd[KEY_CH_COUNT];
|
||||
unsigned char xdata TSKey_LongTouchLimitTimer[KEY_CH_COUNT];
|
||||
#if SUPPORT_ANTI_WATER_FUNCTION
|
||||
bit KeyPressedFlag;
|
||||
unsigned char xdata PressedKeyIndex;
|
||||
#endif
|
||||
#if TK_BASE_TRIM_WHILE_KEY_PRESSED
|
||||
unsigned int xdata RefChDataBak[KEY_CH_COUNT];
|
||||
unsigned int xdata TS_BaseLineDataBak[KEY_CH_COUNT];
|
||||
#endif
|
||||
#else
|
||||
unsigned int xdata TSKey_FingerThd[1];
|
||||
#endif
|
||||
/***************************************************************************************************************/
|
||||
/***************************************************************************************************************/
|
||||
unsigned int xdata TS_FilterBuf[OPENED_TS_COUNT+1][FILTER_COUNT];
|
||||
unsigned char xdata TS_FilterPosIdx[OPENED_TS_COUNT+1];
|
||||
|
||||
|
||||
unsigned char xdata TS_Init_Step;
|
||||
unsigned char idata TS_RefCHBaseLineAdjuTimer;
|
||||
unsigned char TS_Index;
|
||||
|
||||
unsigned char idata TS_CH[OPENED_TS_COUNT];
|
||||
|
||||
unsigned char xdata EnterStopScanTimer;
|
||||
unsigned char xdata MainLoopCnt1;
|
||||
unsigned char xdata MainLoopCnt2;
|
||||
|
||||
#if SUPPORT_KEY
|
||||
#if ANTI_SPEAKER_EN
|
||||
#define REF_CH_DATA_BUF_SIZE 10
|
||||
unsigned int xdata RefChDataBuf[REF_CH_DATA_BUF_SIZE];
|
||||
unsigned char xdata RefChDataBufIdx;
|
||||
unsigned char xdata RefChDataTimer;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
bit TS_StableFlag;
|
||||
|
||||
#if SUPPORT_TOUCH_SLEEP_MODE
|
||||
bit TS_SleepEn;
|
||||
bit TS_SleepMode;
|
||||
#endif
|
||||
|
||||
unsigned char xdata TS_HalfSecCnt;
|
||||
|
||||
#if SUPPORT_KEY
|
||||
#if DEBUG
|
||||
unsigned char xdata Key_Cnt_Debug;
|
||||
TSState_T xdata TS_State_Debug;
|
||||
unsigned char xdata TS_CH_Debug[OPENED_TS_COUNT];
|
||||
unsigned int xdata TS_RefChBaseLineData;
|
||||
unsigned int xdata TS_RefPostData;
|
||||
unsigned int xdata KeysFlagSN_Debug;
|
||||
#endif
|
||||
|
||||
#if SUPPORT_COVER_PANAL_AFTER_POWERON
|
||||
unsigned char PanalCoverJudgeTimer;
|
||||
bit PanalCoverJudgeFlag;
|
||||
#endif
|
||||
#endif
|
||||
#if SUPPORT_WHEEL_SLIDER
|
||||
unsigned char xdata TSWheelSlider_TouchConfirmTimer;
|
||||
unsigned char xdata TSWheelSlider_LongTouchLimitTimer;
|
||||
unsigned char xdata WheelSliderState;
|
||||
unsigned char xdata WheelSliderTouchFlag;
|
||||
int xdata WheelSliderPosition;
|
||||
unsigned char xdata WheelSliderRefCh;
|
||||
unsigned int xdata WheelSliderCapRateFilter;
|
||||
unsigned char xdata WheelSliderMaxIdx;
|
||||
bit W_S_RefChSet;
|
||||
#else
|
||||
unsigned char xdata WheelSliderRefCh;
|
||||
unsigned int xdata WheelSliderCapRateFilter;
|
||||
unsigned char xdata WheelSliderMaxIdx;
|
||||
#endif
|
||||
unsigned char TS_BaseCh;
|
||||
unsigned char ActiveTouchType;
|
||||
#else
|
||||
/***************************************************************************************************************/
|
||||
/***************************************************************************************************************/
|
||||
extern TSState_T idata TS_State;
|
||||
#ifndef TS_SERVICE_C
|
||||
extern TYPE_SN idata PreKeysFlagSN;
|
||||
extern TYPE_SN xdata KeysFlagSN;
|
||||
#endif
|
||||
extern unsigned int TS_Key;
|
||||
extern unsigned int TS_LongKeyTimer;
|
||||
extern unsigned char TK_State;
|
||||
|
||||
extern bit TS_CycleScanDoneFlag;
|
||||
extern unsigned char idata TS_Cnt;
|
||||
extern unsigned int xdata TS_RefChRawData;
|
||||
extern unsigned int xdata TS_RawData[];
|
||||
|
||||
extern unsigned int xdata TS_BaseLineData[];
|
||||
extern unsigned int xdata TS_FirstAreaData[];
|
||||
extern unsigned char xdata TS_AreaConfirmTimer[];
|
||||
extern unsigned int xdata TS_PostData[];
|
||||
|
||||
extern unsigned int xdata TSKey_FingerThd[];
|
||||
extern unsigned char xdata TSKey_LongTouchLimitTimer[];
|
||||
|
||||
/***************************************************************************************************************/
|
||||
/***************************************************************************************************************/
|
||||
extern unsigned char xdata TS_Init_Step;
|
||||
extern unsigned char idata TS_RefCHBaseLineAdjuTimer;
|
||||
extern unsigned char TS_Index;
|
||||
|
||||
extern unsigned char idata TS_CH[];
|
||||
extern unsigned char TS_AcqCnt;
|
||||
extern unsigned char xdata EnterStopScanTimer;
|
||||
|
||||
extern code unsigned int TS_CH_INFO_SEQ[][2];
|
||||
extern bit TS_StableFlag;
|
||||
extern bit TS_SleepEn;
|
||||
extern bit TS_SleepMode;
|
||||
|
||||
extern unsigned char xdata TSWheelSlider_TouchConfirmTimer;
|
||||
extern unsigned char xdata TSWheelSlider_LongTouchLimitTimer;
|
||||
|
||||
extern unsigned char xdata WheelSliderState;
|
||||
extern unsigned char xdata WheelSliderTouchFlag;
|
||||
extern int xdata WheelSliderPosition;
|
||||
extern unsigned int xdata WheelSliderCapRateFilter;
|
||||
extern unsigned char TS_BaseCh;
|
||||
extern unsigned char ActiveTouchType;
|
||||
extern unsigned char xdata WheelSliderRefCh;
|
||||
extern bit W_S_RefChSet;
|
||||
extern unsigned char xdata WheelSliderMaxIdx;
|
||||
extern code unsigned int TS_KEY_CH_INFO_SEQ[][2];
|
||||
|
||||
extern code unsigned char WHEEL_SLIDER0_MAX_MIN_TAB[];
|
||||
extern code unsigned char AREA_CONFIRM_TIME_TAB[];
|
||||
extern code unsigned int MASK_TAB[];
|
||||
|
||||
#endif
|
||||
|
||||
void TS_init(void);
|
||||
void TS_Action(void);
|
||||
void TS_GetKey(void);
|
||||
void TS_EnterSleepMode(void);
|
||||
void TS_ISR(void);
|
||||
#endif
|
||||
@@ -0,0 +1,288 @@
|
||||
#ifndef _TS_CFG_H
|
||||
#define _TS_CFG_H
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define DEBUG 0 //1:打开在线调试功能; 0:关闭在线调试功能
|
||||
//注意:只有触摸键应用才支持在线调试,滑条应用不支持在线调试。
|
||||
/********************************************************************************************************
|
||||
说明:
|
||||
触摸在线调试功能可在PC端显示当前触摸值、基准值、门限值,可在PC端设置触摸灵敏度,并导出配置文件,
|
||||
此功能需配合仿真下载器及上位机工具CACHIPTOOL.exe才能使用。详细使用方法请参考相关文档说明。
|
||||
********************************************************************************************************/
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define SUPPORT_KEY 1 //1:支持触摸按键; 0:不支持触摸按键
|
||||
#define SUPPORT_WHEEL_SLIDER 1 //1:支持触摸触摸滑条或圆环;0:不支持触摸滑条或圆环
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
/***********触摸省电模式设置********************************************************************************************************/
|
||||
#define SUPPORT_TOUCH_SLEEP_MODE 1 //1:支持 0:不支持
|
||||
|
||||
#if SUPPORT_TOUCH_SLEEP_MODE
|
||||
#define ENTER_STOP_MODE_TIME 5 //进入触摸省电模式倒数时间,单位为0.5S,如定义为5,5*0.5=2.5秒,即2.5秒无触摸即进入省电模式。
|
||||
#define SLEEP_MODE_SCAN_INTERVAL_TIME 100 //扫描触摸的间隔时间,单位约为1ms,注意:此时间越长,芯片待机功耗越低,但触摸响应速度越慢。demo值100
|
||||
#define SLEEP_TOUTH_THD 9/*15*/ //触摸省电模式下门限值设置,当触摸数据变化量大于此数值将退出省电模式。
|
||||
|
||||
#define ENTER_SLEEP_PRINT_EN 1 //省电模式打印开关,主要是为了验证触摸是否正常进入省电模式。进入触摸省电模式时打印"sleep",退出省电模式时打印"exit"
|
||||
|
||||
//注意:使能触摸省电模式后,如在某些条件不需要进入省电模式,只需要把TS_SleepEn设为0,如需要进省电模式,把TS_SleepEn设为1。
|
||||
#endif
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
#define TS_ACQ_TIMES 1 //该定义表示多少次采集数据相加进行运算
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
/********************触摸数据滤波设置*********************************************************/
|
||||
#define FILTER_COUNT 5
|
||||
//说明:此数值越大,数据越平滑,但是按键响应速度越慢
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
/*******************触摸充电和比较器基准选择***********************************************************************/
|
||||
#define SOURCE_VDD 0
|
||||
#define SOURCE_INNER 1
|
||||
|
||||
#define TK_CHARGE_REF_SELECT SOURCE_INNER //SOURCE_VDD: 触摸充电电源选择为VDD,比较器基准为VDD分压 SOURCE_INNER:触摸充电电源为内部运放,比较器基准为内部基准。
|
||||
//注意:一般在芯片供电存在低频干扰时选择为SOURCE_INNER, 当选择为SOURCE_INNER后, 芯片静态电流会增加1~2mA.
|
||||
|
||||
#if (TK_CHARGE_REF_SELECT == SOURCE_VDD)
|
||||
#define VRS_VAL 2 //比较器阈值,取值范围为:0~7,数值越大,比较器阈值电压越低。
|
||||
#elif (TK_CHARGE_REF_SELECT == SOURCE_INNER)
|
||||
#define VDS_VAL 1 //触摸内部运放输出电压选择,可选范围:0~3,0:2V 1:2.5V 2:3V 3:4V
|
||||
#define VIRS_VAL 1 //触摸比较器阈值电压选择,可选范围:0~3,0:1V 1:1.5V 2:2V 3:2.5V
|
||||
#endif
|
||||
#define TKDIV_VAL 0 //触摸充放电时钟分频系数,取值范围为:0~7,对应的时钟频率为:4M~500K,此数值越大,频率越低。
|
||||
#define TKTMS_VAL 10 //放电时间定义,取值范围为:1~31,数值越大,放电时间越长。
|
||||
|
||||
/*
|
||||
说明:
|
||||
1. 当设置为内部运放及内部基准时(即TK_CHARGE_REF_SELECT==SOURCE_INNER),内部运放电压要大于比较器阈值电压,即VDS_VAL定义的电压要大于VIRS_VAL定义的电压。
|
||||
2. 当设置为内部运放及内部基准时(即TK_CHARGE_REF_SELECT==SOURCE_INNER),内部运放电压要比芯片供电电压低0.5V以上,否则运放电压可能不稳定。
|
||||
3. 当设置为内部运放及内部基准时(即TK_CHARGE_REF_SELECT==SOURCE_INNER),芯片供电至少要接10uF以上电容。
|
||||
*/
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define POWER_ON_WAIT_TK_STABLE_EN 0 //上电后等待触摸稳定后再设置触摸环境值初值
|
||||
//------------------------------------------------------------------------------------------------------------------------
|
||||
#define SUPPORT_ANTI_WATER_FUNCTION 0 //防水补偿模式开关
|
||||
|
||||
#if SUPPORT_ANTI_WATER_FUNCTION
|
||||
#define TK_PC_VAL 2
|
||||
#else
|
||||
#define TK_PC_VAL 1
|
||||
#endif
|
||||
/*
|
||||
说明:
|
||||
1. 此功能只能在触摸按键时打开,触摸滑条或圆环不支持。
|
||||
2. 打开防水补偿模式时,触摸充电电源最好选择为VDD(即 TK_CHARGE_REF_SELECT == SOURCE_VDD)。
|
||||
3. 在此模式下,触摸走线对地间的寄生电容必须大于触摸通道间的寄生电容,否则触摸充电无法达到比较器阈值电压,建议PCB多铺地,触摸走线的间距尽可能宽
|
||||
4. 打开防水模式后,只能有一个按键响应(不支持复合键)。
|
||||
*/
|
||||
|
||||
//---------------------------------------------------------------------------------------------------
|
||||
#define TK_BASE_TRIM_WHILE_KEY_PRESSED 0 //在触摸按键按下时,该触摸通道仍以内部参考通道为参考实时更新环境值,此功能可解决某些应用中,因长时间连续快速触摸按键导致该触摸通道无法更新环境值,从而导致触摸按键无效或灵敏度发生改变的问题。
|
||||
//注意: 如果TK_CAP引脚所接电容为普通电容(温度特性校差),触摸工作后长期快速按触摸键一段时间后,触摸键有可能会长期触发,打开此功能可解决这种情况。
|
||||
//---------------------------------------------------------------------------------------------------
|
||||
#define TK_FREQ_JUMP_EN 0 //跳频功能使能开关,打开跳频功能对于CS认证测试性能有较大提升,但会降低触摸采集速度,可能对触摸按键响应时间有一定影响
|
||||
#if TK_FREQ_JUMP_EN
|
||||
#if (TKDIV_VAL < 7)
|
||||
#define TKDIV_VAL2 (TKDIV_VAL+1)
|
||||
#else
|
||||
#define TKDIV_VAL2 (TKDIV_VAL-1)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//-----------------触摸键应用设置--------------------------------------------------------------------------------------------------
|
||||
#if SUPPORT_KEY
|
||||
#define GENERATE_TS_KEY_EN 0 //根据KeysFlagSN状态产生触摸键消息TS_Key使能,如果不需要产生TS_Key,用户可直接根据KeysFlagSN来判断按键状态。
|
||||
#if GENERATE_TS_KEY_EN
|
||||
#define GENERATE_DOUBLE_KEY_EN 0 //产生复合键
|
||||
#define PRINT_TS_KEY_EN 0 //打印触摸按键值开关
|
||||
#endif
|
||||
|
||||
/***********上电再盖上触摸面板功能操作开关定义*******************************************************************************************************/
|
||||
#define SUPPORT_COVER_PANAL_AFTER_POWERON 0 //1:支持上电再盖上触摸面板 0:不支持
|
||||
#if SUPPORT_COVER_PANAL_AFTER_POWERON
|
||||
#define PANAL_COVER_JUDGE_TIME 2 //单位为15.625ms
|
||||
#define JUDGE_TK_NUM (KEY_CH_COUNT-2)
|
||||
#endif
|
||||
//说明:上电后再盖上触摸面板,一般情况下会有多个按键触摸数值变化量超过或接近触摸门限值,为了防止此类操作产生误动作,在检测到多个按键超过或接近触发门限值时,设置按键无效并重置触摸功能。
|
||||
/*******************************************************************************************************************************/
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
/********触摸按键通道及触发门限值定义***********************************************************/
|
||||
#define KEY_CH_COUNT 8 //触摸按键数量,必须正确填写
|
||||
//
|
||||
// #define KEY_SEQ \
|
||||
// {TS_CH0 , 300 }, \
|
||||
// {TS_CH1 , 300 }, \
|
||||
// {TS_CH2 , 500 }, \
|
||||
// {TS_CH3 , 500 }, \
|
||||
// {TS_CH4 , 300 }, \
|
||||
// {TS_CH5 , 400 }, \
|
||||
// {TS_CH6 , 600 }, \
|
||||
// {TS_CH7 , 500 }, \
|
||||
|
||||
|
||||
#define KEY_SEQ \
|
||||
{TS_CH0 , 100 }, \
|
||||
{TS_CH1 , 100 }, \
|
||||
{TS_CH2 , 200 }, \
|
||||
{TS_CH3 , 90 }, \
|
||||
{TS_CH4 , 90 }, \
|
||||
{TS_CH5 , 100 }, \
|
||||
{TS_CH6 , 250 }, \
|
||||
{TS_CH7 , 300 }, \
|
||||
|
||||
|
||||
/*
|
||||
{TS_CH0 , 190 }, \
|
||||
{TS_CH1 , 190 }, \
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
说明:
|
||||
1: {TS_CHx, XX}
|
||||
| |
|
||||
| |
|
||||
| ------------->对应触摸通道的门限值,当触摸数据变化量大于此数值时,按键触发。
|
||||
--------------------->触摸通道序号。
|
||||
|
||||
2: 以上触摸门限值可在触摸在线调试模式下由上位机软件(CACHIPTOOL.exe)导出。
|
||||
*********************************************************************/
|
||||
|
||||
/***********NOISE门限值定义************************************************************************************/
|
||||
#define NOISE_THRESHOLD 30 //此门限值可设置为触摸按键门限值的1/4 ~ 1/2
|
||||
/*************************************************************************************************************/
|
||||
|
||||
#define ANTI_SPEAKER_EN 0 //抗对讲机干扰使能开关,此功能主要是利用内部触摸参考通道来判断电源是否受对讲机干扰,如果是电源受对讲机干扰而误产生按键,则产生的按键丢弃。
|
||||
|
||||
#if ANTI_SPEAKER_EN
|
||||
#define REF_CH_ABNORMAL_THD 8 //定义内部参考通道数值变化多少才认为是有对讲机干扰
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define TK_SHARE_LED_EN 0 //触摸引脚复用LED驱动引脚功能开关
|
||||
|
||||
#if TK_SHARE_LED_EN
|
||||
/**************************************************************************************
|
||||
重要提醒: 在此应用中,由于LED灯本身存在结电容,不同种类的LED灯的结电容存在较大差异,并且此结电容在LED灯亮与灭时
|
||||
可能存在差异(尤其是白色LED比较明显),此结电容对触摸存在不良影响,所以在应用此功能时要严格挑选LED灯,并且量产后如
|
||||
要更换LED灯要重新调试软件灵敏度。
|
||||
***************************************************************************************/
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
#define LED_DRV_CNT 2000 //此项参数可设置LED扫描占空比,数值越大,LED亮度越高,但触摸采集的速度越慢
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#define TK_SENSITIVE_AUTO_TRIM_EN 0 //见以下说明
|
||||
|
||||
/*
|
||||
此功能选项用于解决生产过程中应用不同的LED灯造成灵敏度差异问题,
|
||||
在应用时必须填写以下列表数值,数值的涵义是无按键时每个触摸通道的计数数值,
|
||||
其顺序对应上面定义的KEY_SEQ列表,计数数值也对应KEY_SEQ中定义的门限值,
|
||||
在应用时如果换上不同批次或不同颜色的LED灯,由于不同颜色的LED灯的结电容可能不同,
|
||||
从而造成触摸计数数值也不同,程序会根据以下定义的参考计数值相应调整其门限值,从而使
|
||||
应用不同的LED灯灵敏度基本一致,而不需要用户更改软件。
|
||||
*/
|
||||
|
||||
#if TK_SENSITIVE_AUTO_TRIM_EN
|
||||
|
||||
#define TK_BASELINE_VALUE_SEQ \
|
||||
1740, \
|
||||
1872, \
|
||||
1812, \
|
||||
1830, \
|
||||
1947, \
|
||||
1779, \
|
||||
1672, \
|
||||
1960, \
|
||||
1808, \
|
||||
1710,
|
||||
#endif
|
||||
#else
|
||||
#define TK_SENSITIVE_AUTO_TRIM_EN 0
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
/***********触摸按键消抖及按键输出时间定义************************************************************************************/
|
||||
#define FINGER_TOUCH_CONFIRM_TIME 2 //触摸按键按下确认时间,单位为15.625ms
|
||||
#define FINGER_TOUCH_RELEASE_CONFIRM_TIME 2 //触摸按键释放确认时间,单位为15.625ms
|
||||
#define FINGER_LONG_TOUCH_TIME_LIMIT 0 //限制按键输出时间,单位为0.5s,若定义为0,则关闭此功能
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
/***********环境值更新速度设置********************************************************/
|
||||
#define AREA_PNOISE_PLUS_CONFIRM_TIME 100 //单位为15.625ms
|
||||
#define AREA_PNOISE_CONFIRM_TIME 80 //单位为15.625ms
|
||||
#define AREA_NNOISE_CONFIRM_TIME 30 //单位为15.625ms
|
||||
#define AREA_OVERLOW_CONFIRM_TIME 30 //单位为15.625ms
|
||||
|
||||
//说明:一般情况下,环境值更新速度设置用户不需要设置,保持默认值即可。
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#else
|
||||
#define KEY_CH_COUNT 0
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------触摸滑条或圆环应用设置-------------------------------------------------------------------------------------------------
|
||||
#if SUPPORT_WHEEL_SLIDER
|
||||
//-----------------------------------------------------------------------------
|
||||
#define PRINT_WHEEL_SLIDER_POSITION_EN 0 //打印触摸圆环或滑条位置开关
|
||||
#define PRINT_WHEEL_SLIDER_DATA_EN 0 //打印触摸圆环或滑条触摸数据开关
|
||||
#define PRINT_WHEEL_SLIDER_RATE_EN 0 //打印比率值
|
||||
|
||||
|
||||
#define WHEEL_SLIDER_BASELINE_UPDATE_TIME 50 //单位为15.625ms
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define WHEEL_SLIDER_TOUCH_CONFIRM_TIME 2 //圆环或滑条按下确认时间,单位为15.625ms
|
||||
#define WHEEL_SLIDER_TOUCH_RELEASE_CONFIRM_TIME 2 //圆环或滑条释放确认时间,单位为15.625ms
|
||||
#define WHEEL_SLIDER_LONG_TOUCH_TIME_LIMIT 0 //限制圆环和滑条触发时间,单位为0.5s,若定义为0,则关闭此功能
|
||||
//------------------------------------------------------------------------------------
|
||||
|
||||
#define WHEEL_OR_SLIDER_DEF0 WHEEL //是滑条还是圆环,如果是滑条,定义为SLIDER,如果是圆环,定义为WHEEL
|
||||
|
||||
#define WHEEL_SLIDER0_CH_COUNT 4 //第一个圆环或滑条通道数目,必须正确填写
|
||||
#define WHEEL_SLIDER0_SEQ TS_CH8,TS_CH11,TS_CH10,TS_CH9 //通道列表,以顺时钟或从左到右的顺序填写
|
||||
#define WHEEL_SLIDER0_CH_MIN_RATE 70, 40, 40, 70 //手指触摸某通道中间位置时,邻近通道与该通道变化量的比率,该数值与上述通道定义一一对应。该数值可通过打开宏定义PRINT_WHEEL_SLIDER_RATE_EN通过UART打印。
|
||||
|
||||
|
||||
#define WHEEL_SLIDER0_TOUCH_THD 0x4a //圆环或者滑条灵敏度设置,该值越小越灵敏
|
||||
#define WHEEL_SLIDER0_NOISE_THD 0x08
|
||||
|
||||
#if !SUPPORT_KEY
|
||||
#define NOISE_THRESHOLD WHEEL_SLIDER0_NOISE_THD
|
||||
#endif
|
||||
//------------------------------------------------------------------------------------
|
||||
#else
|
||||
#define WHEEL_SLIDER0_CH_COUNT 0
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
#define OPENED_TS_COUNT (KEY_CH_COUNT+WHEEL_SLIDER0_CH_COUNT)
|
||||
|
||||
#if (!SUPPORT_KEY)
|
||||
#undef DEBUG
|
||||
#define DEBUG 0
|
||||
#endif
|
||||
#if DEBUG
|
||||
#define I2C_SELECT_P30_P31
|
||||
// #define I2C_SELECT_P02_P03
|
||||
|
||||
#ifdef I2C_SELECT_P30_P31
|
||||
#ifdef UART0_EN
|
||||
#error "请在ca51f5_config.h中关闭宏定义UART0_EN!"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#undef SUPPORT_TOUCH_SLEEP_MODE //省电模式不支持触摸在线调试,所以要关闭省电模式
|
||||
#define SUPPORT_TOUCH_SLEEP_MODE 0
|
||||
#endif
|
||||
#define TK_Debug_UartPutChar Uart0_PutChar
|
||||
#endif
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,170 @@
|
||||
//TKCON定义
|
||||
#define TKST(N) (N<<7) //N=0-1
|
||||
#define TKIE(N) (N<<6) //N=0-1
|
||||
#define TMEN(N) (N<<5) //N=0-1 //RTC触发TKST
|
||||
#define TWKE(N) (N<<4) //N=0-1 //省电自动唤醒 0:TKST=0即产生TKIF, 1: TKST=0后满足比较条件后才产生TKIF
|
||||
|
||||
#define VRS(N) (N<<0) //N=0-7 //比较器参考电压选择
|
||||
|
||||
//TKCFG定义
|
||||
#define TKDIV(N) (N<<5) //N=0-7 //时钟分频 分频系数 (TKDIV+1),0:不分频
|
||||
#define TKTMS(N) (N<<0) //N=0-31 //放电时间设置 放电时间: (TKTMS)*32*Ttk , TKTMS必须大于0,如果为0不放电
|
||||
|
||||
//TKxCHS定义 //x=0-5
|
||||
#define MPOL(N) (N<<7) //N=0-1 //0- TKxMS < ATKxM; 1- TKxMS >= ATKxM
|
||||
#define NPOL(N) (N<<6) //N=0-1 //0- TKxMS < ATKxN; 1- TKxMS >= ATKxN
|
||||
#define TKPS(N) (N<<0) //N=0-14 0:不选 1-13对应TK0-TK12; 14对应TKCAP
|
||||
|
||||
//TKIF定义 //TKST=0后一起置位
|
||||
#define TKIF5 (1<<5)
|
||||
#define TKIF4 (1<<4)
|
||||
#define TKIF3 (1<<3)
|
||||
#define TKIF2 (1<<2)
|
||||
#define TKIF1 (1<<1)
|
||||
#define TKIF0 (1<<0)
|
||||
|
||||
//TKPWC定义
|
||||
#define TKPC(N) (N<<6) //N=0-3
|
||||
#define VDS(N) (N<<4) //N=0-3
|
||||
#define VIRS(N) (N<<2) //N=0-3
|
||||
#define TKPWS(N) (N<<1) //N=0-1
|
||||
#define TKCVS(N) (N<<0) //N=0-1
|
||||
|
||||
//TLCON定义
|
||||
#define TLEIE(N) (N<<7) //N=0-1
|
||||
#define TLKIE(N) (N<<6) //N=0-1
|
||||
#define TLLIE(N) (N<<5) //N=0-3
|
||||
#define TLLVS(N) (N<<1) //N=0-3
|
||||
#define TLPOL(N) (N<<0) //N=0-1
|
||||
|
||||
|
||||
//TLFLG定义 //TKST=0后一起置位
|
||||
#define TLERR (1<<7)
|
||||
#define TLKOV (1<<6)
|
||||
#define TLLOV (1<<5)
|
||||
|
||||
//TLCKS??
|
||||
#define TLCKS(N) (N<<0) //N=0-7
|
||||
|
||||
//TLCKS??
|
||||
#define TLCOMS(N) (N<<0) //N=0-7
|
||||
|
||||
|
||||
typedef union
|
||||
{
|
||||
unsigned long int dwVal;
|
||||
unsigned int wVal[2];
|
||||
unsigned char bVal[4];
|
||||
}
|
||||
DWORD_UNION;
|
||||
|
||||
typedef union
|
||||
{
|
||||
unsigned int wVal;
|
||||
unsigned char bVal[2];
|
||||
}
|
||||
WORD_UNION;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TS_INIT,
|
||||
TS_DEAL
|
||||
} TSState_T;
|
||||
|
||||
enum
|
||||
{
|
||||
AREA_FINGER_TOUCH,
|
||||
AREA_PNOISE_PLUS,
|
||||
AREA_PNOISE,
|
||||
AREA_NNOISE,
|
||||
AREA_OVER_LOW
|
||||
};
|
||||
enum
|
||||
{
|
||||
WHEEL_SLIDER_NO_TOUCH,
|
||||
WHEEL_SLIDER_TOUCH,
|
||||
};
|
||||
|
||||
#define WHEEL 0
|
||||
#define SLIDER 1
|
||||
enum
|
||||
{
|
||||
TS_CH0,
|
||||
TS_CH1,
|
||||
TS_CH2,
|
||||
TS_CH3,
|
||||
TS_CH4,
|
||||
TS_CH5,
|
||||
TS_CH6,
|
||||
TS_CH7,
|
||||
TS_CH8,
|
||||
TS_CH9,
|
||||
TS_CH10,
|
||||
TS_CH11,
|
||||
TS_CH12,
|
||||
};
|
||||
enum
|
||||
{
|
||||
LED_ON,
|
||||
LED_OFF,
|
||||
LED_ALL_OFF,
|
||||
};
|
||||
#ifndef TS_SERVICE_C
|
||||
#if (KEY_CH_COUNT <= 8)
|
||||
#define TYPE_SN unsigned char
|
||||
#elif (KEY_CH_COUNT <= 16)
|
||||
#define TYPE_SN unsigned int
|
||||
#else
|
||||
#define TYPE_SN unsigned long int
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define KEY_BREAK 0x1000 //短按抬起
|
||||
#define KEY_LONG 0x2000 //长按
|
||||
#define KEY_LONG_BREAK 0x3000 //长按抬起
|
||||
#define KEY_LONG_START 0x4000 //长按开始
|
||||
|
||||
#define K1 0x0001
|
||||
#define K2 0x0002
|
||||
#define K3 0x0003
|
||||
#define K4 0x0004
|
||||
#define K5 0x0005
|
||||
#define K6 0x0006
|
||||
#define K7 0x0007
|
||||
#define K8 0x0008
|
||||
#define K9 0x0009
|
||||
#define K10 0x000a
|
||||
#define K11 0x000b
|
||||
#define K12 0x000c
|
||||
#define K13 0x000d
|
||||
#define K14 0x000e
|
||||
#define K15 0x000f
|
||||
#define K16 0x0010
|
||||
#define K17 0x0011
|
||||
#define K18 0x0012
|
||||
#define K19 0x0013
|
||||
#define K20 0x0014
|
||||
#define K21 0x0015
|
||||
#define K22 0x0016
|
||||
#define K23 0x0017
|
||||
#define K24 0x0018
|
||||
#define K25 0x0019
|
||||
#define K26 0x001a
|
||||
#define K27 0x001b
|
||||
#define K28 0x001c
|
||||
#define K29 0x001d
|
||||
#define K30 0x001e
|
||||
#define K31 0x001f
|
||||
|
||||
enum
|
||||
{
|
||||
TK_STATE_RELEASE,
|
||||
TK_STATE_SINGLE_KEY_PRESS,
|
||||
TK_STATE_DOUBLE_KEY_PRESS,
|
||||
};
|
||||
|
||||
#define TS_LONG_START_TIME 250
|
||||
#define TS_LONG_TIME 70
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef _TS_SERVICE_H_
|
||||
#define _TS_SERVICE_H_
|
||||
|
||||
void TS_IO_init(void);
|
||||
void TS_ScanStart(void);
|
||||
void TS_ScanContinue(void);
|
||||
void TSKey_DataDeal(void);
|
||||
void TS_RunInit(void);
|
||||
void TS_CheckRefCh(void);
|
||||
void TS_AreaConfirmTimerSet(unsigned char ts_ch, unsigned char area);
|
||||
void TS_MS_ISR(void);
|
||||
void TS_HS_ISR(void);
|
||||
void TS_CfgPinFunc(unsigned char idx,unsigned char Func);
|
||||
unsigned char TS_GetDataArea(unsigned char ts_ch,unsigned int ts_data,int noise_thd,bit key_pressed_flag);
|
||||
unsigned char TS_AreaDeviateDetection(unsigned int cmp_data,unsigned int real_data,int range);
|
||||
void TS_BaseLineForceUpdate(void);
|
||||
void SetWheelSliderRefCh(unsigned char SliderNum);
|
||||
int WheelTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V);
|
||||
int SliderTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V);
|
||||
#endif
|
||||
@@ -0,0 +1,122 @@
|
||||
#ifndef _I2C_C_
|
||||
#define _I2C_C_
|
||||
|
||||
/*********************************************************************************************************************/
|
||||
#include "ca51f5_config.h"
|
||||
#include "includes\ca51f5sfr.h"
|
||||
#include "includes\ca51f5xsfr.h"
|
||||
#include "includes\gpiodef_f5.h"
|
||||
#include "Library\Includes\system_clock.h"
|
||||
#include "Library\Includes\i2c.h"
|
||||
/*********************************************************************************************************************/
|
||||
#include "TS_Lib\Includes\ts_configuration.h"
|
||||
#include "TS_Lib\Includes\ts_def.h"
|
||||
#include "TS_Lib\Includes\ts_api.h"
|
||||
#include "TS_Lib\Includes\ts_service.h"
|
||||
/*********************************************************************************************************************/
|
||||
#if DEBUG
|
||||
#define I2C_ADDR 0xCA
|
||||
unsigned char xdata TouchDebugID = '5';
|
||||
unsigned char rxOffset;
|
||||
unsigned char regAddr;
|
||||
bit iicReadMode;
|
||||
extern TSState_T xdata TS_State_Debug;
|
||||
extern unsigned char xdata Key_Cnt_Debug;
|
||||
extern unsigned char xdata TS_CH_Debug[OPENED_TS_COUNT];
|
||||
extern unsigned int xdata TS_RefChBaseLineData;
|
||||
extern unsigned int xdata TS_RefPostData;
|
||||
extern unsigned int xdata KeysFlagSN_Debug;
|
||||
code unsigned char *TS_INFO[]=
|
||||
{
|
||||
&TouchDebugID,
|
||||
&TS_State_Debug,
|
||||
&Key_Cnt_Debug,
|
||||
&TS_RefChBaseLineData,
|
||||
&TS_RefPostData,
|
||||
&KeysFlagSN_Debug,
|
||||
&TS_BaseLineData[0],
|
||||
&TS_PostData[0],
|
||||
&TSKey_FingerThd[0],
|
||||
&TS_CH_Debug[0],
|
||||
};
|
||||
unsigned char *pTS_Info;
|
||||
void I2C_ISR(void)
|
||||
{
|
||||
unsigned char Sta_Temp;
|
||||
TouchDebugID = '5';
|
||||
Sta_Temp = I2CSTA;
|
||||
|
||||
if(Sta_Temp == 0x60) //接收到从机地址+写位
|
||||
{
|
||||
rxOffset = 0xff;
|
||||
iicReadMode = 0;
|
||||
I2CCON |= AAK(1);
|
||||
}
|
||||
else if(Sta_Temp == 0x80)
|
||||
{
|
||||
if(iicReadMode) //发送一字节数据
|
||||
{
|
||||
rxOffset++;
|
||||
I2CDAT = *(pTS_Info+rxOffset);
|
||||
}
|
||||
else //接收到一字节数据
|
||||
{
|
||||
if(rxOffset == 0xff) //地址
|
||||
{
|
||||
regAddr=I2CDAT;
|
||||
pTS_Info = TS_INFO[regAddr];
|
||||
rxOffset=0;
|
||||
I2CCON |= AAK(1);
|
||||
}
|
||||
else //数据
|
||||
{
|
||||
*(pTS_Info+rxOffset) = I2CDAT;
|
||||
rxOffset++;
|
||||
I2CCON |= AAK(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(Sta_Temp==0xA8) //接收到从机地址+读位,发送ACK信号
|
||||
{
|
||||
I2CDAT = *(pTS_Info+rxOffset);
|
||||
iicReadMode = 1;
|
||||
}
|
||||
else if(Sta_Temp == 0x88)
|
||||
{
|
||||
}
|
||||
I2CFLG |= I2CF;
|
||||
}
|
||||
void Debug_init(void)
|
||||
{
|
||||
#ifdef I2C_SELECT_P30_P31
|
||||
I2CIOS = 0;
|
||||
GPIO_Init(P30F,P30_I2C_SDA_SETTING);
|
||||
GPIO_Init(P31F,P31_I2C_SCL_SETTING);
|
||||
#elif defined I2C_SELECT_P02_P03
|
||||
I2CIOS = 1;
|
||||
GPIO_Init(P03F,P03_I2C_SDA_SETTING);
|
||||
GPIO_Init(P02F,P02_I2C_SCL_SETTING);
|
||||
#endif
|
||||
|
||||
I2CCON = I2CE(1) | I2CIE(1) | STA(0) | STP(0)| CKHD(0) | AAK(1)| CBSE(0) | STFE(0);
|
||||
I2CADR = (I2C_ADDR>>1);
|
||||
|
||||
INT4EN = 1;
|
||||
PS1 = 1;
|
||||
}
|
||||
void Debug_ParamLoad(void)
|
||||
{
|
||||
unsigned char i;
|
||||
KeysFlagSN_Debug = (unsigned int)KeysFlagSN;
|
||||
TS_State_Debug = TS_State;
|
||||
Key_Cnt_Debug = KEY_CH_COUNT;
|
||||
for(i = 0; i < KEY_CH_COUNT; i++)
|
||||
{
|
||||
TS_CH_Debug[i] = TS_CH[i];
|
||||
}
|
||||
TS_RefPostData = TS_PostData[OPENED_TS_COUNT];
|
||||
TS_RefChBaseLineData = TS_RefPostData;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,39 @@
|
||||
#ifndef CA51F_CONFIG_H
|
||||
#define CA51F_CONFIG_H
|
||||
/**************************************************************************************************************/
|
||||
#define IRCH 0
|
||||
#define IRCL 1
|
||||
|
||||
/**************************************************************************************************************/
|
||||
#define SYSCLK_SRC IRCH //芯片系统时钟选择
|
||||
/**************************************************************************************************************/
|
||||
|
||||
|
||||
/************系统时钟频率定义,主要用于配置UART波特率**********************************************************/
|
||||
#if (SYSCLK_SRC == IRCH)
|
||||
#define FOSC (16000000)
|
||||
#elif (SYSCLK_SRC == IRCL)
|
||||
#define FOSC (131000)
|
||||
#endif
|
||||
/***************************************************************************************************************/
|
||||
|
||||
|
||||
/*************************UART功能开关宏定义********************************************************************/
|
||||
//#define UART0_EN //如果使用UART0,打开此宏定义
|
||||
|
||||
#ifdef UART0_EN
|
||||
#define UART0_BAUTRATE 115200
|
||||
#endif
|
||||
/*********************************************************************************************************************/
|
||||
#define LVD_RST_ENABLE
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*********************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[EXTDLL]
|
||||
Count=0
|
||||
@@ -0,0 +1 @@
|
||||
"Library\Lib\STARTUP.A51" NOMOD51 SET (SMALL) DEBUG PRINT(.\lst\STARTUP.lst) OBJECT(.\hex\STARTUP.obj) EP
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,78 @@
|
||||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>礦ision Build Log</h1>
|
||||
<h2>Tool Versions:</h2>
|
||||
IDE-Version: μVision V5.38.0.0
|
||||
Copyright (C) 2022 ARM Ltd and ARM Germany GmbH. All rights reserved.
|
||||
License Information: 1 850080437@qq.com, 1, LIC=58E4T-R1XQA-VPRZ0-B1X1S-MM33I-0X956
|
||||
|
||||
Tool Versions:
|
||||
Toolchain: PK51 Prof. Developers Kit Version: 9.60.7.0
|
||||
Toolchain Path: D:\Program Files\Keil_v5\C51\BIN
|
||||
C Compiler: C51.exe V9.60.7.0
|
||||
Assembler: A51.exe V8.2.7.0
|
||||
Linker/Locator: LX51.exe V4.66.100.0
|
||||
Library Manager: LIBX51.exe V4.30.1.0
|
||||
Hex Converter: OHX51.exe V1.47.0.0
|
||||
CPU DLL: S8051.DLL V3.125.1.0
|
||||
Dialog DLL: DCore51.DLL V2.81.8.0
|
||||
Target DLL: CA8051.dll V???
|
||||
Dialog DLL: TCore51.DLL V2.66.5.0
|
||||
|
||||
<h2>Project:</h2>
|
||||
D:\workplace\工作文件\程序\锦锐\CA51F551S3\8键面板触摸\CA51F5_Touch_DemoProj_v2.3-433M_20220419\CA51F5_Touch.uvproj
|
||||
Project File Date: 11/24/2023
|
||||
|
||||
<h2>Output:</h2>
|
||||
*** Note: Rebuilding project, since 'Options->Output->Create Batch File' is selected.
|
||||
Rebuild target 'CA51F5'
|
||||
compiling main.c...
|
||||
TS_Lib\Includes\ts_configuration.h(117): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(118): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(119): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(120): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(121): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(122): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(123): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(124): warning C329: single-line comment contains line-continuation
|
||||
compiling delay.c...
|
||||
compiling system_clock.c...
|
||||
compiling uart.c...
|
||||
compiling interrupt.c...
|
||||
TS_Lib\Includes\ts_configuration.h(117): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(118): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(119): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(120): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(121): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(122): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(123): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(124): warning C329: single-line comment contains line-continuation
|
||||
compiling rf_send.c...
|
||||
compiling debug.c...
|
||||
TS_Lib\Includes\ts_configuration.h(117): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(118): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(119): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(120): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(121): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(122): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(123): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(124): warning C329: single-line comment contains line-continuation
|
||||
compiling ts_api.c...
|
||||
TS_Lib\Includes\ts_configuration.h(117): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(118): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(119): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(120): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(121): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(122): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(123): warning C329: single-line comment contains line-continuation
|
||||
TS_Lib\Includes\ts_configuration.h(124): warning C329: single-line comment contains line-continuation
|
||||
assembling STARTUP.A51...
|
||||
linking...
|
||||
Program Size: data=93.7 xdata=419 const=347 code=5200
|
||||
creating hex file from ".\hex\ca51fx_onoff"...
|
||||
".\hex\ca51fx_onoff" - 0 Error(s), 32 Warning(s).
|
||||
Build Time Elapsed: 00:00:08
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,350 @@
|
||||
:10000000020F719404E50C9400223202120B90014D
|
||||
:1000100000E004F0785AE66001169000FBE0600210
|
||||
:0700200014F02202000A3275
|
||||
:03002B0002107C44
|
||||
:10003300020026BB010689828A83F0225002F7223E
|
||||
:10004300BBFE01F322EF8DF0A4A8F0CF8CF0A4281F
|
||||
:10005300CE8DF0A42EFE22BC000BBE0029EF8DF046
|
||||
:1000630084FFADF022E4CCF875F008EF2FFFEE33F8
|
||||
:10007300FEEC33FCEE9DEC984005FCEE9DFE0FD5A7
|
||||
:10008300F0E9E4CEFD22EDF8F5F0EE8420D21CFE7B
|
||||
:10009300ADF075F008EF2FFFED33FD4007985006E4
|
||||
:1000A300D5F0F222C398FD0FD5F0EA22C2D5EC3089
|
||||
:1000B300E709B2D5E4C39DFDE49CFCEE30E715B23D
|
||||
:1000C300D5E4C39FFFE49EFE12005AC3E49DFDE402
|
||||
:1000D3009CFC800312005A30D507C3E49FFFE49EC3
|
||||
:1000E300FE22C5F0F8A3E028F0C5F0F8E5821582FA
|
||||
:1000F30070021583E038F022E88FF0A4CC8BF0A4D3
|
||||
:100103002CFCE98EF0A42CFC8AF0EDA42CFCEA8EE6
|
||||
:10011300F0A4CDA8F08BF0A42DCC3825F0FDE98F09
|
||||
:10012300F0A42CCD35F0FCEB8EF0A4FEA9F0EB8F00
|
||||
:10013300F0A4CFC5F02ECD39FEE43CFCEAA42DCECD
|
||||
:1001430035F0FDE43CFC2275F008758200EF2FFFCB
|
||||
:10015300EE33FECD33CDCC33CCC58233C5829BED9C
|
||||
:100163009AEC99E58298400CF582EE9BFEED9AFDA0
|
||||
:10017300EC99FC0FD5F0D6E4CEFBE4CDFAE4CCF950
|
||||
:10018300A88222B800C1B90059BA002DEC8BF084C3
|
||||
:10019300CFCECDFCE5F0CBF97818EF2FFFEE33FE91
|
||||
:1001A300ED33FDEC33FCEB33FB10D703994004EB49
|
||||
:1001B30099FB0FD8E5E4F9FA227818EF2FFFEE3315
|
||||
:1001C300FEED33FDEC33FCC933C910D7059BE99A27
|
||||
:1001D3004007EC9BFCE99AF90FD8E0E4C9FAE4CCB8
|
||||
:1001E300FB2275F010EF2FFFEE33FEED33FDCC3322
|
||||
:1001F300CCC833C810D7079BEC9AE899400AED9B0B
|
||||
:10020300FDEC9AFCE899F80FD5F0DAE4CDFBE4CCE9
|
||||
:10021300FAE4C8F922E8600FECC313FCED13FDEE1A
|
||||
:1002230013FEEF13FFD8F122A42582F582E5F03502
|
||||
:1002330083F58322E493FB740193FA740293F92206
|
||||
:10024300D083D082F8E4937012740193700DA3A34A
|
||||
:1002530093F8740193F5828883E47374029368605E
|
||||
:10026300EFA3A3A380DFEC8EF0A4CCC5F0CCCDF834
|
||||
:10027300EFA4CEC5F02DFDE43CFCE8A42EC8C5F0E8
|
||||
:100283003DFDE43CFCEFA4FFE5F028FEE43DFDE486
|
||||
:100293003CFC228F358C368D37E4F543F544F5412C
|
||||
:1002A300F542F538E538C3953540030203809000E5
|
||||
:1002B300B5E0FF6538701CE5192FFFE412080CFC4C
|
||||
:1002C300A3E0FD1207F7FEA3E0C39DF540EE9CF506
|
||||
:1002D3003F80641207E31208031208D08F3C8E3B61
|
||||
:1002E3008D3A8C39E5192538FFE41207EE1208E63A
|
||||
:1002F300AF3CAE3B1201868E3D8F3E1207E31208E0
|
||||
:10030300031208DB953EFFEE953DAB07FAE4F9F8DF
|
||||
:10031300AF3CAE3BAD3AAC391201868E3D8F3E9079
|
||||
:1003230000B5E02519FFE41207EEFEA3E0C3953EF6
|
||||
:10033300F540EE953DF53FC3E53F6480948050055D
|
||||
:10034300E4F53FF540D3E5409542E53F9541401440
|
||||
:10035300854546854143854244853845853F4185EA
|
||||
:1003630040428014D3E5409544E53F9543400985D9
|
||||
:100373003846853F4385404405380202A7E54225B8
|
||||
:1003830044FFE5413543FEC3EF9537EE95365005FF
|
||||
:100393007EFF7FFF22E536C313FEE53713FFC3E578
|
||||
:1003A300429FF540E5419EF53FFEAF407C007D0A4C
|
||||
:1003B3001200481208B9EDD3941F40027D1FEDAC23
|
||||
:1003C30036AD37120875CEC313CE13D8F9F53E8E6A
|
||||
:1003D3003D2542F542E53D3541F541E53E2544F5F0
|
||||
:1003E30044E53D3543F543E544AE437807C333CE97
|
||||
:1003F30033CED8F9FF1208B9900124E07002A3E0CC
|
||||
:100403007005120892800D1208C3CEC313CE13D801
|
||||
:10041300F912084B1208F0CEC313CE13D8F9FD908E
|
||||
:1004230000D0E545F075F040A485F047F548E54573
|
||||
:100433001208A25002AD07E545120821C333CE339B
|
||||
:10044300CED8F9120833AD07AC06E545700AE53599
|
||||
:1004530014B54604C206801BE53514B54508E546C8
|
||||
:100463007004D206800DE545C395465004D206803C
|
||||
:1004730002C20630060CED2548F548EC3547F54732
|
||||
:100483008022E54845477011E53575F040A4AEF08C
|
||||
:1004930024FFF548EE34FFF547C3E5489DF548E5ED
|
||||
:1004A300479CF547AE47AF4822E4F532F5F875FBB4
|
||||
:1004B3003FD20153D57F43D501E5F854F84407F5FE
|
||||
:1004C300F853F8BF75F90F75FA329081037440F051
|
||||
:1004D300E4F5E8F5C0908030F090FC00E04440F093
|
||||
:1004E300E58654F04407F586E4F5161213EA75A180
|
||||
:1004F300A575D58075D67FE532601F908030E054B6
|
||||
:100503007FF0E054FE4401F0C2AF438702000000D5
|
||||
:10051300E04480F0E054FEF0D2AF900100E0FFC36E
|
||||
:1005230094054003020620E5FB60CCEF600214F063
|
||||
:10053300E4FD7E007401A805088005C333CE33CEE5
|
||||
:10054300D8F9FFACFBECFBEF5B70030205F0A805E9
|
||||
:100553007401088002C333D8FCF5FBED700885E213
|
||||
:100563003385E1348035BD010885E43385E3348088
|
||||
:100573002ABD020885E63385E534801FBD0308855F
|
||||
:10058300D93385E7348014BD040885DB3385DA3439
|
||||
:100593008009BD050685DD3385DC34E532702CE545
|
||||
:1005A3003424F7FFE53334FFFEE5162DFC1209D69C
|
||||
:1005B300EEF0A3EFF0E5342409FFE43533FEEC124B
|
||||
:1005C3000A08F583EEF0A3EFF08022E5162DFF1263
|
||||
:1005D30009D6E0FAA3E0C39534EA9533503FEF120E
|
||||
:1005E3000A08120962D39534EE953340300DED6459
|
||||
:1005F300066003020535E5162406120985500874C2
|
||||
:10060300062516F516800DE4F516E53270067532EB
|
||||
:100613000143F8201213EA75A1A50204FAE4F5F8E0
|
||||
:1006230075FB3FE58654F0440DF5861209C99080A9
|
||||
:1006330030E04440F053D57F43D5017F017E001263
|
||||
:10064300143075D580E4F5D6F5161211BD120A01E2
|
||||
:10065300C20175E8E322C205751908200307D20316
|
||||
:100663007F0412124C7D4A7C007F04120296EFF441
|
||||
:100673007002EEF46002C204900123E0F960030209
|
||||
:100683000763900122E06003020733EFF47002EE88
|
||||
:10069300F4600B7401F09000FF04F00207B38519B6
|
||||
:1006A3003212094340030207B3120924E532120947
|
||||
:1006B30018E0FAA3E0FBD39DEA9CE5324007120958
|
||||
:1006C30026C3EB8014120918E0FCA3E0FDE5321207
|
||||
:1006D30009A7F583E0FAA3E0C39DF534EA9CF5335B
|
||||
:1006E300D3E5349408E5339400502174162532126F
|
||||
:1006F300093BE07036120924E532120918ECF0A325
|
||||
:10070300EDF0120924E5321209F7800E120924E5EF
|
||||
:100713003225E02402F582E43400F583ECF0A3ED06
|
||||
:10072300F07416253212093B7432F005320206A426
|
||||
:10073300EFF47002EEF4600D9000FFE07072900130
|
||||
:100743002304F0806BE4900122F0851932120943EF
|
||||
:10075300505E7416253212093B7432F0053280ED77
|
||||
:10076300E96401704B900122E06011EFF47002EE36
|
||||
:10077300F4703DF09000FF7402F08034EFF47002E7
|
||||
:10078300EEF470269000FFE07026900123F0A3F0B2
|
||||
:10079300A31209B185193212094350147416253274
|
||||
:1007A30012093B7432F0053280ED9001227401F09E
|
||||
:1007B300900123E0B40112EFF47002EEF4600D90A7
|
||||
:1007C30000FCEEF0A3EFF080031209B29000FCE00E
|
||||
:1007D300F47003A3E0F4600475180222E4F5182210
|
||||
:1007E3009000B5E0AD197C002DFFEC33FEEF25E062
|
||||
:1007F300FFEE33FE741A2FF58274003EF583E02278
|
||||
:10080300FAA3E0FBED2538FFEC33FEEF25E0FFEE26
|
||||
:1008130033FE74B62FF58274003EF583E022901503
|
||||
:100823007C93FCFFEDC39FFFE49400FEEF78052269
|
||||
:10083300FFECFDC374809DFDE49400FC0200AF75E2
|
||||
:10084300F00290001A02022BFFC3EB9FFFEA9E9077
|
||||
:100853000124F0A3EFF0EDFF900124E48FF00200F8
|
||||
:10086300E5E5009000B675F00212022BE0FEA3E06E
|
||||
:10087300FF22FFC374209FFFE49400FE120048EFA1
|
||||
:10088300780622C3EB9FEE6480F8EA64809822ED39
|
||||
:1008930075F004A4FF900124E5F0F0A3EFF022909B
|
||||
:1008A300157C93FFEDC39F22E500C313FEE5001300
|
||||
:1008B300FFC3E5009F22AC41AD4212005AAD0722AF
|
||||
:1008C300900124E0FAA3E0FBAE02780222FEA3E04B
|
||||
:1008D300FFAD03AC02020269FEA3E02BFFEE3AFE7A
|
||||
:1008E300C3EF22FEA3E0FBAA06E4F9F82290012459
|
||||
:1008F300E0FEA3E0780222AC00AD0012005AAD077F
|
||||
:1009030022E53225E024B6F582E43400F583E0FEE7
|
||||
:10091300A3E0FFE53225E02402F582E43400F58309
|
||||
:1009230022E53225E024B6F582E43400F583E0FCC9
|
||||
:10093300A3E0FD2274162532F582E43401F5832207
|
||||
:10094300E5192404FDE433FCC3E5329DEC6480F82F
|
||||
:1009530074809822E53225E024D1F582E43400F551
|
||||
:1009630083E0FEA3E02274012532F582E43401F52D
|
||||
:100973008322E53275F00AA42432F582E43400F5CB
|
||||
:100983008322FFE433C3FE7859E6FDEF9D7480F8BC
|
||||
:100993006E982225E0241AF582E43400F583EEF004
|
||||
:1009A300A3EFF02225E024B6F582E4340022F074AC
|
||||
:1009B300FF9000FCF0A3F022E53290158093FF78BE
|
||||
:1009C3005BE6FEEF5E2275F90A75F84090810374C9
|
||||
:1009D30057F02225E02428F582E43401F5832278B8
|
||||
:1009E30059E62401FFE433FEC32225E024D1F58236
|
||||
:1009F300E434002225E0241AF582E4340022900036
|
||||
:100A0300FB7405F02225E02440F582E4340122E45E
|
||||
:100A1300F530F52FF52EF52DF53175E8E39080309F
|
||||
:100A2300E04440F075A081E4F5A375A24B75A1A540
|
||||
:100A3300D2AF120FFD90801A7402F0C2B212128D5F
|
||||
:100A4300E48F308E2FF52EF52DAD2EAC2D780812B8
|
||||
:100A530002188F1385301485140F8513105389FCE6
|
||||
:100A6300758CFB758A1BC28CD2A9C2B91210FA907D
|
||||
:100A730000FCE0FEA3E0FFF47002EEF4601B754996
|
||||
:100A830001E4F54B75310174592FF58274143EF569
|
||||
:100A930083E493F54A240FF54A9000FEE0FF60518A
|
||||
:100AA300754901E4F54BEF1202430AC9010ACE026C
|
||||
:100AB3000AD3040AD8080ADD100AE2200AE7400A2A
|
||||
:100AC300EC8000000AF1754A058026754A0C8021E6
|
||||
:100AD300754A0A801C754A0B8017754A098012757E
|
||||
:100AE3004A07800D754A038008754A018003E4F5BF
|
||||
:100AF300499000FCE0B4FF0EA3E0B4FF099000FEB0
|
||||
:100B0300E07003754B01E54964016003020A6FF568
|
||||
:100B130049D28C854A11020A6FE50914602C1460CE
|
||||
:100B230048147003020BFC24036003020C18D2B2B6
|
||||
:100B3300050DE50D7002050CC31200035003020CF2
|
||||
:100B430018E4F50CF50D75090122C2B2050DE50D8A
|
||||
:100B53007002050CC39478E50C94005003020C1842
|
||||
:100B6300E4F50CF50D75090222E512700B751201FF
|
||||
:100B7300740F250AF8E6F50B050DE50D7002050C5B
|
||||
:100B8300E50B30E726D3E50D940CE50C94005004F7
|
||||
:100B9300D2B28044C3E50D940DE50C94004039C2F4
|
||||
:100BA300B2E50D6410450C702F8021D3E50D1200C2
|
||||
:100BB300035004D2B28021C3E50D9405E50C9400E3
|
||||
:100BC3004016C2B2E50D6410450C700CF50CF50D22
|
||||
:100BD300E50B25E0F50B050EE50E64087037F50E01
|
||||
:100BE300F512050AE50A6403702BF50AE54BB40117
|
||||
:100BF3000475090322E4F50922050DE50D700205CC
|
||||
:100C03000CD31200035003D2B222C2B2E4F50CF5A6
|
||||
:100C13000DF509C28C22E4F532120916E0FCA3E0BB
|
||||
:100C2300FD120CFE8F33E532120926120CFE8F34AF
|
||||
:100C3300E53464026008E53464036002C204E5330A
|
||||
:100C43007030E534701B1209BB700E120937E06077
|
||||
:100C530003020CE1EF4EF680001209377402F080B4
|
||||
:100C63007D1209BB6069120937E07072EFF45EF61A
|
||||
:100C73008015E534700C120904EEF0A3EFF0E4FDE7
|
||||
:100C83008057785BE66011E5321209F712090FEE1F
|
||||
:100C9300F0A3EFF07D028041120916E0FEA3E0FF0E
|
||||
:100CA300E5321209267B1E7A00121364EF602012CC
|
||||
:100CB3000937E07029120904EEF0A3EFF0E53212D0
|
||||
:100CC30009A7120962FFE5321209967D02800A1212
|
||||
:100CD3000904EEF0A3EFF0AD34AF3212144605323F
|
||||
:100CE300E532C394085003020C1C785BE69000FEC7
|
||||
:100CF300F0600475180122E4F51822E5329015809E
|
||||
:100D030093785B5624FF92057B1E7A00AF32121153
|
||||
:100D13005E229000B4E07015C200900100F0F51659
|
||||
:100D23001211BD9000B47402F0751532229000B414
|
||||
:100D3300E064026003020DED200003020DEDC2002A
|
||||
:100D43001515E5156003020DED785AF6F532120913
|
||||
:100D5300E2E5329FEE1209504003020DE9E4FFE59C
|
||||
:100D6300321209ED12092FE53212097775F002EFFD
|
||||
:100D730012022BECF0A3EDF00FBF05E37401253253
|
||||
:100D830012096DE4F0E532785966605A120957FF8B
|
||||
:100D9300E532120996120957FFE532120918EEF0EF
|
||||
:100DA300A3EFF0E532C39408502DE53225E025E0AA
|
||||
:100DB300245AF582E43415F583E493FE740193FF1A
|
||||
:100DC300E53225E024EBF582E4340012099F7D022D
|
||||
:100DD300AF32121446800A7416253212093B74325C
|
||||
:100DE300F00532020D51784C760122908109E054CE
|
||||
:100DF300E06004E044E0F0E5FB30E00975FB0185C9
|
||||
:100E0300E22185E122E5FB30E10975FB0285E4235C
|
||||
:100E130085E324E5FB30E20975FB0485E62585E5DA
|
||||
:100E230026E5FB30E30975FB0885D92785E728E527
|
||||
:100E3300FB30E40975FB1085DB2985DA2AE5FB30F5
|
||||
:100E4300E50975FB2085DD2B85DC2CE4FFEF25E030
|
||||
:100E53002421F8E6FC08E6FDE5162F1209EDF583DB
|
||||
:100E6300ECF0A3EDF0EFFDE5162DFDE433FC78592E
|
||||
:100E7300E66D7001EC60040FBF06D2E5162406FF91
|
||||
:100E8300E433D31209894007D200E4F516800674CF
|
||||
:100E9300062516F5161211BD900100E0600214F04C
|
||||
:100EA300900127E0FF900126E0FE6F6006A3EEF0BD
|
||||
:100EB30075A1A522E4F5321209E2E5329FEE12098B
|
||||
:100EC300504003020F70120969E004F0120969E04F
|
||||
:100ED300C394054005120969E4F0C2ADE532120975
|
||||
:100EE30059FF120975C083C082120969E0D082D00C
|
||||
:100EF3008375F00212022BEEF0A3EFF0D2ADE4F50E
|
||||
:100F030033F534F535F53674FFF537F538E4FF126C
|
||||
:100F1300097575F002EF12022BE0FCA3E0FD253406
|
||||
:100F2300F534EC3533F533D3ED9536EC9535400494
|
||||
:100F33008C358D36C3ED9538EC953750048C378D51
|
||||
:100F4300380FBF05CAC3E5349536FFE5339535FE43
|
||||
:100F5300C3EF9538FFEE9537FE7C007D0312005AF0
|
||||
:100F6300E5321209A712099F0532020EBA22787FD1
|
||||
:100F7300E4F6D8FD75815D020FB8020A12E493A36B
|
||||
:100F8300F8E493A34003F68001F208DFF48029E438
|
||||
:100F930093A3F85407240CC8C333C4540F4420C884
|
||||
:100FA300834004F456800146F6DFE4800B0102041B
|
||||
:100FB3000810204080901392E47E019360BCA3FF4D
|
||||
:100FC300543F30E509541FFEE493A360010ECF5450
|
||||
:100FD300C025E060A840B8E493A3FAE493A3F8E43F
|
||||
:100FE30093A3C8C582C8CAC583CAF0A3C8C582C8AB
|
||||
:100FF300CAC583CADFE9DEE780BE7859760CE4FF11
|
||||
:10100300FEEEC39408EE501125E025E02458F58246
|
||||
:10101300E43415F5837401800390157093FDAC07D8
|
||||
:101023000F744D2CF8A6050EBE0CD6908030E0440C
|
||||
:1010330040F075D580E4F5D6D2AD1213351209C947
|
||||
:10104300D2ADC200E49000FEF0785BF6F518120A08
|
||||
:1010530001D202C201C203E4900123F090012212E3
|
||||
:1010630009B1E4900124F0A3F0784CF69000B4F0B9
|
||||
:10107300900127F0900126F022C0E0C0F0C083C0A9
|
||||
:1010830082C0D075D000C000C001C002C003C0043C
|
||||
:10109300C005C006C007E5D530E03743D5013001B0
|
||||
:1010A30008900100E004F080331212FFE51D451C97
|
||||
:1010B3006008E51D151D7002151C051EE51EC39471
|
||||
:1010C300804006751E0012000EE508C394FA500214
|
||||
:1010D3000508200107E5FB6003120DEED007D006DB
|
||||
:1010E300D005D004D003D002D001D000D0D0D0821C
|
||||
:1010F300D083D0F0D0E032784CE614600604705A06
|
||||
:10110300020D15300042C200900127E00490012631
|
||||
:10111300F0120EB7D204E51864026003120C19E54D
|
||||
:101123001864016003120659300408300205E5878C
|
||||
:1011330030E203120A019000FBE0700C3002097FD9
|
||||
:1011430001FE1214151204AC900100E0C394054093
|
||||
:1011530009E4F5F875FB3F120FFD228A358B36A99A
|
||||
:1011630007E9120842E0FEA3E0C39DFFEE9CAB0734
|
||||
:10117300FAE99000EB12086930050B7C007D091237
|
||||
:1011830000480D1200AF12088640037F0022D3EB04
|
||||
:101193009536E53512088A40037F0122C3EA64804D
|
||||
:1011A300948040037F0222C3E49536FFE49535FE25
|
||||
:1011B3001208867F0440027F0322E4FEEEC39406F6
|
||||
:1011C3005042EEFDE5162DFDE433FC7859E6FBC3F2
|
||||
:1011D300ED9B7480F86C98401AAF067D0E1212C70F
|
||||
:1011E300EE04FCECC39406501BAF04E4FD1212C7DB
|
||||
:1011F3000C80F0AF06E5162E244DF8E604FD12121E
|
||||
:10120300C70E80B843F88022C0E0C0F0C083C0821C
|
||||
:10121300C0D075D000C000C001C002C003C004C06C
|
||||
:1012230005C006C007758CFB758A1B120B1CD00703
|
||||
:10123300D006D005D004D003D002D001D000D0D046
|
||||
:10124300D082D083D0F0D0E032A90774FFF535F512
|
||||
:1012530036AF19E4FEE92519FDE433FCEFC39DEC39
|
||||
:101263006480F8748098502175F002EF120845E00D
|
||||
:10127300FCA3E0FDC39536EC953550099000B5EE1F
|
||||
:10128300F08C358D360F0E80CC2290FC017480F0EB
|
||||
:10129300E490FC06F090FC05F090FC017481F0A34F
|
||||
:1012A300E0FFE48F35F534F533F532AE34AD33ACCE
|
||||
:1012B300321213C21213BE1213BEF532E490FC01B4
|
||||
:1012C300F0AC3222EF14601614601914601C146021
|
||||
:1012D3001F14602224057023ED4440F5FC22ED44E5
|
||||
:1012E30040F5FD22ED4440F5FE22ED4440F5FF229A
|
||||
:1012F300ED4440F5F122ED4440F5F222900000E088
|
||||
:1013030004F0E0C394044029E4F0FF7859E6FEEFCB
|
||||
:10131300C39E501574162F12093BE0600974162FF3
|
||||
:1013230012093BE014F00F80E29000FFE06002142A
|
||||
:10133300F02290801D7404F0E4FF7859E6FEEFC3B9
|
||||
:101343009E501D744D2FF8E675F003A4248DF5828D
|
||||
:10135300E43415F58312023774041200360F80DA71
|
||||
:1013630022C3EF9DFFEE9CFED3EF9BEA6480F8EE71
|
||||
:101373006480985017C3E49BFDE49AFCC3EF9DEC93
|
||||
:101383006480F8EE64809840037F01227F0022018D
|
||||
:101393004900014A00014B00011E00010900020C33
|
||||
:1013A3000000030F000000010A00010E00010B0002
|
||||
:1013B3000112004100000001150000F532FCE4FBBE
|
||||
:1013C3007A01F9F81200FB8F358E348D338C32900D
|
||||
:1013D300FC02E0FFE5354FFFE534FEE533FDE53282
|
||||
:1013E3008F358E348D3322E4F535E5162535120914
|
||||
:1013F30085500BE5162535244DF8E6048001E4FD00
|
||||
:10140300AF351212C70535E535C3940640DC43F802
|
||||
:1014130080228F828E83E5821582AE8370021583CC
|
||||
:101423004E60097F147E0012143080EA22EF1FAA57
|
||||
:101433000670011E4A600BE4FDEDC3944750EE0DA8
|
||||
:1014430080F722ED90158893FE74162FF582E4340D
|
||||
:1014530001F583EEF02200010203040506070809E3
|
||||
:101463000A0B0C0D0E0F1011121213141516171868
|
||||
:10147300191A1B1C1D1E1F20212223242525262764
|
||||
:1014830028292A2B2C2D2E2F303132333435363761
|
||||
:101493003838393A3B3C3D3E3F4041424344454660
|
||||
:1014A3004748494A4A4B4C4D4E4F5051525354555D
|
||||
:1014B300565758595A5B5C5D5D5E5F606162636459
|
||||
:1014C30065666768696A6B6C6D6E6F707071727355
|
||||
:1014D3007475767778797A7B7C7D7E7F8081828252
|
||||
:1014E300838485868788898A8B8C8D8E8F90919251
|
||||
:1014F30093949595969798999A9B9C9D9E9FA0A14E
|
||||
:10150300A2A3A4A5A6A7A8A8A9AAABACADAEAFB049
|
||||
:10151300B1B2B3B4B5B6B7B8B9BABABBBCBDBEBF46
|
||||
:10152300C0C1C2C3C4C5C6C7C8C9CACBCCCDCDCE42
|
||||
:10153300CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDE40
|
||||
:10154300DFE0E0E1E2E3E4E5E6E7E8E9EAEBECED3E
|
||||
:10155300EEEFEFF0F0000000640001006400020011
|
||||
:10156300C80003005A0004005A0005006400060086
|
||||
:10157300FA0007012C080B0A094628284601020431
|
||||
:1015830008102040800264501E1E0180190180183B
|
||||
:1015930001800701800601800501800401800301A9
|
||||
:1015A300800201800101800001801C01801B0180F9
|
||||
:0115B3001A1D
|
||||
:00000001FF
|
||||
@@ -0,0 +1,15 @@
|
||||
".\hex\main.obj",
|
||||
".\hex\delay.obj",
|
||||
".\hex\system_clock.obj",
|
||||
".\hex\uart.obj",
|
||||
".\hex\interrupt.obj",
|
||||
".\hex\rf_send.obj",
|
||||
".\hex\debug.obj",
|
||||
".\hex\ts_api.obj",
|
||||
".\TS_Lib\Sources\ts_service.LIB",
|
||||
".\hex\STARTUP.obj"
|
||||
TO ".\hex\ca51fx_onoff"
|
||||
|
||||
PRINT(".\lst\ca51fx_onoff.map") REMOVEUNUSED
|
||||
CLASSES (XDATA (X:0x0-X:0x1FF), HDATA (X:0x0-X:0x1FF), CODE (C:0x0-C:0x1FFF), CONST (C:0x0-C:0x1FFF),
|
||||
ECODE (C:0x0-C:0x1FFF), HCONST (C:0x0-C:0x1FFF))
|
||||
@@ -0,0 +1,23 @@
|
||||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>礦ision Build Log</h1>
|
||||
<h2>Project:</h2>
|
||||
D:\工作文件\Fengshu\常规产品\幻彩程序\量产程序\常规幻彩遥控器程序\遥控器触摸通码改S灵敏度-通码\遥控器触摸色环唤醒修改-不可对码\CA51F5_Touch_DemoProj_v2.3-433M\CA51F5_Touch.uvproj
|
||||
Project File Date: 04/09/2021
|
||||
|
||||
<h2>Output:</h2>
|
||||
Build target 'CA51F5'
|
||||
compiling main.c...
|
||||
compiling delay.c...
|
||||
compiling system_clock.c...
|
||||
compiling uart.c...
|
||||
compiling interrupt.c...
|
||||
compiling rf_send.c...
|
||||
compiling debug.c...
|
||||
compiling ts_api.c...
|
||||
assembling STARTUP.A51...
|
||||
linking...
|
||||
Program Size: data=87.0 xdata=419 const=105 code=5331
|
||||
creating hex file from ".\hex\ca51fx_onoff"...
|
||||
".\hex\ca51fx_onoff" - 0 Error(s), 0 Warning(s).
|
||||
@@ -0,0 +1 @@
|
||||
"TS_Lib\Sources\debug.c" OMF2 OPTIMIZE (9,SIZE) BROWSE DEBUG PRINT(.\lst\debug.lst) TABS (2) OBJECT(.\hex\debug.obj)
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
"Library\Sources\delay.c" OMF2 OPTIMIZE (9,SIZE) BROWSE DEBUG PRINT(.\lst\delay.lst) TABS (2) OBJECT(.\hex\delay.obj)
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
"interrupt.c" OMF2 OPTIMIZE (9,SIZE) BROWSE DEBUG PRINT(.\lst\interrupt.lst) TABS (2) OBJECT(.\hex\interrupt.obj)
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
"main.c" OMF2 OPTIMIZE (9,SIZE) BROWSE DEBUG PRINT(.\lst\main.lst) TABS (2) OBJECT(.\hex\main.obj)
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
"rf_send.c" OMF2 OPTIMIZE (9,SIZE) BROWSE DEBUG PRINT(.\lst\rf_send.lst) TABS (2) OBJECT(.\hex\rf_send.obj)
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
"Library\Sources\system_clock.c" OMF2 OPTIMIZE (9,SIZE) BROWSE DEBUG PRINT(.\lst\system_clock.lst) TABS (2) OBJECT(.\hex\system_clock.obj)
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
"TS_Lib\Sources\ts_api.c" OMF2 OPTIMIZE (9,SIZE) BROWSE DEBUG PRINT(.\lst\ts_api.lst) TABS (2) OBJECT(.\hex\ts_api.obj)
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
"Library\Sources\uart.c" OMF2 OPTIMIZE (9,SIZE) BROWSE DEBUG PRINT(.\lst\uart.lst) TABS (2) OBJECT(.\hex\uart.obj)
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,221 @@
|
||||
#ifndef __CA51F2_SFR_H__
|
||||
#define __CA51F2_SFR_H__
|
||||
|
||||
sfr P0 = 0x80;
|
||||
sfr SP = 0x81;
|
||||
sfr DP0L = 0x82;
|
||||
sfr DP0H = 0x83;
|
||||
sfr DP1L = 0x84;
|
||||
sfr DP1H = 0x85;
|
||||
sfr PWCON = 0x86;
|
||||
sfr PCON = 0x87;
|
||||
sfr TCON = 0x88;
|
||||
sfr TMOD = 0x89;
|
||||
sfr TL0 = 0x8a;
|
||||
sfr TL1 = 0x8b;
|
||||
sfr TH0 = 0x8c;
|
||||
sfr TH1 = 0x8d;
|
||||
sfr IDLST = 0x8e;
|
||||
sfr STPST = 0x8f;
|
||||
|
||||
sfr PWMEN = 0x90;
|
||||
sfr PWM2DUTH = 0x91;
|
||||
sfr PWM3DUTL = 0x92;
|
||||
sfr PWM3DUTH = 0x93;
|
||||
sfr PWM4DUTL = 0x94;
|
||||
sfr PWM4DUTH = 0x95;
|
||||
sfr PWM5DUTL = 0x96;
|
||||
sfr PWM5DUTH = 0x97;
|
||||
sfr S0CON = 0x98;
|
||||
sfr S0BUF = 0x99;
|
||||
sfr PWM5DIVH = 0x9a;
|
||||
sfr PWM0DUTL = 0x9b;
|
||||
sfr PWM0DUTH = 0x9c;
|
||||
sfr PWM1DUTL = 0x9d;
|
||||
sfr PWM1DUTH = 0x9e;
|
||||
sfr PWM2DUTL = 0x9f;
|
||||
|
||||
sfr WDCON = 0xa0;
|
||||
sfr WDFLG = 0xa1;
|
||||
sfr WDVTHL = 0xa2;
|
||||
sfr WDVTHH = 0xa3;
|
||||
sfr PWM3DIVH = 0xa4;
|
||||
sfr PWM4DIVL = 0xa5;
|
||||
sfr PWM4DIVH = 0xa6;
|
||||
sfr PWM5DIVL = 0xa7;
|
||||
sfr IE = 0xa8;
|
||||
sfr PWM0DIVL = 0xa9;
|
||||
sfr PWM0DIVH = 0xaa;
|
||||
sfr PWM1DIVL = 0xab;
|
||||
sfr PWM1DIVH = 0xac;
|
||||
sfr PWM2DIVL = 0xad;
|
||||
sfr PWM2DIVH = 0xae;
|
||||
sfr PWM3DIVL = 0xaf;
|
||||
|
||||
sfr P3 = 0xb0;
|
||||
sfr PWM0CKD = 0xb1;
|
||||
sfr PWM1CKD = 0xb2;
|
||||
sfr PWM2CKD = 0xb3;
|
||||
sfr PWM3CKD = 0xb4;
|
||||
sfr PWM4CKD = 0xb5;
|
||||
sfr PWM5CKD = 0xb6;
|
||||
sfr PWMIF = 0xb7;
|
||||
sfr IP = 0xb8;
|
||||
sfr PWM0CON = 0xb9;
|
||||
sfr PWM1CON = 0xba;
|
||||
sfr PWM2CON = 0xbb;
|
||||
sfr PWM3CON = 0xbc;
|
||||
sfr PWM4CON = 0xbd;
|
||||
sfr PWM5CON = 0xbe;
|
||||
sfr LEFLG = 0xbf;
|
||||
|
||||
sfr I2CCON = 0xc0;
|
||||
sfr I2CADR = 0xc1;
|
||||
sfr I2CADM = 0xc2;
|
||||
sfr I2CCR = 0xc3;
|
||||
sfr I2CDAT = 0xc4;
|
||||
sfr I2CSTA = 0xc5;
|
||||
sfr I2CFLG = 0xc6;
|
||||
sfr LEDAT1 = 0xc7;
|
||||
sfr T2CON = 0xc8;
|
||||
sfr T2MOD = 0xc9;
|
||||
sfr T2CL = 0xca;
|
||||
sfr T2CH = 0xcb;
|
||||
sfr TL2 = 0xcc;
|
||||
sfr TH2 = 0xcd;
|
||||
sfr LEDWTML = 0xce;
|
||||
sfr LEDWTMH = 0xcf;
|
||||
|
||||
sfr PSW = 0xd0;
|
||||
sfr EP0CON = 0xd1;
|
||||
sfr EP1CON = 0xd2;
|
||||
sfr EP2CON = 0xd3;
|
||||
sfr EPIF = 0xd4;
|
||||
sfr TMCON = 0xd5;
|
||||
sfr TMSNU = 0xd6;
|
||||
sfr LEDAT0 = 0xd7;
|
||||
sfr UDCKS = 0xd8;
|
||||
sfr TK3MSH = 0xd9;
|
||||
sfr TK4MSL = 0xda;
|
||||
sfr TK4MSH = 0xdb;
|
||||
sfr TK5MSL = 0xdc;
|
||||
sfr TK5MSH = 0xdd;
|
||||
sfr AK0CON = 0xde;
|
||||
sfr AK1CON = 0xdf;
|
||||
|
||||
sfr ACC = 0xe0;
|
||||
sfr TK0MSL = 0xe1;
|
||||
sfr TK0MSH = 0xe2;
|
||||
sfr TK1MSL = 0xe3;
|
||||
sfr TK1MSH = 0xe4;
|
||||
sfr TK2MSL = 0xe5;
|
||||
sfr TK2MSH = 0xe6;
|
||||
sfr TK3MSL = 0xe7;
|
||||
sfr LVDCON = 0xe8;
|
||||
sfr ATK2CH = 0xe9;
|
||||
sfr ATK3CL = 0xea;
|
||||
sfr ATK3CH = 0xeb;
|
||||
sfr ATK4CL = 0xec;
|
||||
sfr ATK4CH = 0xed;
|
||||
sfr ATK5CL = 0xee;
|
||||
sfr ATK5CH = 0xef;
|
||||
|
||||
sfr B = 0xf0;
|
||||
sfr TK4CHS = 0xf1;
|
||||
sfr TK5CHS = 0xf2;
|
||||
sfr ATK0CL = 0xf3;
|
||||
sfr ATK0CH = 0xf4;
|
||||
sfr ATK1CL = 0xf5;
|
||||
sfr ATK1CH = 0xf6;
|
||||
sfr ATK2CL = 0xf7;
|
||||
sfr TKCON = 0xf8;
|
||||
sfr TKCFG = 0xf9;
|
||||
sfr TKMTS = 0xfa;
|
||||
sfr TKIF = 0xfb;
|
||||
sfr TK0CHS = 0xfc;
|
||||
sfr TK1CHS = 0xfd;
|
||||
sfr TK2CHS = 0xfe;
|
||||
sfr TK3CHS = 0xff;
|
||||
/* BIT Register */
|
||||
/* PSW */
|
||||
sbit CY = 0xD7;
|
||||
sbit AC = 0xD6;
|
||||
sbit F0 = 0xD5;
|
||||
sbit RS1 = 0xD4;
|
||||
sbit RS0 = 0xD3;
|
||||
sbit OV = 0xD2;
|
||||
sbit DPS = 0xD1;
|
||||
sbit P = 0xD0;
|
||||
|
||||
/* TCON */
|
||||
sbit TF1 = 0x8F;
|
||||
sbit TR1 = 0x8E;
|
||||
sbit TF0 = 0x8D;
|
||||
sbit TR0 = 0x8C;
|
||||
sbit IE1 = 0x8B;
|
||||
sbit IT1 = 0x8A;
|
||||
sbit IE0 = 0x89;
|
||||
sbit IT0 = 0x88;
|
||||
|
||||
/* S0CON */
|
||||
sbit SM0 = 0x9F;
|
||||
sbit SM1 = 0x9E;
|
||||
sbit SM2 = 0x9D;
|
||||
sbit REN = 0x9C;
|
||||
sbit TB8 = 0x9B;
|
||||
sbit RB8 = 0x9A;
|
||||
sbit TI0 = 0x99;
|
||||
sbit RI0 = 0x98;
|
||||
|
||||
/* IE */
|
||||
sbit EA = 0xAF;
|
||||
sbit INT4EN = 0xAE;
|
||||
sbit INT3EN = 0xAD;
|
||||
sbit ES0 = 0xAC;
|
||||
sbit ET1 = 0xAB;
|
||||
sbit EX1 = 0xAA;
|
||||
sbit ET0 = 0xA9;
|
||||
sbit EX0 = 0xA8;
|
||||
|
||||
/* IP */
|
||||
sbit PS1 = 0xBE;
|
||||
sbit PT2 = 0xBD;
|
||||
sbit PS0 = 0xBC;
|
||||
sbit PT1 = 0xBB;
|
||||
sbit PX1 = 0xBA;
|
||||
sbit PT0 = 0xB9;
|
||||
sbit PX0 = 0xB8;
|
||||
|
||||
/* T2CON */
|
||||
sbit TF2 = 0xCF;
|
||||
sbit TR2 = 0xCE;
|
||||
sbit T2R1 = 0xCD;
|
||||
sbit T2R0 = 0xCC;
|
||||
sbit T2IE = 0xCB;
|
||||
sbit UCKS = 0xCA;
|
||||
sbit T2P1 = 0xC9;
|
||||
sbit T2P0 = 0xC8;
|
||||
|
||||
|
||||
/* P0 */
|
||||
sbit P00 = P0^0;
|
||||
sbit P01 = P0^1;
|
||||
sbit P02 = P0^2;
|
||||
sbit P03 = P0^3;
|
||||
sbit P04 = P0^4;
|
||||
sbit P05 = P0^5;
|
||||
sbit P06 = P0^6;
|
||||
sbit P07 = P0^7;
|
||||
|
||||
/* P3 */
|
||||
sbit P30 = P3^0;
|
||||
sbit P31 = P3^1;
|
||||
sbit P32 = P3^2;
|
||||
sbit P33 = P3^3;
|
||||
sbit P34 = P3^4;
|
||||
sbit P35 = P3^5;
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,107 @@
|
||||
#ifndef _CA51F2_XRAM_H_
|
||||
#define _CA51F2_XRAM_H_
|
||||
|
||||
/*********************************************************************************************************************/
|
||||
#ifdef _MAIN_C_
|
||||
#define XRAM_U8 volatile unsigned char xdata
|
||||
#define XRAM_U16 volatile unsigned int xdata
|
||||
#define XRAM_AT_(x) _at_ x
|
||||
#else
|
||||
#define XRAM_U8 extern volatile unsigned char xdata
|
||||
#define XRAM_U16 extern volatile unsigned int xdata
|
||||
#define XRAM_AT_(x)
|
||||
#endif
|
||||
|
||||
XRAM_U8 P00F XRAM_AT_(0x8000);
|
||||
XRAM_U8 P01F XRAM_AT_(0x8001);
|
||||
XRAM_U8 P02F XRAM_AT_(0x8002);
|
||||
XRAM_U8 P03F XRAM_AT_(0x8003);
|
||||
XRAM_U8 P04F XRAM_AT_(0x8004);
|
||||
XRAM_U8 P05F XRAM_AT_(0x8005);
|
||||
XRAM_U8 P06F XRAM_AT_(0x8006);
|
||||
XRAM_U8 P07F XRAM_AT_(0x8007);
|
||||
|
||||
|
||||
XRAM_U8 P30F XRAM_AT_(0x8018);
|
||||
XRAM_U8 P31F XRAM_AT_(0x8019);
|
||||
XRAM_U8 P32F XRAM_AT_(0x801a);
|
||||
XRAM_U8 P33F XRAM_AT_(0x801b);
|
||||
XRAM_U8 P34F XRAM_AT_(0x801c);
|
||||
XRAM_U8 P35F XRAM_AT_(0x801d);
|
||||
|
||||
|
||||
XRAM_U8 CKCON XRAM_AT_(0x8030);
|
||||
XRAM_U8 CKDIV XRAM_AT_(0x8031);
|
||||
XRAM_U8 IHCFG XRAM_AT_(0x8032);
|
||||
XRAM_U8 ILCFGL XRAM_AT_(0x8033);
|
||||
XRAM_U8 ILCFGH XRAM_AT_(0x8034);
|
||||
|
||||
|
||||
XRAM_U8 ATK0NL XRAM_AT_(0x8050);
|
||||
XRAM_U8 ATK0NH XRAM_AT_(0x8051);
|
||||
XRAM_U8 ATK1NL XRAM_AT_(0x8052);
|
||||
XRAM_U8 ATK1NH XRAM_AT_(0x8053);
|
||||
XRAM_U8 ATK2NL XRAM_AT_(0x8054);
|
||||
XRAM_U8 ATK2NH XRAM_AT_(0x8055);
|
||||
XRAM_U8 ATK3NL XRAM_AT_(0x8056);
|
||||
XRAM_U8 ATK3NH XRAM_AT_(0x8057);
|
||||
XRAM_U8 ATK4NL XRAM_AT_(0x8058);
|
||||
XRAM_U8 ATK4NH XRAM_AT_(0x8059);
|
||||
XRAM_U8 ATK5NL XRAM_AT_(0x805a);
|
||||
XRAM_U8 ATK5NH XRAM_AT_(0x805b);
|
||||
XRAM_U8 TKMAXF XRAM_AT_(0x805c);
|
||||
XRAM_U8 TKMINF XRAM_AT_(0x805d);
|
||||
|
||||
XRAM_U8 LEDUTL XRAM_AT_(0x8060);
|
||||
XRAM_U8 LEDUTH XRAM_AT_(0x8061);
|
||||
|
||||
XRAM_U8 SPMAX XRAM_AT_(0x8100);
|
||||
XRAM_U8 I2CIOS XRAM_AT_(0x8101);
|
||||
XRAM_U8 TKCKS XRAM_AT_(0x8102);
|
||||
XRAM_U8 TKPWC XRAM_AT_(0x8103);
|
||||
|
||||
XRAM_U8 LVDCFG XRAM_AT_(0x8105);
|
||||
XRAM_U8 TLEN0 XRAM_AT_(0x8106);
|
||||
XRAM_U8 TLDAT0 XRAM_AT_(0x8107);
|
||||
XRAM_U8 TLCON XRAM_AT_(0x8108);
|
||||
XRAM_U8 TLFLG XRAM_AT_(0x8109);
|
||||
XRAM_U8 TLCKS XRAM_AT_(0x810a);
|
||||
XRAM_U8 TLCNTKL XRAM_AT_(0x810b);
|
||||
XRAM_U8 TLCNTKH XRAM_AT_(0x810c);
|
||||
XRAM_U8 TLCNTLL XRAM_AT_(0x810d);
|
||||
XRAM_U8 TLCNTLH XRAM_AT_(0x810e);
|
||||
XRAM_U8 TLDIV XRAM_AT_(0x810f);
|
||||
|
||||
XRAM_U8 TLCOMS XRAM_AT_(0x8110);
|
||||
XRAM_U8 TLEN1 XRAM_AT_(0x8111);
|
||||
XRAM_U8 TLDAT1 XRAM_AT_(0x8112);
|
||||
|
||||
|
||||
XRAM_U8 P00C XRAM_AT_(0x8120);
|
||||
XRAM_U8 P01C XRAM_AT_(0x8121);
|
||||
XRAM_U8 P02C XRAM_AT_(0x8122);
|
||||
XRAM_U8 P03C XRAM_AT_(0x8123);
|
||||
XRAM_U8 P04C XRAM_AT_(0x8124);
|
||||
XRAM_U8 P05C XRAM_AT_(0x8125);
|
||||
XRAM_U8 P06C XRAM_AT_(0x8126);
|
||||
XRAM_U8 P07C XRAM_AT_(0x8127);
|
||||
|
||||
XRAM_U8 P30C XRAM_AT_(0x8138);
|
||||
XRAM_U8 P31C XRAM_AT_(0x8139);
|
||||
XRAM_U8 P32C XRAM_AT_(0x813a);
|
||||
XRAM_U8 P33C XRAM_AT_(0x813b);
|
||||
XRAM_U8 P34C XRAM_AT_(0x813c);
|
||||
XRAM_U8 P35C XRAM_AT_(0x813d);
|
||||
|
||||
XRAM_U8 MECON XRAM_AT_(0xfc00);
|
||||
XRAM_U8 FSCMD XRAM_AT_(0xfc01);
|
||||
XRAM_U8 FSDAT XRAM_AT_(0xfc02);
|
||||
XRAM_U8 LOCK XRAM_AT_(0xfc03);
|
||||
XRAM_U8 PADRD XRAM_AT_(0xfc04);
|
||||
XRAM_U8 PTSL XRAM_AT_(0xfc05);
|
||||
XRAM_U8 PTSH XRAM_AT_(0xfc06);
|
||||
XRAM_U8 MEMPTEC XRAM_AT_(0xfc0d);
|
||||
|
||||
/*********************************************************************************************************************/
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,60 @@
|
||||
#ifndef _GPIODEF_H_
|
||||
#define _GPIODEF_H_
|
||||
enum
|
||||
{
|
||||
HIGH_Z = 0,
|
||||
INPUT = 1,
|
||||
OUTPUT = 2,
|
||||
|
||||
P31_TK0_SETTING = 4,
|
||||
P30_TK1_SETTING = 4,
|
||||
P07_TK2_SETTING = 4,
|
||||
P06_TK3_SETTING = 4,
|
||||
P05_TK4_SETTING = 4,
|
||||
P04_TK5_SETTING = 4,
|
||||
P03_TK6_SETTING = 4,
|
||||
P02_TK7_SETTING = 4,
|
||||
P01_TK8_SETTING = 4,
|
||||
P00_TK9_SETTING = 4,
|
||||
P34_TK10_SETTING = 4,
|
||||
P33_TK11_SETTING = 4,
|
||||
P32_TK12_SETTING = 4,
|
||||
P35_CAP_SETTING = 4,
|
||||
|
||||
P32_PWM0_SETTING = 5,
|
||||
P33_PWM1_SETTING = 5,
|
||||
P34_PWM2_SETTING = 5,
|
||||
P01_PWM3_SETTING = 5,
|
||||
P04_PWM4_SETTING = 5,
|
||||
P05_PWM5_SETTING = 5,
|
||||
|
||||
P00_DAK0_SETTING = 3,
|
||||
P01_DAK1_SETTING = 3,
|
||||
|
||||
P30_UART0_TX_SETTING = 5,
|
||||
P31_UART0_RX_SETTING = 5,
|
||||
|
||||
P30_I2C_SDA_SETTING = 3,
|
||||
P31_I2C_SCL_SETTING = 3,
|
||||
P03_I2C_SDA_SETTING = 3,
|
||||
P02_I2C_SCL_SETTING = 3,
|
||||
|
||||
P32_T0_SETTING = 3,
|
||||
P35_T1_SETTING = 3,
|
||||
P06_T2_SETTING = 3,
|
||||
|
||||
P07_RESET_SETTING = 3,
|
||||
|
||||
|
||||
P04_T2CP_SETTING = 3,
|
||||
P05_T2EX_SETTING = 3,
|
||||
|
||||
PU_EN = 0x80,
|
||||
PD_EN = 0x40,
|
||||
OP_EN = 0x20,
|
||||
};
|
||||
#define GPIO_Init(reg,val) reg = val
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,46 @@
|
||||
#ifndef DEFINE_H
|
||||
#define DEFINE_H
|
||||
|
||||
|
||||
|
||||
|
||||
#define BIT0 0x01
|
||||
#define BIT1 0x02
|
||||
#define BIT2 0x04
|
||||
#define BIT3 0x08
|
||||
#define BIT4 0x10
|
||||
#define BIT5 0x20
|
||||
#define BIT6 0x40
|
||||
#define BIT7 0x80
|
||||
#define BIT8 0x100
|
||||
#define BIT9 0x200
|
||||
#define BIT10 0x400
|
||||
#define BIT11 0x800
|
||||
#define BIT12 0x1000
|
||||
#define BIT13 0x2000
|
||||
#define BIT14 0x4000
|
||||
#define BIT15 0x8000
|
||||
|
||||
|
||||
#define __NOP1__ _nop_()
|
||||
#define __NOP2__ __NOP1__; __NOP1__
|
||||
#define __NOP4__ __NOP2__; __NOP2__
|
||||
#define __NOP8__ __NOP4__; __NOP4__
|
||||
#define __NOP16__ __NOP8__; __NOP8__
|
||||
#define __NOP32__ __NOP16__; __NOP16__
|
||||
#define __NOP64__ __NOP32__; __NOP32__
|
||||
#define __NOP128__ __NOP64__; __NOP64__
|
||||
|
||||
|
||||
#define DelayNop(a) \
|
||||
if ((a)&(0x01)) {__NOP1__;} \
|
||||
if ((a)&(0x02)) {__NOP2__;} \
|
||||
if ((a)&(0x04)) {__NOP4__;} \
|
||||
if ((a)&(0x08)) {__NOP8__;} \
|
||||
if ((a)&(0x10)) {__NOP16__;} \
|
||||
if ((a)&(0x20)) {__NOP32__;} \
|
||||
if ((a)&(0x40)) {__NOP64__;} \
|
||||
if ((a)&(0x80)) {__NOP128__;}
|
||||
|
||||
|
||||
#endif
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
#ifndef _INTERRUPT_C_
|
||||
#define _INTERRUPT_C_
|
||||
|
||||
/*********************************************************************************************************************/
|
||||
#include "ca51f5_config.h"
|
||||
#include "includes\ca51f5sfr.h"
|
||||
#include "includes\ca51f5xsfr.h"
|
||||
#include "includes\gpiodef_f5.h"
|
||||
#include "includes\system.h"
|
||||
#include "Library\includes\uart.h"
|
||||
#include "Library\Includes\tmc.h"
|
||||
|
||||
#include "TS_Lib\Includes\ts_configuration.h"
|
||||
#include "TS_Lib\Includes\ts_def.h"
|
||||
#include "TS_Lib\Includes\ts_api.h"
|
||||
#include "TS_Lib\Includes\ts_service.h"
|
||||
#include <intrins.h>
|
||||
|
||||
#include "rf_send.h"
|
||||
|
||||
|
||||
#if DEBUG
|
||||
#include "Library\Includes\i2c.h"
|
||||
void I2C_ISR(void);
|
||||
#endif
|
||||
/*********************************************************************************************************************/
|
||||
extern unsigned char xdata TS_HalfSecCnt;
|
||||
void INT2_Handler (void) interrupt 4
|
||||
{
|
||||
#ifdef UART0_EN
|
||||
if(RI0)
|
||||
{
|
||||
UART0_RX_ISR();
|
||||
}
|
||||
if(TI0)
|
||||
{
|
||||
UART0_TX_ISR();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void INT3_ISR (void) interrupt 5
|
||||
{
|
||||
static unsigned char TmCnt = 0;
|
||||
if(TMCON & TMF) //ºÁÃëÖжÏ
|
||||
{
|
||||
TMCON |= TMF;
|
||||
#if SUPPORT_TOUCH_SLEEP_MODE
|
||||
if(TS_SleepMode)
|
||||
{
|
||||
TS_HalfSecCnt++;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
TS_MS_ISR();
|
||||
}
|
||||
#else
|
||||
TS_MS_ISR();
|
||||
#endif
|
||||
if(TS_LongKeyTimer)
|
||||
{
|
||||
TS_LongKeyTimer--;
|
||||
}
|
||||
TmCnt++;
|
||||
if(TmCnt >= 128)
|
||||
{
|
||||
TmCnt = 0;
|
||||
TS_HS_ISR();
|
||||
}
|
||||
if(RF_Time<250)RF_Time++; //4ms
|
||||
}
|
||||
#if SUPPORT_TOUCH_SLEEP_MODE
|
||||
if(TS_SleepMode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if(TKIF != 0)
|
||||
{
|
||||
TS_ISR();
|
||||
}
|
||||
}
|
||||
void INT4_ISR(void) interrupt 6
|
||||
{
|
||||
#if DEBUG
|
||||
if(I2CFLG & I2CF)
|
||||
{
|
||||
I2C_ISR();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
+253
@@ -0,0 +1,253 @@
|
||||
A51 MACRO ASSEMBLER STARTUP 07/03/2025 11:27:53 PAGE 1
|
||||
|
||||
|
||||
MACRO ASSEMBLER A51 V8.2.7.0
|
||||
OBJECT MODULE PLACED IN .\hex\STARTUP.obj
|
||||
ASSEMBLER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\A51.EXE Library\Lib\STARTUP.A51 NOMOD51 SET(SMALL) DEBUG PRINT(.\
|
||||
lst\STARTUP.lst) OBJECT(.\hex\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.
|
||||
0080 30 IDATALEN EQU 80H
|
||||
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 0
|
||||
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 07/03/2025 11:27: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
|
||||
112
|
||||
113 NAME ?C_STARTUP
|
||||
114
|
||||
115
|
||||
116 ?C_C51STARTUP SEGMENT CODE
|
||||
117 ?STACK SEGMENT IDATA
|
||||
118
|
||||
---- 119 RSEG ?STACK
|
||||
0000 120 DS 1
|
||||
121
|
||||
122 EXTRN CODE (?C_START)
|
||||
123 PUBLIC ?C_STARTUP
|
||||
A51 MACRO ASSEMBLER STARTUP 07/03/2025 11:27:53 PAGE 3
|
||||
|
||||
124
|
||||
---- 125 CSEG AT 0
|
||||
0000 020000 F 126 ?C_STARTUP: LJMP STARTUP1
|
||||
127
|
||||
---- 128 RSEG ?C_C51STARTUP
|
||||
129
|
||||
0000 130 STARTUP1:
|
||||
131
|
||||
132 IF IDATALEN <> 0
|
||||
0000 787F 133 MOV R0,#IDATALEN - 1
|
||||
0002 E4 134 CLR A
|
||||
0003 F6 135 IDATALOOP: MOV @R0,A
|
||||
0004 D8FD 136 DJNZ R0,IDATALOOP
|
||||
137 ENDIF
|
||||
138
|
||||
139 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
|
||||
153
|
||||
154 IF PPAGEENABLE <> 0
|
||||
MOV PPAGE_SFR,#PPAGE
|
||||
ENDIF
|
||||
157
|
||||
158 IF PDATALEN <> 0
|
||||
MOV R0,#LOW (PDATASTART)
|
||||
MOV R7,#LOW (PDATALEN)
|
||||
CLR A
|
||||
PDATALOOP: MOVX @R0,A
|
||||
INC R0
|
||||
DJNZ R7,PDATALOOP
|
||||
ENDIF
|
||||
166
|
||||
167 IF IBPSTACK <> 0
|
||||
EXTRN DATA (?C_IBP)
|
||||
|
||||
MOV ?C_IBP,#LOW IBPSTACKTOP
|
||||
ENDIF
|
||||
172
|
||||
173 IF XBPSTACK <> 0
|
||||
EXTRN DATA (?C_XBP)
|
||||
|
||||
MOV ?C_XBP,#HIGH XBPSTACKTOP
|
||||
MOV ?C_XBP+1,#LOW XBPSTACKTOP
|
||||
ENDIF
|
||||
179
|
||||
180 IF PBPSTACK <> 0
|
||||
EXTRN DATA (?C_PBP)
|
||||
MOV ?C_PBP,#LOW PBPSTACKTOP
|
||||
ENDIF
|
||||
184
|
||||
0006 758100 F 185 MOV SP,#?STACK-1
|
||||
186
|
||||
187 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
|
||||
188 ;<h> Code Banking
|
||||
189 ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
|
||||
A51 MACRO ASSEMBLER STARTUP 07/03/2025 11:27:53 PAGE 4
|
||||
|
||||
190
|
||||
|
||||
|
||||
|
||||
|
||||
195 ;</h>
|
||||
0009 020000 F 196 LJMP ?C_START
|
||||
197
|
||||
198 END
|
||||
A51 MACRO ASSEMBLER STARTUP 07/03/2025 11:27:53 PAGE 5
|
||||
|
||||
SYMBOL TABLE LISTING
|
||||
------ ----- -------
|
||||
|
||||
|
||||
N A M E T Y P E V A L U E ATTRIBUTES
|
||||
|
||||
?C_C51STARTUP. . . C SEG 000CH 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
|
||||
DPH. . . . . . . . D ADDR 0083H A
|
||||
DPL. . . . . . . . D ADDR 0082H A
|
||||
IBPSTACK . . . . . N NUMB 0000H A
|
||||
IBPSTACKTOP. . . . N NUMB 0100H A
|
||||
IDATALEN . . . . . N NUMB 0080H A
|
||||
IDATALOOP. . . . . C ADDR 0003H R SEG=?C_C51STARTUP
|
||||
PBPSTACK . . . . . N NUMB 0000H A
|
||||
PBPSTACKTOP. . . . N NUMB 0100H 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)
|
||||
+1343
File diff suppressed because it is too large
Load Diff
+3990
File diff suppressed because it is too large
Load Diff
+3994
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+165
@@ -0,0 +1,165 @@
|
||||
C51 COMPILER V9.60.7.0 DEBUG 07/03/2025 11:27:51 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE DEBUG
|
||||
OBJECT MODULE PLACED IN .\hex\debug.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE TS_Lib\Sources\debug.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG
|
||||
-PRINT(.\lst\debug.lst) TABS(2) OBJECT(.\hex\debug.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _I2C_C_
|
||||
2 #define _I2C_C_
|
||||
3
|
||||
4 /*********************************************************************************************************
|
||||
-************/
|
||||
5 #include "ca51f5_config.h"
|
||||
6 #include "includes\ca51f5sfr.h"
|
||||
7 #include "includes\ca51f5xsfr.h"
|
||||
8 #include "includes\gpiodef_f5.h"
|
||||
9 #include "Library\Includes\system_clock.h"
|
||||
10 #include "Library\Includes\i2c.h"
|
||||
11 /*********************************************************************************************************
|
||||
-************/
|
||||
12 #include "TS_Lib\Includes\ts_configuration.h"
|
||||
*** WARNING C329 IN LINE 117 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 118 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 119 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 120 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 121 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 122 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 123 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 124 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
13 #include "TS_Lib\Includes\ts_def.h"
|
||||
14 #include "TS_Lib\Includes\ts_api.h"
|
||||
15 #include "TS_Lib\Includes\ts_service.h"
|
||||
16 /*********************************************************************************************************
|
||||
-************/
|
||||
17 #if DEBUG
|
||||
#define I2C_ADDR 0xCA
|
||||
unsigned char xdata TouchDebugID = '5';
|
||||
unsigned char rxOffset;
|
||||
unsigned char regAddr;
|
||||
bit iicReadMode;
|
||||
extern TSState_T xdata TS_State_Debug;
|
||||
extern unsigned char xdata Key_Cnt_Debug;
|
||||
extern unsigned char xdata TS_CH_Debug[OPENED_TS_COUNT];
|
||||
extern unsigned int xdata TS_RefChBaseLineData;
|
||||
extern unsigned int xdata TS_RefPostData;
|
||||
extern unsigned int xdata KeysFlagSN_Debug;
|
||||
code unsigned char *TS_INFO[]=
|
||||
{
|
||||
&TouchDebugID,
|
||||
&TS_State_Debug,
|
||||
&Key_Cnt_Debug,
|
||||
&TS_RefChBaseLineData,
|
||||
&TS_RefPostData,
|
||||
&KeysFlagSN_Debug,
|
||||
&TS_BaseLineData[0],
|
||||
&TS_PostData[0],
|
||||
&TSKey_FingerThd[0],
|
||||
&TS_CH_Debug[0],
|
||||
};
|
||||
unsigned char *pTS_Info;
|
||||
void I2C_ISR(void)
|
||||
C51 COMPILER V9.60.7.0 DEBUG 07/03/2025 11:27:51 PAGE 2
|
||||
|
||||
{
|
||||
unsigned char Sta_Temp;
|
||||
TouchDebugID = '5';
|
||||
Sta_Temp = I2CSTA;
|
||||
|
||||
if(Sta_Temp == 0x60) //接收到从机地址+写位
|
||||
{
|
||||
rxOffset = 0xff;
|
||||
iicReadMode = 0;
|
||||
I2CCON |= AAK(1);
|
||||
}
|
||||
else if(Sta_Temp == 0x80)
|
||||
{
|
||||
if(iicReadMode) //发送一字节数据
|
||||
{
|
||||
rxOffset++;
|
||||
I2CDAT = *(pTS_Info+rxOffset);
|
||||
}
|
||||
else //接收到一字节数据
|
||||
{
|
||||
if(rxOffset == 0xff) //地址
|
||||
{
|
||||
regAddr=I2CDAT;
|
||||
pTS_Info = TS_INFO[regAddr];
|
||||
rxOffset=0;
|
||||
I2CCON |= AAK(1);
|
||||
}
|
||||
else //数据
|
||||
{
|
||||
*(pTS_Info+rxOffset) = I2CDAT;
|
||||
rxOffset++;
|
||||
I2CCON |= AAK(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(Sta_Temp==0xA8) //接收到从机地址+读位,发送ACK信号
|
||||
{
|
||||
I2CDAT = *(pTS_Info+rxOffset);
|
||||
iicReadMode = 1;
|
||||
}
|
||||
else if(Sta_Temp == 0x88)
|
||||
{
|
||||
}
|
||||
I2CFLG |= I2CF;
|
||||
}
|
||||
void Debug_init(void)
|
||||
{
|
||||
#ifdef I2C_SELECT_P30_P31
|
||||
I2CIOS = 0;
|
||||
GPIO_Init(P30F,P30_I2C_SDA_SETTING);
|
||||
GPIO_Init(P31F,P31_I2C_SCL_SETTING);
|
||||
#elif defined I2C_SELECT_P02_P03
|
||||
I2CIOS = 1;
|
||||
GPIO_Init(P03F,P03_I2C_SDA_SETTING);
|
||||
GPIO_Init(P02F,P02_I2C_SCL_SETTING);
|
||||
#endif
|
||||
|
||||
I2CCON = I2CE(1) | I2CIE(1) | STA(0) | STP(0)| CKHD(0) | AAK(1)| CBSE(0) | STFE(0);
|
||||
I2CADR = (I2C_ADDR>>1);
|
||||
|
||||
INT4EN = 1;
|
||||
PS1 = 1;
|
||||
C51 COMPILER V9.60.7.0 DEBUG 07/03/2025 11:27:51 PAGE 3
|
||||
|
||||
}
|
||||
void Debug_ParamLoad(void)
|
||||
{
|
||||
unsigned char i;
|
||||
KeysFlagSN_Debug = (unsigned int)KeysFlagSN;
|
||||
TS_State_Debug = TS_State;
|
||||
Key_Cnt_Debug = KEY_CH_COUNT;
|
||||
for(i = 0; i < KEY_CH_COUNT; i++)
|
||||
{
|
||||
TS_CH_Debug[i] = TS_CH[i];
|
||||
}
|
||||
TS_RefPostData = TS_PostData[OPENED_TS_COUNT];
|
||||
TS_RefChBaseLineData = TS_RefPostData;
|
||||
}
|
||||
|
||||
#endif
|
||||
122 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = ---- ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 8 WARNING(S), 0 ERROR(S)
|
||||
@@ -0,0 +1,50 @@
|
||||
C51 COMPILER V9.60.7.0 DELAY 07/03/2025 11:27:47 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE DELAY
|
||||
OBJECT MODULE PLACED IN .\hex\delay.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE Library\Sources\delay.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG
|
||||
- PRINT(.\lst\delay.lst) TABS(2) OBJECT(.\hex\delay.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _Delay_C_
|
||||
2 #define _Delay_C_
|
||||
3 /*********************************************************************************************************
|
||||
-************/
|
||||
4 void Delay_50us(unsigned int n)
|
||||
5 {
|
||||
6 1 unsigned char i;
|
||||
7 1 while(n--)
|
||||
8 1 {
|
||||
9 2 for(i=0;i<71;i++);
|
||||
10 2 }
|
||||
11 1 }
|
||||
12 void Delay_ms(unsigned int delay_nms)
|
||||
13 {
|
||||
14 1 while(delay_nms--)
|
||||
15 1 {
|
||||
16 2 Delay_50us(20);
|
||||
17 2 }
|
||||
18 1 }
|
||||
19 /*********************************************************************************************************
|
||||
-************/
|
||||
20 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 49 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
@@ -0,0 +1,13 @@
|
||||
C51 COMPILER V9.51 DISPLAY 07/30/2019 10:38:08 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.51, COMPILATION OF MODULE DISPLAY
|
||||
OBJECT MODULE PLACED IN .\hex\display.obj
|
||||
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE display.c OMF2 ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\displ
|
||||
-ay.lst) TABS(2) OBJECT(.\hex\display.obj)
|
||||
|
||||
line level source
|
||||
|
||||
*** ERROR C318 OF display.c: can't open file 'display.c'
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 1 ERROR(S)
|
||||
@@ -0,0 +1,135 @@
|
||||
C51 COMPILER V9.60.7.0 INTERRUPT 07/03/2025 11:27:50 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE INTERRUPT
|
||||
OBJECT MODULE PLACED IN .\hex\interrupt.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE interrupt.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst
|
||||
-\interrupt.lst) TABS(2) OBJECT(.\hex\interrupt.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _INTERRUPT_C_
|
||||
2 #define _INTERRUPT_C_
|
||||
3
|
||||
4 /*********************************************************************************************************
|
||||
-************/
|
||||
5 #include "ca51f5_config.h"
|
||||
6 #include "includes\ca51f5sfr.h"
|
||||
7 #include "includes\ca51f5xsfr.h"
|
||||
8 #include "includes\gpiodef_f5.h"
|
||||
9 #include "includes\system.h"
|
||||
10 #include "Library\includes\uart.h"
|
||||
11 #include "Library\Includes\tmc.h"
|
||||
12
|
||||
13 #include "TS_Lib\Includes\ts_configuration.h"
|
||||
*** WARNING C329 IN LINE 117 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 118 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 119 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 120 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 121 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 122 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 123 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 124 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
14 #include "TS_Lib\Includes\ts_def.h"
|
||||
15 #include "TS_Lib\Includes\ts_api.h"
|
||||
16 #include "TS_Lib\Includes\ts_service.h"
|
||||
17 #include <intrins.h>
|
||||
18
|
||||
19 #include "rf_send.h"
|
||||
20
|
||||
21
|
||||
22 #if DEBUG
|
||||
#include "Library\Includes\i2c.h"
|
||||
void I2C_ISR(void);
|
||||
#endif
|
||||
26 /*********************************************************************************************************
|
||||
-************/
|
||||
27 extern unsigned char xdata TS_HalfSecCnt;
|
||||
28 void INT2_Handler (void) interrupt 4
|
||||
29 {
|
||||
30 1 #ifdef UART0_EN
|
||||
if(RI0)
|
||||
{
|
||||
UART0_RX_ISR();
|
||||
}
|
||||
if(TI0)
|
||||
{
|
||||
UART0_TX_ISR();
|
||||
}
|
||||
#endif
|
||||
40 1 }
|
||||
41
|
||||
42 void INT3_ISR (void) interrupt 5
|
||||
43 {
|
||||
44 1 static unsigned char TmCnt = 0;
|
||||
C51 COMPILER V9.60.7.0 INTERRUPT 07/03/2025 11:27:50 PAGE 2
|
||||
|
||||
45 1 if(TMCON & TMF) //ºÁÃëÖжÏ
|
||||
46 1 {
|
||||
47 2 TMCON |= TMF;
|
||||
48 2 #if SUPPORT_TOUCH_SLEEP_MODE
|
||||
49 2 if(TS_SleepMode)
|
||||
50 2 {
|
||||
51 3 TS_HalfSecCnt++;
|
||||
52 3 return;
|
||||
53 3 }
|
||||
54 2 else
|
||||
55 2 {
|
||||
56 3 TS_MS_ISR();
|
||||
57 3 }
|
||||
58 2 #else
|
||||
TS_MS_ISR();
|
||||
#endif
|
||||
61 2 if(TS_LongKeyTimer)
|
||||
62 2 {
|
||||
63 3 TS_LongKeyTimer--;
|
||||
64 3 }
|
||||
65 2 TmCnt++;
|
||||
66 2 if(TmCnt >= 128)
|
||||
67 2 {
|
||||
68 3 TmCnt = 0;
|
||||
69 3 TS_HS_ISR();
|
||||
70 3 }
|
||||
71 2 if(RF_Time<250)RF_Time++; //4ms
|
||||
72 2 }
|
||||
73 1 #if SUPPORT_TOUCH_SLEEP_MODE
|
||||
74 1 if(TS_SleepMode)
|
||||
75 1 {
|
||||
76 2 return;
|
||||
77 2 }
|
||||
78 1 #endif
|
||||
79 1 if(TKIF != 0)
|
||||
80 1 {
|
||||
81 2 TS_ISR();
|
||||
82 2 }
|
||||
83 1 }
|
||||
84 void INT4_ISR(void) interrupt 6
|
||||
85 {
|
||||
86 1 #if DEBUG
|
||||
if(I2CFLG & I2CF)
|
||||
{
|
||||
I2C_ISR();
|
||||
}
|
||||
#endif
|
||||
92 1 }
|
||||
93 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 137 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 1 ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
C51 COMPILER V9.60.7.0 INTERRUPT 07/03/2025 11:27:50 PAGE 3
|
||||
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 8 WARNING(S), 0 ERROR(S)
|
||||
+251
@@ -0,0 +1,251 @@
|
||||
C51 COMPILER V9.51 KEY 03/07/2018 10:41:04 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.51, COMPILATION OF MODULE KEY
|
||||
OBJECT MODULE PLACED IN .\hex\key.obj
|
||||
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c OMF2 ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\key.lst)
|
||||
-TABS(2) OBJECT(.\hex\key.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _KEY_C_
|
||||
2 #define _KEY_C_
|
||||
3
|
||||
4 /*********************************************************************************************************
|
||||
-************/
|
||||
5 #include "ca51f5_config.h"
|
||||
6 #include "includes\ca51f5sfr.h"
|
||||
7 #include "includes\ca51f5xsfr.h"
|
||||
8 #include "includes\gpiodef_f5.h"
|
||||
9
|
||||
10 #include "Library\Includes\system_clock.h"
|
||||
11 #include "Library\includes\uart.h"
|
||||
12 #include "key.h"
|
||||
13 #include "io.h"
|
||||
14 /*********************************************************************************************************
|
||||
-************/
|
||||
15 #include "TS_Lib\Includes\ts_configuration.h"
|
||||
16 #include "TS_Lib\Includes\ts_def.h"
|
||||
17 #include "TS_Lib\Includes\ts_api.h"
|
||||
18 #include "TS_Lib\Includes\ts_service.h"
|
||||
19 /*********************************************************************************************************
|
||||
-************/
|
||||
20
|
||||
21 /*************************************************************************************************
|
||||
22 单键:以K1为例,K1按键产生的流程如下所示:
|
||||
23
|
||||
24 --> K1|KEY_BREAK(短按松开)
|
||||
25 -
|
||||
26 K1(按下)--
|
||||
27 -
|
||||
28 --> K1|KEY_LONG_START(长按大约1秒)---> K1|KEY_LONG(一直长按,约每300ms产生长按键)---->K1|KEY_LONG_BR
|
||||
-EAK(长按松开)
|
||||
29 ^ |
|
||||
30 | |
|
||||
31 |-----------------------------------------------|
|
||||
32
|
||||
33 复合键:
|
||||
34 以K1(K1=0x0001),K2(K2=0x0002)为例, 当K1,K2同时按下时,产生按键为(K1<<5)|K2,即0x22, 产生按键的流程如下所
|
||||
-示:
|
||||
35
|
||||
36
|
||||
37 --> ((K1<<5)|K2)|KEY_BREAK(短按松开)
|
||||
38 -
|
||||
39 (K1<<5)|K2(按下)--
|
||||
40 -
|
||||
41 --> ((K1<<5)|K2)|KEY_LONG_START(长按大约1秒)---> ((K1<<5)|K2)|KEY_LONG(一直长按,约每300ms产生长
|
||||
-按键)---->((K1<<5)|K2)|KEY_LONG_BREAK(长按松开)
|
||||
42 ^ |
|
||||
43 | |
|
||||
44 |---------------------------------------------------------|
|
||||
45 注意:由于复合键按下时,软件不一定同时检测到双键,而是先检测到单键按下,例如先检测到K1,此时会先产生K1键,
|
||||
-等到检测到K2也按
|
||||
46 下时,才会产生按键(K1<<5)|K2,检测到双键后,如果双键一直按下,会产生((K1<<5)|K2)|KEY_LONG_START和((K1<<5)|
|
||||
-K2)|KEY_LONG,如果
|
||||
C51 COMPILER V9.51 KEY 03/07/2018 10:41:04 PAGE 2
|
||||
|
||||
47 有一个键先松手,会停止产生按键, 等到双键都松开时,才会产生((K1<<5)|K2)|KEY_BREAK(短按松开)或((K1<<5)|K2)|
|
||||
-KEY_LONG_BREAK(长按松开)
|
||||
48 *************************************************************************************************/
|
||||
49 typedef struct
|
||||
50 {
|
||||
51 unsigned char TogKeyNum;
|
||||
52 unsigned char TogKeyList[2];
|
||||
53 }
|
||||
54 T_TogKeyInfo;
|
||||
55 code unsigned char TS_KEY_TAB[]=
|
||||
56 {
|
||||
57 K1,K2,K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,K13
|
||||
58 };
|
||||
59 void TSKey_init(void)
|
||||
60 {
|
||||
61 1 TK_State = TK_STATE_RELEASE;
|
||||
62 1 TS_Key = 0;
|
||||
63 1 }
|
||||
64 void TS_GetTogKeyInfor(T_TogKeyInfo *pKeyInfo)
|
||||
65 {
|
||||
66 1 unsigned char i,index;
|
||||
67 1 pKeyInfo->TogKeyNum = 0;
|
||||
68 1 index = 0;
|
||||
69 1 for(i = 0; i < KEY_CH_COUNT; i++)
|
||||
70 1 {
|
||||
71 2 if(KeysFlagSN & MASK_TAB[i])
|
||||
72 2 {
|
||||
73 3 pKeyInfo->TogKeyNum++;
|
||||
74 3
|
||||
75 3 if(pKeyInfo->TogKeyNum <= 2)
|
||||
76 3 {
|
||||
77 4 pKeyInfo->TogKeyList[index++] = TS_KEY_TAB[i];
|
||||
78 4 }
|
||||
79 3 }
|
||||
80 2 }
|
||||
81 1 }
|
||||
82
|
||||
83 void TS_GetKey(void)
|
||||
84 {
|
||||
85 1 static unsigned int KeyBak;
|
||||
86 1 static bit LongFlag;
|
||||
87 1 T_TogKeyInfo KeyInfo;
|
||||
88 1 unsigned char i;
|
||||
89 1 TS_Key = 0;
|
||||
90 1 TS_GetTogKeyInfor(&KeyInfo);
|
||||
91 1
|
||||
92 1 if(TK_State == TK_STATE_RELEASE)
|
||||
93 1 {
|
||||
94 2 if(KeyInfo.TogKeyNum != 0)
|
||||
95 2 {
|
||||
96 3 if(KeyInfo.TogKeyNum == 1)
|
||||
97 3 {
|
||||
98 4 KeyBak = (unsigned int)KeyInfo.TogKeyList[0];
|
||||
99 4 TK_State = TK_STATE_SINGLE_KEY_PRESS;
|
||||
100 4 }
|
||||
101 3 else if(KeyInfo.TogKeyNum == 2)
|
||||
102 3 {
|
||||
103 4 KeyBak = ((unsigned int)KeyInfo.TogKeyList[0]<<5)|(unsigned int)KeyInfo.TogKeyList[1];
|
||||
104 4 TK_State = TK_STATE_DOUBLE_KEY_PRESS;
|
||||
105 4 }
|
||||
106 3
|
||||
107 3 TS_Key = KeyBak;
|
||||
C51 COMPILER V9.51 KEY 03/07/2018 10:41:04 PAGE 3
|
||||
|
||||
108 3 LongFlag = 0;
|
||||
109 3 TS_LongKeyTimer = TS_LONG_START_TIME;
|
||||
110 3 BUZZ_ON;
|
||||
111 3 }
|
||||
112 2 }
|
||||
113 1 else if(TK_State == TK_STATE_SINGLE_KEY_PRESS)
|
||||
114 1 {
|
||||
115 2 if(KeyInfo.TogKeyNum == 1)
|
||||
116 2 {
|
||||
117 3 if(KeyBak == (unsigned int)KeyInfo.TogKeyList[0])
|
||||
118 3 {
|
||||
119 4 if(!TS_LongKeyTimer)
|
||||
120 4 {
|
||||
121 5 if(!LongFlag)
|
||||
122 5 {
|
||||
123 6 LongFlag = 1;
|
||||
124 6 TS_Key = KeyBak | KEY_LONG_START;
|
||||
125 6 }
|
||||
126 5 else
|
||||
127 5 {
|
||||
128 6 TS_Key = KeyBak | KEY_LONG;
|
||||
129 6 }
|
||||
130 5 TS_LongKeyTimer = TS_LONG_TIME;
|
||||
131 5 }
|
||||
132 4 }
|
||||
133 3 else
|
||||
134 3 {
|
||||
135 4 if(!LongFlag)
|
||||
136 4 {
|
||||
137 5 TS_Key = KeyBak | KEY_BREAK;
|
||||
138 5 }
|
||||
139 4 else
|
||||
140 4 {
|
||||
141 5 TS_Key = KeyBak | KEY_LONG_BREAK;
|
||||
142 5 }
|
||||
143 4 TK_State = TK_STATE_RELEASE;
|
||||
144 4 BUZZ_OFF;
|
||||
145 4 }
|
||||
146 3 }
|
||||
147 2 else if(KeyInfo.TogKeyNum == 2)
|
||||
148 2 {
|
||||
149 3 KeyBak = ((unsigned int)KeyInfo.TogKeyList[0]<<5) | (unsigned int)KeyInfo.TogKeyList[1];
|
||||
150 3 TK_State = TK_STATE_DOUBLE_KEY_PRESS;
|
||||
151 3 TS_Key = KeyBak;
|
||||
152 3 LongFlag = 0;
|
||||
153 3 TS_LongKeyTimer = TS_LONG_START_TIME;
|
||||
154 3 }
|
||||
155 2 else if(KeyInfo.TogKeyNum == 0)
|
||||
156 2 {
|
||||
157 3 if(!LongFlag)
|
||||
158 3 {
|
||||
159 4 TS_Key = KeyBak | KEY_BREAK;
|
||||
160 4 }
|
||||
161 3 else
|
||||
162 3 {
|
||||
163 4 TS_Key = KeyBak | KEY_LONG_BREAK;
|
||||
164 4 }
|
||||
165 3 TK_State = TK_STATE_RELEASE;
|
||||
166 3 BUZZ_OFF;
|
||||
167 3 }
|
||||
168 2 }
|
||||
169 1 else if(TK_State == TK_STATE_DOUBLE_KEY_PRESS)
|
||||
C51 COMPILER V9.51 KEY 03/07/2018 10:41:04 PAGE 4
|
||||
|
||||
170 1 {
|
||||
171 2 if(KeyInfo.TogKeyNum == 2)
|
||||
172 2 {
|
||||
173 3 if(KeyBak == ((unsigned int)KeyInfo.TogKeyList[0]<<5)|(unsigned int)KeyInfo.TogKeyList[1])
|
||||
174 3 {
|
||||
175 4 if(!TS_LongKeyTimer)
|
||||
176 4 {
|
||||
177 5 if(!LongFlag)
|
||||
178 5 {
|
||||
179 6 LongFlag = 1;
|
||||
180 6 TS_Key = KeyBak | KEY_LONG_START;
|
||||
181 6 }
|
||||
182 5 else
|
||||
183 5 {
|
||||
184 6 TS_Key = KeyBak | KEY_LONG;
|
||||
185 6 }
|
||||
186 5 TS_LongKeyTimer = TS_LONG_TIME;
|
||||
187 5 }
|
||||
188 4 }
|
||||
189 3 }
|
||||
190 2 else if(KeyInfo.TogKeyNum == 0)
|
||||
191 2 {
|
||||
192 3 if(!LongFlag)
|
||||
193 3 {
|
||||
194 4 TS_Key = KeyBak | KEY_BREAK;
|
||||
195 4 }
|
||||
196 3 else
|
||||
197 3 {
|
||||
198 4 TS_Key = KeyBak | KEY_LONG_BREAK;
|
||||
199 4 }
|
||||
200 3 TK_State = TK_STATE_RELEASE;
|
||||
201 3 BUZZ_OFF;
|
||||
202 3 }
|
||||
203 2 }
|
||||
204 1 }
|
||||
*** WARNING C280 IN LINE 88 OF key.c: 'i': unreferenced local variable
|
||||
205 /*********************************************************************************************************
|
||||
-************/
|
||||
206 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 407 ----
|
||||
CONSTANT SIZE = 13 ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 7 9
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = 1 ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
|
||||
+696
@@ -0,0 +1,696 @@
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE MAIN
|
||||
OBJECT MODULE PLACED IN .\hex\main.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE main.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\main
|
||||
-.lst) TABS(2) OBJECT(.\hex\main.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _MAIN_C_
|
||||
2 #define _MAIN_C_
|
||||
3 /*********************************************************************************************************
|
||||
-************/
|
||||
4 #include "ca51f5_config.h"
|
||||
5 #include "includes\ca51f5sfr.h"
|
||||
6 #include "includes\ca51f5xsfr.h"
|
||||
7 #include "includes\gpiodef_f5.h"
|
||||
8
|
||||
9 #include "Library\includes\uart.h"
|
||||
10 #include "Library\includes\system_clock.h"
|
||||
11 #include "Library\Includes\tmc.h"
|
||||
12 #include "includes\system.h"
|
||||
13 #include "Library\includes\wdt.h"
|
||||
14 /*********************************************************************************************************
|
||||
-************/
|
||||
15 #include "TS_Lib\Includes\ts_configuration.h"
|
||||
*** WARNING C329 IN LINE 117 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 118 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 119 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 120 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 121 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 122 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 123 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 124 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
16 #include "TS_Lib\Includes\ts_def.h"
|
||||
17 #include "TS_Lib\Includes\ts_api.h"
|
||||
18 #include "TS_Lib\Includes\ts_service.h"
|
||||
19 #include "rf_send.h"
|
||||
20
|
||||
21 #include "Library\Includes\delay.h"
|
||||
22
|
||||
23 #define INT_TIME 100 //定时时间,单位为us
|
||||
24
|
||||
25 #define TH_VAL (unsigned char)((0x2000 - (INT_TIME*(FOSC/1000))/12000)>>5)
|
||||
26 #define TL_VAL (unsigned char)(0x2000 - (INT_TIME*(FOSC/1000))/12000)&0x1F
|
||||
27
|
||||
28
|
||||
29
|
||||
30 unsigned char flagSend = 0;
|
||||
31 unsigned char valueSend = 0;
|
||||
32 unsigned char flagStart = 0;
|
||||
33
|
||||
34
|
||||
35
|
||||
36 void Delay_ms(unsigned int n);
|
||||
37
|
||||
38 void TIMER0_ISR (void) interrupt 1 //每100us产生中断
|
||||
39 {
|
||||
40 1 TH0 = TH_VAL;
|
||||
41 1 TL0 = TL_VAL;
|
||||
42 1
|
||||
43 1 Send433_Byte();
|
||||
44 1 }
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 2
|
||||
|
||||
45 /*********************************************************************************************************
|
||||
-************/
|
||||
46 /*********************************************************************************************************
|
||||
-**********************************
|
||||
47 说明:
|
||||
48 ----------------------------------------------------------------------------------------------------------
|
||||
---
|
||||
49 1.ts_configuration.h是触摸的配置文件,可在配置文件中设置触摸通道、灵敏度等。详见ts_configuration.h中的说明
|
||||
-。
|
||||
50 ----------------------------------------------------------------------------------------------------------
|
||||
---
|
||||
51 2.如果需要使用UART来调试,可在ca51f5_config.h中打开宏定义UART0_EN
|
||||
52 ----------------------------------------------------------------------------------------------------------
|
||||
---
|
||||
53 3.触摸库对外的数据接口为KeysFlagSN,用户可根据KeysFlagSN的值来判断触摸键是否按下(如果触摸键按下,KeysFlag
|
||||
-SN
|
||||
54 的对应位一直为1,触摸键松开,对应位变为0),TS_Key是根据KeysFlagSN的值生成的按键消息,用户如不使用可忽略。
|
||||
55 ----------------------------------------------------------------------------------------------------------
|
||||
---
|
||||
56 4.使能了触摸省电模式后,在无按键时,在定义的时间后会进入省电模式,进入省电模式前会关闭TMC中断和触摸中断(�
|
||||
-⒁猓��
|
||||
57 中断仍是开启的),在触摸省电模式下,CPU会进入STOP模式,在被触摸唤醒后,程序在省电函数(TS_EnterSleepMode)
|
||||
-的循环内运行(注意,触摸省电模式程序不
|
||||
58 会在主循环内运行),在触摸省电模式下如果还要响应其他中断,用户需在进入触摸省电模式前自行开启其他中断,
|
||||
59 如果需要退出省电模式,用户只需要在省电函数循环内加入条件判断,跳出循环即可。
|
||||
60
|
||||
61 变量TS_SleepEn是控制触摸省电模式的开关,如果希望程序在某些条件下不进入省电模式,只需在此条件下设置TS_Sleep
|
||||
-En = 0;
|
||||
62
|
||||
63
|
||||
64 ----------------------------------------------------------------------------------------------------------
|
||||
---
|
||||
65 5.触摸外挂电容(即TK_CAP引脚连接电容)范围:6nF~50nF,建议值:20nF(即203)
|
||||
66 ----------------------------------------------------------------------------------------------------------
|
||||
---
|
||||
67 6.触摸引脚串联电阻范围:0~5K,建议值:1K欧姆,如果有抗对讲机等电磁干扰要求, 此电阻至少3K以上。
|
||||
68 **********************************************************************************************************
|
||||
-*********************************/
|
||||
69 unsigned long int Read_32bit_UID(void)
|
||||
70 {
|
||||
71 1 unsigned long int ID;
|
||||
72 1 FSCMD = 0x80;
|
||||
73 1 PTSH = 0x00;
|
||||
74 1 PTSL = 0x00;
|
||||
75 1 FSCMD = 0x81;
|
||||
76 1 ID = FSDAT;
|
||||
77 1 ID *= 256;
|
||||
78 1 ID |= FSDAT;
|
||||
79 1 ID *= 256;
|
||||
80 1 ID |= FSDAT;
|
||||
81 1 ID *= 256;
|
||||
82 1 ID |= FSDAT;
|
||||
83 1 FSCMD = 0;
|
||||
84 1 return ID;
|
||||
85 1 }
|
||||
86 code unsigned char rf_data[255]=
|
||||
87 {
|
||||
88 0 ,
|
||||
89 1 ,
|
||||
90 2 ,
|
||||
91 3 ,
|
||||
92 4 ,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 3
|
||||
|
||||
93 5 ,
|
||||
94 6 ,
|
||||
95 7 ,
|
||||
96 8 ,
|
||||
97 9 ,
|
||||
98 10 ,
|
||||
99 11 ,
|
||||
100 12 ,
|
||||
101 13 ,
|
||||
102 14 ,
|
||||
103 15 ,
|
||||
104 16 ,
|
||||
105 17 ,
|
||||
106 18 ,
|
||||
107 18 ,
|
||||
108 19 ,
|
||||
109 20 ,
|
||||
110 21 ,
|
||||
111 22 ,
|
||||
112 23 ,
|
||||
113 24 ,
|
||||
114 25 ,
|
||||
115 26 ,
|
||||
116 27 ,
|
||||
117 28 ,
|
||||
118 29 ,
|
||||
119 30 ,
|
||||
120 31 ,
|
||||
121 32 ,
|
||||
122 33 ,
|
||||
123 34 ,
|
||||
124 35 ,
|
||||
125 36 ,
|
||||
126 37 ,
|
||||
127 37 ,
|
||||
128 38 ,
|
||||
129 39 ,
|
||||
130 40 ,
|
||||
131 41 ,
|
||||
132 42 ,
|
||||
133 43 ,
|
||||
134 44 ,
|
||||
135 45 ,
|
||||
136 46 ,
|
||||
137 47 ,
|
||||
138 48 ,
|
||||
139 49 ,
|
||||
140 50 ,
|
||||
141 51 ,
|
||||
142 52 ,
|
||||
143 53 ,
|
||||
144 54 ,
|
||||
145 55 ,
|
||||
146 56 ,
|
||||
147 56 ,
|
||||
148 57 ,
|
||||
149 58 ,
|
||||
150 59 ,
|
||||
151 60 ,
|
||||
152 61 ,
|
||||
153 62 ,
|
||||
154 63 ,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 4
|
||||
|
||||
155 64 ,
|
||||
156 65 ,
|
||||
157 66 ,
|
||||
158 67 ,
|
||||
159 68 ,
|
||||
160 69 ,
|
||||
161 70 ,
|
||||
162 71 ,
|
||||
163 72 ,
|
||||
164 73 ,
|
||||
165 74 ,
|
||||
166 74 ,
|
||||
167 75 ,
|
||||
168 76 ,
|
||||
169 77 ,
|
||||
170 78 ,
|
||||
171 79 ,
|
||||
172 80 ,
|
||||
173 81 ,
|
||||
174 82 ,
|
||||
175 83 ,
|
||||
176 84 ,
|
||||
177 85 ,
|
||||
178 86 ,
|
||||
179 87 ,
|
||||
180 88 ,
|
||||
181 89 ,
|
||||
182 90 ,
|
||||
183 91 ,
|
||||
184 92 ,
|
||||
185 93 ,
|
||||
186 93 ,
|
||||
187 94 ,
|
||||
188 95 ,
|
||||
189 96 ,
|
||||
190 97 ,
|
||||
191 98 ,
|
||||
192 99 ,
|
||||
193 100 ,
|
||||
194 101 ,
|
||||
195 102 ,
|
||||
196 103 ,
|
||||
197 104 ,
|
||||
198 105 ,
|
||||
199 106 ,
|
||||
200 107 ,
|
||||
201 108 ,
|
||||
202 109 ,
|
||||
203 110 ,
|
||||
204 111 ,
|
||||
205 112 ,
|
||||
206 112 ,
|
||||
207 113 ,
|
||||
208 114 ,
|
||||
209 115 ,
|
||||
210 116 ,
|
||||
211 117 ,
|
||||
212 118 ,
|
||||
213 119 ,
|
||||
214 120 ,
|
||||
215 121 ,
|
||||
216 122 ,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 5
|
||||
|
||||
217 123 ,
|
||||
218 124 ,
|
||||
219 125 ,
|
||||
220 126 ,
|
||||
221 127 ,
|
||||
222 128 ,
|
||||
223 129 ,
|
||||
224 130 ,
|
||||
225 130 ,
|
||||
226 131 ,
|
||||
227 132 ,
|
||||
228 133 ,
|
||||
229 134 ,
|
||||
230 135 ,
|
||||
231 136 ,
|
||||
232 137 ,
|
||||
233 138 ,
|
||||
234 139 ,
|
||||
235 140 ,
|
||||
236 141 ,
|
||||
237 142 ,
|
||||
238 143 ,
|
||||
239 144 ,
|
||||
240 145 ,
|
||||
241 146 ,
|
||||
242 147 ,
|
||||
243 148 ,
|
||||
244 149 ,
|
||||
245 149 ,
|
||||
246 150 ,
|
||||
247 151 ,
|
||||
248 152 ,
|
||||
249 153 ,
|
||||
250 154 ,
|
||||
251 155 ,
|
||||
252 156 ,
|
||||
253 157 ,
|
||||
254 158 ,
|
||||
255 159 ,
|
||||
256 160 ,
|
||||
257 161 ,
|
||||
258 162 ,
|
||||
259 163 ,
|
||||
260 164 ,
|
||||
261 165 ,
|
||||
262 166 ,
|
||||
263 167 ,
|
||||
264 168 ,
|
||||
265 168 ,
|
||||
266 169 ,
|
||||
267 170 ,
|
||||
268 171 ,
|
||||
269 172 ,
|
||||
270 173 ,
|
||||
271 174 ,
|
||||
272 175 ,
|
||||
273 176 ,
|
||||
274 177 ,
|
||||
275 178 ,
|
||||
276 179 ,
|
||||
277 180 ,
|
||||
278 181 ,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 6
|
||||
|
||||
279 182 ,
|
||||
280 183 ,
|
||||
281 184 ,
|
||||
282 185 ,
|
||||
283 186 ,
|
||||
284 186 ,
|
||||
285 187 ,
|
||||
286 188 ,
|
||||
287 189 ,
|
||||
288 190 ,
|
||||
289 191 ,
|
||||
290 192 ,
|
||||
291 193 ,
|
||||
292 194 ,
|
||||
293 195 ,
|
||||
294 196 ,
|
||||
295 197 ,
|
||||
296 198 ,
|
||||
297 199 ,
|
||||
298 200 ,
|
||||
299 201 ,
|
||||
300 202 ,
|
||||
301 203 ,
|
||||
302 204 ,
|
||||
303 205 ,
|
||||
304 205 ,
|
||||
305 206 ,
|
||||
306 207 ,
|
||||
307 208 ,
|
||||
308 209 ,
|
||||
309 210 ,
|
||||
310 211 ,
|
||||
311 212 ,
|
||||
312 213 ,
|
||||
313 214 ,
|
||||
314 215 ,
|
||||
315 216 ,
|
||||
316 217 ,
|
||||
317 218 ,
|
||||
318 219 ,
|
||||
319 220 ,
|
||||
320 221 ,
|
||||
321 222 ,
|
||||
322 223 ,
|
||||
323 224 ,
|
||||
324 224 ,
|
||||
325 225 ,
|
||||
326 226 ,
|
||||
327 227 ,
|
||||
328 228 ,
|
||||
329 229 ,
|
||||
330 230 ,
|
||||
331 231 ,
|
||||
332 232 ,
|
||||
333 233 ,
|
||||
334 234 ,
|
||||
335 235 ,
|
||||
336 236 ,
|
||||
337 237 ,
|
||||
338 238 ,
|
||||
339 239 ,
|
||||
340 239,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 7
|
||||
|
||||
341 240,
|
||||
342 240,
|
||||
343 };
|
||||
344 void main(void)
|
||||
345 {
|
||||
346 1 unsigned long int addr=0;
|
||||
347 1 unsigned char send_times = 0;
|
||||
348 1 #ifdef LVD_RST_ENABLE
|
||||
349 1 LVDCON = 0xE3; //设置LVD复位电压为2.0V
|
||||
350 1 #endif
|
||||
351 1
|
||||
352 1 #ifdef UART0_EN
|
||||
Uart0_Initial(UART0_BAUTRATE);
|
||||
#endif
|
||||
355 1
|
||||
356 1 //看门狗时钟源为IRCL
|
||||
357 1 CKCON |= ILCKE; //使能IRCL
|
||||
358 1 WDCON = WDTS(WDTS_IRCL) | WDRE(WDRE_reset); //设置看门狗时钟源为ILCKE,模式为复位模式
|
||||
359 1 WDVTHH = 0; //看门狗复位阈值高八位设置 当前值为5s
|
||||
360 1 WDVTHL = 75; //看门狗复位阈值低八位设置
|
||||
361 1 WDFLG = 0xA5;
|
||||
362 1
|
||||
363 1 EA = 1;
|
||||
364 1
|
||||
365 1 TS_init();
|
||||
366 1
|
||||
367 1 P32F = OUTPUT; //P00设置为推挽输出模式
|
||||
368 1 P32=0;
|
||||
369 1
|
||||
370 1 addr = (unsigned int)Read_32bit_UID(); //获取遥控ID
|
||||
371 1 D0 = (unsigned char)(addr >> 8);
|
||||
372 1 D1 = (unsigned char)(addr);
|
||||
373 1
|
||||
374 1 Yaokong_Data[0] = D1;
|
||||
375 1 Yaokong_Data[1] = D0;
|
||||
376 1
|
||||
377 1 TMOD = (TMOD&0xFC)|0x00; //模式选择: 定时器0,模式0。
|
||||
378 1 TH0 = TH_VAL; //高8位装初值
|
||||
379 1 TL0 = TL_VAL; //低8位装初值
|
||||
380 1
|
||||
381 1 TR0 = 0; //定时器0使能
|
||||
382 1 ET0 = 1; //定时器0中断使能
|
||||
383 1 PT0 = 0; //设置定时器0中断优先级为低优先级
|
||||
384 1
|
||||
385 1 while(1)
|
||||
386 1 {
|
||||
387 2 TS_Action();
|
||||
388 2 if(WheelSliderPosition != -1)
|
||||
389 2 {
|
||||
390 3 flagSend = 1;
|
||||
391 3 flagStart = 0;
|
||||
392 3 //当WheelSliderPosition不等于-1时, 表示滑条或圆环有触摸事件发生。WheelSliderPosition的值表示滑条或圆环
|
||||
-的位置。
|
||||
393 3 send_times = 1;
|
||||
394 3 valueSend=rf_data[ WheelSliderPosition];//0-240
|
||||
395 3 valueSend += 15;//15-255
|
||||
396 3 }
|
||||
397 2
|
||||
398 2 if(KeysFlagSN != 0)
|
||||
399 2 {
|
||||
400 3 flagSend = 1;
|
||||
401 3 flagStart = 0;
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 8
|
||||
|
||||
402 3 switch(KeysFlagSN)
|
||||
403 3 {
|
||||
404 4 case 0x0001:
|
||||
405 4 valueSend = 0x05;
|
||||
406 4 break;
|
||||
407 4 case 0x0002:
|
||||
408 4 valueSend = 0x0c;
|
||||
409 4 break;
|
||||
410 4 case 0x0004:
|
||||
411 4 valueSend = 0x0a;
|
||||
412 4 break;
|
||||
413 4 case 0x0008:
|
||||
414 4 valueSend = 0x0b;
|
||||
415 4 break;
|
||||
416 4 case 0x0010:
|
||||
417 4 valueSend = 0x09;
|
||||
418 4 break;
|
||||
419 4 case 0x0020:
|
||||
420 4 valueSend = 0x07;
|
||||
421 4 break;
|
||||
422 4 case 0x0040:
|
||||
423 4 valueSend = 0x03;
|
||||
424 4 break;
|
||||
425 4 case 0x0080:
|
||||
426 4 valueSend = 0x01;
|
||||
427 4 break;
|
||||
428 4 default:
|
||||
429 4 flagSend = 0;
|
||||
430 4 break;
|
||||
431 4 }
|
||||
432 3 }
|
||||
433 2
|
||||
434 2 if(WheelSliderPosition == -1&&KeysFlagSN == 0)
|
||||
435 2 {
|
||||
436 3 flagStart = 1;
|
||||
437 3 }
|
||||
438 2
|
||||
439 2
|
||||
440 2
|
||||
441 2
|
||||
442 2
|
||||
443 2
|
||||
444 2 #if GENERATE_TS_KEY_EN
|
||||
/*************************************************************************************************
|
||||
变量TS_Key是根据KeysFlagSN得到的按键信息,以下为按键产生的过程:
|
||||
|---------------------------------------------------------------------------------------------------------
|
||||
---------------------------|
|
||||
| 单键:以K1为例,K1按键产生的流程如下所示: |
|
||||
| |
|
||||
| |---> K1|KEY_BREAK(短按松开) |
|
||||
| K1(按下)--| |
|
||||
| |---> K1|KEY_LONG_START(长按大约1秒)---> K1|KEY_LONG(一直长按,约每300ms产生一次长按键)---->K1|KEY
|
||||
-_LONG_BREAK(长按松开) |
|
||||
| ^ | |
|
||||
| | | |
|
||||
| |----------<-----------<------------<--------------| |
|
||||
|---------------------------------------------------------------------------------------------------------
|
||||
---------------------------|
|
||||
|
||||
|---------------------------------------------------------------------------------------------------------
|
||||
---------------------------------------------------------------|
|
||||
| |
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 9
|
||||
|
||||
| 复合键:以K1(K1=0x0001),K2(K2=0x0002)为例, 当K1,K2同时按下时,产生按键为(K1<<5)|K2,即0x22, 产生按键的
|
||||
-流程如下所示: |
|
||||
| |
|
||||
| |---> ((K1<<5)|K2)|KEY_BREAK(短按松开) |
|
||||
| (K1<<5)|K2(按下)--| |
|
||||
| |---> ((K1<<5)|K2)|KEY_LONG_START(长按大约1秒)---> ((K1<<5)|K2)|KEY_LONG(一直长按,约每300ms产�
|
||||
-�ぐ醇�)---->((K1<<5)|K2)|KEY_LONG_BREAK(长按松开) |
|
||||
| ^ | |
|
||||
| | | |
|
||||
| |---------<-------------<----------------<----------------|
|
||||
- |
|
||||
|---------------------------------------------------------------------------------------------------------
|
||||
---------------------------------------------------------------|
|
||||
|
||||
注意:由于复合键按下时,软件不一定同时检测到双键,而是先检测到单键按下,例如先检测到K1,此时会先产生K1键,
|
||||
-等到检测到K2也按
|
||||
下时,才会产生按键(K1<<5)|K2,检测到双键后,如果双键一直按下,会产生((K1<<5)|K2)|KEY_LONG_START和((K1<<5)|
|
||||
-K2)|KEY_LONG,如果
|
||||
有一个键先松手,会停止产生按键, 等到双键都松开时,才会产生((K1<<5)|K2)|KEY_BREAK(短按松开)或((K1<<5)|K2)|
|
||||
-KEY_LONG_BREAK(长按松开)
|
||||
*************************************************************************************************/
|
||||
if(TS_Key != 0)
|
||||
{
|
||||
switch(TS_Key)
|
||||
{
|
||||
//单按键消息
|
||||
case K1:
|
||||
// valueSend = 0x05; //K1短按产生的按键消息
|
||||
break;
|
||||
case (K1|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K1|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K1|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K1|KEY_LONG_BREAK): longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K2: //K1短按产生的按键消息
|
||||
// valueSend = 0x0c;
|
||||
break;
|
||||
case (K2|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K2|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K2|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K2|KEY_LONG_BREAK):longPressFlag=0; //K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K3: //K1短按产生的按键消息
|
||||
// valueSend = 0x0a;
|
||||
break;
|
||||
case (K3|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K3|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K3|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K3|KEY_LONG_BREAK): longPressFlag=0;///K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 10
|
||||
|
||||
case K4: //K1短按产生的按键消息
|
||||
// valueSend = 0x0b;
|
||||
break;
|
||||
case (K4|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
flagStart = 1;
|
||||
break;
|
||||
case (K4|KEY_LONG_START):longPressFlag=1; //K1长按开始产生的消息(长按约1秒时产生)
|
||||
valueSend = 0x0b;
|
||||
flagStart = 1;
|
||||
break;
|
||||
case (K4|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
valueSend = 0x0b;
|
||||
flagStart = 1;
|
||||
break;
|
||||
case (K4|KEY_LONG_BREAK):longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K5: //K1短按产生的按键消息
|
||||
// valueSend = 0x09;
|
||||
break;
|
||||
case (K5|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K5|KEY_LONG_START):longPressFlag=1; //K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K5|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K5|KEY_LONG_BREAK):longPressFlag=0; //K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K6: //K1短按产生的按键消息
|
||||
// valueSend = 0x07;
|
||||
break;
|
||||
case (K6|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K6|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K6|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K6|KEY_LONG_BREAK):longPressFlag=0; //K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K7: //K1短按产生的按键消息
|
||||
// valueSend = 0x03;
|
||||
break;
|
||||
case (K7|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K7|KEY_LONG_START):longPressFlag=1; //K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K7|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K7|KEY_LONG_BREAK): longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K8: //K1短按产生的按键消息
|
||||
// valueSend = 0x01;
|
||||
break;
|
||||
case (K8|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K8|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K8|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 11
|
||||
|
||||
case (K8|KEY_LONG_BREAK): longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
#if GENERATE_DOUBLE_KEY_EN
|
||||
//复合键消息
|
||||
case (K1<<5)|K2: //K1和K2同时按下时产生的按键消息
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_BREAK: //K1和K2短按松手产生的按键消息
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_LONG_START: //K1和K2长按开始产生的按键消息(长按约1秒时产生)
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_LONG: //K1和K2长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_LONG_BREAK: //K1和K2长按松手产生的消息
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
595 2
|
||||
596 2
|
||||
597 2
|
||||
598 2
|
||||
599 2
|
||||
600 2 if(flagSend==1)//短按
|
||||
601 2 {
|
||||
602 3 flagSend = 0;
|
||||
603 3 // flagStart = 1;
|
||||
604 3 //
|
||||
605 3 // RF_send(send_times);
|
||||
606 3 TR0 = 1; //定时器0使能
|
||||
607 3 Yaokong_Data[2] = valueSend;
|
||||
608 3 }
|
||||
609 2
|
||||
610 2 }
|
||||
611 1 }
|
||||
612 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 436 ----
|
||||
CONSTANT SIZE = 255 ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 3 9
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 8 WARNING(S), 0 ERROR(S)
|
||||
+223
@@ -0,0 +1,223 @@
|
||||
C51 COMPILER V9.60.7.0 RF_SEND 07/03/2025 11:27:50 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE RF_SEND
|
||||
OBJECT MODULE PLACED IN .\hex\rf_send.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE rf_send.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\r
|
||||
-f_send.lst) TABS(2) OBJECT(.\hex\rf_send.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _rf_send_C_
|
||||
2 #define _rf_send_C_
|
||||
3 /*********************************************************************************************************
|
||||
-************/
|
||||
4 #include "ca51f5_config.h"
|
||||
5 #include "includes\ca51f5sfr.h"
|
||||
6 #include "includes\ca51f5xsfr.h"
|
||||
7 #include "includes\gpiodef_f5.h"
|
||||
8
|
||||
9 #include "Library\Includes\delay.h"
|
||||
10
|
||||
11 #include "rf_send.h"
|
||||
12
|
||||
13 sbit Pin_rf = P3^2;
|
||||
14 unsigned char D0,D1;
|
||||
15 unsigned int idata ID;
|
||||
16 unsigned char RF_Time; //用于控制RF发送间隔时间
|
||||
17
|
||||
18
|
||||
19 unsigned char Send433_Status = 0; //发送过程的状态
|
||||
20 unsigned int Send433_Time = 0; //记录433发送数据的高低电平时间
|
||||
21
|
||||
22 unsigned char Yaokong_Data[3]={0};
|
||||
23
|
||||
24 unsigned char Send433_Byte_Cont=0;//记录发送一组433数据的字节数
|
||||
25 unsigned char Send433_Bit_Cont = 0; //记录发送位
|
||||
26 unsigned char Temp=0;
|
||||
27 unsigned char Chose_Data_En=0;//使能选择一组433数据的第N个字节
|
||||
28
|
||||
29 void Send433_Byte(void) //100us执行一次
|
||||
30 {
|
||||
31 1 switch (Send433_Status)
|
||||
32 1 {
|
||||
33 2 case 0: //同步头高
|
||||
34 2 Pin_rf = 1;
|
||||
35 2 if (++Send433_Time >= 4)//高电平400us
|
||||
36 2 {
|
||||
37 3 Send433_Time = 0;
|
||||
38 3 Send433_Status = 1; //进入同步头低
|
||||
39 3 }
|
||||
40 2 break;
|
||||
41 2 case 1://同步头低电平
|
||||
42 2 Pin_rf = 0;
|
||||
43 2 if (++Send433_Time >= 120)//电平12300us
|
||||
44 2 {
|
||||
45 3 Send433_Time = 0;
|
||||
46 3 Send433_Status = 2; //进入发送24位
|
||||
47 3 }
|
||||
48 2 break;
|
||||
49 2 case 2:
|
||||
50 2
|
||||
51 2 if(!Chose_Data_En)//还没开始发送 或者上次已经发送完一个字节才使能选择
|
||||
52 2 {
|
||||
53 3 Chose_Data_En=1;
|
||||
C51 COMPILER V9.60.7.0 RF_SEND 07/03/2025 11:27:50 PAGE 2
|
||||
|
||||
54 3 Temp=Yaokong_Data[Send433_Byte_Cont];
|
||||
55 3 //Send433_Byte_Cont++;
|
||||
56 3 }
|
||||
57 2
|
||||
58 2 Send433_Time++;
|
||||
59 2 if (Temp & 0x80) //1
|
||||
60 2 {
|
||||
61 3 if (Send433_Time <= 12)
|
||||
62 3 {
|
||||
63 4 Pin_rf = 1;
|
||||
64 4 }
|
||||
65 3 else if (Send433_Time >= 13)
|
||||
66 3 {
|
||||
67 4 Pin_rf = 0;
|
||||
68 4 if (Send433_Time == 16)
|
||||
69 4 {
|
||||
70 5 Send433_Time = 0;
|
||||
71 5 Temp <<= 1;
|
||||
72 5 Send433_Bit_Cont++;
|
||||
73 5 }
|
||||
74 4 }
|
||||
75 3 }
|
||||
76 2 else//0
|
||||
77 2 {
|
||||
78 3 if (Send433_Time <= 4)
|
||||
79 3 {
|
||||
80 4 Pin_rf = 1;
|
||||
81 4 }
|
||||
82 3 else if (Send433_Time >= 5)
|
||||
83 3 {
|
||||
84 4 Pin_rf = 0;
|
||||
85 4 if (Send433_Time == 16)
|
||||
86 4 {
|
||||
87 5 Send433_Time = 0;
|
||||
88 5 Temp <<= 1;
|
||||
89 5 Send433_Bit_Cont++;
|
||||
90 5 }
|
||||
91 4 }
|
||||
92 3 }
|
||||
93 2 if (Send433_Bit_Cont == 8)//发送完一字节
|
||||
94 2 {
|
||||
95 3 Send433_Bit_Cont = 0;
|
||||
96 3
|
||||
97 3 Chose_Data_En=0;//使能选择下一个字节
|
||||
98 3 if(++Send433_Byte_Cont==3)
|
||||
99 3 {
|
||||
100 4 Send433_Byte_Cont=0;
|
||||
101 4
|
||||
102 4 if(flagStart == 1)
|
||||
103 4 {
|
||||
104 5 Send433_Status = 3; //结束脉冲
|
||||
105 5 }
|
||||
106 4 else
|
||||
107 4 {
|
||||
108 5 Send433_Status = 0; //一帧数据发送完毕
|
||||
109 5 }
|
||||
110 4
|
||||
111 4 }
|
||||
112 3 }
|
||||
113 2 break;
|
||||
114 2
|
||||
115 2 case 3:
|
||||
C51 COMPILER V9.60.7.0 RF_SEND 07/03/2025 11:27:50 PAGE 3
|
||||
|
||||
116 2 if (++Send433_Time <= 4)
|
||||
117 2 {
|
||||
118 3 Pin_rf = 1;
|
||||
119 3 }
|
||||
120 2 else
|
||||
121 2 {
|
||||
122 3 Pin_rf = 0;
|
||||
123 3 Send433_Time = 0;
|
||||
124 3 // flagStart = 0;
|
||||
125 3 Send433_Status = 0;
|
||||
126 3 TR0 = 0; //定时器0禁止
|
||||
127 3
|
||||
128 3 }
|
||||
129 2 break;
|
||||
130 2 default:
|
||||
131 2 break;
|
||||
132 2 }
|
||||
133 1 }
|
||||
134
|
||||
135
|
||||
136 //void RF_send(unsigned char cnt);
|
||||
137 //void send_8bit(unsigned char n);
|
||||
138
|
||||
139 ///*****************************************/
|
||||
140
|
||||
141 //void RF_send(unsigned char cnt)
|
||||
142 //{
|
||||
143 // unsigned char i;
|
||||
144
|
||||
145 // for(i=cnt;i>0;i--) //单个包发送次数
|
||||
146 // {
|
||||
147 // Pin_rf=1;
|
||||
148 // Delay_50us(8); //同步码高电平
|
||||
149 // Pin_rf=0;
|
||||
150 // Delay_ms(12); //同步码低电平
|
||||
151 // Pin_rf=1;
|
||||
152
|
||||
153 // send_8bit(D0);
|
||||
154 // send_8bit(D1);
|
||||
155 // send_8bit(valueSend);
|
||||
156 //
|
||||
157 //// if(WheelSliderPosition == -1&&KeysFlagSN == 0)
|
||||
158 //// {
|
||||
159 //// Pin_rf=1;
|
||||
160 //// Delay_50us(7);
|
||||
161 //// Pin_rf=0;
|
||||
162 //// }
|
||||
163 // }
|
||||
164 //}
|
||||
165 ////---------------------------------------------
|
||||
166 //void send_8bit(unsigned char n)
|
||||
167 //{
|
||||
168 // unsigned char i;
|
||||
169 // for(i=8;i>0;i--)
|
||||
170 // {
|
||||
171 // Pin_rf=1;
|
||||
172 // if(n&0x80)
|
||||
173 // {
|
||||
174 // Delay_50us(24);
|
||||
175 // Pin_rf=0;
|
||||
176 // Delay_50us(7);
|
||||
177 // }
|
||||
C51 COMPILER V9.60.7.0 RF_SEND 07/03/2025 11:27:50 PAGE 4
|
||||
|
||||
178 // else
|
||||
179 // {
|
||||
180 // Delay_50us(7);
|
||||
181 // Pin_rf=0;
|
||||
182 // Delay_50us(24);
|
||||
183 // }
|
||||
184 // n<<=1;
|
||||
185 // }
|
||||
186 //}
|
||||
187
|
||||
188 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 260 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 13 ----
|
||||
IDATA SIZE = 2 ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
+156
@@ -0,0 +1,156 @@
|
||||
C51 COMPILER V9.51 RTC 09/21/2017 09:48:36 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.51, COMPILATION OF MODULE RTC
|
||||
OBJECT MODULE PLACED IN .\hex\rtc.obj
|
||||
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Library\Sources\rtc.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTE
|
||||
-ND PRINT(.\lst\rtc.lst) TABS(2) OBJECT(.\hex\rtc.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _RTC_C_
|
||||
2 #define _RTC_C_
|
||||
3 /*********************************************************************************************************
|
||||
-************/
|
||||
4 #include "ca51f_config.h"
|
||||
5 #if (IC_TYPE == IC_TYPE_CA51F2X)
|
||||
6 #include "includes\ca51f2sfr.h"
|
||||
*** WARNING C318 IN LINE 6 OF Library\Sources\rtc.c: can't open file 'includes\ca51f2sfr.h'
|
||||
7 #include "includes\ca51f2xsfr.h"
|
||||
*** WARNING C318 IN LINE 7 OF Library\Sources\rtc.c: can't open file 'includes\ca51f2xsfr.h'
|
||||
8 #include "includes\gpiodef_f2.h"
|
||||
*** WARNING C318 IN LINE 8 OF Library\Sources\rtc.c: can't open file 'includes\gpiodef_f2.h'
|
||||
9 #elif (IC_TYPE == IC_TYPE_CA51F3X)
|
||||
#include "includes\ca51f3sfr.h"
|
||||
#include "includes\ca51f3xsfr.h"
|
||||
#include "includes\gpiodef_f3.h"
|
||||
#endif
|
||||
14 #include "includes\system.h"
|
||||
15 #include "Library\includes\rtc.h"
|
||||
16 #include "Library\includes\delay.h"
|
||||
17 #include <intrins.h>
|
||||
18 /*********************************************************************************************************
|
||||
-************/
|
||||
19 /***********************************************************************************
|
||||
20 函数名: RTC_init
|
||||
21 功能说明: 初始化RTC控制寄存器
|
||||
22 输入参数: rtce RTC功能模块使能控制
|
||||
23 mse RTC毫秒中断使能控制
|
||||
24 hse RTC半秒中断使能控制
|
||||
25 返回值: 无
|
||||
26 ***********************************************************************************/
|
||||
-
|
||||
27 void RTC_init(RTCE_TypeDef rtce,MSE_TypeDef mse,HSE_TypeDef hse)
|
||||
28 {
|
||||
29 1 RTCON = (RTCON & 0x1F) | RTCE(rtce) | MSE(mse) | HSE(hse);
|
||||
*** ERROR C202 IN LINE 29 OF Library\Sources\rtc.c: 'RTCON': undefined identifier
|
||||
30 1 }
|
||||
31 #if 0
|
||||
/***********************************************************************************
|
||||
函数名: RTC_WriteSecond
|
||||
功能说明: RTC写入秒值
|
||||
输入参数: second 秒值
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_WriteSecond(unsigned char second) //second = 0~59
|
||||
{
|
||||
RTCON |= RTCWE(1);
|
||||
RTCS = second;
|
||||
Delay_50us(1);
|
||||
RTCON &= ~RTCWE(1);
|
||||
}
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_WriteMinute
|
||||
C51 COMPILER V9.51 RTC 09/21/2017 09:48:36 PAGE 2
|
||||
|
||||
功能说明: RTC写入分值
|
||||
输入参数: minute 分值
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_WriteMinute(unsigned char minute) //minute = 0~59
|
||||
{
|
||||
RTCON |= RTCWE(1);
|
||||
RTCM = minute;
|
||||
Delay_50us(1);
|
||||
RTCON &= ~RTCWE(1);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_WriteHour
|
||||
功能说明: RTC写入小时
|
||||
输入参数: hour 小时值
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_WriteHour(unsigned char hour) //hour = 0~23
|
||||
{
|
||||
RTCON |= RTCWE(1);
|
||||
RTCH = (RTCH&0xE0)|hour;
|
||||
Delay_50us(1);
|
||||
RTCON &= ~RTCWE(1);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_WriteWeek
|
||||
功能说明: RTC写入星期
|
||||
输入参数: week 星期值
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_WriteWeek(unsigned char week) //hour = 1~7代表星期一~星期天
|
||||
{
|
||||
RTCON |= RTCWE(1);
|
||||
RTCH = (RTCH&0x1F)|(week<<5);
|
||||
Delay_50us(1);
|
||||
RTCON &= ~RTCWE(1);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_AlarmCfg
|
||||
功能说明: 配置RTC ALARM功能寄存器位
|
||||
输入参数: hce 小时比较使能控制
|
||||
mce 分钟比较使能控制
|
||||
sce 秒比较使能控制
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_AlarmCfg(HCE_TypeDef hce,MCE_TypeDef mce,SCE_TypeDef sce)
|
||||
{
|
||||
RTCON = (RTCON & 0xE3) | HCE(hce) | MCE(mce) | SCE(sce);
|
||||
}
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_SetAlaramTime
|
||||
功能说明: 设置RTC ALARM时间
|
||||
输入参数: al_hr 闹钟小时值
|
||||
al_min 闹钟分钟值
|
||||
al_sec 闹钟秒值
|
||||
C51 COMPILER V9.51 RTC 09/21/2017 09:48:36 PAGE 3
|
||||
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_SetAlaramTime(unsigned char al_hr,unsigned char al_min,unsigned char al_sec)
|
||||
{
|
||||
RTAH = al_hr;
|
||||
RTAM = al_min;
|
||||
RTAS = al_sec;
|
||||
}
|
||||
#endif
|
||||
119 /***********************************************************************************
|
||||
120 函数名: RTC_SetRTMSS
|
||||
121 功能说明: 设置毫秒中断间隔
|
||||
122 输入参数: rtmss
|
||||
123 返回值: 无
|
||||
124 ***********************************************************************************/
|
||||
125 void RTC_SetRTMSS(unsigned char rtmss)
|
||||
126 {
|
||||
127 1 RTMSS = rtmss;
|
||||
*** ERROR C202 IN LINE 127 OF Library\Sources\rtc.c: 'RTMSS': undefined identifier
|
||||
128 1 }
|
||||
129
|
||||
130 /*********************************************************************************************************
|
||||
-************/
|
||||
131 #endif
|
||||
|
||||
C51 COMPILATION COMPLETE. 3 WARNING(S), 2 ERROR(S)
|
||||
@@ -0,0 +1,55 @@
|
||||
C51 COMPILER V9.60.7.0 SYSTEM_CLOCK 07/03/2025 11:27:48 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE SYSTEM_CLOCK
|
||||
OBJECT MODULE PLACED IN .\hex\system_clock.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE Library\Sources\system_clock.c OMF2 OPTIMIZE(9,SIZE) BROWS
|
||||
-E DEBUG PRINT(.\lst\system_clock.lst) TABS(2) OBJECT(.\hex\system_clock.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _SYSTEM_CLOCK_C_
|
||||
2 #define _SYSTEM_CLOCK_C_
|
||||
3 /*********************************************************************************************************
|
||||
-************/
|
||||
4 #include "ca51f5_config.h"
|
||||
5 #include "../../includes/ca51f5sfr.h"
|
||||
6 #include "../../includes/ca51f5xsfr.h"
|
||||
7 #include "../../includes/gpiodef_f5.h"
|
||||
8
|
||||
9 #include "../../includes/system.h"
|
||||
10 #include "../../Library/includes/system_clock.h"
|
||||
11 #include <intrins.h>
|
||||
12 /*********************************************************************************************************
|
||||
-************/
|
||||
13 void Sys_Clk_Set_IRCH(void)
|
||||
14 {
|
||||
15 1 CKCON |= IHCKE;
|
||||
16 1 CKCON = (CKCON&0xFE) | CKSEL_IRCH;
|
||||
17 1 }
|
||||
18 void Sys_Clk_Set_IRCL(void)
|
||||
19 {
|
||||
20 1 CKCON |= ILCKE;
|
||||
21 1 CKCON = (CKCON&0xFE) | CKSEL_IRCL;
|
||||
22 1 }
|
||||
23 /*********************************************************************************************************
|
||||
-************/
|
||||
24 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 26 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
+1941
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,412 @@
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.51, COMPILATION OF MODULE TS_SEVICE
|
||||
OBJECT MODULE PLACED IN .\hex\ts_sevice.obj
|
||||
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TS_Lib\Sources\ts_sevice.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\t
|
||||
-s_sevice.lst) TABS(2) OBJECT(.\hex\ts_sevice.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef TS_SERVICE_C
|
||||
2 #define TS_SERVICE_C
|
||||
3 /*********************************************************************************************************
|
||||
-************/
|
||||
4 #include "ca51f5_config.h"
|
||||
5 #include "includes\ca51f5sfr.h"
|
||||
6 #include "includes\ca51f5xsfr.h"
|
||||
7 #include "includes\gpiodef_f5.h"
|
||||
8 /*********************************************************************************************************
|
||||
-************/
|
||||
9 #include "TS_Lib\Includes\ts_def.h"
|
||||
10 #include "TS_Lib\Includes\ts_api.h"
|
||||
11 #include "TS_Lib\Includes\ts_service.h"
|
||||
12 /*********************************************************************************************************
|
||||
-************/
|
||||
13 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
14 //´¥Ãþ¹Ü½Å³õʼ»¯
|
||||
15 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
16 code unsigned char *pXSFR[]=
|
||||
17 {
|
||||
18 &P31F,
|
||||
19 &P30F,
|
||||
20 &P07F,
|
||||
21 &P06F,
|
||||
22 &P05F,
|
||||
23 &P04F,
|
||||
24 &P03F,
|
||||
25 &P02F,
|
||||
26 &P01F,
|
||||
27 &P00F,
|
||||
28 &P34F,
|
||||
29 &P33F,
|
||||
30 &P32F,
|
||||
31 };
|
||||
32 void TS_IO_init(void)
|
||||
33 {
|
||||
34 1 unsigned char i;
|
||||
35 1 unsigned char *pPinS;
|
||||
36 1 GPIO_Init(P35F,P35_CAP_SETTING);
|
||||
37 1
|
||||
38 1 for(i = 0; i < TS_Cnt; i++)
|
||||
39 1 {
|
||||
40 2 pPinS = pXSFR[TS_CH[i]];
|
||||
41 2 *pPinS = 4;
|
||||
42 2 }
|
||||
43 1 }
|
||||
44 void TS_SetChannel(unsigned char index,unsigned char ch)
|
||||
45 {
|
||||
46 1 switch(index)
|
||||
47 1 {
|
||||
48 2 case 0:
|
||||
49 2 TK0CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
50 2 break;
|
||||
51 2 case 1:
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 2
|
||||
|
||||
52 2 TK1CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
53 2 break;
|
||||
54 2 case 2:
|
||||
55 2 TK2CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
56 2 break;
|
||||
57 2 case 3:
|
||||
58 2 TK3CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
59 2 break;
|
||||
60 2 case 4:
|
||||
61 2 TK4CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
62 2 break;
|
||||
63 2 case 5:
|
||||
64 2 TK5CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
65 2 break;
|
||||
66 2 }
|
||||
67 1 }
|
||||
68 void TS_ScanStart(void)
|
||||
69 {
|
||||
70 1 unsigned char i,j;
|
||||
71 1 for(i = 0; i < 6; i++)
|
||||
72 1 {
|
||||
73 2 if(TS_Index + i >= TS_Cnt)
|
||||
74 2 {
|
||||
75 3 TS_SetChannel(i,14);
|
||||
76 3 for(j = i+1; j < 6; j++)
|
||||
77 3 {
|
||||
78 4 TS_SetChannel(j,0);
|
||||
79 4 }
|
||||
80 3 break;
|
||||
81 3 }
|
||||
82 2 TS_SetChannel(i,(TS_CH[TS_Index+i])+1);
|
||||
83 2 }
|
||||
84 1 TKCON |= TKST(1);
|
||||
85 1 }
|
||||
86 unsigned char TS_GetDataArea(unsigned char ts_ch,unsigned int ts_data,int NoiseThd,bit key_pressed_flag)
|
||||
87 {
|
||||
88 1 int Delta;
|
||||
89 1 int FingerThd;
|
||||
90 1
|
||||
91 1 Delta = (int)TS_BaseLineData[ts_ch] - (int)ts_data;
|
||||
92 1 FingerThd = TSKey_FingerThd[ts_ch];
|
||||
93 1
|
||||
94 1 if(key_pressed_flag)
|
||||
95 1 {
|
||||
96 2 FingerThd = (FingerThd*9)/10;
|
||||
97 2 }
|
||||
98 1
|
||||
99 1 if(Delta >= FingerThd) return AREA_FINGER_TOUCH;
|
||||
100 1 else if(Delta > NoiseThd) return AREA_PNOISE_PLUS;
|
||||
101 1 else if(Delta >= 0) return AREA_PNOISE;
|
||||
102 1 else if(Delta >= -NoiseThd) return AREA_NNOISE;
|
||||
103 1 else return AREA_OVER_LOW;
|
||||
104 1 }
|
||||
105 unsigned char TS_AreaDeviateDetection(unsigned int cmp_data,unsigned int real_data,int range)
|
||||
106 {
|
||||
107 1 int Delta;
|
||||
108 1 Delta = (int)cmp_data - (int)real_data;
|
||||
109 1 if((Delta <= range) && (Delta >= -range))
|
||||
110 1 {
|
||||
111 2 return 1;
|
||||
112 2 }
|
||||
113 1 else
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 3
|
||||
|
||||
114 1 {
|
||||
115 2 return 0;
|
||||
116 2 }
|
||||
117 1 }
|
||||
118 void TS_BaseLineForceUpdate(void)
|
||||
119 {
|
||||
120 1 unsigned char i;
|
||||
121 1
|
||||
122 1 for(i = 0; i < TS_Cnt; i++)
|
||||
123 1 {
|
||||
124 2 TS_FirstAreaData[i] = TS_PostData[i];
|
||||
125 2 TS_BaseLineData[i] = TS_PostData[i];
|
||||
126 2 TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||||
127 2 }
|
||||
128 1 }
|
||||
129
|
||||
130 void TS_AreaConfirmTimerSet(unsigned char ts_ch, unsigned char area)
|
||||
131 {
|
||||
132 1 TS_AreaConfirmTimer[ts_ch] = AREA_CONFIRM_TIME_TAB[area];
|
||||
133 1 }
|
||||
134 void SetWheelSliderRefCh(unsigned char Slider_Cnt)
|
||||
135 {
|
||||
136 1 unsigned char i,j;
|
||||
137 1 unsigned int MinVal;
|
||||
138 1 MinVal = 0xFFFF;
|
||||
139 1 for(i = TS_BaseCh,j=0; i < TS_BaseCh + Slider_Cnt; i++,j++)
|
||||
140 1 {
|
||||
141 2 if(TS_BaseLineData[i] < MinVal)
|
||||
142 2 {
|
||||
143 3 WheelSliderRefCh = j;
|
||||
144 3 MinVal = TS_BaseLineData[i];
|
||||
145 3 }
|
||||
146 2 }
|
||||
147 1 }
|
||||
148 #define WHEEL_SLIDER_POSITION_FILTER_COUNT 4
|
||||
149 int WheelTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
150 {
|
||||
151 1 unsigned char i;
|
||||
152 1 unsigned long int CalcTemp1;
|
||||
153 1 unsigned int CalcTemp2,CalcTemp3;
|
||||
154 1 unsigned char DeltaRate;
|
||||
155 1 int Delta;
|
||||
156 1 unsigned int MaxDelta1,MaxDelta2/*,MaxDelta3*/;
|
||||
157 1 unsigned char Maxidx1,Maxidx2/*,Maxidx3*/;
|
||||
158 1 int Position,PosOffset;
|
||||
159 1
|
||||
160 1 MaxDelta1 = MaxDelta2 = /*MaxDelta3 =*/ 0;
|
||||
161 1 for(i = 0; i < WHEEL_SLIDER0_CH_COUNT_V; i++)
|
||||
162 1 {
|
||||
163 2 if(i == WheelSliderRefCh)
|
||||
164 2 {
|
||||
165 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)TS_PostData[TS_BaseCh + WheelSlide
|
||||
-rRefCh];
|
||||
166 3 }
|
||||
167 2 else
|
||||
168 2 {
|
||||
169 3 CalcTemp1 = (unsigned long int)TS_PostData[TS_BaseCh + i] * (unsigned long int)TS_BaseLineData[TS_Base
|
||||
-Ch + WheelSliderRefCh];
|
||||
170 3 CalcTemp2 = (unsigned int)(CalcTemp1/TS_BaseLineData[TS_BaseCh + i]);
|
||||
171 3 CalcTemp3 = TS_PostData[TS_BaseCh + i] + TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - CalcTemp2;
|
||||
172 3 CalcTemp2 = (unsigned int)(CalcTemp1/CalcTemp3);
|
||||
173 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)CalcTemp2;
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 4
|
||||
|
||||
174 3 }
|
||||
175 2 if(Delta < 0) Delta = 0;
|
||||
176 2
|
||||
177 2
|
||||
178 2 if(Delta > MaxDelta1)
|
||||
179 2 {
|
||||
180 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
181 3 Maxidx2 = Maxidx1; MaxDelta2 = MaxDelta1;
|
||||
182 3 Maxidx1 = i; MaxDelta1 = Delta;
|
||||
183 3 }
|
||||
184 2 else if(Delta > MaxDelta2)
|
||||
185 2 {
|
||||
186 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
187 3 Maxidx2 = i; MaxDelta2 = Delta;
|
||||
188 3 }
|
||||
189 2 // else if(Delta > MaxDelta3)
|
||||
190 2 // {
|
||||
191 2 // Maxidx3 = i; MaxDelta3 = Delta;
|
||||
192 2 // }
|
||||
193 2 }
|
||||
194 1
|
||||
195 1 if((MaxDelta1 + MaxDelta2) < WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
196 1 {
|
||||
197 2 return -1;
|
||||
198 2 }
|
||||
199 1
|
||||
200 1 Delta = MaxDelta1 - (WHEEL_SLIDER0_TOUCH_THD_V>>1);
|
||||
201 1 DeltaRate = (Delta*10)/MaxDelta1;
|
||||
202 1 if(DeltaRate > 31) DeltaRate = 31;
|
||||
203 1
|
||||
204 1 CalcTemp2 = ((unsigned int)WHEEL_SLIDER0_TOUCH_THD_V*(32-DeltaRate))>>6;
|
||||
205 1
|
||||
206 1 MaxDelta1 += CalcTemp2;
|
||||
207 1 MaxDelta2 += CalcTemp2;
|
||||
208 1
|
||||
209 1 DeltaRate = ((unsigned int)MaxDelta2<<7)/MaxDelta1;
|
||||
210 1 if(WheelSliderCapRateFilter == 0)
|
||||
211 1 {
|
||||
212 2 WheelSliderCapRateFilter = DeltaRate*WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
213 2 }
|
||||
214 1 else
|
||||
215 1 {
|
||||
216 2 WheelSliderCapRateFilter -= WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
217 2 WheelSliderCapRateFilter += DeltaRate;
|
||||
218 2 }
|
||||
219 1 DeltaRate = WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
220 1 WheelSliderMaxIdx = Maxidx1;
|
||||
221 1
|
||||
222 1 {
|
||||
223 2 bit dir_flag;
|
||||
224 2 Position = Maxidx1*64;
|
||||
225 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1]) DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1];
|
||||
226 2 PosOffset = ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1])*32)/(128-WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1
|
||||
-]);
|
||||
227 2
|
||||
228 2 if((Maxidx1 == 0) && (Maxidx2 == (WHEEL_SLIDER0_CH_COUNT_V-1))) dir_flag = 0;
|
||||
229 2 else if((Maxidx1 == (WHEEL_SLIDER0_CH_COUNT_V-1)) && (Maxidx2 == 0)) dir_flag = 1;
|
||||
230 2 else if(Maxidx1 < Maxidx2) dir_flag = 1;
|
||||
231 2 else dir_flag = 0;
|
||||
232 2
|
||||
233 2 if(dir_flag)
|
||||
234 2 {
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 5
|
||||
|
||||
235 3 Position += PosOffset;
|
||||
236 3 }
|
||||
237 2 else
|
||||
238 2 {
|
||||
239 3 if(Position == 0)
|
||||
240 3 {
|
||||
241 4 Position = WHEEL_SLIDER0_CH_COUNT_V*64-1;
|
||||
242 4 }
|
||||
243 3 Position -= PosOffset;
|
||||
244 3 }
|
||||
245 2 }
|
||||
246 1 return Position;
|
||||
247 1 }
|
||||
248 int SliderTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
249 {
|
||||
250 1 unsigned char i;
|
||||
251 1 unsigned long int CalcTemp1;
|
||||
252 1 unsigned int CalcTemp2,CalcTemp3;
|
||||
253 1 unsigned char DeltaRate;
|
||||
254 1 int Delta;
|
||||
255 1 unsigned int MaxDelta1,MaxDelta2/*,MaxDelta3*/;
|
||||
256 1 unsigned char Maxidx1,Maxidx2/*,Maxidx3*/;
|
||||
257 1 int Position,PosOffset;
|
||||
258 1
|
||||
259 1 MaxDelta1 = MaxDelta2 = /*MaxDelta3 =*/ 0;
|
||||
260 1 for(i = 0; i < WHEEL_SLIDER0_CH_COUNT_V; i++)
|
||||
261 1 {
|
||||
262 2 if(i == WheelSliderRefCh)
|
||||
263 2 {
|
||||
264 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)TS_PostData[TS_BaseCh + WheelSlide
|
||||
-rRefCh];
|
||||
265 3 }
|
||||
266 2 else
|
||||
267 2 {
|
||||
268 3 CalcTemp1 = (unsigned long int)TS_PostData[TS_BaseCh + i] * (unsigned long int)TS_BaseLineData[TS_Base
|
||||
-Ch + WheelSliderRefCh];
|
||||
269 3 CalcTemp2 = (unsigned int)(CalcTemp1/TS_BaseLineData[TS_BaseCh + i]);
|
||||
270 3 CalcTemp3 = TS_PostData[TS_BaseCh + i] + TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - CalcTemp2;
|
||||
271 3 CalcTemp2 = (unsigned int)(CalcTemp1/CalcTemp3);
|
||||
272 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)CalcTemp2;
|
||||
273 3 }
|
||||
274 2 if(Delta < 0) Delta = 0;
|
||||
275 2
|
||||
276 2
|
||||
277 2 if(Delta > MaxDelta1)
|
||||
278 2 {
|
||||
279 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
280 3 Maxidx2 = Maxidx1; MaxDelta2 = MaxDelta1;
|
||||
281 3 Maxidx1 = i; MaxDelta1 = Delta;
|
||||
282 3 }
|
||||
283 2 else if(Delta > MaxDelta2)
|
||||
284 2 {
|
||||
285 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
286 3 Maxidx2 = i; MaxDelta2 = Delta;
|
||||
287 3 }
|
||||
288 2 // else if(Delta > MaxDelta3)
|
||||
289 2 // {
|
||||
290 2 // Maxidx3 = i; MaxDelta3 = Delta;
|
||||
291 2 // }
|
||||
292 2 }
|
||||
293 1 if(((Maxidx1 == 0)||(Maxidx1 == (WHEEL_SLIDER0_CH_COUNT_V-1))))
|
||||
294 1 {
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 6
|
||||
|
||||
295 2 if((MaxDelta1) < (WHEEL_SLIDER0_TOUCH_THD_V>>1))
|
||||
296 2 {
|
||||
297 3 return -1;
|
||||
298 3 }
|
||||
299 2 }
|
||||
300 1 else
|
||||
301 1 {
|
||||
302 2 if((MaxDelta1 + MaxDelta2) < WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
303 2 {
|
||||
304 3 return -1;
|
||||
305 3 }
|
||||
306 2 }
|
||||
307 1
|
||||
308 1 Delta = MaxDelta1 - (WHEEL_SLIDER0_TOUCH_THD_V>>1);
|
||||
309 1 DeltaRate = (Delta*10)/MaxDelta1;
|
||||
310 1 if(DeltaRate > 31) DeltaRate = 31;
|
||||
311 1
|
||||
312 1 CalcTemp2 = ((unsigned int)WHEEL_SLIDER0_TOUCH_THD_V*(32-DeltaRate))>>6;
|
||||
313 1
|
||||
314 1 MaxDelta1 += CalcTemp2;
|
||||
315 1 MaxDelta2 += CalcTemp2;
|
||||
316 1
|
||||
317 1 DeltaRate = ((unsigned int)MaxDelta2<<7)/MaxDelta1;
|
||||
318 1 if(WheelSliderCapRateFilter == 0)
|
||||
319 1 {
|
||||
320 2 WheelSliderCapRateFilter = DeltaRate*WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
321 2 }
|
||||
322 1 else
|
||||
323 1 {
|
||||
324 2 WheelSliderCapRateFilter -= WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
325 2 WheelSliderCapRateFilter += DeltaRate;
|
||||
326 2 }
|
||||
327 1 DeltaRate = WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
328 1 WheelSliderMaxIdx = Maxidx1;
|
||||
329 1
|
||||
330 1 Position = Maxidx1*64;
|
||||
331 1 if(Maxidx1 == 0)
|
||||
332 1 {
|
||||
333 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[0])
|
||||
334 2 {
|
||||
335 3 DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[0];
|
||||
336 3 }
|
||||
337 2 Position = ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[0])*32)/(128-WHEEL_SLIDER0_MAX_MIN_TAB[0]);
|
||||
338 2 }
|
||||
339 1 else if(Maxidx1 == (WHEEL_SLIDER0_CH_COUNT_V-1))
|
||||
340 1 {
|
||||
341 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1])
|
||||
342 2 {
|
||||
343 3 DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1];
|
||||
344 3 }
|
||||
345 2 Position -= ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1])*32)/(128-WHEEL_SLIDER0_
|
||||
-MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1]);
|
||||
346 2 }
|
||||
347 1 else
|
||||
348 1 {
|
||||
349 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1]) DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1];
|
||||
350 2 PosOffset = ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1])*32)/(128-WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1
|
||||
-]);
|
||||
351 2 if(Maxidx1 < Maxidx2)
|
||||
352 2 {
|
||||
353 3 Position += PosOffset;
|
||||
354 3 }
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 7
|
||||
|
||||
355 2 else
|
||||
356 2 {
|
||||
357 3 Position -= PosOffset;
|
||||
358 3 }
|
||||
359 2 }
|
||||
360 1 return Position;
|
||||
361 1 }
|
||||
362 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 1853 ----
|
||||
CONSTANT SIZE = 39 ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- 45
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- 2
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
C51 COMPILER V9.60.7.0 UART 07/03/2025 11:27:49 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE UART
|
||||
OBJECT MODULE PLACED IN .\hex\uart.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE Library\Sources\uart.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG
|
||||
-PRINT(.\lst\uart.lst) TABS(2) OBJECT(.\hex\uart.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _UART_C_
|
||||
2 #define _UART_C_
|
||||
3 #include "ca51f5_config.h"
|
||||
4 #include "../../includes/ca51f5sfr.h"
|
||||
5 #include "../../includes/ca51f5xsfr.h"
|
||||
6 #include "../../includes/gpiodef_f5.h"
|
||||
7 #include "../../includes/system.h"
|
||||
8
|
||||
9 #include "../../Library/includes/uart.h"
|
||||
10 #include <intrins.h>
|
||||
11 #include <string.h>
|
||||
12 #include <stdarg.h>
|
||||
13 #include <stdlib.h>
|
||||
14 #include <stdio.h>
|
||||
15 #include <absacc.h>
|
||||
16 /*********************************************************************************************************
|
||||
-************/
|
||||
17 /*********************************************************************************************************
|
||||
-************/
|
||||
18 #ifdef UART0_EN
|
||||
/*********************************************************************************************************
|
||||
-************
|
||||
注意:以下波特率配置参数前提条件是系统时钟为16MHz,如果修改系统时钟频率,波特率配置参数须另行计算。
|
||||
**********************************************************************************************************
|
||||
-*************/
|
||||
void Uart0_Initial(unsigned long int baudrate)
|
||||
{
|
||||
code unsigned long int BR_TAB[]=
|
||||
{
|
||||
1200,
|
||||
2400,
|
||||
4800,
|
||||
9600,
|
||||
19200,
|
||||
38400,
|
||||
57600,
|
||||
115200,
|
||||
};
|
||||
code unsigned int BR_SET_TAB[][2]=
|
||||
{
|
||||
{416,31},
|
||||
{208,31},
|
||||
{104,31},
|
||||
{52,31},
|
||||
{26,31},
|
||||
{13,31},
|
||||
{10,27},
|
||||
{5,27},
|
||||
};
|
||||
unsigned int value_temp;
|
||||
unsigned char i;
|
||||
|
||||
uart0_send.head = 0;
|
||||
uart0_send.tail = 0;
|
||||
C51 COMPILER V9.60.7.0 UART 07/03/2025 11:27:49 PAGE 2
|
||||
|
||||
uart0_rev.head = 0;
|
||||
uart0_rev.tail = 0;
|
||||
uart0_tx_flag = 0;
|
||||
|
||||
GPIO_Init(P31F,P31_UART0_RX_SETTING);
|
||||
GPIO_Init(P30F,P30_UART0_TX_SETTING);
|
||||
|
||||
for(i=0;i<sizeof(BR_TAB)/4;i++)
|
||||
{
|
||||
if(baudrate == BR_TAB[i])
|
||||
{
|
||||
value_temp = 0x10000 - BR_SET_TAB[i][0];
|
||||
UDCKS = 0x80 | BR_SET_TAB[i][1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(i == sizeof(BR_TAB)/4) return; //如果所设置的波特率不在表格中,可自行添加。
|
||||
|
||||
T2CON = 0x24;
|
||||
T2CH = (unsigned char)(value_temp>>8);
|
||||
T2CL = (unsigned char)(value_temp);
|
||||
TH2 = (unsigned char)(value_temp>>8);
|
||||
TL2 = (unsigned char)(value_temp);;
|
||||
TR2 = 1;
|
||||
|
||||
S0CON = 0x50;
|
||||
ES0 = 1;
|
||||
}
|
||||
void Uart0_PutChar(unsigned char bdat)
|
||||
{
|
||||
unsigned char free_space;
|
||||
unsigned char tail_tmp;
|
||||
while(1)
|
||||
{
|
||||
tail_tmp = uart0_send.tail;
|
||||
if(uart0_send.head < tail_tmp)
|
||||
{
|
||||
free_space = tail_tmp - uart0_send.head;
|
||||
}
|
||||
else
|
||||
{
|
||||
free_space = UART0_TX_BUF_SIZE + tail_tmp - uart0_send.head;
|
||||
}
|
||||
if(free_space > 1)
|
||||
{
|
||||
ES0 = 0;
|
||||
uart0_send.head++;
|
||||
uart0_send.head %= UART0_TX_BUF_SIZE;
|
||||
uart0_tx_buf[uart0_send.head] = bdat;
|
||||
if(!uart0_tx_flag)
|
||||
{
|
||||
ES0 = 1;
|
||||
uart0_send.tail++;
|
||||
uart0_send.tail %= UART0_TX_BUF_SIZE;
|
||||
S0BUF=uart0_tx_buf[uart0_send.tail];
|
||||
uart0_tx_flag = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ES0 = 1;
|
||||
}
|
||||
break;
|
||||
C51 COMPILER V9.60.7.0 UART 07/03/2025 11:27:49 PAGE 3
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
void UART0_RX_ISR (void)
|
||||
{
|
||||
RI0 = 0;
|
||||
uart0_rev.head++;
|
||||
uart0_rev.head %= UART0_RX_BUF_SIZE;
|
||||
uart0_rx_buf[uart0_rev.head]=S0BUF;
|
||||
}
|
||||
void UART0_TX_ISR (void)
|
||||
{
|
||||
TI0 = 0;
|
||||
if(uart0_send.head!=uart0_send.tail)
|
||||
{
|
||||
uart0_send.tail++;
|
||||
uart0_send.tail %= UART0_TX_BUF_SIZE;
|
||||
S0BUF=uart0_tx_buf[uart0_send.tail];
|
||||
}
|
||||
else
|
||||
{
|
||||
uart0_tx_flag=0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
138 /*********************************************************************************************************
|
||||
-************/
|
||||
139 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = ---- ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
@@ -0,0 +1,612 @@
|
||||
#ifndef _MAIN_C_
|
||||
#define _MAIN_C_
|
||||
/*********************************************************************************************************************/
|
||||
#include "ca51f5_config.h"
|
||||
#include "includes\ca51f5sfr.h"
|
||||
#include "includes\ca51f5xsfr.h"
|
||||
#include "includes\gpiodef_f5.h"
|
||||
|
||||
#include "Library\includes\uart.h"
|
||||
#include "Library\includes\system_clock.h"
|
||||
#include "Library\Includes\tmc.h"
|
||||
#include "includes\system.h"
|
||||
#include "Library\includes\wdt.h"
|
||||
/*********************************************************************************************************************/
|
||||
#include "TS_Lib\Includes\ts_configuration.h"
|
||||
#include "TS_Lib\Includes\ts_def.h"
|
||||
#include "TS_Lib\Includes\ts_api.h"
|
||||
#include "TS_Lib\Includes\ts_service.h"
|
||||
#include "rf_send.h"
|
||||
|
||||
#include "Library\Includes\delay.h"
|
||||
|
||||
#define INT_TIME 100 //定时时间,单位为us
|
||||
|
||||
#define TH_VAL (unsigned char)((0x2000 - (INT_TIME*(FOSC/1000))/12000)>>5)
|
||||
#define TL_VAL (unsigned char)(0x2000 - (INT_TIME*(FOSC/1000))/12000)&0x1F
|
||||
|
||||
|
||||
|
||||
unsigned char flagSend = 0;
|
||||
unsigned char valueSend = 0;
|
||||
unsigned char flagStart = 0;
|
||||
|
||||
|
||||
|
||||
void Delay_ms(unsigned int n);
|
||||
|
||||
void TIMER0_ISR (void) interrupt 1 //每100us产生中断
|
||||
{
|
||||
TH0 = TH_VAL;
|
||||
TL0 = TL_VAL;
|
||||
|
||||
Send433_Byte();
|
||||
}
|
||||
/*********************************************************************************************************************/
|
||||
/*******************************************************************************************************************************************
|
||||
说明:
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
1.ts_configuration.h是触摸的配置文件,可在配置文件中设置触摸通道、灵敏度等。详见ts_configuration.h中的说明。
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
2.如果需要使用UART来调试,可在ca51f5_config.h中打开宏定义UART0_EN
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
3.触摸库对外的数据接口为KeysFlagSN,用户可根据KeysFlagSN的值来判断触摸键是否按下(如果触摸键按下,KeysFlagSN
|
||||
的对应位一直为1,触摸键松开,对应位变为0),TS_Key是根据KeysFlagSN的值生成的按键消息,用户如不使用可忽略。
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
4.使能了触摸省电模式后,在无按键时,在定义的时间后会进入省电模式,进入省电模式前会关闭TMC中断和触摸中断(注意,总
|
||||
中断仍是开启的),在触摸省电模式下,CPU会进入STOP模式,在被触摸唤醒后,程序在省电函数(TS_EnterSleepMode)的循环内运行(注意,触摸省电模式程序不
|
||||
会在主循环内运行),在触摸省电模式下如果还要响应其他中断,用户需在进入触摸省电模式前自行开启其他中断,
|
||||
如果需要退出省电模式,用户只需要在省电函数循环内加入条件判断,跳出循环即可。
|
||||
|
||||
变量TS_SleepEn是控制触摸省电模式的开关,如果希望程序在某些条件下不进入省电模式,只需在此条件下设置TS_SleepEn = 0;
|
||||
|
||||
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
5.触摸外挂电容(即TK_CAP引脚连接电容)范围:6nF~50nF,建议值:20nF(即203)
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
6.触摸引脚串联电阻范围:0~5K,建议值:1K欧姆,如果有抗对讲机等电磁干扰要求, 此电阻至少3K以上。
|
||||
*******************************************************************************************************************************************/
|
||||
unsigned long int Read_32bit_UID(void)
|
||||
{
|
||||
unsigned long int ID;
|
||||
FSCMD = 0x80;
|
||||
PTSH = 0x00;
|
||||
PTSL = 0x00;
|
||||
FSCMD = 0x81;
|
||||
ID = FSDAT;
|
||||
ID *= 256;
|
||||
ID |= FSDAT;
|
||||
ID *= 256;
|
||||
ID |= FSDAT;
|
||||
ID *= 256;
|
||||
ID |= FSDAT;
|
||||
FSCMD = 0;
|
||||
return ID;
|
||||
}
|
||||
code unsigned char rf_data[255]=
|
||||
{
|
||||
0 ,
|
||||
1 ,
|
||||
2 ,
|
||||
3 ,
|
||||
4 ,
|
||||
5 ,
|
||||
6 ,
|
||||
7 ,
|
||||
8 ,
|
||||
9 ,
|
||||
10 ,
|
||||
11 ,
|
||||
12 ,
|
||||
13 ,
|
||||
14 ,
|
||||
15 ,
|
||||
16 ,
|
||||
17 ,
|
||||
18 ,
|
||||
18 ,
|
||||
19 ,
|
||||
20 ,
|
||||
21 ,
|
||||
22 ,
|
||||
23 ,
|
||||
24 ,
|
||||
25 ,
|
||||
26 ,
|
||||
27 ,
|
||||
28 ,
|
||||
29 ,
|
||||
30 ,
|
||||
31 ,
|
||||
32 ,
|
||||
33 ,
|
||||
34 ,
|
||||
35 ,
|
||||
36 ,
|
||||
37 ,
|
||||
37 ,
|
||||
38 ,
|
||||
39 ,
|
||||
40 ,
|
||||
41 ,
|
||||
42 ,
|
||||
43 ,
|
||||
44 ,
|
||||
45 ,
|
||||
46 ,
|
||||
47 ,
|
||||
48 ,
|
||||
49 ,
|
||||
50 ,
|
||||
51 ,
|
||||
52 ,
|
||||
53 ,
|
||||
54 ,
|
||||
55 ,
|
||||
56 ,
|
||||
56 ,
|
||||
57 ,
|
||||
58 ,
|
||||
59 ,
|
||||
60 ,
|
||||
61 ,
|
||||
62 ,
|
||||
63 ,
|
||||
64 ,
|
||||
65 ,
|
||||
66 ,
|
||||
67 ,
|
||||
68 ,
|
||||
69 ,
|
||||
70 ,
|
||||
71 ,
|
||||
72 ,
|
||||
73 ,
|
||||
74 ,
|
||||
74 ,
|
||||
75 ,
|
||||
76 ,
|
||||
77 ,
|
||||
78 ,
|
||||
79 ,
|
||||
80 ,
|
||||
81 ,
|
||||
82 ,
|
||||
83 ,
|
||||
84 ,
|
||||
85 ,
|
||||
86 ,
|
||||
87 ,
|
||||
88 ,
|
||||
89 ,
|
||||
90 ,
|
||||
91 ,
|
||||
92 ,
|
||||
93 ,
|
||||
93 ,
|
||||
94 ,
|
||||
95 ,
|
||||
96 ,
|
||||
97 ,
|
||||
98 ,
|
||||
99 ,
|
||||
100 ,
|
||||
101 ,
|
||||
102 ,
|
||||
103 ,
|
||||
104 ,
|
||||
105 ,
|
||||
106 ,
|
||||
107 ,
|
||||
108 ,
|
||||
109 ,
|
||||
110 ,
|
||||
111 ,
|
||||
112 ,
|
||||
112 ,
|
||||
113 ,
|
||||
114 ,
|
||||
115 ,
|
||||
116 ,
|
||||
117 ,
|
||||
118 ,
|
||||
119 ,
|
||||
120 ,
|
||||
121 ,
|
||||
122 ,
|
||||
123 ,
|
||||
124 ,
|
||||
125 ,
|
||||
126 ,
|
||||
127 ,
|
||||
128 ,
|
||||
129 ,
|
||||
130 ,
|
||||
130 ,
|
||||
131 ,
|
||||
132 ,
|
||||
133 ,
|
||||
134 ,
|
||||
135 ,
|
||||
136 ,
|
||||
137 ,
|
||||
138 ,
|
||||
139 ,
|
||||
140 ,
|
||||
141 ,
|
||||
142 ,
|
||||
143 ,
|
||||
144 ,
|
||||
145 ,
|
||||
146 ,
|
||||
147 ,
|
||||
148 ,
|
||||
149 ,
|
||||
149 ,
|
||||
150 ,
|
||||
151 ,
|
||||
152 ,
|
||||
153 ,
|
||||
154 ,
|
||||
155 ,
|
||||
156 ,
|
||||
157 ,
|
||||
158 ,
|
||||
159 ,
|
||||
160 ,
|
||||
161 ,
|
||||
162 ,
|
||||
163 ,
|
||||
164 ,
|
||||
165 ,
|
||||
166 ,
|
||||
167 ,
|
||||
168 ,
|
||||
168 ,
|
||||
169 ,
|
||||
170 ,
|
||||
171 ,
|
||||
172 ,
|
||||
173 ,
|
||||
174 ,
|
||||
175 ,
|
||||
176 ,
|
||||
177 ,
|
||||
178 ,
|
||||
179 ,
|
||||
180 ,
|
||||
181 ,
|
||||
182 ,
|
||||
183 ,
|
||||
184 ,
|
||||
185 ,
|
||||
186 ,
|
||||
186 ,
|
||||
187 ,
|
||||
188 ,
|
||||
189 ,
|
||||
190 ,
|
||||
191 ,
|
||||
192 ,
|
||||
193 ,
|
||||
194 ,
|
||||
195 ,
|
||||
196 ,
|
||||
197 ,
|
||||
198 ,
|
||||
199 ,
|
||||
200 ,
|
||||
201 ,
|
||||
202 ,
|
||||
203 ,
|
||||
204 ,
|
||||
205 ,
|
||||
205 ,
|
||||
206 ,
|
||||
207 ,
|
||||
208 ,
|
||||
209 ,
|
||||
210 ,
|
||||
211 ,
|
||||
212 ,
|
||||
213 ,
|
||||
214 ,
|
||||
215 ,
|
||||
216 ,
|
||||
217 ,
|
||||
218 ,
|
||||
219 ,
|
||||
220 ,
|
||||
221 ,
|
||||
222 ,
|
||||
223 ,
|
||||
224 ,
|
||||
224 ,
|
||||
225 ,
|
||||
226 ,
|
||||
227 ,
|
||||
228 ,
|
||||
229 ,
|
||||
230 ,
|
||||
231 ,
|
||||
232 ,
|
||||
233 ,
|
||||
234 ,
|
||||
235 ,
|
||||
236 ,
|
||||
237 ,
|
||||
238 ,
|
||||
239 ,
|
||||
239,
|
||||
240,
|
||||
240,
|
||||
};
|
||||
void main(void)
|
||||
{
|
||||
unsigned long int addr=0;
|
||||
unsigned char send_times = 0;
|
||||
#ifdef LVD_RST_ENABLE
|
||||
LVDCON = 0xE3; //设置LVD复位电压为2.0V
|
||||
#endif
|
||||
|
||||
#ifdef UART0_EN
|
||||
Uart0_Initial(UART0_BAUTRATE);
|
||||
#endif
|
||||
|
||||
//看门狗时钟源为IRCL
|
||||
CKCON |= ILCKE; //使能IRCL
|
||||
WDCON = WDTS(WDTS_IRCL) | WDRE(WDRE_reset); //设置看门狗时钟源为ILCKE,模式为复位模式
|
||||
WDVTHH = 0; //看门狗复位阈值高八位设置 当前值为5s
|
||||
WDVTHL = 75; //看门狗复位阈值低八位设置
|
||||
WDFLG = 0xA5;
|
||||
|
||||
EA = 1;
|
||||
|
||||
TS_init();
|
||||
|
||||
P32F = OUTPUT; //P00设置为推挽输出模式
|
||||
P32=0;
|
||||
|
||||
addr = (unsigned int)Read_32bit_UID(); //获取遥控ID
|
||||
D0 = (unsigned char)(addr >> 8);
|
||||
D1 = (unsigned char)(addr);
|
||||
|
||||
Yaokong_Data[0] = D1;
|
||||
Yaokong_Data[1] = D0;
|
||||
|
||||
TMOD = (TMOD&0xFC)|0x00; //模式选择: 定时器0,模式0。
|
||||
TH0 = TH_VAL; //高8位装初值
|
||||
TL0 = TL_VAL; //低8位装初值
|
||||
|
||||
TR0 = 0; //定时器0使能
|
||||
ET0 = 1; //定时器0中断使能
|
||||
PT0 = 0; //设置定时器0中断优先级为低优先级
|
||||
|
||||
while(1)
|
||||
{
|
||||
TS_Action();
|
||||
if(WheelSliderPosition != -1)
|
||||
{
|
||||
flagSend = 1;
|
||||
flagStart = 0;
|
||||
//当WheelSliderPosition不等于-1时, 表示滑条或圆环有触摸事件发生。WheelSliderPosition的值表示滑条或圆环的位置。
|
||||
send_times = 1;
|
||||
valueSend=rf_data[ WheelSliderPosition];//0-240
|
||||
valueSend += 15;//15-255
|
||||
}
|
||||
|
||||
if(KeysFlagSN != 0)
|
||||
{
|
||||
flagSend = 1;
|
||||
flagStart = 0;
|
||||
switch(KeysFlagSN)
|
||||
{
|
||||
case 0x0001:
|
||||
valueSend = 0x05;
|
||||
break;
|
||||
case 0x0002:
|
||||
valueSend = 0x0c;
|
||||
break;
|
||||
case 0x0004:
|
||||
valueSend = 0x0a;
|
||||
break;
|
||||
case 0x0008:
|
||||
valueSend = 0x0b;
|
||||
break;
|
||||
case 0x0010:
|
||||
valueSend = 0x09;
|
||||
break;
|
||||
case 0x0020:
|
||||
valueSend = 0x07;
|
||||
break;
|
||||
case 0x0040:
|
||||
valueSend = 0x03;
|
||||
break;
|
||||
case 0x0080:
|
||||
valueSend = 0x01;
|
||||
break;
|
||||
default:
|
||||
flagSend = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(WheelSliderPosition == -1&&KeysFlagSN == 0)
|
||||
{
|
||||
flagStart = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#if GENERATE_TS_KEY_EN
|
||||
/*************************************************************************************************
|
||||
变量TS_Key是根据KeysFlagSN得到的按键信息,以下为按键产生的过程:
|
||||
|-----------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 单键:以K1为例,K1按键产生的流程如下所示: |
|
||||
| |
|
||||
| |---> K1|KEY_BREAK(短按松开) |
|
||||
| K1(按下)--| |
|
||||
| |---> K1|KEY_LONG_START(长按大约1秒)---> K1|KEY_LONG(一直长按,约每300ms产生一次长按键)---->K1|KEY_LONG_BREAK(长按松开) |
|
||||
| ^ | |
|
||||
| | | |
|
||||
| |----------<-----------<------------<--------------| |
|
||||
|-----------------------------------------------------------------------------------------------------------------------------------|
|
||||
|
||||
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| |
|
||||
| 复合键:以K1(K1=0x0001),K2(K2=0x0002)为例, 当K1,K2同时按下时,产生按键为(K1<<5)|K2,即0x22, 产生按键的流程如下所示: |
|
||||
| |
|
||||
| |---> ((K1<<5)|K2)|KEY_BREAK(短按松开) |
|
||||
| (K1<<5)|K2(按下)--| |
|
||||
| |---> ((K1<<5)|K2)|KEY_LONG_START(长按大约1秒)---> ((K1<<5)|K2)|KEY_LONG(一直长按,约每300ms产生长按键)---->((K1<<5)|K2)|KEY_LONG_BREAK(长按松开) |
|
||||
| ^ | |
|
||||
| | | |
|
||||
| |---------<-------------<----------------<----------------| |
|
||||
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
|
||||
注意:由于复合键按下时,软件不一定同时检测到双键,而是先检测到单键按下,例如先检测到K1,此时会先产生K1键,等到检测到K2也按
|
||||
下时,才会产生按键(K1<<5)|K2,检测到双键后,如果双键一直按下,会产生((K1<<5)|K2)|KEY_LONG_START和((K1<<5)|K2)|KEY_LONG,如果
|
||||
有一个键先松手,会停止产生按键, 等到双键都松开时,才会产生((K1<<5)|K2)|KEY_BREAK(短按松开)或((K1<<5)|K2)|KEY_LONG_BREAK(长按松开)
|
||||
*************************************************************************************************/
|
||||
if(TS_Key != 0)
|
||||
{
|
||||
switch(TS_Key)
|
||||
{
|
||||
//单按键消息
|
||||
case K1:
|
||||
// valueSend = 0x05; //K1短按产生的按键消息
|
||||
break;
|
||||
case (K1|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K1|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K1|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K1|KEY_LONG_BREAK): longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K2: //K1短按产生的按键消息
|
||||
// valueSend = 0x0c;
|
||||
break;
|
||||
case (K2|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K2|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K2|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K2|KEY_LONG_BREAK):longPressFlag=0; //K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K3: //K1短按产生的按键消息
|
||||
// valueSend = 0x0a;
|
||||
break;
|
||||
case (K3|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K3|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K3|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K3|KEY_LONG_BREAK): longPressFlag=0;///K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K4: //K1短按产生的按键消息
|
||||
// valueSend = 0x0b;
|
||||
break;
|
||||
case (K4|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
flagStart = 1;
|
||||
break;
|
||||
case (K4|KEY_LONG_START):longPressFlag=1; //K1长按开始产生的消息(长按约1秒时产生)
|
||||
valueSend = 0x0b;
|
||||
flagStart = 1;
|
||||
break;
|
||||
case (K4|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
valueSend = 0x0b;
|
||||
flagStart = 1;
|
||||
break;
|
||||
case (K4|KEY_LONG_BREAK):longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K5: //K1短按产生的按键消息
|
||||
// valueSend = 0x09;
|
||||
break;
|
||||
case (K5|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K5|KEY_LONG_START):longPressFlag=1; //K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K5|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K5|KEY_LONG_BREAK):longPressFlag=0; //K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K6: //K1短按产生的按键消息
|
||||
// valueSend = 0x07;
|
||||
break;
|
||||
case (K6|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K6|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K6|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K6|KEY_LONG_BREAK):longPressFlag=0; //K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K7: //K1短按产生的按键消息
|
||||
// valueSend = 0x03;
|
||||
break;
|
||||
case (K7|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K7|KEY_LONG_START):longPressFlag=1; //K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K7|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K7|KEY_LONG_BREAK): longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K8: //K1短按产生的按键消息
|
||||
// valueSend = 0x01;
|
||||
break;
|
||||
case (K8|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K8|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K8|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K8|KEY_LONG_BREAK): longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
#if GENERATE_DOUBLE_KEY_EN
|
||||
//复合键消息
|
||||
case (K1<<5)|K2: //K1和K2同时按下时产生的按键消息
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_BREAK: //K1和K2短按松手产生的按键消息
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_LONG_START: //K1和K2长按开始产生的按键消息(长按约1秒时产生)
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_LONG: //K1和K2长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_LONG_BREAK: //K1和K2长按松手产生的消息
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(flagSend==1)//短按
|
||||
{
|
||||
flagSend = 0;
|
||||
// flagStart = 1;
|
||||
//
|
||||
// RF_send(send_times);
|
||||
TR0 = 1; //定时器0使能
|
||||
Yaokong_Data[2] = valueSend;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,188 @@
|
||||
#ifndef _rf_send_C_
|
||||
#define _rf_send_C_
|
||||
/*********************************************************************************************************************/
|
||||
#include "ca51f5_config.h"
|
||||
#include "includes\ca51f5sfr.h"
|
||||
#include "includes\ca51f5xsfr.h"
|
||||
#include "includes\gpiodef_f5.h"
|
||||
|
||||
#include "Library\Includes\delay.h"
|
||||
|
||||
#include "rf_send.h"
|
||||
|
||||
sbit Pin_rf = P3^2;
|
||||
unsigned char D0,D1;
|
||||
unsigned int idata ID;
|
||||
unsigned char RF_Time; //用于控制RF发送间隔时间
|
||||
|
||||
|
||||
unsigned char Send433_Status = 0; //发送过程的状态
|
||||
unsigned int Send433_Time = 0; //记录433发送数据的高低电平时间
|
||||
|
||||
unsigned char Yaokong_Data[3]={0};
|
||||
|
||||
unsigned char Send433_Byte_Cont=0;//记录发送一组433数据的字节数
|
||||
unsigned char Send433_Bit_Cont = 0; //记录发送位
|
||||
unsigned char Temp=0;
|
||||
unsigned char Chose_Data_En=0;//使能选择一组433数据的第N个字节
|
||||
|
||||
void Send433_Byte(void) //100us执行一次
|
||||
{
|
||||
switch (Send433_Status)
|
||||
{
|
||||
case 0: //同步头高
|
||||
Pin_rf = 1;
|
||||
if (++Send433_Time >= 4)//高电平400us
|
||||
{
|
||||
Send433_Time = 0;
|
||||
Send433_Status = 1; //进入同步头低
|
||||
}
|
||||
break;
|
||||
case 1://同步头低电平
|
||||
Pin_rf = 0;
|
||||
if (++Send433_Time >= 120)//电平12300us
|
||||
{
|
||||
Send433_Time = 0;
|
||||
Send433_Status = 2; //进入发送24位
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
|
||||
if(!Chose_Data_En)//还没开始发送 或者上次已经发送完一个字节才使能选择
|
||||
{
|
||||
Chose_Data_En=1;
|
||||
Temp=Yaokong_Data[Send433_Byte_Cont];
|
||||
//Send433_Byte_Cont++;
|
||||
}
|
||||
|
||||
Send433_Time++;
|
||||
if (Temp & 0x80) //1
|
||||
{
|
||||
if (Send433_Time <= 12)
|
||||
{
|
||||
Pin_rf = 1;
|
||||
}
|
||||
else if (Send433_Time >= 13)
|
||||
{
|
||||
Pin_rf = 0;
|
||||
if (Send433_Time == 16)
|
||||
{
|
||||
Send433_Time = 0;
|
||||
Temp <<= 1;
|
||||
Send433_Bit_Cont++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else//0
|
||||
{
|
||||
if (Send433_Time <= 4)
|
||||
{
|
||||
Pin_rf = 1;
|
||||
}
|
||||
else if (Send433_Time >= 5)
|
||||
{
|
||||
Pin_rf = 0;
|
||||
if (Send433_Time == 16)
|
||||
{
|
||||
Send433_Time = 0;
|
||||
Temp <<= 1;
|
||||
Send433_Bit_Cont++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Send433_Bit_Cont == 8)//发送完一字节
|
||||
{
|
||||
Send433_Bit_Cont = 0;
|
||||
|
||||
Chose_Data_En=0;//使能选择下一个字节
|
||||
if(++Send433_Byte_Cont==3)
|
||||
{
|
||||
Send433_Byte_Cont=0;
|
||||
|
||||
if(flagStart == 1)
|
||||
{
|
||||
Send433_Status = 3; //结束脉冲
|
||||
}
|
||||
else
|
||||
{
|
||||
Send433_Status = 0; //一帧数据发送完毕
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if (++Send433_Time <= 4)
|
||||
{
|
||||
Pin_rf = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Pin_rf = 0;
|
||||
Send433_Time = 0;
|
||||
// flagStart = 0;
|
||||
Send433_Status = 0;
|
||||
TR0 = 0; //定时器0禁止
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//void RF_send(unsigned char cnt);
|
||||
//void send_8bit(unsigned char n);
|
||||
|
||||
///*****************************************/
|
||||
|
||||
//void RF_send(unsigned char cnt)
|
||||
//{
|
||||
// unsigned char i;
|
||||
|
||||
// for(i=cnt;i>0;i--) //单个包发送次数
|
||||
// {
|
||||
// Pin_rf=1;
|
||||
// Delay_50us(8); //同步码高电平
|
||||
// Pin_rf=0;
|
||||
// Delay_ms(12); //同步码低电平
|
||||
// Pin_rf=1;
|
||||
|
||||
// send_8bit(D0);
|
||||
// send_8bit(D1);
|
||||
// send_8bit(valueSend);
|
||||
//
|
||||
//// if(WheelSliderPosition == -1&&KeysFlagSN == 0)
|
||||
//// {
|
||||
//// Pin_rf=1;
|
||||
//// Delay_50us(7);
|
||||
//// Pin_rf=0;
|
||||
//// }
|
||||
// }
|
||||
//}
|
||||
////---------------------------------------------
|
||||
//void send_8bit(unsigned char n)
|
||||
//{
|
||||
// unsigned char i;
|
||||
// for(i=8;i>0;i--)
|
||||
// {
|
||||
// Pin_rf=1;
|
||||
// if(n&0x80)
|
||||
// {
|
||||
// Delay_50us(24);
|
||||
// Pin_rf=0;
|
||||
// Delay_50us(7);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Delay_50us(7);
|
||||
// Pin_rf=0;
|
||||
// Delay_50us(24);
|
||||
// }
|
||||
// n<<=1;
|
||||
// }
|
||||
//}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef rf_send_H
|
||||
#define rf_send_H
|
||||
|
||||
extern unsigned char D0,D1;
|
||||
extern unsigned int idata ID;
|
||||
extern unsigned char RF_Time; //用于控制RF发送间隔时间
|
||||
extern unsigned char valueSend;
|
||||
extern unsigned char Yaokong_Data[3];
|
||||
extern unsigned char flagStart;
|
||||
|
||||
void Send433_Byte(void);
|
||||
|
||||
//void RF_send(unsigned char cnt);
|
||||
//void send_8bit(unsigned char n);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user