STC12C5A60S2單片機(jī)各個(gè)模塊程序代碼_第1頁
STC12C5A60S2單片機(jī)各個(gè)模塊程序代碼_第2頁
STC12C5A60S2單片機(jī)各個(gè)模塊程序代碼_第3頁
STC12C5A60S2單片機(jī)各個(gè)模塊程序代碼_第4頁
STC12C5A60S2單片機(jī)各個(gè)模塊程序代碼_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余87頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、STC12C5A60S2單片機(jī)各個(gè)模塊程序代碼/*/可編程時(shí)鐘模塊STC12C5A60S2/ 說明:STC12C5A60S2單片機(jī)有三路可 編程時(shí)鐘輸出CLKOUT0/T0/P3.4/CLK0UT2/P1.0CLKOUT1/T1/ P3.5、/AUXR(輔助寄存器)、/涉及寄存器:BRT(獨(dú)立波特率發(fā)生器WAKE_CLKO(時(shí)鐘與系統(tǒng)掉電喚醒控制寄存 器)/定時(shí)器寄存器)/程序說明:/CLKOUT0 時(shí)鐘、/本程序可選實(shí)現(xiàn)P3.4輸出P3.5輸出CLK0UT1 時(shí)鐘P 1.0輸出CLKOUT2時(shí)鐘/ / */ #in elude vSTC12C5A60S2.H> #in elude vi

2、ntrin s.h>/#define Port_BRT如果想測試獨(dú)立波特率發(fā)生器時(shí)鐘輸出請打開此句/若想測試/*條件編譯獨(dú)立波特率CLKOUT1和CLKOUT0請注釋此句 #ifdef Port_BRT發(fā)生器時(shí)鐘輸出*/*/CLKOUT2時(shí)鐘初始化void CLKOUTnit(void)WAKE CLKO/*/0x04;/Bit2-BRTCLKO 允許P 1.0配置為獨(dú)立波特率 發(fā)生器的時(shí)鐘輸出/BRT工作在1T模式下時(shí)的輸出頻率 =Sysclk/(256-BRT)/2/BRT工作在12T模式下時(shí)輸出頻率 =Sysclk/12/(256-BRT)/2 AUXR= 0x14;獨(dú)立波特率發(fā)生

3、器運(yùn)行Bit4-BRTR 允許Bit2-BRTx12 BRT作在1T模式下=Oxff;BRT更改該寄存器的值 可實(shí)現(xiàn)對輸出的時(shí)鐘頻率進(jìn)行分頻#elseCLKOUTO時(shí)鐘輸出*/*/ CLKOUT0 時(shí)鐘和 CLKOUT1/*/ void CLKOUT_i nit(void)WAKE_CLKO = 0x03;P3.4/T0腳配置為定時(shí)器0CLKOUT0/*條件編譯初始化/允許將 的時(shí)鐘輸出/TO工作在1T模 式時(shí)的輸出頻率 =SY Sclk/(256-TH0)/2/TO工作在12T模 式時(shí)的輸出頻率=SY Sclk/12/(256-TH0)/2/1T指的是每1個(gè) 時(shí)鐘加1,是普通C51的12倍/

4、12T指的是每12個(gè)時(shí)鐘加1與普通C51 一樣配置為定時(shí)器1 作在定時(shí)器模式允許將P3.5/T1腳的時(shí)鐘輸出CLK0UT1,只能工/T1工作在1T模式時(shí)的輸出頻率=SY Sclk/(256-TH0)/2式時(shí)的輸出頻率/T1工作在12T模 =SY Sclk/12/(256-TH0)/2/1T指的是每1個(gè)時(shí)鐘加1,是普通C51的12倍/12T指的是每12個(gè)時(shí)鐘加1與普通C51 一樣AUXR= OxcO; /T0定時(shí)器速度是普通8051的12倍,即工作在1T模式下/T1定時(shí)器速度是普通8051的12倍,即工作在 仃 模式下TMOD= 0x22;/定時(shí)器0工作模式為方式2,自動(dòng)裝載時(shí)間常數(shù)/定時(shí)器1工

5、作模 式為方式2,自動(dòng)裝載時(shí)間常數(shù)TH0= Oxff;更改該寄存器的值可實(shí)現(xiàn)對輸出的時(shí)鐘頻率進(jìn)行分頻TL0= 0xff;TH1= 0xff;/更改該寄存器的值可實(shí)現(xiàn)對輸出的時(shí)鐘頻率進(jìn)行分頻TL1=0xff;TR1=1;TR0=1;#en dif/*百程序/*/void mai n()CLKOUTnit(); while(1);/* */系統(tǒng)時(shí)鐘模塊STC12C5A60S2/ 說明: 時(shí)鐘源,內(nèi)部/或時(shí)鐘/STC12C5A60S2單片機(jī)有兩個(gè)R/C振蕩時(shí)鐘和外部晶體時(shí)鐘出廠標(biāo)準(zhǔn)配置是使用外部晶體/CLK_DIV(時(shí)鐘分頻寄存由該寄存器的BitO-2組合0、 2、 4、 8、 1632、64、12

6、8 分頻/涉及寄存器:器)/可實(shí)現(xiàn)對時(shí)鐘源進(jìn)行/程序說明:/對外部時(shí)鐘進(jìn)行分頻得到/Syscik,然后經(jīng)過P1.0的獨(dú)立波特率/時(shí)鐘輸出功能Sysclk/2輸出時(shí)鐘頻率*#in elude vSTC12C5A60S2.h> #in elude vintrin s.h>#defi ne Bus_elk 12/若要修改系統(tǒng)時(shí)鐘直接在此處修改111212M66M33M15001.5M750750kHz/375375kHz/187500187.5kHz/9375093.75kHz的 sysclk 的 sysclk的 sysclk 的 sysclk 的 sysclk 的 sysclk 的 s

7、ysclk 的 sysclk*/系統(tǒng)時(shí)鐘初始化/*void Syselk_i nit(void)WAKE CLKO = 0x04;/配置P1.0口為頻率輸出AUXR時(shí)鐘工作=0x14;/允許波特率工作模式為1TBRT=0xff;#if( Bus_clk = 12 ) CLK_DIV = 0x00;#elif( Bus_clk = 6 )CLK_DIV = 0x01;#elif( Bus_clk = 3 ) CLK_DIV= 0x02;#elif( Bus_clk = 1500 ) CLK_DIV= 0x03;#elif( Bus_clk = 750 ) CLK_DIV= 0x04;#elif(

8、 Bus_clk = 375 ) CLK_DIV= 0x05;#elif( Bus_clk = 187500 ) CLK_DIV= 0x06;#elif( Bus_clk = 93750 ) CLK DIV= 0x07;#en dif*/百程序/* *void mai n()Sysclk_i ni t(); while(1);*/*/STC12C5A60S2系統(tǒng)省電模塊/STC12C5A60S2單片機(jī)有三種說明:省電模式以降低功耗.空閑模式,低速模式掉電模式/涉及寄存器:/入IDLE空閑模式PCON(電源控制寄存器)Bit0 - IDL控制單片機(jī)進(jìn)/入掉電模式/Bit1 - PD 控制單片機(jī)進(jìn)

9、/程序說明:/程序?qū)崿F(xiàn)讓單片機(jī)先工作 一陣子(通過P0“3指示燈顯示)/然后進(jìn)入掉電狀態(tài),利用外部中斷0 口來喚醒單片機(jī)工作/喚醒后單片機(jī)將通過P0"0-3 口的燈閃爍顯示開始工作/ * */#i nclude vSTC12C5A60S2.h>#in elude vintrin s.h> #defi ne uchar un sig ned char#defi ne uint un sig ned intucharPower_Dow n_Flag進(jìn)入掉電狀態(tài)標(biāo)志0;sbit Chip_Start_LED單片機(jī)開始工作指示燈sbit Po wer_Down_LED_INTO/

10、INT0 口掉電喚醒指示燈sbit N_Po wer_Down_LED_INT0/INT0 口沒有喚醒指示燈sbit Normal_Work_LED正常工作指示燈sbitPo wer_Down_Wakeup_INT0=外中斷喚醒輸入口P 0八0;P 0八1;P 0八2;P 0八3;P 3八2;void Delay_ms( ui nt time );void Normal_work(void);void In tp_i ni t(void);void After_ Po wr_Dow n(void);*/軟件延時(shí)/*/void Delay_ms( ui nt time ) II延時(shí)時(shí)間uint

11、t;(time*1003+16)us while(time-)for( t = 0; t < 82; t+ );*正常工作指示*/void Normal_work(void) Normal_Work_LED = 1;Delay_ms(500);Normal_Work_LED = 0;Delay_ms(500);void After_ Po wer_Dow n( void)uchar i ;for( i = 0; i < 100; i+ )PO = OxOf; Delay_ms(500);PO = 0x00;Delay_ms(500);中斷初始化/*/*/ void In tp_i

12、ni t(void)ITO = 0;EXO = 1;EA = 1;/外部中斷源0為低電平觸發(fā)/允許外部中斷/開總中斷/*/百程序/*/void mai n()uchar j = 0;uchar wakeup_counter = 0;/記錄掉電次數(shù)P0 = 0x00;/單片機(jī)開始/外中斷0初始化Chip_Start_LED = 1;作In tp_i nit(); while(1)P2 = wake up_coun ter; wake up_coun ter+; for( j = 0; j < 250; j+ )Normal_work();系統(tǒng)正常工作1; /系統(tǒng)開始進(jìn)/掉電喚醒后指示Po

13、wer_Dow n_Flag =入掉電狀態(tài)P CON = 0x02;_nop_();_nop_();_nop_();_nop_();After_ Po wer_Dow n();*/中斷服務(wù)*void INTO_Service(void) in terru pt 0 if(Po wer_Dow n_Flag掉電喚醒狀態(tài)指示=0 )待高電平Po wer_Dow n_Flag= 0;Po wer_Down_LED_INTO= 1;while(Po wer_Dow n_Wakeup_INTOnop();/ 等Power Down LED INT0 = 0;else狀態(tài)/未掉電1;N_Po wer_Do

14、wn_LED_INT0不是掉電喚醒指示while(Po wer_Dow n_Wakeup_INT0=0 )_nop_();N_Po wer_Down_LED_INTO = 0;/* */STC12C5A60S2/A/D轉(zhuǎn)換模塊/ / 說明: STC12C5A60S2單片機(jī)有8路10位高速AD轉(zhuǎn)換器,P1八0-P1八7/ 涉及寄存器:P1ASF(模擬功能控制寄存ADC RES 、器)、ADC_CONTR(ADC控制寄存器)/ADC_RESL(轉(zhuǎn)換結(jié)果寄存器)/ 注意:1、初次打開內(nèi)部A/D模擬電源 需適當(dāng)延時(shí)等內(nèi)部模擬電源穩(wěn)定后,再啟動(dòng)A/D 轉(zhuǎn)換/啟動(dòng)A/D后,在轉(zhuǎn)換結(jié)束前不改變?nèi)魏蜪/O 口

