Initial commit
This commit is contained in:
commit
afb698ed3d
|
@ -0,0 +1,197 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Extensions>
|
||||
<cExt>*.c</cExt>
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj; *.o</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLK51>35000000</CLK51>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>1</RunSim>
|
||||
<RunTarget>0</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>120</PageWidth>
|
||||
<PageLength>65</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>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>255</CpuCode>
|
||||
<DebugOpt>
|
||||
<uSim>1</uSim>
|
||||
<uTrg>0</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>0</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>-1</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon></pMon>
|
||||
</DebugOpt>
|
||||
<Breakpoint/>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>1</periodic>
|
||||
<aLwin>0</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>0</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>Source Group 1</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>1</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</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>4</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\STCBSP_V3.6.LIB</PathWithFileName>
|
||||
<FilenameWithoutPath>STCBSP_V3.6.LIB</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
|
@ -0,0 +1,448 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>STC15F2K60S2 Series</Device>
|
||||
<Vendor>STC</Vendor>
|
||||
<Cpu>IRAM(0-0xFF) XRAM(0-0x6FF) IROM(0-0xEFF8) CLOCK(35000000) MODP2</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId>62472</DeviceId>
|
||||
<RegisterFile>STC15F2K60S2.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>STC\</RegisterFilePath>
|
||||
<DBRegisterFilePath>STC\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||
<OutputName>2-1</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
<HexFormatSelection>0</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
<nStopB2X>0</nStopB2X>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></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></SimDllArguments>
|
||||
<SimDlgDll>DP51.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pDP8051</SimDlgDllArguments>
|
||||
<TargetDllName>S8051.DLL</TargetDllName>
|
||||
<TargetDllArguments></TargetDllArguments>
|
||||
<TargetDlgDll>TP51.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-p51</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
<Simulator>
|
||||
<UseSimulator>1</UseSimulator>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>1</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Simulator>
|
||||
<Target>
|
||||
<UseTarget>0</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>0</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>1</RestoreTracepoints>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>-1</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></Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>0</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||
<Capability>0</Capability>
|
||||
<DriverSelection>-1</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>0</bUseTDR>
|
||||
<Flash2></Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<Target51>
|
||||
<Target51Misc>
|
||||
<MemoryModel>0</MemoryModel>
|
||||
<RTOS>0</RTOS>
|
||||
<RomSize>2</RomSize>
|
||||
<DataHold>0</DataHold>
|
||||
<XDataHold>0</XDataHold>
|
||||
<UseOnchipRom>0</UseOnchipRom>
|
||||
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||
<UseOnchipXram>0</UseOnchipXram>
|
||||
<HadIRAM>1</HadIRAM>
|
||||
<HadXRAM>1</HadXRAM>
|
||||
<HadIROM>1</HadIROM>
|
||||
<Moda2>0</Moda2>
|
||||
<Moddp2>0</Moddp2>
|
||||
<Modp2>1</Modp2>
|
||||
<Mod517dp>0</Mod517dp>
|
||||
<Mod517au>0</Mod517au>
|
||||
<Mode2>0</Mode2>
|
||||
<useCB>0</useCB>
|
||||
<useXB>0</useXB>
|
||||
<useL251>0</useL251>
|
||||
<useA251>0</useA251>
|
||||
<Mx51>0</Mx51>
|
||||
<ModC812>0</ModC812>
|
||||
<ModCont>0</ModCont>
|
||||
<Lp51>0</Lp51>
|
||||
<useXBS>0</useXBS>
|
||||
<ModDA>0</ModDA>
|
||||
<ModAB2>0</ModAB2>
|
||||
<Mx51P>0</Mx51P>
|
||||
<hadXRAM2>0</hadXRAM2>
|
||||
<uocXram2>0</uocXram2>
|
||||
<hadXRAM3>0</hadXRAM3>
|
||||
<ModC2>0</ModC2>
|
||||
<ModH2>0</ModH2>
|
||||
<Mdu_R515>0</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>0x10000</Size>
|
||||
</RCB>
|
||||
<RXB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</RXB>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocr1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr1>
|
||||
<Ocr2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr2>
|
||||
<Ocr3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr3>
|
||||
<IRO>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0xeff9</Size>
|
||||
</IRO>
|
||||
<IRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x100</Size>
|
||||
</IRA>
|
||||
<XRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x700</Size>
|
||||
</XRA>
|
||||
<XRA512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA512>
|
||||
<IROM512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM512>
|
||||
<XRA513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA513>
|
||||
<IROM513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM513>
|
||||
</OnChipMemories>
|
||||
</Target51Misc>
|
||||
<C51>
|
||||
<RegisterColoring>0</RegisterColoring>
|
||||
<VariablesInOrder>0</VariablesInOrder>
|
||||
<IntegerPromotion>1</IntegerPromotion>
|
||||
<uAregs>0</uAregs>
|
||||
<UseInterruptVector>1</UseInterruptVector>
|
||||
<Fuzzy>3</Fuzzy>
|
||||
<Optimize>8</Optimize>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<SizeSpeed>1</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>0</UseMod51>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Ax51>
|
||||
<Lx51>
|
||||
<useFile>0</useFile>
|
||||
<linkonly>0</linkonly>
|
||||
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<DataOverlaying>1</DataOverlaying>
|
||||
<OverlayString></OverlayString>
|
||||
<MiscControls></MiscControls>
|
||||
<DisableWarningNumbers></DisableWarningNumbers>
|
||||
<LinkerCmdFile></LinkerCmdFile>
|
||||
<Assign></Assign>
|
||||
<ReserveString></ReserveString>
|
||||
<CClasses></CClasses>
|
||||
<UserClasses></UserClasses>
|
||||
<CSection></CSection>
|
||||
<UserSection></UserSection>
|
||||
<CodeBaseAddress></CodeBaseAddress>
|
||||
<XDataBaseAddress></XDataBaseAddress>
|
||||
<PDataBaseAddress></PDataBaseAddress>
|
||||
<BitBaseAddress></BitBaseAddress>
|
||||
<DataBaseAddress></DataBaseAddress>
|
||||
<IDataBaseAddress></IDataBaseAddress>
|
||||
<Precede></Precede>
|
||||
<Stack></Stack>
|
||||
<CodeSegmentName></CodeSegmentName>
|
||||
<XDataSegmentName></XDataSegmentName>
|
||||
<BitSegmentName></BitSegmentName>
|
||||
<DataSegmentName></DataSegmentName>
|
||||
<IDataSegmentName></IDataSegmentName>
|
||||
</Lx51>
|
||||
</Target51>
|
||||
</TargetOption>
|
||||
<Groups>
|
||||
<Group>
|
||||
<GroupName>Source Group 1</GroupName>
|
||||
<GroupOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>2</IncludeInBuild>
|
||||
<AlwaysBuild>2</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
<BankNo>65535</BankNo>
|
||||
</CommonProperty>
|
||||
<Group51>
|
||||
<C51>
|
||||
<RegisterColoring>2</RegisterColoring>
|
||||
<VariablesInOrder>2</VariablesInOrder>
|
||||
<IntegerPromotion>2</IntegerPromotion>
|
||||
<uAregs>2</uAregs>
|
||||
<UseInterruptVector>2</UseInterruptVector>
|
||||
<Fuzzy>8</Fuzzy>
|
||||
<Optimize>10</Optimize>
|
||||
<WarningLevel>3</WarningLevel>
|
||||
<SizeSpeed>2</SizeSpeed>
|
||||
<ObjectExtend>2</ObjectExtend>
|
||||
<ACallAJmp>2</ACallAJmp>
|
||||
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>..\inc</IncludePath>
|
||||
</VariousControls>
|
||||
</C51>
|
||||
<Ax51>
|
||||
<UseMpl>2</UseMpl>
|
||||
<UseStandard>2</UseStandard>
|
||||
<UseCase>2</UseCase>
|
||||
<UseMod51>2</UseMod51>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Ax51>
|
||||
</Group51>
|
||||
</GroupOption>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>STCBSP_V3.6.LIB</FileName>
|
||||
<FileType>4</FileType>
|
||||
<FilePath>.\STCBSP_V3.6.LIB</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,32 @@
|
|||
// This project is used for demonstrating digital tubes of BSP library.
|
||||
#include "STC15F2K60S2.H"
|
||||
#include "sys.h"
|
||||
#include "uart1.h"
|
||||
|
||||
code unsigned long SysClock = 11059200; //必须。定义系统工作时钟频率(Hz),用户必须修改成与实际工作频率(下载时选择的)一致
|
||||
char buffer[10],*match;
|
||||
|
||||
void sendBack()
|
||||
{
|
||||
char temp;
|
||||
int i;
|
||||
for(i=0;i<5;i++)
|
||||
{
|
||||
temp=buffer[i];
|
||||
buffer[i]=buffer[9-i];
|
||||
buffer[9-i]=temp;
|
||||
}
|
||||
Uart1Print(buffer,10);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
Uart1Init(2400); //初始化串口1,波特率为2400
|
||||
SetUart1Rxd(buffer,10,match,0);
|
||||
SetEventCallBack(enumEventUart1Rxd,sendBack);
|
||||
MySTC_Init();
|
||||
while (1)
|
||||
{
|
||||
MySTC_OS();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,197 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Extensions>
|
||||
<cExt>*.c</cExt>
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj; *.o</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLK51>35000000</CLK51>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>1</RunSim>
|
||||
<RunTarget>0</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>120</PageWidth>
|
||||
<PageLength>65</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>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>255</CpuCode>
|
||||
<DebugOpt>
|
||||
<uSim>1</uSim>
|
||||
<uTrg>0</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>0</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>-1</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon></pMon>
|
||||
</DebugOpt>
|
||||
<Breakpoint/>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>1</periodic>
|
||||
<aLwin>0</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>0</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>Source Group 1</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>1</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</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>4</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\STCBSP_V3.6.LIB</PathWithFileName>
|
||||
<FilenameWithoutPath>STCBSP_V3.6.LIB</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
|
@ -0,0 +1,395 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>STC15F2K60S2 Series</Device>
|
||||
<Vendor>STC</Vendor>
|
||||
<Cpu>IRAM(0-0xFF) XRAM(0-0x6FF) IROM(0-0xEFF8) CLOCK(35000000) MODP2</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId>62472</DeviceId>
|
||||
<RegisterFile>STC15F2K60S2.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>STC\</RegisterFilePath>
|
||||
<DBRegisterFilePath>STC\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||
<OutputName>2</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
<HexFormatSelection>0</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
<nStopB2X>0</nStopB2X>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></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></SimDllArguments>
|
||||
<SimDlgDll>DP51.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pDP8051</SimDlgDllArguments>
|
||||
<TargetDllName>S8051.DLL</TargetDllName>
|
||||
<TargetDllArguments></TargetDllArguments>
|
||||
<TargetDlgDll>TP51.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-p51</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
<Simulator>
|
||||
<UseSimulator>1</UseSimulator>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>1</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Simulator>
|
||||
<Target>
|
||||
<UseTarget>0</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>0</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>1</RestoreTracepoints>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>-1</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></Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>0</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||
<Capability>0</Capability>
|
||||
<DriverSelection>-1</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>0</bUseTDR>
|
||||
<Flash2></Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<Target51>
|
||||
<Target51Misc>
|
||||
<MemoryModel>0</MemoryModel>
|
||||
<RTOS>0</RTOS>
|
||||
<RomSize>2</RomSize>
|
||||
<DataHold>0</DataHold>
|
||||
<XDataHold>0</XDataHold>
|
||||
<UseOnchipRom>0</UseOnchipRom>
|
||||
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||
<UseOnchipXram>0</UseOnchipXram>
|
||||
<HadIRAM>1</HadIRAM>
|
||||
<HadXRAM>1</HadXRAM>
|
||||
<HadIROM>1</HadIROM>
|
||||
<Moda2>0</Moda2>
|
||||
<Moddp2>0</Moddp2>
|
||||
<Modp2>1</Modp2>
|
||||
<Mod517dp>0</Mod517dp>
|
||||
<Mod517au>0</Mod517au>
|
||||
<Mode2>0</Mode2>
|
||||
<useCB>0</useCB>
|
||||
<useXB>0</useXB>
|
||||
<useL251>0</useL251>
|
||||
<useA251>0</useA251>
|
||||
<Mx51>0</Mx51>
|
||||
<ModC812>0</ModC812>
|
||||
<ModCont>0</ModCont>
|
||||
<Lp51>0</Lp51>
|
||||
<useXBS>0</useXBS>
|
||||
<ModDA>0</ModDA>
|
||||
<ModAB2>0</ModAB2>
|
||||
<Mx51P>0</Mx51P>
|
||||
<hadXRAM2>0</hadXRAM2>
|
||||
<uocXram2>0</uocXram2>
|
||||
<hadXRAM3>0</hadXRAM3>
|
||||
<ModC2>0</ModC2>
|
||||
<ModH2>0</ModH2>
|
||||
<Mdu_R515>0</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>0x10000</Size>
|
||||
</RCB>
|
||||
<RXB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</RXB>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocr1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr1>
|
||||
<Ocr2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr2>
|
||||
<Ocr3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr3>
|
||||
<IRO>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0xeff9</Size>
|
||||
</IRO>
|
||||
<IRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x100</Size>
|
||||
</IRA>
|
||||
<XRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x700</Size>
|
||||
</XRA>
|
||||
<XRA512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA512>
|
||||
<IROM512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM512>
|
||||
<XRA513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA513>
|
||||
<IROM513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM513>
|
||||
</OnChipMemories>
|
||||
</Target51Misc>
|
||||
<C51>
|
||||
<RegisterColoring>0</RegisterColoring>
|
||||
<VariablesInOrder>0</VariablesInOrder>
|
||||
<IntegerPromotion>1</IntegerPromotion>
|
||||
<uAregs>0</uAregs>
|
||||
<UseInterruptVector>1</UseInterruptVector>
|
||||
<Fuzzy>3</Fuzzy>
|
||||
<Optimize>8</Optimize>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<SizeSpeed>1</SizeSpeed>
|
||||
<ObjectExtend>1</ObjectExtend>
|
||||
<ACallAJmp>0</ACallAJmp>
|
||||
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>..\inc</IncludePath>
|
||||
</VariousControls>
|
||||
</C51>
|
||||
<Ax51>
|
||||
<UseMpl>0</UseMpl>
|
||||
<UseStandard>1</UseStandard>
|
||||
<UseCase>0</UseCase>
|
||||
<UseMod51>0</UseMod51>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Ax51>
|
||||
<Lx51>
|
||||
<useFile>0</useFile>
|
||||
<linkonly>0</linkonly>
|
||||
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<DataOverlaying>1</DataOverlaying>
|
||||
<OverlayString></OverlayString>
|
||||
<MiscControls></MiscControls>
|
||||
<DisableWarningNumbers></DisableWarningNumbers>
|
||||
<LinkerCmdFile></LinkerCmdFile>
|
||||
<Assign></Assign>
|
||||
<ReserveString></ReserveString>
|
||||
<CClasses></CClasses>
|
||||
<UserClasses></UserClasses>
|
||||
<CSection></CSection>
|
||||
<UserSection></UserSection>
|
||||
<CodeBaseAddress></CodeBaseAddress>
|
||||
<XDataBaseAddress></XDataBaseAddress>
|
||||
<PDataBaseAddress></PDataBaseAddress>
|
||||
<BitBaseAddress></BitBaseAddress>
|
||||
<DataBaseAddress></DataBaseAddress>
|
||||
<IDataBaseAddress></IDataBaseAddress>
|
||||
<Precede></Precede>
|
||||
<Stack></Stack>
|
||||
<CodeSegmentName></CodeSegmentName>
|
||||
<XDataSegmentName></XDataSegmentName>
|
||||
<BitSegmentName></BitSegmentName>
|
||||
<DataSegmentName></DataSegmentName>
|
||||
<IDataSegmentName></IDataSegmentName>
|
||||
</Lx51>
|
||||
</Target51>
|
||||
</TargetOption>
|
||||
<Groups>
|
||||
<Group>
|
||||
<GroupName>Source Group 1</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>STCBSP_V3.6.LIB</FileName>
|
||||
<FileType>4</FileType>
|
||||
<FilePath>.\STCBSP_V3.6.LIB</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,38 @@
|
|||
// receiver
|
||||
#include "STC15F2K60S2.H"
|
||||
#include "sys.h"
|
||||
#include "uart2.h"
|
||||
|
||||
code unsigned long SysClock = 11059200; //必须。定义系统工作时钟频率(Hz),用户必须修改成与实际工作频率(下载时选择的)一致
|
||||
char num[5]={0x01,0x03,0x05,0x07,0x09};
|
||||
int countdown=10;
|
||||
|
||||
void sendData()
|
||||
{
|
||||
int i;
|
||||
if(countdown)
|
||||
{
|
||||
countdown--;
|
||||
}
|
||||
countdown=10;
|
||||
Uart2Print(num,5);
|
||||
for(i=0;i<5;i++)
|
||||
{
|
||||
num[i]++;
|
||||
if(num[i]>0x09)
|
||||
{
|
||||
num[i]=0x01;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
Uart2Init(1200,Uart2Usedfor485); //初始化串口2,波特率为2400
|
||||
SetEventCallBack(enumEventSys1S,sendData);
|
||||
MySTC_Init();
|
||||
while (1)
|
||||
{
|
||||
MySTC_OS();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,173 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Extensions>
|
||||
<cExt>*.c</cExt>
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj; *.o</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLK51>35000000</CLK51>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>1</RunSim>
|
||||
<RunTarget>0</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>120</PageWidth>
|
||||
<PageLength>65</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>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>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>255</CpuCode>
|
||||
<DebugOpt>
|
||||
<uSim>1</uSim>
|
||||
<uTrg>0</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>0</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>-1</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon></pMon>
|
||||
</DebugOpt>
|
||||
<Breakpoint/>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>1</periodic>
|
||||
<aLwin>0</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>0</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>Source Group 1</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
|
@ -0,0 +1,383 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>STC15F2K60S2 Series</Device>
|
||||
<Vendor>STC</Vendor>
|
||||
<Cpu>IRAM(0-0xFF) XRAM(0-0x6FF) IROM(0-0xEFF8) CLOCK(35000000) MODP2</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId>62472</DeviceId>
|
||||
<RegisterFile>STC15F2K60S2.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>STC\</RegisterFilePath>
|
||||
<DBRegisterFilePath>STC\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||
<OutputName>2-2</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
<HexFormatSelection>0</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
<nStopB2X>0</nStopB2X>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></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></SimDllArguments>
|
||||
<SimDlgDll>DP51.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pDP8051</SimDlgDllArguments>
|
||||
<TargetDllName>S8051.DLL</TargetDllName>
|
||||
<TargetDllArguments></TargetDllArguments>
|
||||
<TargetDlgDll>TP51.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-p51</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
<Simulator>
|
||||
<UseSimulator>1</UseSimulator>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>1</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Simulator>
|
||||
<Target>
|
||||
<UseTarget>0</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>0</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>1</RestoreTracepoints>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>-1</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></Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>0</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||
<Capability>0</Capability>
|
||||
<DriverSelection>-1</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>0</bUseTDR>
|
||||
<Flash2></Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<Target51>
|
||||
<Target51Misc>
|
||||
<MemoryModel>0</MemoryModel>
|
||||
<RTOS>0</RTOS>
|
||||
<RomSize>2</RomSize>
|
||||
<DataHold>0</DataHold>
|
||||
<XDataHold>0</XDataHold>
|
||||
<UseOnchipRom>0</UseOnchipRom>
|
||||
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||
<UseOnchipXram>0</UseOnchipXram>
|
||||
<HadIRAM>1</HadIRAM>
|
||||
<HadXRAM>1</HadXRAM>
|
||||
<HadIROM>1</HadIROM>
|
||||
<Moda2>0</Moda2>
|
||||
<Moddp2>0</Moddp2>
|
||||
<Modp2>1</Modp2>
|
||||
<Mod517dp>0</Mod517dp>
|
||||
<Mod517au>0</Mod517au>
|
||||
<Mode2>0</Mode2>
|
||||
<useCB>0</useCB>
|
||||
<useXB>0</useXB>
|
||||
<useL251>0</useL251>
|
||||
<useA251>0</useA251>
|
||||
<Mx51>0</Mx51>
|
||||
<ModC812>0</ModC812>
|
||||
<ModCont>0</ModCont>
|
||||
<Lp51>0</Lp51>
|
||||
<useXBS>0</useXBS>
|
||||
<ModDA>0</ModDA>
|
||||
<ModAB2>0</ModAB2>
|
||||
<Mx51P>0</Mx51P>
|
||||
<hadXRAM2>0</hadXRAM2>
|
||||
<uocXram2>0</uocXram2>
|
||||
<hadXRAM3>0</hadXRAM3>
|
||||
<ModC2>0</ModC2>
|
||||
<ModH2>0</ModH2>
|
||||
<Mdu_R515>0</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>0x10000</Size>
|
||||
</RCB>
|
||||
<RXB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</RXB>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocr1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr1>
|
||||
<Ocr2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr2>
|
||||
<Ocr3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr3>
|
||||
<IRO>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0xeff9</Size>
|
||||
</IRO>
|
||||
<IRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x100</Size>
|
||||
</IRA>
|
||||
<XRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x700</Size>
|
||||
</XRA>
|
||||
<XRA512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA512>
|
||||
<IROM512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM512>
|
||||
<XRA513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA513>
|
||||
<IROM513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM513>
|
||||
</OnChipMemories>
|
||||
</Target51Misc>
|
||||
<C51>
|
||||
<RegisterColoring>0</RegisterColoring>
|
||||
<VariablesInOrder>0</VariablesInOrder>
|
||||
<IntegerPromotion>1</IntegerPromotion>
|
||||
<uAregs>0</uAregs>
|
||||
<UseInterruptVector>1</UseInterruptVector>
|
||||
<Fuzzy>3</Fuzzy>
|
||||
<Optimize>8</Optimize>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<SizeSpeed>1</SizeSpeed>
|
||||
<ObjectExtend>1</ObjectExtend>
|
||||
<ACallAJmp>0</ACallAJmp>
|
||||
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>..\inc</IncludePath>
|
||||
</VariousControls>
|
||||
</C51>
|
||||
<Ax51>
|
||||
<UseMpl>0</UseMpl>
|
||||
<UseStandard>1</UseStandard>
|
||||
<UseCase>0</UseCase>
|
||||
<UseMod51>0</UseMod51>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Ax51>
|
||||
<Lx51>
|
||||
<useFile>0</useFile>
|
||||
<linkonly>0</linkonly>
|
||||
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<DataOverlaying>1</DataOverlaying>
|
||||
<OverlayString></OverlayString>
|
||||
<MiscControls></MiscControls>
|
||||
<DisableWarningNumbers></DisableWarningNumbers>
|
||||
<LinkerCmdFile></LinkerCmdFile>
|
||||
<Assign></Assign>
|
||||
<ReserveString></ReserveString>
|
||||
<CClasses></CClasses>
|
||||
<UserClasses></UserClasses>
|
||||
<CSection></CSection>
|
||||
<UserSection></UserSection>
|
||||
<CodeBaseAddress></CodeBaseAddress>
|
||||
<XDataBaseAddress></XDataBaseAddress>
|
||||
<PDataBaseAddress></PDataBaseAddress>
|
||||
<BitBaseAddress></BitBaseAddress>
|
||||
<DataBaseAddress></DataBaseAddress>
|
||||
<IDataBaseAddress></IDataBaseAddress>
|
||||
<Precede></Precede>
|
||||
<Stack></Stack>
|
||||
<CodeSegmentName></CodeSegmentName>
|
||||
<XDataSegmentName></XDataSegmentName>
|
||||
<BitSegmentName></BitSegmentName>
|
||||
<DataSegmentName></DataSegmentName>
|
||||
<IDataSegmentName></IDataSegmentName>
|
||||
</Lx51>
|
||||
</Target51>
|
||||
</TargetOption>
|
||||
<Groups>
|
||||
<Group>
|
||||
<GroupName>Source Group 1</GroupName>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,33 @@
|
|||
// receiver
|
||||
#include "STC15F2K60S2.H"
|
||||
#include "displayer.h"
|
||||
#include "sys.h"
|
||||
#include "uart2.h"
|
||||
|
||||
code unsigned long SysClock = 11059200; //必须。定义系统工作时钟频率(Hz),用户必须修改成与实际工作频率(下载时选择的)一致
|
||||
char buffer[10], *match;
|
||||
int sum;
|
||||
|
||||
void sendBack()
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
sum += buffer[i];
|
||||
}
|
||||
// print least 8 bits
|
||||
LedPrint(sum & 0xFF);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
Uart2Init(1200, Uart2Usedfor485); //初始化串口2,波特率为2400
|
||||
DisplayerInit();
|
||||
SetUart2Rxd(buffer, 5, match, 0); //设置串口2接收缓冲区,接收5个字节,匹配0个字节
|
||||
SetEventCallBack(enumEventUart2Rxd, sendBack);
|
||||
MySTC_Init();
|
||||
while (1)
|
||||
{
|
||||
MySTC_OS();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,197 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Extensions>
|
||||
<cExt>*.c</cExt>
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj; *.o</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLK51>35000000</CLK51>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>1</RunSim>
|
||||
<RunTarget>0</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>120</PageWidth>
|
||||
<PageLength>65</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>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>255</CpuCode>
|
||||
<DebugOpt>
|
||||
<uSim>1</uSim>
|
||||
<uTrg>0</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>0</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>-1</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon></pMon>
|
||||
</DebugOpt>
|
||||
<Breakpoint/>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>1</periodic>
|
||||
<aLwin>0</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>0</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>Source Group 1</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>1</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</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>4</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\STCBSP_V3.6.LIB</PathWithFileName>
|
||||
<FilenameWithoutPath>STCBSP_V3.6.LIB</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
|
@ -0,0 +1,395 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>STC15F2K60S2 Series</Device>
|
||||
<Vendor>STC</Vendor>
|
||||
<Cpu>IRAM(0-0xFF) XRAM(0-0x6FF) IROM(0-0xEFF8) CLOCK(35000000) MODP2</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId>62472</DeviceId>
|
||||
<RegisterFile>STC15F2K60S2.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>STC\</RegisterFilePath>
|
||||
<DBRegisterFilePath>STC\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||
<OutputName>3-1</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
<HexFormatSelection>0</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
<nStopB2X>0</nStopB2X>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></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></SimDllArguments>
|
||||
<SimDlgDll>DP51.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pDP8051</SimDlgDllArguments>
|
||||
<TargetDllName>S8051.DLL</TargetDllName>
|
||||
<TargetDllArguments></TargetDllArguments>
|
||||
<TargetDlgDll>TP51.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-p51</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
<Simulator>
|
||||
<UseSimulator>1</UseSimulator>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>1</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Simulator>
|
||||
<Target>
|
||||
<UseTarget>0</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>0</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>1</RestoreTracepoints>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>-1</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></Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>0</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||
<Capability>0</Capability>
|
||||
<DriverSelection>-1</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>0</bUseTDR>
|
||||
<Flash2></Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<Target51>
|
||||
<Target51Misc>
|
||||
<MemoryModel>0</MemoryModel>
|
||||
<RTOS>0</RTOS>
|
||||
<RomSize>2</RomSize>
|
||||
<DataHold>0</DataHold>
|
||||
<XDataHold>0</XDataHold>
|
||||
<UseOnchipRom>0</UseOnchipRom>
|
||||
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||
<UseOnchipXram>0</UseOnchipXram>
|
||||
<HadIRAM>1</HadIRAM>
|
||||
<HadXRAM>1</HadXRAM>
|
||||
<HadIROM>1</HadIROM>
|
||||
<Moda2>0</Moda2>
|
||||
<Moddp2>0</Moddp2>
|
||||
<Modp2>1</Modp2>
|
||||
<Mod517dp>0</Mod517dp>
|
||||
<Mod517au>0</Mod517au>
|
||||
<Mode2>0</Mode2>
|
||||
<useCB>0</useCB>
|
||||
<useXB>0</useXB>
|
||||
<useL251>0</useL251>
|
||||
<useA251>0</useA251>
|
||||
<Mx51>0</Mx51>
|
||||
<ModC812>0</ModC812>
|
||||
<ModCont>0</ModCont>
|
||||
<Lp51>0</Lp51>
|
||||
<useXBS>0</useXBS>
|
||||
<ModDA>0</ModDA>
|
||||
<ModAB2>0</ModAB2>
|
||||
<Mx51P>0</Mx51P>
|
||||
<hadXRAM2>0</hadXRAM2>
|
||||
<uocXram2>0</uocXram2>
|
||||
<hadXRAM3>0</hadXRAM3>
|
||||
<ModC2>0</ModC2>
|
||||
<ModH2>0</ModH2>
|
||||
<Mdu_R515>0</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>0x10000</Size>
|
||||
</RCB>
|
||||
<RXB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</RXB>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocr1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr1>
|
||||
<Ocr2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr2>
|
||||
<Ocr3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr3>
|
||||
<IRO>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0xeff9</Size>
|
||||
</IRO>
|
||||
<IRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x100</Size>
|
||||
</IRA>
|
||||
<XRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x700</Size>
|
||||
</XRA>
|
||||
<XRA512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA512>
|
||||
<IROM512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM512>
|
||||
<XRA513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA513>
|
||||
<IROM513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM513>
|
||||
</OnChipMemories>
|
||||
</Target51Misc>
|
||||
<C51>
|
||||
<RegisterColoring>0</RegisterColoring>
|
||||
<VariablesInOrder>0</VariablesInOrder>
|
||||
<IntegerPromotion>1</IntegerPromotion>
|
||||
<uAregs>0</uAregs>
|
||||
<UseInterruptVector>1</UseInterruptVector>
|
||||
<Fuzzy>3</Fuzzy>
|
||||
<Optimize>8</Optimize>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<SizeSpeed>1</SizeSpeed>
|
||||
<ObjectExtend>1</ObjectExtend>
|
||||
<ACallAJmp>0</ACallAJmp>
|
||||
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>..\inc</IncludePath>
|
||||
</VariousControls>
|
||||
</C51>
|
||||
<Ax51>
|
||||
<UseMpl>0</UseMpl>
|
||||
<UseStandard>1</UseStandard>
|
||||
<UseCase>0</UseCase>
|
||||
<UseMod51>0</UseMod51>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Ax51>
|
||||
<Lx51>
|
||||
<useFile>0</useFile>
|
||||
<linkonly>0</linkonly>
|
||||
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<DataOverlaying>1</DataOverlaying>
|
||||
<OverlayString></OverlayString>
|
||||
<MiscControls></MiscControls>
|
||||
<DisableWarningNumbers></DisableWarningNumbers>
|
||||
<LinkerCmdFile></LinkerCmdFile>
|
||||
<Assign></Assign>
|
||||
<ReserveString></ReserveString>
|
||||
<CClasses></CClasses>
|
||||
<UserClasses></UserClasses>
|
||||
<CSection></CSection>
|
||||
<UserSection></UserSection>
|
||||
<CodeBaseAddress></CodeBaseAddress>
|
||||
<XDataBaseAddress></XDataBaseAddress>
|
||||
<PDataBaseAddress></PDataBaseAddress>
|
||||
<BitBaseAddress></BitBaseAddress>
|
||||
<DataBaseAddress></DataBaseAddress>
|
||||
<IDataBaseAddress></IDataBaseAddress>
|
||||
<Precede></Precede>
|
||||
<Stack></Stack>
|
||||
<CodeSegmentName></CodeSegmentName>
|
||||
<XDataSegmentName></XDataSegmentName>
|
||||
<BitSegmentName></BitSegmentName>
|
||||
<DataSegmentName></DataSegmentName>
|
||||
<IDataSegmentName></IDataSegmentName>
|
||||
</Lx51>
|
||||
</Target51>
|
||||
</TargetOption>
|
||||
<Groups>
|
||||
<Group>
|
||||
<GroupName>Source Group 1</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>STCBSP_V3.6.LIB</FileName>
|
||||
<FileType>4</FileType>
|
||||
<FilePath>.\STCBSP_V3.6.LIB</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,31 @@
|
|||
// receiver
|
||||
#include "IR.h"
|
||||
#include "STC15F2K60S2.H"
|
||||
#include "sys.h"
|
||||
|
||||
code unsigned long SysClock = 11059200; //必须。定义系统工作时钟频率(Hz),用户必须修改成与实际工作频率(下载时选择的)一致
|
||||
char tmp[5];
|
||||
int sum = 0;
|
||||
|
||||
void IrRxd()
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
sum += tmp[i];
|
||||
}
|
||||
// print least 8 bits
|
||||
LedPrint(sum & 0xFF);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
IrInit(NEC_R05d);
|
||||
SetIrRxd(tmp, 5);
|
||||
SetEventCallBack(enumEventIrRxd, IrRxd);
|
||||
MySTC_Init();
|
||||
while (1)
|
||||
{
|
||||
MySTC_OS();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
// receiver
|
||||
#include "STC15F2K60S2.H"
|
||||
#include "displayer.h"
|
||||
#include "sys.h"
|
||||
#include "uart2.h"
|
||||
|
||||
code unsigned long SysClock = 11059200; //必须。定义系统工作时钟频率(Hz),用户必须修改成与实际工作频率(下载时选择的)一致
|
||||
char buffer[10], *match;
|
||||
int sum;
|
||||
|
||||
void sendBack()
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
sum += buffer[i];
|
||||
}
|
||||
// print least 8 bits
|
||||
LedPrint(sum & 0xFF);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
Uart2Init(1200, Uart2Usedfor485); //初始化串口2,波特率为2400
|
||||
DisplayerInit();
|
||||
SetUart2Rxd(buffer, 5, match, 0); //设置串口2接收缓冲区,接收5个字节,匹配0个字节
|
||||
SetEventCallBack(enumEventUart2Rxd, sendBack);
|
||||
MySTC_Init();
|
||||
while (1)
|
||||
{
|
||||
MySTC_OS();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
/**********************************Beep V2.0 说明 ************************************************************************
|
||||
Beep用于控制“STC-B学习板”上无源蜂鸣器的发声。Beep模块共提供1个驱动函数、2个应用函数:
|
||||
(1) BeepInit():蜂鸣器模块驱动函数
|
||||
(2) Set_Beep(unsigned int Beep_freq, unsigned char Beep_time):控制蜂鸣器发声,非阻塞型
|
||||
函数参数:
|
||||
Beep_freq:指定发声频率,单位Hz。小于10将无输出
|
||||
Beep_time:指定发声时长。发声时长=10*Beep_time (mS) ,最长 655350mS
|
||||
函数返回值:enumSetBeepOK:调用成功,enumSetBeepFail:调用失败(或因蜂鸣器正在发音)
|
||||
(3) GetBeepStatus(void): 获取Beep当前状态,enmuBeepFree:空闲, enumBeepBusy ,正在发音
|
||||
(4) Beep模块使用了STC内部CCP模块1通道
|
||||
|
||||
编写:徐成(电话18008400450) 2021年3月3日设计,2021年3月26日更新
|
||||
*/
|
||||
|
||||
#ifndef _beep_H_
|
||||
#define _beep_H_
|
||||
|
||||
extern void BeepInit(); // 蜂鸣器初始化
|
||||
|
||||
extern char SetBeep(unsigned int Beep_freq, unsigned int Beep_time); // 发指定频率声音, 发声时长=10×Beep_time (mS) ,最长 655350mS
|
||||
// Beep_freq < 10 Hz, 不发音
|
||||
// 函数返回 enumSetBeepOK:调用成功, enumSetBeepFail:调用失败(调用时正在发音)
|
||||
|
||||
extern unsigned char GetBeepStatus(void); // 获取状态,enumBeepFree:自由, enumBeepBusy,正在发声
|
||||
|
||||
enum BeepActName {enumBeepFree=0,enumBeepBusy,enumSetBeepOK,enumSetBeepFail};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,75 @@
|
|||
/**********************************DS1302 V1.1 说明 ************************************************************************
|
||||
DS1302模块用于控制“STC-B学习板”上DS1302芯片操作。
|
||||
DS1302提供RTC(实时时钟)和NVM(非易失存储器)功能(断电后,RTC和NVM是依靠纽扣电池BAT维持工作的)。其中:
|
||||
RTC提供:年、月、日、星期、时、分、秒功能
|
||||
NVM提供:31 Bytes非易失存储器功能(地址为:0~30)。其中,地址为30的单元被DS1302Init()函数用于检测DS1302是否掉电,用户不能使用)
|
||||
DS1302模块共提供1个驱动函数、4个应用函数:
|
||||
|
||||
(1) void DS1302Init(struct_DS1302_RTC time):DS1302驱动函数。使用DS1302,需用该函数初始化和驱动一次
|
||||
函数参数:结构struct_DS1302_RTC time
|
||||
如果DS1302掉电(初始化时检测RTC数据失效),则以参数time定义的时间初始化RTC
|
||||
函数返回值:无
|
||||
|
||||
(2) struct_DS1302_RTC RTC_Read(void):读取DS1302内部实时时钟RTC内容
|
||||
函数参数:无
|
||||
函数返回值:结构struct_DS1302(见结构struct_DS1302定义)
|
||||
|
||||
(3) void RTC_Write(struct_DS1302_RTC time) :写DS1302内部实时时钟RTC内容
|
||||
函数参数:结构struct_DS1302 time(见结构struct_DS1302定义)
|
||||
函数返回值:无
|
||||
|
||||
(4) unsigned char NVM_Read(unsigned char NVM_addr): 读取NVM一个指定地址内容
|
||||
函数参数:
|
||||
NVM_addr:指定非易失存储单元地址,有效值0~30(共31个单元)
|
||||
函数返回值:当函数参数正常时,返回NVM中对应单元的存储数值(1Byte)
|
||||
当函数参数错误时,返回enumDS1302_error
|
||||
|
||||
(5) unsigned char NVM_Write(unsigned char NVM_addr, unsigned char NVM_data):向NVM一个指定地址写入新值
|
||||
函数参数:
|
||||
NVM_addr:指定非易失存储单元地址,有效值:0~30(共31个单元。其中,第30单元被DS1302Init()函数用于检测DS1302是否掉电,用户不能使用))
|
||||
NVM_data:待写入NVM单元的新值(1Byte)
|
||||
函数返回值:当函数参数正常时,返回enumDS1302_OK
|
||||
当函数参数错误时,返回enumDS1302_error
|
||||
|
||||
结构struct_DS1302_RTC定义:(参见DS1302Z数据手册)
|
||||
typedef struct
|
||||
{ unsigned char second; //秒(BCD码,以下均为BCD码)
|
||||
unsigned char minute; //分
|
||||
unsigned char hour; //时
|
||||
unsigned char day; //日
|
||||
unsigned char month; //月
|
||||
unsigned char week; //星期
|
||||
unsigned char year; //年
|
||||
} struct_DS1302_RTC;
|
||||
|
||||
关于DS1302内部非易失性存储器补充说明:
|
||||
DS1302提供的非易失性存储器为低功耗RAM结构,靠纽扣电池保持掉电后其存储内容不变。
|
||||
与M24C01区别:容量小(仅31字节),但无”写“寿命问题,且写周期很短(可忽略:即两次写操作之间无需等待);
|
||||
读、写DS1302内部NVM每一个字节均需要花费一定操作时间(数十uS);
|
||||
仅在需要时使用以上读或写函数读写需要的特定字节内容,应避免对其进行无效、大量、重复操作!
|
||||
|
||||
编写:徐成(电话18008400450) 2021年8月5日设计,2021年8月15日改进
|
||||
*/
|
||||
|
||||
#ifndef _DS1302_H_
|
||||
#define _DS1302_H_
|
||||
|
||||
typedef struct
|
||||
{ unsigned char second; //秒(BCD码,以下均为BCD码)
|
||||
unsigned char minute; //分
|
||||
unsigned char hour; //时
|
||||
unsigned char day; //日
|
||||
unsigned char month; //月
|
||||
unsigned char week; //星期
|
||||
unsigned char year; //年
|
||||
} struct_DS1302_RTC;
|
||||
|
||||
extern void DS1302Init(struct_DS1302_RTC time); //DS1302初始化
|
||||
extern struct_DS1302_RTC RTC_Read(void); //读RTC(读RTC时钟内容)
|
||||
extern void RTC_Write(struct_DS1302_RTC time); //写RTC(校对RTC时钟)
|
||||
extern unsigned char NVM_Read(unsigned char NVM_addr); //读NVM(读DS1302中的非易失存储单元内容)
|
||||
extern unsigned char NVM_Write(unsigned char NVM_addr, unsigned char NVM_data); //写NVM(写DS1302中的非易失存储单元)
|
||||
|
||||
enum DS1302name {enumDS1302_OK,enumDS1302_error};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,64 @@
|
|||
/********************************** EXT V1.0 说明 ***********************************************
|
||||
|
||||
EXT模块用于控制“STC-B学习板”上扩展接口EXT上相关操作。
|
||||
EXT模块根据应用需要,在外接相应模块或部件后,可实现多种相应功能。这里提供部分应用驱动和API函数。
|
||||
EXT模块这里提供1个驱动函数和若干个应用层API函数。
|
||||
EXT模块的API函数不是同时有效的,而是根据初始化函数参数不同而分别有效。
|
||||
|
||||
(1) void EXTInit(char EXTfunction):EXT初始化函数。
|
||||
函数参数:EXTfunction。定义EXT接口功能
|
||||
EXTfunction 取值:enumEXTWeight(秤重:由HX710、HX711组成的电子秤)
|
||||
enumEXTPWM (脉宽调制:可用于控制直流电机正反转、速度,灯亮度等)
|
||||
enumEXTDecode(增量式计数)
|
||||
enumEXTUltraSonic (超声波测距)
|
||||
函数返回值:无
|
||||
注意:当EXT扩展接口用于串口2时(TTL Uart,可用于串行通信、蓝牙模块连接等),在使用Uart2Init()函数初始化EXT后,不要再使用EXTInit()函数,以免引起功能冲突
|
||||
|
||||
(2)API函数
|
||||
(a) 电子秤。当EXTInit(char EXTfunction)使用enumEXTWeight参数时,GetWeight函数有效。
|
||||
int GetWeight(void) //获取电子秤ADC秤重数据(16bit,带符号整数。未清零、未标定。参见HX710、HX711数据手册(高16bit))
|
||||
|
||||
(b) PWM脉宽调制输出。当EXTInit(char EXTfunction)使用enumEXTPWM参数时,SetPWM函数有效。
|
||||
void SetPWM(unsigned char PWM1, unsigned char freq1, unsigned char PWM2, unsigned char freq2);
|
||||
//设置EXT上输出PWM(参数PWM为占空比(输出高电平时间的比例):0~100,单位%)。freqx为频率:1~255Hz)
|
||||
//实际频率 = 1000/int(1000/freqx)。即:1000/i=4,5,6...1000,或250,200,167,143,125,111,100,91,83...1
|
||||
//可用于控制直流电机正反转、转速(配合H型桥式电路),灯亮度,等
|
||||
|
||||
(c) 旋转编码器、或增量式编码器。当EXTInit(char EXTfunction)使用enumEXTDecode参数时,GetDecode函数有效。
|
||||
int GetDecode(void); //获取增量编码器增量值(相对上次读取后的新增量)
|
||||
|
||||
(d) 超声波测距。当EXTInit(char EXTfunction)使用enumEXTUltraSonic参数时,GetUltraSonic函数有效。
|
||||
int GetUltraSonic(void); //获取超声波测距值(每秒5次测量,返回值单位:cm)
|
||||
|
||||
(e) RFID读卡(暂缓)
|
||||
(g) (蓝牙、串口)见串口2
|
||||
(h) (气敏、数据采集、电子尺、额温)见ADC
|
||||
编程注意事项:
|
||||
|
||||
|
||||
编写:徐成(电话18008400450) 2021年8月24日设计
|
||||
*/
|
||||
|
||||
#ifndef _EXT_H_
|
||||
#define _EXT_H_
|
||||
|
||||
extern void EXTInit(char EXTfunction); //扩展接口初始化
|
||||
enum EXTname {enumEXTWeight //电子秤
|
||||
,enumEXTPWM, //PWM,控制直流电机转动方向、快慢
|
||||
,enumEXTDecode //增量式计数(旋转编码器)
|
||||
,enumEXTUltraSonic //超声波测距
|
||||
//串口2,蓝牙:见uart2模块
|
||||
//气敏、数据采集、电子尺、额温枪等:见ADC
|
||||
};
|
||||
extern int GetWeight(void); //获取电子秤ADC秤重数据(HX710、HX711输出高16bit,带符号数整数。未清零、未标定)
|
||||
extern int GetDecode(void); //获取增量编码器增量值(相对上次读取后的新增量)
|
||||
extern int GetUltraSonic(void); //获取超声波测距值(每秒5次测量,返回值单位:cm)
|
||||
extern void SetPWM(unsigned char PWM1, unsigned char freq1, unsigned char PWM2, unsigned char freq2);
|
||||
//设置EXT上输出PWM(参数PWM为占空比(输出高电平时间的比例):0~100,单位%)。freqx为频率:1~255Hz)
|
||||
//实际频率 = 1000/int(1000/freqx)。即:1000/i=4,5,6...1000,或250,200,167,143,125,111,100,91,83...1
|
||||
//可用于控制直流电机正反转、转速(配合H型桥式电路),灯亮度,等
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,49 @@
|
|||
/********************************** FMRadio V1.1 说明 ************************************************************************
|
||||
FMRadio模块用于控制“STC-B学习板”上FM收音机操作。
|
||||
FMRadio模块模块共提供1个初始化函数、2个应用函数
|
||||
|
||||
(1) void FMRadioInit(struct_FMRadio FMRadio); //收音机模块初始化函数。该函数只执行一次。初始化后,以下各应用函数方可正确使用。
|
||||
函数参数:FMRadio (见结构struct_FMRadio定义)
|
||||
函数返回值:无
|
||||
|
||||
(2) void SetFMRadio(struct_FMRadio FMRadio); //设置FM收音机控制参数。
|
||||
函数参数:FMRadio (见结构struct_FMRadio定义)
|
||||
函数返回值:无
|
||||
|
||||
(3) struct_FMRadio GetFMRadio(void); //获取当前FM收音机参数。
|
||||
函数参数:无
|
||||
函数返回值:返回FM控制模型数据(见结构struct_FMRadio定义)
|
||||
|
||||
结构struct_FMRadio定义:
|
||||
typedef struct //FM收音机控制模型
|
||||
{ unsigned int frequency; // FM收音机收音频率 (frequency参数范围:887~1080。单位:0.1MHz,如887代表88.7MHz)。错误参数或参数与当前值无变化,将忽略
|
||||
unsigned char volume; // FM收音机音量 (volume参数范围:0~15。0为最小音量)。错误参数或参数与当前值无变化,将忽略
|
||||
unsigned char GP1; // FM指示灯1。 =0 输出低,GP1亮; !=0 输出高,GP1灭
|
||||
unsigned char GP2; // FM指示灯2。 =0 输出低,GP1亮; !=0 输出高,GP1灭
|
||||
unsigned char GP3; // FM指示灯3。 =0 输出低,GP1亮; !=0 输出高,GP1灭
|
||||
} struct_FMRadio;
|
||||
|
||||
编程注意事项:
|
||||
1,本版本暂未输出调谐、自动搜索、电台信号等控制和状态信息,因此,暂不能完成自动搜索电台等收音机功能。
|
||||
2,FM收音机借用USB转串口模块(CH340)时钟(硬件设计原因),需要连接USB接口(供电、通信)到USB主设备,CH340方有时钟产生和输出。
|
||||
故STC-B学习板的USB接口需要连接到一个USB主设备方可收音,仅USB供电时(如USB充电宝、或计算机休眠时的USB接口),FM收音机可能不工作
|
||||
|
||||
编写:徐成(电话18008400450) 2021年8月10日设计,2021年8月16日改进
|
||||
*/
|
||||
|
||||
#ifndef _FM_Radio_H_
|
||||
#define _FM_Radio_H_
|
||||
|
||||
typedef struct //FM收音机控制模型
|
||||
{ unsigned int frequency; // FM收音机收音频率 (frequency参数范围:887~1080。单位:0.1MHz,如887代表88.7MHz)。错误参数或参数与当前值无变化,将忽略
|
||||
unsigned char volume; // FM收音机音量 (volume参数范围:0~15。0为最小音量)。错误参数或参数与当前值无变化,将忽略
|
||||
unsigned char GP1; // FM指示灯1。 =0 输出低,GP1亮; !=0 输出高,GP1灭
|
||||
unsigned char GP2; // FM指示灯2。 =0 输出低,GP1亮; !=0 输出高,GP1灭
|
||||
unsigned char GP3; // FM指示灯3。 =0 输出低,GP1亮; !=0 输出高,GP1灭
|
||||
} struct_FMRadio;
|
||||
|
||||
extern void FMRadioInit(struct_FMRadio FMRadio); //收音机模块初始化函数。输入FM控制模型数据,无返回值。初始化后,以下各应用函数方可正确使用
|
||||
extern void SetFMRadio(struct_FMRadio FMRadio); //设置FM收音机控制参数。输入FM控制模型数据,无返回值。
|
||||
extern struct_FMRadio GetFMRadio(void); //获取当前FM收音机参数。无输入参数,返回FM控制模型数据
|
||||
|
||||
#endif
|
|
@ -0,0 +1,85 @@
|
|||
/********************************** IR V3.5a 说明 ***********************************************
|
||||
|
||||
IR模块用于控制“STC-B学习板”上红外发送与接收控制,支持PWM、PPM红外编码协议的发送,PWM红外编码的接收,可用于制作红外遥控器、红外通信等。
|
||||
IR模块提供1个驱动函数、5个API应用函数、1个红外接收事件(enumEventIrRxd:红外Ir上收到一个数据包)。
|
||||
IR模块已不与串口通信(uart和uart2)冲突,可用与它们同时工作。(以前冲突)
|
||||
|
||||
(1) void IrInit(unsigned char Protocol):IR模块初始化函数。
|
||||
函数参数:unsigned char Protocol,定义红外协议。
|
||||
Protocol 暂仅提供取值:NEC_R05d(定义红外协议基本时间片时长 = 13.1*Protocol uS)
|
||||
函数返回值:无
|
||||
|
||||
(2) char IrTxdSet(unsigned char *pt,unsigned char num):以自由编码方式控制IR发送:可用于编写任意编码协议的红外发送,如各种电器红外遥控器等
|
||||
函数参数:unsigned char *pt,指向待发送红外编码数据的首地址。编码规则如下:
|
||||
码1红外发送时长,码1红外发送停止时长 //单位:协议基本时间片的个数值,最大255。如当协议基本时间片为0.56mS时,
|
||||
,码2红外发送时长,码2红外发送停止时长 //如当协议基本时间片为0.56mS时,数值1代表0.56mS时长,3代表1.68mS时长,......
|
||||
......
|
||||
......
|
||||
,码n红外发送时长,码n红外发送停止时长
|
||||
unsigned char num,待发送红外编码数据的大小(字节数)
|
||||
函数返回值:enumIrTxOK:调用成功,即所设定的发送数据包请求已被系统sys正确接受,sys将尽硬件资源最大可能及时发送数据。
|
||||
enumIrTxFailure:调用失败(主要原因是:红外发送正忙(上一数据包未发完)、或红外正在接收一个数据包进行中
|
||||
(同IrPrint()函数返回值)
|
||||
补充说明:参照该格式定义和电器遥控器编码格式,可实现任何38KHz红外遥控器功能。
|
||||
|
||||
(3) char IrPrint(void *pt, unsigned char num)://以NEC的PWM编码方式发送数据,可用于符合该函数发送格式的部分电器遥控器;与GetIrRxNum()、SetIrRxd()配合,可进行红外双机通信;等
|
||||
//红外发送数据格式为:引导码:发(16*基本时间片),停(8*基本时间片)。0.56mS时:发9mS、停4.5mS
|
||||
数据编码:"0" -- 发(1*基本时间片),停(1*基本时间片)
|
||||
"1" -- 发(1*基本时间片),停(3*基本时间片)
|
||||
先发高位、后发低位
|
||||
结束码:发(1*基本时间片),停(1*基本时间片)
|
||||
//非阻塞函数,该函数从被调用到返回大约1uS左右时间,但所指定的数据经红外发送完毕则需要较长时间(每字节大约需要10mS量级时间)。
|
||||
//IrPrint()函数用法完全类似与uart模块的Uart1Print()和Uart2Print()用法,(仅num参数为unsigned char,可参照使用)
|
||||
函数参数:void *pt :指定发送数据包位置(数据包不含引导码、结束码信息,仅待发送的有效数据)
|
||||
unsigned char num:发送数据包大小(字节数,不含引导码、结束码)
|
||||
函数返回值:enumIrTxOK:调用成功,即所设定的发送数据包请求已被系统sys正确接受,sys将尽硬件资源最大可能及时发送数据。
|
||||
enumIrTxFailure:调用失败(主要原因是:红外发送正忙(上一数据包未发完)、或红外正在接收一个数据包进行中
|
||||
(同IrTxdSet()函数返回值)
|
||||
|
||||
(4) void SetIrRxd(void *RxdPt,unsigned char RxdNmax):设置红外接收数据包存放位置、每个数据包最大字节数。
|
||||
收到一个数据包(至少1字节数据)时将产生numEventIrRxd事件。与它机IrPrint()函数配合,可实现红外数据通信
|
||||
函数参数: void char *RxdPt:指定接收数据包存放区(首地址)
|
||||
unsigned char RxdNmax:指定每个数据包接收最大字节数。当收到的数据大于Nmax后,将被丢弃。
|
||||
函数返回值:无
|
||||
|
||||
(5) unsigned char GetIrRxNum(void):获取收到的红外接收数据包实际字节数。与SetIrRxd()配合,可实现红外数据包接收。(它机应使用IrPrint()函数发送数据包)
|
||||
返回取值 <= Ir接收缓冲区最大字节数(RxdNmax定义)。如果实际红外数据包字节数大于RxdNmax,收到的多余字节数将不被存储(也不进行计数)
|
||||
函数参数: 无
|
||||
函数返回值:红外接收数据包大小(字节数)。
|
||||
当收到一个数据包的numEventIrRxd事件产生后,可用该函数获取红外接收数据包的大小(字节数)。其它时间访问,其值不确定
|
||||
|
||||
(6) char GetIrStatus(void): 获取Ir状态
|
||||
函数返回值:enumIrFree:红外空闲
|
||||
enumIrBusy:红外正忙(正在发送数据包,或正在接收数据包)
|
||||
|
||||
(7) 红外接收事件enumEventIrRxd:红外Ir上收到一个符合格式的数据包(红外格式见IrPrint()函数说明)。
|
||||
如果接收数据包实际字节数大于Ir接收缓冲区最大字节数(RxdNmax定义),也在收到数据包结束符后产生enumEventIrRxd事件
|
||||
|
||||
补充说明:
|
||||
(1) 串口1、串口2波特率可独立设置,互不影响.
|
||||
(2) 串口1、串口2、红外通信可同时工作,互不影响
|
||||
(3) 串口1、串口2用法基本上完全一致,红外通信用法也基本相同。不同地方是:
|
||||
a,串口1固定在USB接口上,可用于与计算机通信;而串口2可初始化在EXT扩展、或485接口上(在485接口上时仅单工工作);
|
||||
b,红外通信速率固定不可变(大约相当于500~800 bps),通信时没有包头匹配功能。红外模块除通信功能外,还提供用于电器红外遥控的应用函数;
|
||||
c,红外通信模块仅为单工工作。不发送时自动进入接收状态;有数据发送时自动进入发送状态,但正在接收数据包过程中不会进入发送状态。
|
||||
|
||||
编写:徐成(电话18008400450) 2021年8月24日设计,2021年11月5日更新
|
||||
*/
|
||||
|
||||
#ifndef _IR_H_
|
||||
#define _IR_H_
|
||||
|
||||
extern void IrInit(unsigned char Protocol); //IR模块初始化。参数:定义红外IR基本周期
|
||||
enum IrProtocalName {NEC_R05d=43}; //定义红外IR协议基本周期 = 43*1000/76 = 566 (uS)
|
||||
|
||||
extern char IrTxdSet(unsigned char *pt,unsigned char num); //以自由编码方式控制IR发送:可用于编写任意编码协议的红外发送,如各种电器红外遥控器等
|
||||
extern char IrPrint(void *pt, unsigned char num); //以NEC的PWM编码方式发送数据,可用于符合该函数发送格式的部分电器遥控器;与SetIrRxd()配合,可进行红外双机通信;等
|
||||
extern void SetIrRxd(void *RxdPt,unsigned char RxdNmax); //设置红外接收数据包存放位置、每个数据包最大字节数。收到一个数据包(至少1字节数据)时将产生numEventIrRxd事件。与它机IrPrint()函数配合,可实现红外数据通信
|
||||
extern unsigned char GetIrRxNum(void); //当收到一个数据包的numEventIrRxd事件产生后,可用该函数获取红外接收数据包的大小(字节数)。其它时间访问,其值不确定
|
||||
extern char GetIrStatus(void); //获取Ir状态,enumIrFree:红外接口空闲, enumIrBusy,红外接口正忙
|
||||
|
||||
enum IrActName {enumIrFree=0 //红外发送空闲
|
||||
,enumIrBusy // 忙
|
||||
,enumIrTxOK // 发送成功
|
||||
,enumIrTxFailure}; // 发送失败(正忙)
|
||||
#endif
|
|
@ -0,0 +1,34 @@
|
|||
/**********************************key V2.0 说明 ************************************************************************
|
||||
Key模块用于获取“STC-B学习板”上三个按键的状态。提供按键模块加载和一个应用函数,一个“按键事件:enumEventKey:
|
||||
(1) KeyInit():按键模块加载函数;
|
||||
(2) char GetKeyAct(char Key):获取按键状态。
|
||||
函数参数:Key,指定要获取状态的按键。Key取值:
|
||||
enumKey1
|
||||
enumKey2
|
||||
enumKey3
|
||||
(当参数取值超出有效范围,函数将返回fail)
|
||||
函数返回值:
|
||||
enumKeyNull(无按键动作)
|
||||
enumKeyPress(按下)
|
||||
enumKeyRelease(抬起)
|
||||
enumKeyFail(失败)
|
||||
返回值是经过多次检测按键实时状态和统计检测结果后(软件消抖)的有效事件。
|
||||
每个按键查询一次后,事件值变成enumKeyNull。事件值仅查询一次有效。
|
||||
(3) 按键事件:enumEventKey
|
||||
当三个按键(enumKey1,enumKey2,enumKey3)中任意一个按键有”按下“或”抬起“动作时,将产生一个”按键事件“,响应按键事件的用户处理函数由用户编写,并有sys中提供的SetEventCallBack函数设置.
|
||||
|
||||
补充说明:如果启用了ADC模块,按键3(Key3)任何操作在本模块不可检测到和有任何信息反应,这时按键3(Key3)任何操作将在ADC模块中检测和反应。使用方法相同,具体见ADC模块说明。
|
||||
|
||||
编写:徐成(电话18008400450) 2021年3月5日设计,2021年8月26日更新
|
||||
*/
|
||||
|
||||
#ifndef _key_H_
|
||||
#define _key_H_
|
||||
|
||||
extern void KeyInit();
|
||||
extern unsigned char GetKeyAct(char Key) ; //获取按键enumKey1,enumKey2,enumKey3事件
|
||||
//返回值:enumKeyNull——无,enumKeyPress——下降沿,enumKeyRelease——上升沿,enumKeyFail——错误
|
||||
enum KeyName {enumKey1,enumKey2,enumKey3}; //按键名
|
||||
enum KeyActName {enumKeyNull,enumKeyPress,enumKeyRelease,enumKeyFail}; //按键动作名
|
||||
|
||||
#endif
|
|
@ -0,0 +1,32 @@
|
|||
/**********************************M24C02 V1.0 说明 ************************************************************************
|
||||
M24C02模块用于控制“STC-B学习板”上IIC接口的非易失存储器(NVM)M24C02芯片操作。
|
||||
M24C02提供2K bits(256 Bytes)非易失存储器(NVM)功能(非易失存储器单元地址为:00~0xff)。
|
||||
M24C0402模块共提供2个应用函数(本模块不需要初始化)
|
||||
|
||||
(1) unsigned char M24C02_Read(unsigned char NVM_addr): 读取M24C02一个指定地址内容
|
||||
函数参数:
|
||||
NVM_addr:指定非易失存储单元地址,有效值00~0xff(共256个单元)
|
||||
函数返回值:返回M24C02中对应单元的存储数值(1Byte)
|
||||
|
||||
(2) void M24C02_Write(unsigned char NVM_addr, unsigned char NVM_data):向M24C02一个指定地址写入新值
|
||||
函数参数:
|
||||
NVM_addr:指定非易失存储单元地址,有效值:00~0xff(共256个单元)
|
||||
NVM_data:待写入M24C02单元的新值(1Byte)
|
||||
|
||||
补充说明:
|
||||
M24C02为非易失性存储器,其主要特点是:存储的内容在断电后能继续保存,一般用于保存断电需保留的工作系统参数;
|
||||
但读、写M24C02内部每一个字节均需要花费一定时间(每次读写操作大约数十uS,写周期为5~10mS),且有”写“寿命限制(每一单元大约”写“寿命为10万次量级寿命);
|
||||
与DS1302内部NVM区别:容量大(M24C02提供256字节,M24CXX系列最大可提供64K字节),但有“写”寿命限制(一般为数十万次“写”寿命“,且写周期长(5~10mS)
|
||||
因此,两次写操作之间需间隔5~10mS以上;
|
||||
仅在需要时使用以上读或写函数读写需要的特定字节内容,应避免对其进行无效、大量、重复操作!
|
||||
|
||||
编写:徐成(电话18008400450) 2021年8月8日设计
|
||||
*/
|
||||
|
||||
#ifndef _M24C02_H_
|
||||
#define _M24C02_H_
|
||||
|
||||
extern unsigned char M24C02_Read(unsigned char NVM_addr); //读NVM(读M24C02中的非易失存储单元内容)
|
||||
extern void M24C02_Write(unsigned char NVM_addr, unsigned char NVM_data); //写NVM(写M24C02中的非易失存储单元)
|
||||
|
||||
#endif
|
|
@ -0,0 +1,237 @@
|
|||
#ifndef __STC15F2K60S2_H_
|
||||
#define __STC15F2K60S2_H_
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
//包含本头文件后,不用另外再包含"REG51.H"
|
||||
|
||||
//内核特殊功能寄存器 // 复位值 描述
|
||||
sfr ACC = 0xE0; //0000,0000 累加器Accumulator
|
||||
sfr B = 0xF0; //0000,0000 B寄存器
|
||||
sfr PSW = 0xD0; //0000,0000 程序状态字
|
||||
sbit CY = PSW^7;
|
||||
sbit AC = PSW^6;
|
||||
sbit F0 = PSW^5;
|
||||
sbit RS1 = PSW^4;
|
||||
sbit RS0 = PSW^3;
|
||||
sbit OV = PSW^2;
|
||||
sbit P = PSW^0;
|
||||
sfr SP = 0x81; //0000,0111 堆栈指针
|
||||
sfr DPL = 0x82; //0000,0000 数据指针低字节
|
||||
sfr DPH = 0x83; //0000,0000 数据指针高字节
|
||||
|
||||
//I/O 口特殊功能寄存器
|
||||
sfr P0 = 0x80; //1111,1111 端口0
|
||||
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;
|
||||
sfr P1 = 0x90; //1111,1111 端口1
|
||||
sbit P10 = P1^0;
|
||||
sbit P11 = P1^1;
|
||||
sbit P12 = P1^2;
|
||||
sbit P13 = P1^3;
|
||||
sbit P14 = P1^4;
|
||||
sbit P15 = P1^5;
|
||||
sbit P16 = P1^6;
|
||||
sbit P17 = P1^7;
|
||||
sfr P2 = 0xA0; //1111,1111 端口2
|
||||
sbit P20 = P2^0;
|
||||
sbit P21 = P2^1;
|
||||
sbit P22 = P2^2;
|
||||
sbit P23 = P2^3;
|
||||
sbit P24 = P2^4;
|
||||
sbit P25 = P2^5;
|
||||
sbit P26 = P2^6;
|
||||
sbit P27 = P2^7;
|
||||
sfr P3 = 0xB0; //1111,1111 端口3
|
||||
sbit P30 = P3^0;
|
||||
sbit P31 = P3^1;
|
||||
sbit P32 = P3^2;
|
||||
sbit P33 = P3^3;
|
||||
sbit P34 = P3^4;
|
||||
sbit P35 = P3^5;
|
||||
sbit P36 = P3^6;
|
||||
sbit P37 = P3^7;
|
||||
sfr P4 = 0xC0; //1111,1111 端口4
|
||||
sbit P40 = P4^0;
|
||||
sbit P41 = P4^1;
|
||||
sbit P42 = P4^2;
|
||||
sbit P43 = P4^3;
|
||||
sbit P44 = P4^4;
|
||||
sbit P45 = P4^5;
|
||||
sbit P46 = P4^6;
|
||||
sbit P47 = P4^7;
|
||||
sfr P5 = 0xC8; //xxxx,1111 端口5
|
||||
sbit P50 = P5^0;
|
||||
sbit P51 = P5^1;
|
||||
sbit P52 = P5^2;
|
||||
sbit P53 = P5^3;
|
||||
sbit P54 = P5^4;
|
||||
sbit P55 = P5^5;
|
||||
sbit P56 = P5^6;
|
||||
sbit P57 = P5^7;
|
||||
sfr P6 = 0xE8; //0000,0000 端口6
|
||||
sbit P60 = P6^0;
|
||||
sbit P61 = P6^1;
|
||||
sbit P62 = P6^2;
|
||||
sbit P63 = P6^3;
|
||||
sbit P64 = P6^4;
|
||||
sbit P65 = P6^5;
|
||||
sbit P66 = P6^6;
|
||||
sbit P67 = P6^7;
|
||||
sfr P7 = 0xF8; //0000,0000 端口7
|
||||
sbit P70 = P7^0;
|
||||
sbit P71 = P7^1;
|
||||
sbit P72 = P7^2;
|
||||
sbit P73 = P7^3;
|
||||
sbit P74 = P7^4;
|
||||
sbit P75 = P7^5;
|
||||
sbit P76 = P7^6;
|
||||
sbit P77 = P7^7;
|
||||
sfr P0M0 = 0x94; //0000,0000 端口0模式寄存器0
|
||||
sfr P0M1 = 0x93; //0000,0000 端口0模式寄存器1
|
||||
sfr P1M0 = 0x92; //0000,0000 端口1模式寄存器0
|
||||
sfr P1M1 = 0x91; //0000,0000 端口1模式寄存器1
|
||||
sfr P2M0 = 0x96; //0000,0000 端口2模式寄存器0
|
||||
sfr P2M1 = 0x95; //0000,0000 端口2模式寄存器1
|
||||
sfr P3M0 = 0xB2; //0000,0000 端口3模式寄存器0
|
||||
sfr P3M1 = 0xB1; //0000,0000 端口3模式寄存器1
|
||||
sfr P4M0 = 0xB4; //0000,0000 端口4模式寄存器0
|
||||
sfr P4M1 = 0xB3; //0000,0000 端口4模式寄存器1
|
||||
sfr P5M0 = 0xCA; //0000,0000 端口5模式寄存器0
|
||||
sfr P5M1 = 0xC9; //0000,0000 端口5模式寄存器1
|
||||
sfr P6M0 = 0xCC; //0000,0000 端口6模式寄存器0
|
||||
sfr P6M1 = 0xCB; //0000,0000 端口6模式寄存器1
|
||||
sfr P7M0 = 0xE2; //0000,0000 端口7模式寄存器0
|
||||
sfr P7M1 = 0xE1; //0000,0000 端口7模式寄存器1
|
||||
|
||||
//系统管理特殊功能寄存器
|
||||
sfr PCON = 0x87; //0001,0000 电源控制寄存器
|
||||
sfr AUXR = 0x8E; //0000,0000 辅助寄存器
|
||||
sfr AUXR1 = 0xA2; //0000,0000 辅助寄存器1
|
||||
sfr P_SW1 = 0xA2; //0000,0000 外设端口切换寄存器1
|
||||
sfr CLK_DIV = 0x97; //0000,0000 时钟分频控制寄存器
|
||||
sfr BUS_SPEED = 0xA1; //xx10,x011 总线速度控制寄存器
|
||||
sfr P1ASF = 0x9D; //0000,0000 端口1模拟功能配置寄存器
|
||||
sfr P_SW2 = 0xBA; //xxxx,x000 外设端口切换寄存器
|
||||
|
||||
//中断特殊功能寄存器
|
||||
sfr IE = 0xA8; //0000,0000 中断控制寄存器
|
||||
sbit EA = IE^7;
|
||||
sbit ELVD = IE^6;
|
||||
sbit EADC = IE^5;
|
||||
sbit ES = IE^4;
|
||||
sbit ET1 = IE^3;
|
||||
sbit EX1 = IE^2;
|
||||
sbit ET0 = IE^1;
|
||||
sbit EX0 = IE^0;
|
||||
sfr IP = 0xB8; //0000,0000 中断优先级寄存器
|
||||
sbit PPCA = IP^7;
|
||||
sbit PLVD = IP^6;
|
||||
sbit PADC = IP^5;
|
||||
sbit PS = IP^4;
|
||||
sbit PT1 = IP^3;
|
||||
sbit PX1 = IP^2;
|
||||
sbit PT0 = IP^1;
|
||||
sbit PX0 = IP^0;
|
||||
sfr IE2 = 0xAF; //0000,0000 中断控制寄存器2
|
||||
sfr IP2 = 0xB5; //xxxx,xx00 中断优先级寄存器2
|
||||
sfr INT_CLKO = 0x8F; //0000,0000 外部中断与时钟输出控制寄存器
|
||||
|
||||
//定时器特殊功能寄存器
|
||||
sfr TCON = 0x88; //0000,0000 T0/T1控制寄存器
|
||||
sbit TF1 = TCON^7;
|
||||
sbit TR1 = TCON^6;
|
||||
sbit TF0 = TCON^5;
|
||||
sbit TR0 = TCON^4;
|
||||
sbit IE1 = TCON^3;
|
||||
sbit IT1 = TCON^2;
|
||||
sbit IE0 = TCON^1;
|
||||
sbit IT0 = TCON^0;
|
||||
sfr TMOD = 0x89; //0000,0000 T0/T1模式寄存器
|
||||
sfr TL0 = 0x8A; //0000,0000 T0低字节
|
||||
sfr TL1 = 0x8B; //0000,0000 T1低字节
|
||||
sfr TH0 = 0x8C; //0000,0000 T0高字节
|
||||
sfr TH1 = 0x8D; //0000,0000 T1高字节
|
||||
sfr T4T3M = 0xD1; //0000,0000 T3/T4模式寄存器
|
||||
sfr T3T4M = 0xD1; //0000,0000 T3/T4模式寄存器
|
||||
sfr T4H = 0xD2; //0000,0000 T4高字节
|
||||
sfr T4L = 0xD3; //0000,0000 T4低字节
|
||||
sfr T3H = 0xD4; //0000,0000 T3高字节
|
||||
sfr T3L = 0xD5; //0000,0000 T3低字节
|
||||
sfr T2H = 0xD6; //0000,0000 T2高字节
|
||||
sfr T2L = 0xD7; //0000,0000 T2低字节
|
||||
sfr WKTCL = 0xAA; //0000,0000 掉电唤醒定时器低字节
|
||||
sfr WKTCH = 0xAB; //0000,0000 掉电唤醒定时器高字节
|
||||
sfr WDT_CONTR = 0xC1; //0000,0000 看门狗控制寄存器
|
||||
|
||||
//串行口特殊功能寄存器
|
||||
sfr SCON = 0x98; //0000,0000 串口1控制寄存器
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
sfr SBUF = 0x99; //xxxx,xxxx 串口1数据寄存器
|
||||
sfr S2CON = 0x9A; //0000,0000 串口2控制寄存器
|
||||
sfr S2BUF = 0x9B; //xxxx,xxxx 串口2数据寄存器
|
||||
sfr S3CON = 0xAC; //0000,0000 串口3控制寄存器
|
||||
sfr S3BUF = 0xAD; //xxxx,xxxx 串口3数据寄存器
|
||||
sfr S4CON = 0x84; //0000,0000 串口4控制寄存器
|
||||
sfr S4BUF = 0x85; //xxxx,xxxx 串口4数据寄存器
|
||||
sfr SADDR = 0xA9; //0000,0000 从机地址寄存器
|
||||
sfr SADEN = 0xB9; //0000,0000 从机地址屏蔽寄存器
|
||||
|
||||
//ADC 特殊功能寄存器
|
||||
sfr ADC_CONTR = 0xBC; //0000,0000 A/D转换控制寄存器
|
||||
sfr ADC_RES = 0xBD; //0000,0000 A/D转换结果高8位
|
||||
sfr ADC_RESL = 0xBE; //0000,0000 A/D转换结果低2位
|
||||
|
||||
//SPI 特殊功能寄存器
|
||||
sfr SPSTAT = 0xCD; //00xx,xxxx SPI状态寄存器
|
||||
sfr SPCTL = 0xCE; //0000,0100 SPI控制寄存器
|
||||
sfr SPDAT = 0xCF; //0000,0000 SPI数据寄存器
|
||||
|
||||
//IAP/ISP 特殊功能寄存器
|
||||
sfr IAP_DATA = 0xC2; //0000,0000 EEPROM数据寄存器
|
||||
sfr IAP_ADDRH = 0xC3; //0000,0000 EEPROM地址高字节
|
||||
sfr IAP_ADDRL = 0xC4; //0000,0000 EEPROM地址第字节
|
||||
sfr IAP_CMD = 0xC5; //xxxx,xx00 EEPROM命令寄存器
|
||||
sfr IAP_TRIG = 0xC6; //0000,0000 EEPRPM命令触发寄存器
|
||||
sfr IAP_CONTR = 0xC7; //0000,x000 EEPROM控制寄存器
|
||||
|
||||
//PCA/PWM 特殊功能寄存器
|
||||
sfr CCON = 0xD8; //00xx,xx00 PCA控制寄存器
|
||||
sbit CF = CCON^7;
|
||||
sbit CR = CCON^6;
|
||||
sbit CCF2 = CCON^2;
|
||||
sbit CCF1 = CCON^1;
|
||||
sbit CCF0 = CCON^0;
|
||||
sfr CMOD = 0xD9; //0xxx,x000 PCA 工作模式寄存器
|
||||
sfr CL = 0xE9; //0000,0000 PCA计数器低字节
|
||||
sfr CH = 0xF9; //0000,0000 PCA计数器高字节
|
||||
sfr CCAPM0 = 0xDA; //0000,0000 PCA模块0的PWM寄存器
|
||||
sfr CCAPM1 = 0xDB; //0000,0000 PCA模块1的PWM寄存器
|
||||
sfr CCAPM2 = 0xDC; //0000,0000 PCA模块2的PWM 寄存器
|
||||
sfr CCAP0L = 0xEA; //0000,0000 PCA模块0的捕捉/比较寄存器低字节
|
||||
sfr CCAP1L = 0xEB; //0000,0000 PCA模块1的捕捉/比较寄存器低字节
|
||||
sfr CCAP2L = 0xEC; //0000,0000 PCA模块2的捕捉/比较寄存器低字节
|
||||
sfr PCA_PWM0 = 0xF2; //xxxx,xx00 PCA模块0的PWM寄存器
|
||||
sfr PCA_PWM1 = 0xF3; //xxxx,xx00 PCA模块1的PWM寄存器
|
||||
sfr PCA_PWM2 = 0xF4; //xxxx,xx00 PCA模块1的PWM寄存器
|
||||
sfr CCAP0H = 0xFA; //0000,0000 PCA模块0的捕捉/比较寄存器高字节
|
||||
sfr CCAP1H = 0xFB; //0000,0000 PCA模块1的捕捉/比较寄存器高字节
|
||||
sfr CCAP2H = 0xFC; //0000,0000 PCA模块2的捕捉/比较寄存器高字节
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
/**********************************StepMotor 说明 ************************************************************************
|
||||
StepMotor用于STC-B板控制步进电机。共提供1个驱动函数、3个应用函数:
|
||||
(1) StepMotorInit():步进电机模块驱动函数
|
||||
(2) SetStepMotor(char StepMotor,unsigned char speed ,int steps ) 指定步进电机、按指定转动速度、转动指定步
|
||||
函数参数:StepMotor 指定步进电机,取值(enum StepMotorName中定义)
|
||||
enumStepMotor1: SM 接口上的步进电机
|
||||
enumStepMotor2: 此时,用L0~L3四个LED模拟一个4相步进电机
|
||||
enumStepMotor3: 此时,用L4~L7四个LED模拟一个4相步进电机
|
||||
speed 步进电机转动速度(0~255),单位:步/S。 (实际每步时间=int(1000mS/speed) mS),与设置速度可能存在一定误差
|
||||
steps 步进电机转动步数(-32768~32767),负值表示反转
|
||||
函数返回:enumSetStepMotorOK: 调用成功(enum StepMotorActName中定义)
|
||||
enumSetStepMotorFail:调用失败(电机名不在指定范围,或speed=0,或调用时正在转动)
|
||||
(3)EmStop(char StepMotor) 紧急停止指定步进电机转动
|
||||
函数参数:StepMotor 指定步进电机。函数参数不对将返回0值。
|
||||
函数返回:剩余未转完的步数
|
||||
(4)GetStepMotorStatus(char StepMotor) 获取指定步进电机状态
|
||||
函数参数:StepMotor 指定步进电机
|
||||
函数返回:enumStepMotorFree:自由(enum StepMotorActName中定义)
|
||||
enumStepMotorBusy,忙(正在转动)
|
||||
enumSetStepMotorFail:调用失败(步进电机名不在指定范围)
|
||||
|
||||
编写:徐成(电话18008400450) 2021年4月16日设计,2021年4月18日更新
|
||||
*/
|
||||
|
||||
#ifndef _StepMotor_H_
|
||||
#define _StepMotor_H_
|
||||
|
||||
extern void StepMotorInit(); // 步进电机模块初始化
|
||||
extern char SetStepMotor(char StepMotor,unsigned char speed ,int steps ); // 指定步进电机、按指定转动速度、转动指定步
|
||||
// 函数参数:StepMotor 指定步进电机,取值(enum StepMotorName中定义)
|
||||
// enumStepMotor1: SM 接口上的步进电机
|
||||
// enumStepMotor2: 此时,用L0~L3四个LED模拟一个4相步进电机
|
||||
// enumStepMotor3: 此时,用L4~L7四个LED模拟一个4相步进电机
|
||||
// speed 步进电机转动速度(0~255),单位:步/S (实际每步时间=int(1000mS/speed) mS),与设置速度可能存在一定误差
|
||||
// steps 步进电机转动步数(-32768~32767),负值表示反转
|
||||
// 函数返回:
|
||||
// enumSetStepMotorOK:调用成功
|
||||
// enumSetStepMotorFail:调用失败(电机名不在指定范围,或speed=0,或调用时正在转动)
|
||||
extern int EmStop(char StepMotor); // 紧急停止指定步进电机转动
|
||||
// 函数参数:StepMotor 指定步进电机(函数参数不对将返回0值)
|
||||
// 函数返回:剩余未转完的步数
|
||||
extern unsigned char GetStepMotorStatus(char StepMotor); // 获取指定步进电机状态
|
||||
// 函数参数:StepMotor 指定步进电机
|
||||
// 函数返回:enumStepMotorFree:自由
|
||||
// enumStepMotorBusy,忙(正在转动)
|
||||
// enumSetStepMotorFail:调用失败(步进电机名不在指定范围)
|
||||
enum StepMotorName {enumStepMotor1=0,enumStepMotor2,enumStepMotor3};
|
||||
enum StepMotorActName {enumStepMotorFree,enumStepMotorBusy,enumSetStepMotorOK,enumSetStepMotorFail};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,25 @@
|
|||
/**********************************振动传感器SV V2.0 说明 ************************************************************************
|
||||
SV用于获取"STC-B学习板"上Vib传感器状态.提供一个模块加载函数和一个应用函数,一个Vib事件enumEventVib:
|
||||
(1) VibInit():振动传感器Vib模块初始化函数;
|
||||
(2) char GetVibAct():获取Vib事件。
|
||||
函数返回值:返回当前Vib传感器事件,返回值:enumVibNull——无,enumVibQuake——发生过振动
|
||||
查询一次后,事件值变成 enumVibNull (仅查询一次有效)
|
||||
(3) Vib传感器事件enumEventVib:
|
||||
当Vib检测到有”振动“事件时,将产生一个”振动事件“,响应事件的用户处理函数由用户编写,
|
||||
并有sys中提供的SetEventCallBack()函数设置.
|
||||
|
||||
编写:徐成(电话18008400450) 2021年3月5日设计,2021年3月26日更新
|
||||
*/
|
||||
|
||||
#ifndef _Vib_H_
|
||||
#define _Vib_H_
|
||||
|
||||
extern void VibInit();
|
||||
extern unsigned char GetVibAct(void) reentrant; //获取Vib事件
|
||||
enum VibActName
|
||||
{
|
||||
enumVibNull,
|
||||
enumVibQuake
|
||||
}; //返回值:enuVibNull——无,enuVibQuake——发生过振动
|
||||
|
||||
#endif
|
|
@ -0,0 +1,79 @@
|
|||
/**********************************ADC V3.5a 说明 ************************************************************************
|
||||
ADC模块用于“STC-B学习板”上与ADC相关电路:温度Rt、光照Rop、导航按键Nav、扩展接口EXT上的ADC转换。提供ADC模块初始化函数、2个应用函数,2个事件:
|
||||
(1) AdcInit(char ADCsel):ADC模块初始化函数;
|
||||
函数参数: ADCsel选择扩展接口EXT是否用作ADC功能,取值:
|
||||
ADCincEXT : 含对扩展接口EXT设置ADC功能(EXT上P1.0、P1.1不可作数字IO功能使用)
|
||||
ADCexpEXT : 不含对扩展接口EXT设置ADC功能(EXT上P1.0、P1.1可作数字IO功能使用)
|
||||
(2) struct_ADC GetADC():获取ADC值。
|
||||
函数参数:无
|
||||
函数返回值:返回数据结构 struct_ADC。
|
||||
数据结构定义:
|
||||
typedef struct //ADC转换结果
|
||||
{ unsigned int EXT_P10; // 扩展接口EXT上P1.0脚ADC(10bit)
|
||||
unsigned int EXT_P11; // 扩展接口EXT上P1.1脚ADC(10bit)
|
||||
unsigned int Rt; // 热敏电阻上ADC(10bit)
|
||||
unsigned int Rop; // 光敏电阻上ADC(10bit)
|
||||
unsigned int Nav; // 导航按键上ADC(10bit)
|
||||
} struct_ADC;
|
||||
|
||||
说明1:每个数字表示 VCC/1024(单位:V),其中VCC为电路板供电电压(USB接口一般为5V左右)
|
||||
说明2:对于导航按键,下面GetAdcNavAct函数输出消抖后导航按键事件和状态,更方便使用;
|
||||
|
||||
(3) char GetAdcNavAct(char Nav_button):获取导航按键(包含K3)状态
|
||||
函数参数:Nav_button:指定要获取状态的导航按键。取值:
|
||||
enumAdcNavKey3(K3键),
|
||||
enumAdcNavKeyRight(右按),
|
||||
enumAdcNavKeyDown(下按),
|
||||
enumAdcNavKeyCenter(中心按)
|
||||
enumAdcNavKeyLeft(左按),
|
||||
enumAdcNavKeyUp(上按).
|
||||
(当参数取值不在有效范围,函数将返回enumKeyFail)
|
||||
函数返回值:返回当前按键事件,返回值:(同Key模块GetAdcKeyAct()返回值)
|
||||
enumKeyNull(无按键动作),
|
||||
enumKeyPress(按下),
|
||||
enumKeyRelease(抬起),
|
||||
enumKeyFail(失败)
|
||||
返回值是经过多次检测按键实时状态和统计检测结果后(软件消抖)的有效事件。
|
||||
每个按键查询一次后,事件值变成 enumKeyNull (仅查询一次有效)
|
||||
(4) 导航按键事件“:enumEventNav
|
||||
当导航按键5个方向或按键K3有任意”按下“或”抬起“动作时,将产生一个”导航按键事件“enumEventNav。响应导航按键事件的用户回调函数由用户编写,并由sys提供的SetEventCallBack()函数设置响应函数.
|
||||
(5) 扩展接口EXT上P1.0、P1.1两个端口有新的AD值事件“:enumEventXADC
|
||||
当ADC模块对P1.0、P1.1进行ADC转换,获得了它们新的ADC结果时,将产生enumEventXADC事件,通知用户进行处理。响应enumEventXADC事件的用户回调函数由用户编写,并有sys提供的SetEventCallBack()函数设置响应函数.
|
||||
ADC模块对P1.0、P1.1进行ADC转换速度为3mS,也即每3mS或每秒钟333次转换.
|
||||
(6) 补充说明:
|
||||
a:对EXT上P1.0、P1.0的转换速度为3mS,也即每秒钟提供333次转换结果,提供了有新转换结果事件:enumEventXADC,方便用户处理
|
||||
b:对于Rt、Rop,转换速度为9mS,也即每秒钟提供111次转换结果。没有提供相应“事件”,用户随时用函数GetAdcResult()查询和使用
|
||||
c:对导航按键进行了软件消抖处理,最快可支持导航按键每秒12次操作速度,提供了导航按键发生了操作事件:enumEventNav
|
||||
d:由于导航按键与K3键共用了单片机同一个端口(P1.7),启用ADC模块后,P1.7口IO功能失效,只能用GetAdcNavAct(char Nav_button)函数获取K3按键的事件或状态。
|
||||
e: STC-B板上Rt型号为:10K/3950 NTC热敏电阻,光敏电阻Rop型号为:GL5516. 它们的ADC值与温度、光照强度关系请参阅它们的数据手册与STC-B电路图进行换算。
|
||||
|
||||
|
||||
编写:徐成(电话18008400450) 2021年3月25日设计,2021年8月30日修改
|
||||
*/
|
||||
|
||||
#ifndef _adc_H_
|
||||
#define _adc_H_
|
||||
|
||||
#define ADCincEXT 0x9B
|
||||
#define ADCexpEXT 0x98
|
||||
|
||||
typedef struct //ADC转换结果
|
||||
{ unsigned int EXT_P10; // 扩展接口EXT上P1.0脚ADC
|
||||
unsigned int EXT_P11; // 扩展接口EXT上P1.1脚ADC
|
||||
unsigned int Rt; // 热敏电阻上ADC
|
||||
unsigned int Rop; // 光敏电阻上ADC
|
||||
unsigned int Nav; // 导航按键上ADC
|
||||
} struct_ADC;
|
||||
|
||||
extern void AdcInit(char ADCsel);
|
||||
|
||||
extern struct_ADC GetADC();
|
||||
extern unsigned char GetAdcNavAct(char Nav_button); //获取导航按键5个方向(右、下、中心、左、上)操作,以及按键K3操作的事件
|
||||
//返回值:enuKeyNull(无按键动作),enuKeyPress(按下),enuKeyRelease(抬起),enuKeyFail(失败)
|
||||
enum KN_name {enumAdcNavKey3=0, //导航按键:按键K3
|
||||
enumAdcNavKeyRight, //导航按键:右
|
||||
enumAdcNavKeyDown, //导航按键:下
|
||||
enumAdcNavKeyCenter, //导航按键:中心
|
||||
enumAdcNavKeyLeft, //导航按键:左
|
||||
enumAdcNavKeyUp}; //导航按键:上
|
||||
#endif
|
|
@ -0,0 +1,26 @@
|
|||
/**********************************display V2.0 说明 ************************************************************************
|
||||
displayer用于控制“STC-B学习板”上8个7段数码管(Seg7)和8个指示灯(Led)工作.提供显示模块加载和三个应用函数:
|
||||
|
||||
(1) displayerInit():显示模块加载函数;
|
||||
|
||||
(2) SetDisplayerArea(char Begin_of_scan,char Ending_of_Scan):设置LED启用区域。8个数码管从左至右编号分别为0——7,函数参数
|
||||
Begin_of_scan设定启用数码管起始编号,Ending_of_Scan为结束编号。设定范围内的数码管才工作和显示。
|
||||
注:正常情况下,两个参数取值范围为0——7,且Ending_of_Scan>Begin_of_scan。但利用动态扫描和人眼视觉效果,可设置超出
|
||||
该范围的参数,以实现特殊显示效果:如软件调整显示亮度,或非灯亮度显示,等;
|
||||
|
||||
(3) Seg7Print(char d0,char d1,char d2,char d3,char d4,char d5,char d6,char d7):将8个参数值分别译码显示到对应的数码管上。
|
||||
显示译码表(code char decode_table[])在main.c中,用户可以修改和增减.
|
||||
|
||||
(4) LedPrint(char led_val):控制8个指示灯开关。参数light_val的8个bit位对应8个指示灯的开关,“1”——指示灯“亮”
|
||||
|
||||
编写:徐成(电话18008400450) 2021年2月26日设计,2021年3月15日更新
|
||||
*/
|
||||
|
||||
#ifndef _displayer_H_
|
||||
#define _displayer_H_
|
||||
extern void DisplayerInit(); //加载显示模块工作
|
||||
extern void SetDisplayerArea(char Begin_of_scan,char Ending_of_Scan); //设置有效显示区域
|
||||
extern void Seg7Print(char d0,char d1,char d2,char d3,char d4,char d5,char d6,char d7); //在数码管上输出
|
||||
extern void LedPrint(char led_val);
|
||||
#endif
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/**********************************hall V2.0 说明 ************************************************************************
|
||||
Hall模块用于获取“STC-B学习板”上hall传感器状态。hall模块共提供1个加载函数、1个应用函数,一个Hall事件:enumEventHall
|
||||
(1)HallInit():hall模块初始化函数
|
||||
(2)unsigned char GetHallAct(void):获取hall事件。
|
||||
函数返回值:
|
||||
enumHallNull(无变化)
|
||||
enumHallGetClose(磁场接近)
|
||||
enumHallGetAway(磁场离开)
|
||||
查询一次后,事件值变成enumEventHall (仅查询一次有效)
|
||||
(3)hall传感器事件:
|
||||
当Hall检测到有"磁场接近"或"磁场离开"事件时,将产生一个Hall传感器事件(enumEventHall).响应事件的用户处理函数由用户编写, 并有sys中提供的SetEventCallBack()函数设置事件响应函数.
|
||||
|
||||
|
||||
编写:徐成(电话18008400450) 2021年3月15日设计 2021年3月26日修改
|
||||
*/
|
||||
|
||||
#ifndef _hall_H_
|
||||
#define _hall_H_
|
||||
|
||||
extern void HallInit(void); //加载hall模块
|
||||
extern unsigned char GetHallAct(void); //获取hall事件
|
||||
enum HallActName {enumHallNull,enumHallGetClose,enumHallGetAway}; //返回值:enumHallNull——无,enumHallGetClose——下降沿(磁场接近),enumHallGetAway——上升沿(磁场离开)
|
||||
|
||||
#endif
|
|
@ -0,0 +1,104 @@
|
|||
/********************************** music V2.0 说明 ************************************************************************
|
||||
Music模块在Beep和Displayer模块基础上再次封装,用于控制“STC-B学习板”上播放音乐。加载该模块,将同时加载Beep模块、displayer模块。music模块共提供1个music驱动函数、4个应用函数:
|
||||
(1)MusicPlayerInit():驱动music模块;
|
||||
(2)char PlayTone(unsigned char tone, unsigned char beatsPM ,unsigned char scale, unsigned char beats):播放音乐音阶,实现用指定音调、指定节拍率、发指定音阶、发音节拍数。
|
||||
函数参数:
|
||||
tone:指定音调,有效值:0xFA、0xFB、0xFC、0xFD、0xFE、0xFF、0xF9分别对应音乐A、B、C、D、E、F、G调
|
||||
beatsPM:节拍率,即每分钟节拍数,值范围10~255拍/分钟
|
||||
scale:音乐简谱音高,1字节。
|
||||
0x00——休止符
|
||||
高4位:1——低8度音 2——中8度音 3——高8度音
|
||||
低3位:1-7对应简谱音。其它值无效。
|
||||
如:0x13表示低音3(mi)
|
||||
beats:音长(节拍数),单位1/16拍。
|
||||
如:16(0x10)对应1拍,32(0x20)对应2拍,8(0x08)对应半拍...... 。
|
||||
函数返回值:(见Beep.h中定义BeepActName)enum BeepActName {enumBeepFree=0,enumBeepBusy,enumSetBeepOK,enumSetBeepFail};
|
||||
(3)SetMusic(unsigned char beatsPM, unsigned char tone, unsigned char *pt, unsigned int datasize, unsigned char display):设定或改变要播放音乐和播放参数。
|
||||
函数参数:
|
||||
beatsPM:节拍率,即每分钟节拍数,值范围10~255拍/分钟,如果参数值为enumModeInvalid将不改变原beatsPM;
|
||||
tone:指定音调, 有效值:0xFA、0xFB、0xFC、0xFD、0xFE、0xFF、0xF9分别对应音乐A、B、C、D、E、F、G调,参数值为enumModeInvalid或其它值将不改变原tone
|
||||
*pt :指向要播放的音乐编码的首地址 。*pt 和 datasize 只有有一个参数 = enumModeInvalid,将不改变 *pt 和 datasize
|
||||
datasize:要播放的音乐编码的长度(字节数) 。*pt 和 datasize 只有有一个参数 = enumModeInvalid,将不改变 *pt 和 datasize
|
||||
display:Seg7和Led是否用来显示播放音乐信息,取值:
|
||||
enumMscNull —— 不用
|
||||
enumMscDrvSeg7 —— 用7段数码管Seg7(显示信息)
|
||||
enumMscDrvLed —— 用Led指示灯(打拍) enumMscDrvSeg7andLed —— 用Seg7 和 Led
|
||||
参数值为enumModeInvalid或其它值将不改变原display
|
||||
音乐编码规则:
|
||||
1,常规音乐简谱发音编码(成对出现,不可分开,中间不能插入其它编码和控制字)
|
||||
基本格式:音高(1字节),节拍数(1字节),音高,节拍,......
|
||||
其中“音高”部分:
|
||||
0x11 — 0x17 :对应低音 do、re、mi、fa、so、la、si、
|
||||
0x21 — 0x27 :对应中音 do、re、mi、fa、so、la、si
|
||||
0x31 — 0x37 :对应高音 do、re、mi、fa、so、la、si
|
||||
其中“节拍数”部分:
|
||||
0x01-0xFF:单位1/16拍。也即十六进制中,高4位表示整拍数,低4位表示分拍数(1/16)
|
||||
如:发音2拍: 0x20
|
||||
发音半拍: 0x08
|
||||
发音1拍半:0x18
|
||||
2,音乐编码中可以插入以下控制字,用于设定音乐播放参数等(前6个也可以通过函数,用程序设定和实现):
|
||||
enumMscNull : 不用
|
||||
enumMscDrvSeg7 : 用7段数码管Seg7(显示信息)
|
||||
enumMscDrvLed : 用Led指示灯(打拍)
|
||||
enumMscDrvSeg7andLed : 用Seg7 和 Led
|
||||
enumMscSetBeatsPM : 设置节拍率, 后面再跟 节拍率(1字节)
|
||||
enumMscSetTone : 设置音调, 后面再跟 音调(1字节)
|
||||
0xFA 或 0xFB 或 0xFC 或 0xFD 或 0xFE 或 0xFF 或 0xF9
|
||||
分别对应音乐:A调 或B调………
|
||||
enumMscRepeatBegin : 设置音乐播放重复开始处。重复一次(暂不支持多次),暂不能嵌套(嵌套无效或可能导致不可预期结果)
|
||||
enumMscRepeatEnd : 设置音乐播放重复结束处
|
||||
|
||||
(4)SetPlayerMode(unsigned char play_ctrl) :音乐播放控制函数。
|
||||
函数参数:
|
||||
play_ctrl:enumModePlay : ”播放“
|
||||
enumModePause : ”暂停“
|
||||
enumModeStop :”停止/结束“
|
||||
(其它参数无效)
|
||||
所有操作在当前”音“播放完成后生效;
|
||||
(5)char GetPlayerMode(void): 获取当前播放状态
|
||||
函数返回值:(play_ctrl值)
|
||||
enumModePlay : 播放状态
|
||||
enumModePause : 暂停状态
|
||||
enumModeStop : 停止/结束
|
||||
(其它功能应用型函数可根据需要设置和增加)
|
||||
|
||||
|
||||
编写:徐成(电话18008400450) 2021年3月5日设计,2021年9月5日更新
|
||||
*/
|
||||
|
||||
#ifndef _music_H_
|
||||
#define _music_H_
|
||||
|
||||
extern void MusicPlayerInit();
|
||||
extern char PlayTone(unsigned char tone, unsigned char beatsPM, unsigned char scale, unsigned char beats);
|
||||
// tone: 音调。F9,FA,FB,FC,FD,FE,FF分别对应G\A\B\C\D\E\F调,其它值无效
|
||||
// beatsPM:节凑,单位:每分钟节拍数
|
||||
// scale: 音高。0x00——休止符,高4位:1——低8度音 2——中8度音 3——高8度音,低3位:1-7简谱音。其它无效
|
||||
// beats: 音长(节拍数),单位1/16拍。16(0x10)对应1拍,32(0x20)对应2拍,8(0x08)对应半拍......
|
||||
extern void SetMusic(unsigned char beatsPM, unsigned char tone, unsigned char *pt, unsigned int datasize, unsigned char display);
|
||||
//可设置或改变:全部、或部分播放参数(节拍率、音调、显示方式、音乐原数据)
|
||||
//其中节拍率、音调、显示方式 也可以在音乐编码中设置
|
||||
extern void SetPlayerMode(unsigned char play_ctrl);
|
||||
//操作播放:enumModePlay 或 enumModePause 或 enumModeStop,分别设置音乐”播放“、”暂停“、”停止/结束“,所有操作在当前”音“播放完成后生效;
|
||||
extern char GetPlayerMode(void); //获取当前播放状态
|
||||
|
||||
enum PlayerMode
|
||||
{
|
||||
enumModeInvalid = 0, //播放模式非法
|
||||
enumModePlay, //播放
|
||||
enumModePause, //暂停(可恢复续放)
|
||||
enumModeStop
|
||||
}; //停止(结束)
|
||||
enum MusicKeyword
|
||||
{
|
||||
enumMscNull = 0xF0, //播放音乐时,不用7段数码管、LED指示灯(显示音乐播放相关信息)
|
||||
enumMscDrvSeg7, //播放音乐时, 用7段数码管
|
||||
enumMscDrvLed, //播放音乐时, 用 LED指示灯
|
||||
enumMscDrvSeg7andLed, //播放音乐时, 用7段数码管、LED指示灯
|
||||
enumMscSetBeatsPM, //音乐编码中关键字: 设置 音乐节拍
|
||||
enumMscSetTone, //音乐编码中关键字: 设置 音调
|
||||
enumMscRepeatBegin, //音乐编码中关键字: 设置 重复开始
|
||||
enumMscRepeatEnd
|
||||
}; //音乐编码中关键字: 设置 重复结束
|
||||
|
||||
#endif
|
|
@ -0,0 +1,63 @@
|
|||
/******************************* sys Ver3.6 说明 ************************************************
|
||||
(1) sys.c构成STC程序基本架构。提供:
|
||||
a, 系统初始化MySTC_Init(),系统调度函数MySTC_OS(),加载用户回调函数SetEventCallBack()
|
||||
b, 若干可设置和触发回调函数的事件;
|
||||
enumEventSys1mS : 1mS定时到
|
||||
enumEventSys10mS : 10mS定时到
|
||||
enumEventSys100mS : 100mS定时到
|
||||
enumEventSys1S : 1S定时到
|
||||
enumEventKey : 按键事件
|
||||
enumEventNav : 导航按键事件“
|
||||
enumEventHall : hall传感器事件
|
||||
enumEventVib : 振动传感器事件
|
||||
enumEventXADC : 扩展接口上新的AD值事件
|
||||
enumEventUart1Rxd : 串口1上收到一个符合格式定义的数据包事件。串口1:USB上与PC机通信
|
||||
enumEventUart2Rxd : 串口2上收到一个符合格式定义的数据包事件。串口2:485上UART、EXT上UART、或485上ModBus协议(2022年5月2日新增)
|
||||
enumEventIrRxd : 红外收到一个数据包事件
|
||||
c, 获取系统运行性能评价参数
|
||||
|
||||
(2) MySTC_Init():sys初始化函数,必须执行一次。
|
||||
(3) MySTC_OS(): sys调度函数,应在while(1)循环中。
|
||||
(4) SetEventCallBack(char event, void *(user_callback)):加载"事件"用户回调函数.
|
||||
(5) SysPerF GetSysPerformance(void) :获取系统运行性能评估参数
|
||||
函数参数:无
|
||||
函数返回值:结构 struct SysPerF。定义如下:
|
||||
typedef struct //系统性能评估参数,每秒更新一次
|
||||
{ unsigned long MainLoops; //SysPerformance.MainLoops 每秒主循环次数(应大于1000以上)
|
||||
unsigned char PollingMisses; //SysPerformance.PollingMisses 每秒轮询丢失次数(理想值为0。如果有非0情况,说明用户程序或算法存在问题)
|
||||
} SysPerF;
|
||||
|
||||
(6) 补充说明:
|
||||
sys.c 基本调度时间为1mS,非抢占式,要求用户程序片段,其单次循环执行时间累加起来应小于1mS。
|
||||
|
||||
编写:徐成(电话18008400450) 2021年2月26日设计,2022年5月2日更新
|
||||
*/
|
||||
|
||||
#ifndef _sys_h_
|
||||
#define _sys_h_
|
||||
|
||||
typedef struct //系统性能评估参数,每秒更新一次
|
||||
{ unsigned long MainLoops; //SysPerformance.MainLoops 每秒主循环次数(应大于1000以上)
|
||||
unsigned char PollingMisses; //SysPerformance.PollingMisses 每秒轮询丢失次数(理想值为0。如果有非0情况,说明用户程序或算法存在问题)
|
||||
} struct_SysPerF;
|
||||
|
||||
extern void MySTC_Init(); //sys初始化函数
|
||||
extern void MySTC_OS(); //sys调度函数,应在while(1)循环中
|
||||
extern void SetEventCallBack(char event, void *(user_callback)); //加载"事件"用户回调函数.
|
||||
extern struct_SysPerF GetSysPerformance(void);
|
||||
|
||||
enum event{enumEventSys1mS, //系统1mS事件
|
||||
enumEventSys10mS, //系统10mS事件
|
||||
enumEventSys100mS, //系统100mS事件
|
||||
enumEventSys1S, //系统1S事件
|
||||
enumEventKey, //按键事件
|
||||
enumEventHall, //hall传感器事件
|
||||
enumEventVib, //振动传感器事件
|
||||
enumEventNav, //导航按键事件“
|
||||
enumEventXADC, //扩展接口上新的AD值事件
|
||||
enumEventUart1Rxd, //串口1上收到一个符合格式定义的事件
|
||||
enumEventUart2Rxd, //串口2上收到一个符合格式定义("数据包格式"、或"ModBus协议+数据包格式")的事件。 (2022年5月2日新增)
|
||||
enumEventIrRxd //红外Ir上收到一个数据包
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,58 @@
|
|||
/**********************************Uart1串行通信模块 V2.0 说明 ************************************************************************
|
||||
Uart1模块提供Uart1模块初始化函数、3个应用函数,1个事件(enumEventRxd):
|
||||
(1) Uart1Init(unsigned long band):Uart1模块初始化函数。
|
||||
函数参数:unsigned long band定义串口1的通信波特率(单位:bps)(8个数据位、1个停止位,无奇偶校验位)
|
||||
函数返回值:无
|
||||
|
||||
(2) void SetUart1Rxd(char *RxdPt, unsigned int Nmax, char *matchhead, unsigned int matchheadsize);
|
||||
设置串口1接收参数:数据包存放位置、大小,包头匹配字符、匹配字符个数。收到符合条件的数据包时将产生enumEventRxd事件。
|
||||
函数参数: char *RxdPt:指定接收数据包存放区(首地址)
|
||||
unsigned int Nmax:接收数据包大小(字节数),最大65535。当收到的数据大于Nmax后,将被丢弃 (2022年5月2日更改)
|
||||
char *matchhead: 需要匹配的数据包头(首地址)
|
||||
unsigned int matchheadsize:需要匹配的字节数
|
||||
补充说明:
|
||||
Nmax=1:为单字节接收,即收到一个字节就产生enumUart1EventRxd事件(如果定义了匹配,还需满足匹配条件);
|
||||
0 < matchheadsize < Nmax:要求接收数据中连续matchheadsize个字节与*matchhead处数据完全匹配,才在收到Nmax数据时产生enumEventRxd事件;
|
||||
matchheadsize = Nmax:设定接收数据包完全匹配
|
||||
matchheadsize=0 或 matchheadsize > Nmax:将不做匹配,接收到任意Nmax数据时产生enumEventRxd事件;
|
||||
在enumEventRxd事件发出后,用户回调函数返回才接收下一个数据包 (2022年5月2日更改)
|
||||
函数返回值:无
|
||||
|
||||
(3) char Uart1Print(void *pt, unsigned int num):发送数据包,非阻塞函数(即函数不等到所设定任务全部完成才返回),该函数从被调用到返回大约1uS左右时间。
|
||||
函数参数: void *pt :指定发送数据包位置
|
||||
unsigned int num:发送数据包大小;
|
||||
函数返回值:enumTxOK:调用成功,即所设定的发送数据包请求已被系统sys正确接受,sys将尽硬件资源最大可能及时发送数据。
|
||||
enumTxFailure:调用失败(主要原因是:串口正忙(上一数据包未发完)
|
||||
补充说明:串口上发送1个字节数据大约需要时间0.1mS~10mS(视所设定的波特率),对计算机来说,如果发送多个字节是一个很要时间才能完成的事。类似于
|
||||
前面用蜂鸣器演奏音乐,对这类事件与程序"异步"的问题,编程时不仅要注意程序逻辑性、还有注意程序时效性。(这个问题其实总是要注意、必须要注意的)
|
||||
|
||||
(4) char GetUart1TxStatus(void): 获取Uart1发送状态
|
||||
函数返回值:enumUart1TxFree:串口1发送空闲
|
||||
enumUart1TxBusy,串口1发送正忙
|
||||
|
||||
(5) Uart1接收事件:enumEventUart1Rxd。表示收到了一个符合指定要求(数据包头匹配、数据包大小一致)的数据包。
|
||||
补充说明:串口(1和2)上收到的两个数据包之时间间隔要求不小于1mS(原因:系统内部调度方法限制)
|
||||
|
||||
补充说明:
|
||||
(1) 串口1、串口2波特率可独立设置,互不影响.
|
||||
(2) 串口1、串口2、红外通信可同时工作,互不影响
|
||||
(3) 串口1、串口2用法基本上完全一致,红外通信用法也基本相同。不同地方是:
|
||||
a,串口1固定在USB接口上,可用于与计算机通信;而串口2可初始化在EXT扩展、或485接口上(在485接口上时仅单工工作);
|
||||
b,红外通信速率固定不可变(大约相当于500~800 bps),通信时没有包头匹配功能。红外模块除通信功能外,还提供用于电器红外遥控的应用函数;
|
||||
c,红外通信模块仅为单工工作。不发送时自动进入接收状态;有数据发送时自动进入发送状态,但正在接收数据包过程中不会进入发送状态。
|
||||
|
||||
|
||||
编写:徐成(电话18008400450) 2021年3月28日设计 2021年11月8日更新
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _uart1_H_
|
||||
#define _uart1_H_
|
||||
|
||||
extern void Uart1Init(unsigned long band); //串口初始化,参数:波特率
|
||||
extern void SetUart1Rxd(void *RxdPt, unsigned int Nmax, void *matchhead, unsigned int matchheadsize); //设置接收条件:数据包存放位置、大小,包头匹配字符、匹配字符个数。符合条件的包将产生enumEventRxd事件
|
||||
extern char Uart1Print(void *pt, unsigned int num); //发送数据包。非阻塞函数。数据包位置、大小。返回值enumTxOK调用成功,enumTxFailure失败(串口忙,上一数据包未发完)
|
||||
extern char GetUart1TxStatus(void); //获取串口1发送状态,enumUart1TxFree:串口1发送空闲, enumUart1TxBusy,串口1发送正忙
|
||||
enum Uart1ActName {enumUart1TxFree=0,enumUart1TxBusy,enumUart1TxOK,enumUart1TxFailure};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,65 @@
|
|||
/********************************** Uart2串行通信模块 V2.0 说明 ***************************************************************
|
||||
Uart2模块提供Uart2模块初始化函数、3个应用函数,1个事件(enumUart2EventRxd):
|
||||
(1) Uart2Init(unsigned long band,unsigned char Uart2mode):Uart2模块初始化函数。
|
||||
函数参数:unsigned long band:定义串口2的通信波特率(单位:bps)(固定8个数据位、1个停止位,无奇偶校验位)
|
||||
unsigned char Uart2mode:定义串口2位置
|
||||
取值:Uart2UsedforEXT —— 串口2在EXT扩展插座上(TTL标准串口)
|
||||
Uart2Usedfor485 —— 串口2用于485通信(半双工。发送数据包时不能接收数据)
|
||||
Uart2Usedfor485ModBus —— 串口2用于485上,ModBus协议收发 (2022年5月2日新增)
|
||||
(2) void SetUart2Rxd(char *RxdPt, unsigned int Nmax, char *matchhead, unsigned int matchheadsize);
|
||||
设置串口2接收参数:数据包存放位置、大小,包头匹配字符、匹配字符个数。收到符合条件的数据包时将产生enumEventRxd事件。
|
||||
函数参数: char *RxdPt:指定接收数据包存放区(首地址)
|
||||
unsigned int Nmax:接收数据包大小(字节数),最大65535。当收到的数据大于Nmax后,将被丢弃 (2022年5月2日更改)
|
||||
char *matchhead: 需要匹配的数据包头(首地址)
|
||||
unsigned int matchheadsize:需要匹配的字节数
|
||||
补充说明:
|
||||
Nmax=1:为单字节接收,即收到一个字节就产生enumEventUart2Rxd事件(如果定义了匹配,还需满足匹配条件);
|
||||
0 < matchheadsize < Nmax:要求接收数据中连续matchheadsize个字节与*matchhead处数据完全匹配,才在收到Nmax数据时产生enumEventRxd事件;
|
||||
matchheadsize = Nmax:设定接收数据包完全匹配
|
||||
matchheadsize=0 或 matchheadsize > Nmax:将不做匹配,接收到任意Nmax数据时产生enumEventRxd事件;
|
||||
在enumEventRxd事件发出后,用户回调函数返回才接收下一个数据包 (2022年5月2日更改)
|
||||
(3) char Uart2Print(void *pt, unsigned int num):发送数据包,非阻塞函数(即函数不等到所设定任务全部完成才返回),该函数从被调用到返回大约1uS左右时间。
|
||||
函数参数: void *pt :指定发送数据包位置
|
||||
unsigned int num:发送数据包大小;
|
||||
函数返回值:enumTxOK:调用成功,即所设定的发送数据包请求已被系统sys正确接受,sys将尽硬件资源最大可能及时发送数据。
|
||||
enumTxFailure:调用失败(主要原因是:串口正忙(上一数据包未发完)
|
||||
补充说明:串口上发送1个字节数据大约需要时间0.1mS~10mS(视所设定的波特率),对计算机来说,如果发送多个字节是一个很要时间才能完成的事。
|
||||
类似于前面用蜂鸣器演奏音乐,对这类事件与程序"异步"的问题,编程时不仅要注意程序逻辑性、还有注意程序时效性。(这个问题其实总是要注意、必须要注意的)
|
||||
(4) char GetUart2TxStatus(void): 获取Uart2发送状态
|
||||
函数返回值:enumUart2TxFree:串口2发送空闲
|
||||
enumUart2TxBusy,串口2发送正忙
|
||||
(5) Uart2接收事件:enumUart2EventRxd。表示收到了一个符合指定要求(数据包头匹配、数据包大小一致)的数据包。
|
||||
当串口2工作于: Uart2UsedforEXT 或 Uart2Usedfor485 方式时,
|
||||
Uart2接收事件为:同串口1性质一致,即:数据包头匹配、数据包大小一致
|
||||
当串口2工作于: Uart2Usedfor485ModBus 方式时, (2022年5月2日新增)
|
||||
Uart2接收事件为:收到一个ModBus数据帧(数据包内字节间间隔<4字节收发时间),且帧内包头内容与设定内容匹配
|
||||
但:1,数据帧内未进行CRC校验。建议用户在回调函数中,为了验证数据包正确性,应对数据包进行CRC校验
|
||||
2,未返回ModBus数据帧有效字节数。用户可从收到的指令类型(第2字节)及对应帧内数据(一般第5、6字节)判断帧字节数
|
||||
补充说明:串口(1和2)上收到的两个数据包之时间间隔要求不小于1mS(原因:系统内部调度方法限制)
|
||||
|
||||
补充说明:
|
||||
(1) 串口1、串口2波特率可独立设置,互不影响.
|
||||
(2) 串口1、串口2、红外通信可同时工作,互不影响
|
||||
(3) 串口1、串口2(除开ModBus)用法基本上完全一致,红外通信用法也基本相同。不同地方是:
|
||||
a,串口1固定在USB接口上,可用于与计算机通信;而串口2可初始化在EXT扩展、或485接口上(在485接口上时仅单工工作);
|
||||
b,红外通信速率固定不可变(大约相当于500~800 bps),通信时没有包头匹配功能。红外模块除通信功能外,还提供用于电器红外遥控的应用函数;
|
||||
c,红外通信模块仅为单工工作。不发送时自动进入接收状态;有数据发送时自动进入发送状态,但正在接收数据包过程中不会进入发送状态。
|
||||
(4)2022年5月2日新增串口2在485接口上支持ModBus协议数据帧监测功能,使"STC-B学习板"方便实现ModBus协议的节点等功能 (2022年5月2日新增)
|
||||
|
||||
编写:徐成(电话18008400450) 2021年3月28日设计 2022年5月2日更新
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _uart2_H_
|
||||
#define _uart2_H_
|
||||
|
||||
extern void Uart2Init(unsigned long band,unsigned char Uart2mode); //串口2初始化,参数:波特率、串口2位置
|
||||
enum Uart2PortName {Uart2UsedforEXT,Uart2Usedfor485,Uart2Usedfor485ModBus}; // Uart2UsedforEXT —— 串口2在EXT扩展插座上(TTL标准串口)
|
||||
// Uart2Usedfor485 —— 串口2用于485通信(半双工。发送数据包时不能接收数据)
|
||||
// Uart2Usedfor485ModBus —— 串口2用于485上,ModBus协议收发
|
||||
extern void SetUart2Rxd(void *RxdPt, unsigned int Nmax, void *matchhead, unsigned int matchheadsize); //设置接收条件:数据包存放位置、大小,包头匹配字符、匹配字符个数。符合条件的包将产生enumUart2EventRxd事件
|
||||
extern char Uart2Print(void *pt, unsigned int num); //发送数据包。非阻塞函数。数据包位置、大小。返回值enumUart2TxOK调用成功,enumUart2TxFailure失败(串口忙,上一数据包未发完)
|
||||
extern char GetUart2TxStatus(void); //获取串口2发送状态,enumUart2TxFree:串口2发送空闲, enumUart2TxBusy,串口2发送正忙
|
||||
enum Uart2ActName {enumUart2TxFree=0,enumUart2TxBusy,enumUart2TxOK,enumUart2TxFailure};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef UNIV_DECODE_TABLE_H
|
||||
#define UNIV_DECODE_TABLE_H
|
||||
|
||||
code char decode_table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00, 0x08, 0x40, 0x01, 0x41, 0x48,
|
||||
/* 序号: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
|
||||
/* 显示: 0 1 2 3 4 5 6 7 8 9 (无) 下- 中- 上- 上中- 中下- */
|
||||
0x3f | 0x80, 0x06 | 0x80, 0x5b | 0x80, 0x4f | 0x80, 0x66 | 0x80, 0x6d | 0x80, 0x7d | 0x80, 0x07 | 0x80, 0x7f | 0x80, 0x6f | 0x80};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue