您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > MC96F8208现代芯片C语言程序
//==============================================================================//Project:MC96F8208SDemoProgram//Date:2013.07.2//Author:Tom//Device:MC96F8208S(20SOP)//Voltage:5V//Frequency:internal8MHzRCoscillator//ADCrange:5V(Vdd)//edittool:KeiluVision4//==============================================================================//History:/*2013-07-21.ReferenceProgramStart//==============================================================================MC96F8208S(20SOP)_________________________________________0V--1|VSSVDD|20--5VXOUT/BUZ--2|P37/XOUTDSDA/AN0/P00|19--OCDinterfaceXIN/LEDh--3|P36/XINDSCL/AN1/P01|18--OCDinterfaceLEDg--4|P35/EINT10/PWM0/T0OAN2/AVREF/EINT0/P02|17--AD2inputRESETB/LEDf--5|P32/RESETBAN3/EINT1/P03|16--AD3inputRXD/LEDe--6|P31/RXD/(SCL)AN8/BUZO/EINT11/P11|15--COM1TXD/LEDd--7|P30/TXD/(SDA)AN9/PWM1/EINT11/P12|14--COM2LEDc--8|P25/SCLAN10/PWM2/EINT12/P13|13--PWM2LEDb--9|P24/SDAAN11/MISO/P14|12--COM3LEDa--10|P16/AN13/SCKAN12/MOSI/P15|11--COM4-------------------------------------------*///------------------------------------------------------------------------------//Includefileandvariable//------------------------------------------------------------------------------#includeMC96F8208S.h#includeintrins.h#includeTypedef.h#definefocus0#includeVariable.h#includeMain.h//initialpartvoidDelay1ms(unsignedcharDelayCount){unsignedchari,j;for(i=0;iDelayCount;i++){for(j=0;j250;j++){nop;}}}voidMCUInitialSetting(){//SystemClockSelect&builtinresetlevelselect#ifCRYSTALP3FSR=0xC0;//7=1:P37_XOUT,6=1:P36_XINSCCR=0x00;//INTRCOSC(fIRC)forsystemclockOSCCR=0x22;//externalOSCenablestart,INT-RC/2(8MHz)Delay1ms(100);//16msSCCR=0x01;//external4.194304MHzmainOSC(fxin)forSystemclockOSCCR=0x06;//internalRCOSCdisable,externalmainOSCenable#elseSCCR=0x00;//INTRCOSC(fIRC)forsystemclockOSCCR=0x20;//internalRCOSC8MHz#endifLVRCR=0x00;//builtinreset1.6Vset,LVRCR.0=0enable!!!//b7b6b5b4b3b2b1b0//AN3AN2DSCLDSDAP0IO=0x03;//----ininoutoutP0OD=0x03;//----PPPPODOD//0Push-pulloutput,1Open-drainoutputP0PU=0x03;//----offoffononP0=0x03;//----0011P03DB=0x00;//00P35DB---P03DBP02DB76=01:fx/4=1usnoisefiltering//ConfigureDebounce---DisableP0FSR=0x18;//00011000//b7b6b5b4b3b2b1b0//I/Ocom4com3PWM2com2com1P1IO=0xff;//-outoutoutoutoutout-P1OD=0x00;//-PPPPPPPPPPPP-P1PU=0x00;//-offoffoffoffoffoff-P1=0x36;//-011011-P12DB=0x00;//----P13DBP12DBP11DB-//ConfigureDebounce---DisableP1FSRH=0x00;//00P160P150P140//I/OPortP1FSRL=0x20;//0PWM20P120P1100//I/OPort//b7b6b5b4b3b2b1b0//I/OI/OP2IO=0x30;//--outout----P2OD=0x00;//--PPPP----P2PU=0x00;//--oFFoFF----P2=0x00;//--00----P2FSR=0x00;//------00//P25isI/O,P24isI/O//b7b6b5b4b3b2b1b0//BUZI/OI/OI/OI/OI/OP3IO=0xff;//OUTOUTout--outOUTOUTP3OD=0x00;//PPPPPP--PPPPPPP3PU=0x00;//offoffoff--offoFFoFFP3=0x00;//000--000//P3FSR=0xE1;//111--001EIPOL1=0x00;//ExtInt8fallingedgetriggerEIPOL0L=0x00;//ExtInt3~0PolarityRegisterLowEIPOL0H=0x00;//ExtInt7~4PolarityRegisterHighEIFLAG0=0x00;//ExtIntFlagRegister0EIFLAG1=0x00;//ExtIntFlagRegister1//b7b6b5b4b3b2b1b0IE=0x80;//(EA)-ExG0--Ex12Ex11Ex10IE1=0x00;//---(TX)(RX)I2CEx6Ex5IE2=0x0e;//--ExG1-T2(T1)T0T0VIE3=0x04;//---BITWDT(WT)SPIADC//AD寄存器初始化ADCCRH=0x07;//clock=fx/8,LSBsaveADCvalue,高8位AD使用低4位3:0,低8位AD全部使用7:0ADCCRL=0x90;//内部VDD作为参考T1_1s=0;T1_minute=0;T1_hour=0;Menu=0;Vpoc=1;EEPword=0;}//------------------------------------------------------------------------------//task:TimerandInterruptstart//------------------------------------------------------------------------------voidTimer_Start(){#ifCRYSTAL//externalOSC4.194304MHzT0CR=0x85;//PCS=4.194304MHz/8=524288Hz(1.9073486us),Timer0enableT0DR=0x83;//1.9073486usx131=249.862666usWTCR=0x81;//61.03515625uswatchtimer--mainosc4.194304MHz/256=16.384KHz(61.03515625us)WTDR=0xD2;//61.03515625usx82=5.00488msinterval//WT中断计算公式:Fwck=Fx/128=32768;WT频率=Fwck/2^14=2Hz;即每周期生产一个中断=500ms;T1CRH=0x80;//Timer1enableT1ADR=259;//15.258789usx260=3.9998msintervalT1CRL=0x40;//pcs=4.194304MHz/64=65.536KHz(15.258789us)T1CRH=0x81;//Timer1startT2CRH=0xb0;//Timer2enable,PWM2O是重复模式T2ADR=259;//15.258789usx260=3.9998msinterval频率周期为4msT2CRL=0x40;//pcs=4.194304MHz/64=65.536KHz(15.258789us)T2CRH=0xb1;//Timer2startBITCR=0x4E;//BIT=4.19MHz/128=32.768KHz(30.517578us)30.517578us*128=3.906msWDTDR=0xfa;//3.906x250=976.5mswatchdogrefreshcycleWDTCR=0xE0;//WDTenableandrefresh#else//internalRCOSC8MHzT0CR=0x85;//PCS=8MHz/8=1000000Hz(1us),Timer0enableT0DR=0xF9;//1usx250=250usWTCR=0x81;//32uswatchtimer--mainosc8MHz/256=31.25KHz(32us)WTDR=0xfc;//32*125=4ms溢出,清计数器//WT中断计算公式:Fwck=Fx/128=32768;WT频率=Fwck/2^14=2Hz;即每周期生产一个中断=500ms;T1CRH=0x80;//Timer1enableT1ADR=3999;//1usx4000=4msintervalT1CRL=0x60;//pcs=8MHz/8=1usT1CRH=0x81;//Timer1startT2CRH=0xb0;//Timer2enable,PWM2O是重复模式//T2ADR=3999;//1usx4000=4msinterval频率周期为4msT2ADR=19;//1usx20=20usinterval频率周期为20usT2CRL=0x60;//pcs=8MHz/8=1usT2CRH=0xb1;//Timer2startBITCR=0x4E;//BIT=8MHz/128=62.5KHz(16us)16us*128=2.048msWDTDR=0xfa;//2.048x250=512mswatchdogrefreshcycleWDTCR=0xE0;//WDTenableandrefresh#endif}//++++++++++++++++++++
本文标题:MC96F8208现代芯片C语言程序
链接地址:https://www.777doc.com/doc-6493861 .html