15、的狀態(tài),有利于高精度A/D轉(zhuǎn)換 /若能將定時(shí)器/串行/中斷系統(tǒng)關(guān)閉更好。/2、A/D轉(zhuǎn)換模塊使用的時(shí)鐘為內(nèi)部R/C振蕩器所產(chǎn)生的系統(tǒng)時(shí)鐘/3、由于使用兩套時(shí)鐘,設(shè)置好讀到ADC CONTR寄存器ADC_CONTR后要加4個(gè)空延時(shí)操作才可以正 確/的值/程序說明:#defi ne ADC50x05 /IP 1.5/本程序?qū)崿F(xiàn)P1八0 口作為A/D采集輸入口 ,對外部電壓的測量并將測量結(jié) 果通過/12864和串口顯示出來/ * */ #in elude vSTC12C5A60S2.h> #in elude vintrin s.h> #in clude "lcd.h"

16、 #defi ne ADC_PO WER 0x80 /AD 電源控制#define ADC START 0x08 /AD 轉(zhuǎn)換控制#define ADC FLAG 0x10 /AD 轉(zhuǎn)換完成#defi ne Sp eed_00x00 /540 clk#defi ne Sp eed_1#defi ne Sp eed_2#defi ne Sp eed_30x20 /360 clk0x40 /180 clk0x60 /90 clk#defi ne ADC00x00 /P 1.0#defi ne ADC10x01 /P 1.1#defi ne ADC20x02 /P 1.2#defi ne ADC30

17、x03 /P 1.3#defi ne ADC60x06 IIP 1.6#defi ne ADC70x07 IIP 1.7void AD_i ni t(void);double Result_Calculate(void); void Sen dData( uchar byte );*IIAID初始化II*void AD_i ni t(void)AUXR10x04轉(zhuǎn)換結(jié)果高2位放在 ADC_RES的低2位中 低8位放在ADC RESL中P1ASF0x01;IIP1.0 口作為模擬功能AID使用ADC RES0x00:結(jié)果清零ADC RESL = 0x00;ADC CONTRADC_ PO WER

18、|S peed_2|ADC0|ADC_START;打開電源,180CLK周期轉(zhuǎn)換,選擇P1.0作輸入_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();1;EADC允許A/D轉(zhuǎn)換中斷1;EA開總中斷/* /串口初始化/*/void UART_i ni t(void)SMO = 0;選擇串口為方式1工作SM1RENBRTAUXR串行=1;/8位數(shù)據(jù)波特率可變=1;=0xDC;=0x15; 選擇獨(dú)立波特率發(fā)生器為/ 口的波特率發(fā)生器,模式為/*/轉(zhuǎn)換結(jié)果計(jì)算/* */double Result_Calculate(void

19、)uint tem p;double result;temp = ADC_RES * 256 + ADC_RESL; result = tem p * 4.94 / 1024;return result;/*/串口發(fā)送數(shù)據(jù)*/void Sen dData( uchar byte )SBUF = byte; while(!TI);TI = 0;*/主程序*/void mai n()Ini t_LCD();AD_i ni t();UART_i nit(); while(1);/*/A/D中斷服務(wù)/*清標(biāo)志開始下void AD_Service(void) in terru pt 5 ADC_CONT

20、R &= !ADC_FLAG; /Prin tf_Decimal(Result_Calculate();ADC RES = 0x00;ADC RESL = 0x00;ADC CONTRADC _PO WER|S peed_2|ADC_START;一次轉(zhuǎn)換_nop_();_nop_();_nop_();_nop_(); #inelude vintrins.h> #inelude vSTC12C5A60S2.h> #defi ne uchar un sig ned char#defi ne uint un sig ned intsbit PSB = P0八4; /串/并行接口選

21、擇1-并行0-串行sbit RS = P0八7;并行數(shù)據(jù)/命令選擇,串行片選0-指令1-數(shù)據(jù)sbit RW = P 0八6; /并行讀寫選擇 0-寫1-讀 串行數(shù)據(jù)口/并行使能,串行同步時(shí)鐘sbit E = P 0八5;void Delay_ms( uint time ); / 延時(shí) uchar Busy(void);讀忙uchar Read_Status(void);/ 讀狀態(tài) uchar Read_Date(void); / 讀數(shù)據(jù) void Write_Cmd( uchar cmd ); / 寫命令 void Write_Date( uchar date );/ 寫數(shù)據(jù) void Ini

22、t_LCD(void);/ 初始化 LCD void Location( uchar x, uchar y );/ 設(shè)定顯示位 置void Clear_Screen(void);/ 清屏void Write_str( uchar *p );void Prin tf_Decimal(double Num);#in elude "Icd.h" exter n void Sen dData( uchar byte );/* 以下部分為LCD 的驅(qū)動(dòng)程序*/*/*/*/*/*名稱 功能 輸入 輸出Delay_ms()實(shí)現(xiàn)軟件延時(shí) time -時(shí)間參數(shù)無/*/ void Delay_

