㈠ 為什麼單片機用c語言開發
單片機產品的成本是非常敏感的。
想用python和ruby和java又沒內存處理器又太慢,想用.net又嫌貴(M¥有wince或micro framework),所以只能用C/C++了,無奈面對單片機的C++編譯器又沒有一個靠譜的,所以就只能用C語言了。
基於成本原因,對於單片機開發來說,最重要的是在極其有限的ROM和RAM中實現最多產品的功能。或者反過來說,實現相同的產品功能,所需要的ROM和RAM越小越好,因為一般來說ROM/RAM越小單片機越便宜。C++的高級特性引起的代碼體積膨脹比C大得多,這一缺陷是致命的。以前有過Embedded C++,去掉了一些標准C++的復雜特性,但是用的人不多,因為單片機產品的業務邏輯一般沒那麼復雜,用C就綽綽有餘。
㈡ MSP430單片機用C語言編寫程序需要用什麼軟體
MSP430用IAREmbeddedWorkbench軟體編寫程序和編譯代碼。
MSP430單片機稱之為混合信號處理器,是由於其針對實際應用需求,將多個不同功能的模擬電路、數字電路模塊和微處理器集成在一個晶元上,以提供「單片機」解決方案。該系列單片機多應用於需要電池供電的攜帶型儀器儀表中。
(2)單片機cmod擴展閱讀:
MSP430系列部分產品具有快閃記憶體,在系統設計、開發、調試和實際應用中具有明顯優勢。TI公司引入了具有快閃記憶體和JTAG邊界掃描技術的廉價開發工具MSP-Fet430x110,並將國際先進的JTAG技術和Flash在線編程技術引入到MSP430中。
這種將Flash技術與FET開發工具相結合,具有方便、便宜、實用等優點,為用戶提供了更理想的原型開發方式。
㈢ STC單片機輸出PWM信號,頻率要25KHz,請大神指教,怎麼實現,或者直接給我一個程序,謝謝!
void PWM_init (void){//PWM初始化函數
CMOD=0x02; //設置PCA定時器,計數頻率為晶振頻率/2 當為12Mhz時,PWM輸出頻率約23.4Khz
//CMOD=0x00; //設置PCA定時器,計數頻率為晶振頻率/12 當為12Mhz時,PWM輸出頻率約3.9Khz
//CMOD=0x04; //設置PCA定時器,計數頻率為定時器0的溢出率,如果讓定時器0設為16位計數模式,其溢出頻率可以在很大范圍內調節,從而以產生很高或很低的PWM頻率
CL=0x00;
CH=0x00;
CCAPM1=0x42; //PWM1設置PCA工作方式為PWM方式(0100 0010)
CCAP1L=0x00; //設置PWM1初始值與CCAP0H相同
CCAP1H=0x00; // PWM1初始時為0
CR=1; //啟動PCA定時器
}
實際上要產生低頻率的PWM波,不用其硬體PWM功能完全可以
用定時器中斷方式即可實現
讓定時器 200us中斷一次(中斷不算頻繁呀) ,設一變數a,每次中斷a加1,100次就是20ms,,另設一變數b,數值在1-100之間,每次中斷比較a和 b的大小,如果a<b,則引腳 輸出高電平,否則為低電平,這樣通過改變b的值,就可實現頻率為50HZ,占空比1-100%可調的PWM方波
㈣ STC12C5A60S2單片機怎麼才能輸出占空比可調的PWM
void PWM_init (void){//PWM初始化函數
CMOD=0x02; //設置PCA定時器,計數頻率為晶振頻率/2 當為12Mhz時,PWM輸出頻率約23.4Khz
//CMOD=0x00; //設置PCA定時器,計數頻率為晶振頻率/12 當為12Mhz時,PWM輸出頻率約3.9Khz
//CMOD=0x04; //設置PCA定時器,計數頻率為定時器0的溢出率,晶振頻率/256 當為12Mhz時,PWM輸出頻率約183hz
CL=0x00;
CH=0x00;
CCAPM1=0x42; //PWM1設置PCA工作方式為PWM方式(0100 0010)
CCAP1L=0x00; //設置PWM1初始值與CCAP0H相同
CCAP1H=0x00; // PWM1初始時為0
CR=1; //啟動PCA定時器
}
void PWM1_set (uchar a)//PWM1占空比設置函數
{
CCAP1L=a; //設置值直接寫入CCAP1L
CCAP1H=a; //設置值直接寫入CCAP1H
}
主程序中,按預想規律改變PWM1_set (uchar a)的參數即可調節占空比