23、ms( ui nt time )/82,延時(shí)時(shí)間 uint t;/41,延時(shí)時(shí)間(time*1003+16)us while(time-)(time*499+16)usfor( t = 0; t < 41; t+ );/*/*/*/*/*名稱 功能 輸入 輸出Busy()讀取忙狀態(tài) 無1-忙0-空閑*uchar Busy(void)uchar busyflag;Delay_ms(1);busy = Read_Status(); if( busy & 0x80 )flag = 1;elseflag = 0;Delay_ms(1);return flag;*/*/*/*/*名稱:Re

24、ad_Status() 功能:讀12864狀態(tài) 輸入:無輸出:status-當(dāng)前狀態(tài)*uchar Read_Status(void)uchar status; RS = 0;RW = 1; E = 0;_nop_();_nop_();_nop_();E = 1;Delay_ms(1); status = P2;Delay_ms(1); E = 0;_nop_();_nop_(); return status;*/* 名稱:Write_Cmd()/*功能:向12864寫命令/*輸入:cmd -命令參數(shù)/*輸出:無/*/ void Write_Cmd( uchar cmd )RS = 0;RW =

25、 0;E = 0;Delay_ms(1);P2 = cmd;Delay_ms(1);/等待數(shù)據(jù)穩(wěn)定E = 1;Delay_ms(1);E = 0;/*/*/*/*名稱 功能 輸入 輸出Write_Date()向12864寫數(shù)據(jù)date -待寫入的數(shù)據(jù) 無*/*/void Write_Date( uchar date )while(Busy();RS = 1;RW = 0;E = 0;_nop_();_nop_();P2 = date;Delay_ms(1);/待數(shù)據(jù)穩(wěn)定E = 1;Delay_ms(1);E = 0;_nop_();_nop_();/*/*/*/*/*名稱 功能 輸入 輸出Re

26、ad_Date() 向12864讀數(shù)據(jù) 無date -返回的數(shù)據(jù)*uchar Read_Date(void)uchar date;while(Busy(); / 忙RS = 1;RW = 1;E = 0;_nop_();_nop_();_nop_();E = 1;Delay_ms(1);date = P2;Delay_ms(1);E = 0;_nop_();return date;*/* 名稱:Init_LCD()/*功能:初始化LCD/*輸入:無/*輸出:無/*/ void In it_LCD(void) Delay_ms(4);PSB = 1;/并行方式Delay_ms(4);Write_

27、Cmd(OxOc);/開顯示關(guān)游標(biāo)Delay_ms(4);Clear_Scree n();/ 清屏/*/*名稱:Locati on()/*功能:設(shè)定顯示位置/*輸入:x,y -X軸點(diǎn)-Y軸點(diǎn)/*x只能是1-4中的一個(gè)數(shù)/*Y只能是0-7中的一個(gè)數(shù)/*輸出:無/*/void Locati on( uchar x, uchar y )uchar positi on;if( x = 1 )x = 0x80;else if( x = 2 )x = 0x90;else if( x = 3 )x = 0x88;else if( x = 4 )x = 0x98; po siti on = x + y; Wr

28、ite_Cmd( po siti on); Delay_ms(2);名稱 功能 輸入 輸出Clear_Scree n() 清屏無無/*/*/* /*/*/ void Clear_Scree n( void)Write_Cmd(0x34); / 擴(kuò)充指令Delay_ms(11); /10msWrite_Cmd(0x30); / 基本指令 Delay_ms(1);Write_Cmd(0x01);/ 清屏 Delay_ms(10);/*/*/*/*/*名稱:Write_str()功能:向12864里寫字符串 輸入:*p -字符串地址 輸出:無/*/ void Write_str( uchar *p

29、)while( *p != '0')Write_Date(* p);P+;/*/* 名稱:Printf_Decimal()/*功能:打印浮點(diǎn)類型數(shù)據(jù)II*輸入:double Num -要打印的數(shù)據(jù)/*輸出:無*void Prin tf_Decimal(double Num)uchar s6 = 0,0,46,0,0;uint t;t = (ui nt)(Num * 1000);s0 = t/10000+48;s1 = t%10000/1000+48;s3 = t%1000/100+48;s4 = t%100/10+48;s5 = t%10+48;Locatio n(1,2);W

30、rite_str(s);Sen dData(s0);Sen dData(s1);Sen dData(s2);Sen dData(s3);Sen dData(s4);Sen dData(s5);Sen dData('t');*/PCA/PWM 模塊/ 說明:*STC12C5A60S2STC12C5A60S2單片機(jī)有兩路/可編程計(jì)數(shù)器陣列(PCA)模塊,可用于軟件/定時(shí)器,外部脈沖的捕捉、高速輸出以及脈寬調(diào)制(PWM)輸出/作模式寄/涉及寄存器:CMOD( PCA存器)CCON(PCA控制寄存器)/CCAP M0,CCA PM1( PCA比較/捕獲寄存器)/CH,CL(PCA 的

31、16 位計(jì)數(shù)器)、CCAPnL,CCAPnH(PCA 捕捉/比較寄存 器)/PCA_PWM0,PCA_PWM1(PCA 模塊 PWM 寄存器)/AUXR1(輔助寄存器1)/ /程序說明:本程序?qū)崿F(xiàn)對PCA/PWM模塊的四種工作模式的測試。/注意:當(dāng)選擇相應(yīng)的模式時(shí),需在主函數(shù)內(nèi)和中斷服務(wù)內(nèi)更改相應(yīng)模式的初始化/和相應(yīng)的中斷服務(wù)程序。去掉注釋即可,若要更改相應(yīng)模式的功能,需在相應(yīng) /的初始化函數(shù)里更改相應(yīng)的參數(shù),脈寬調(diào)制(PWM)默認(rèn)設(shè)置為無中斷方式 / */ #i nclude vSTC12C5A60S2.H>#in clude vintrin s.h>#defi ne uchar

32、 un sig ned char#defi ne uint un sig ned int/*高速模式變量更改#defi ne FOSC 12000000#define T100KHz (FOSC/2/100000)/高速*脈沖輸出頻率計(jì)算:f = PCA模塊的時(shí)鐘源/(2*CCA POL)*/CCAP0L = PCA 時(shí)鐘源 /2/f定時(shí)/*定時(shí)模式變量更改#define T5ms (0.005*F0SC)計(jì)數(shù)值=T/(1/PCA的時(shí)鐘源)/*PWM 模式變量更改 */ #define DR_50 0x7f/50% 占空比#define DR 10 0x19/10% 占空比*時(shí)鐘源選擇#def

33、ine CLK 0 0x00#defi ne CLK_8 0x0e/* 模式選擇*/#define H model 0x4d /高速輸出模式,中斷*#defi ne CLK_1 0x02#define CLK 2 0x04 #define CLK_3 0x06外部時(shí)鐘#define CLK 4 0x08 #defi ne CLK_5 0x0a#define CLK 6 0x0d/Sysclk/12/Sysclk/2定時(shí)器0的溢出脈沖/ECI/P1.2(P4.1)輸入的 /Syscik/Sysclk/4/Sysclk/6/Sysclk/8模式#define T model#defi ne P _

34、model#define PL_model PWM模式#define PH_model PWM模式#define PHL_model PWM模式#define CU_model發(fā)中斷模式#define CD_model發(fā)中斷模式#define CUD_model發(fā)中斷模式0x49 定時(shí)模式0x42 無中斷PWM模式/由低變高可中斷0x630x530x730x610x510x71uint value = T100KH z;CCAP0L 值uint time = T5ms;和CCAP0H值uint test = 0;sbit LED = P1八7;/由高變低可中斷/高低都可中/16位捕獲,上升觸/

35、16位捕獲,下降觸/100kHz 時(shí)的/5ms 時(shí)的 CCAP0L測試用,要?jiǎng)h除/用來觀測定時(shí)模式和捕獲模式的現(xiàn)象/定時(shí)模式時(shí)500MS 閃爍,捕獲模式時(shí)捕獲一次時(shí)取反 /* 函數(shù)聲明* void HP_init(void); /高速模式初始化 void PP_in it(void); /PWM 模式初始化 void TP_init(void); /定時(shí)器模式初始化 void CD_init(void); /捕獲模式初始化 /*/H_model初始化/*/void HP_ini t(void) CMOD源為SyscikCCAPM0模式=CLK_4;=H_model;/PCA時(shí)鐘/高速輸出CCA

36、POLCCA POHvalueCR數(shù)器=value;=value>>8;+= T100K Hz=1;/開啟PCA計(jì)EA=1;/開總中斷/*/P_model初始化/*/ void PP_in it(void)CMOD = CLK_4;時(shí)鐘源為 SyscikCCAPM0 = P_model; / 無中斷 PWM 模式CCAP0L = DR_50;/%50 占空比CCAP0H = DR_50;/當(dāng) CL 值大于CCA POL時(shí)輸出為高,反之輸出為低/當(dāng) CL 溢出時(shí)CCA POH的值裝載到CCAP0L中CR=1;/開啟PCA計(jì)數(shù)器/當(dāng)不使用定時(shí)0溢出 為時(shí)鐘源時(shí),PWM輸出的頻率=PCA

37、的時(shí)鐘源/256/使用定時(shí)器溢出的時(shí) 鐘源時(shí),可設(shè)定定時(shí)器的值對輸出頻率的改變/分頻為0-256分頻*/T_model初始化*void TP_ini t(void)CMOD = CLK_4; 時(shí)鐘源為 SysclkCCAPM0 = T_model; / 定時(shí)模式CCAP0L = time; /+= T5ms;=1;=1;CCAP0H = time>>8; /定時(shí) 5ms timeEACR*/CD_model初始化*void CD_i ni t(void)CMOD = CLK_4; CCA PMO = CD_model;CR = 1;EA=1;*/主程序*/void mai n()C

38、D_i nit();PP_in it(); HP_in it();TP_ini t(); while(1)*中斷服務(wù)*void CD_Service(void) in terru pt 7 CCF0 = 0;LED=LED;/*void TP _Service(void) in terru pt 7CCF0 = 0; 清除PCA計(jì)數(shù)器溢出中斷標(biāo)志test+;if( test = 100 )test = 0;LED =LED;CCAP0L = time;CCAP0H = time>>8; time += T5ms; */* void HP_ Service(void) in terru pt 7CCF0 = 0; 清除PCA計(jì)數(shù)器溢出中斷標(biāo)志CCAPOL = value;CCA POH = value>>8;value += T100K Hz */*/串行通信模塊STC12C5A60S2/ 說明: STC12C5A60S2單片機(jī)有2個(gè) 采用UART工作方式的全雙工串行通信接口/兩個(gè)串口都有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論