A. xs128單片機中PWM初始化程序怎麼寫
有聯合和獨立兩種方式,對號入座即可:
void PWM_Init(void)
{
//pwm0.pwm1
PWMCTL_CON01=1; //0和1聯合成16位PWM;
PWMCAE_CAE1=0;//選擇輸出模式為左對齊輸出模式
PWMCNT01 = 0;//計數器清零;
PWMPOL_PPOL1=1;//先輸出高電平,計數到DTY時,反轉電平
PWMPRCLK = 0X50; //clockA不分頻,clockA=busclock=32MHz;CLK B 32分頻:1Mhz
PWMSCLA = 0x10; //對clock SA 進行2*PWMSCLA=32分頻;pwm clock=clockA/32=1MHz;
PWMCLK_PCLK1 = 1; //選擇clock SA做時鍾源
PWMPER01 = 20000; //周期20ms; 50Hz;(可以使用的范圍:50-200hz)
PWMDTY01 = 1510; //高電平時間為1.5ms;
PWME_PWME1 = 1;
//PWMSCLB=0X05; //clk SB=clk B/(2*pwmsclb):75KHZ
PWMSCLB=0X04; //clk SB=clk B/(2*pwmsclb)=125KHZ
//pwm3;
PWMCNT3 = 0;
PWMCAE_CAE3=0; //選擇輸出模式為左對齊輸出模式
PWMPOL_PPOL3=0;
PWMPER3 =125; //蜂鳴器名叫頻率為1KHZ
PWMDTY3 =100; //ty circle=(PWMPER3-PWMDTY3)/PWMPER3=20%
PWMCLK_PCLK3 = 1;
PWME_PWME3 = 0;
//PWM6,IN1驅動電機控制
PWMCNT6 = 0;
PWMCAE_CAE6=0; //選擇輸出模式為左對齊輸出模式
PWMPOL_PPOL6=0;
PWMPER6 =25; //後輪驅動CLOCK大約125K--5.000KHz,75K--3K=clk B/PWMPER2
PWMDTY6 =25; //ty circle=(PWMPER2-PWMDTY2)/PWMPER2=0
PWMCLK_PCLK6 = 1; //1 = Clock SB is the clock source for PWM channel 2.
PWME_PWME6 = 1; //如果禁止,則PWM2輸出高電平,意味著MC33886全速運行
//PWM7,IN2驅動電機控制
PWMCNT7 = 0;
PWMCAE_CAE7=0;
PWMPOL_PPOL7=0;
PWMPER7 =25;
PWMDTY7 =25;
PWMCLK_PCLK7 = 1;
PWME_PWME7 = 1;
}
B. 求個 51單片機 計數器 程序 註解
#include "reg52.h"
#define u8 unsigned char
#define u16 unsigned int
sbit sw1=P3^4;
sbit sw2=P3^5;
sbit sw3=P3^6;
sbit e0=P2^0;
sbit e1=P2^1;
sbit e2=P2^2;
sbit e3=P2^3;
u8 ds[4]={0,0,0,0};
u16 num=0;
u8 code table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0x00};//共陰數碼管
u8 ajsm() //SW3按鍵檢測和處理
{
static u16 ms;
if(sw3==0)
{
if(++ms==2)
{
return 1;
}
}
else
{
ms=0;
}
return 0;
}
void xs() //顯示
{
static u8 a;
a++;
if(a>3)a=0; //a最大為3,大於3則為0
e0=1;
e1=1;
e2=1;
e3=1;//以上4條語句關閉顯示(沒有位選)
P0=table[ds[a]];//段選碼送P0
switch(a)
{
case 0: //a=0,顯示第一位(位選e0=0其餘為1)
{
e0=0;
e1=1;
e2=1;
e3=1;
}break;
case 1: //a=1,顯示第二位(位選e1=0其餘為1)
{
e0=1;
e1=0;
e2=1;
e3=1;
}break;
case 2: //a=2,顯示第三位(位選e2=0其餘為1)
{
e0=1;
e1=1;
e2=0;
e3=1;
}break;
case 3: //a=3,顯示第四位(位選e3=0其餘為1)
{
e0=1;
e1=1;
e2=1;
e3=0;
}break;
}
}
void main()
{
TMOD=0x66;//定時器0和1均設置為自動重裝載計數器模式
TH0=0xff;//定時器0來一個脈沖中斷一次
TL0=0xff;
TH1=0xff;//定時器1來一個脈沖中斷一次
TL1=0xff;
TR1=1;//啟動計數器1
TR0=1;//啟動計數器0
ET0=1;//允許定時器0中斷
ET1=1;//允許定時器1中斷
EA=1;//開總中斷
while(1)
{
ds[0]=num/1000%10;
ds[1]=num/100%10;
ds[2]=num/10%10;
ds[3]=num%10; //以上四句將num轉換為數碼管顯示的值
xs(); //調用顯示
if(ajsm()) //檢測按鍵
{
num=0; //清零
}
}
}
void time0()interrupt 1 //SW1按鍵處理
{
if(num<9999)num++;
}
void time1()interrupt 3 //SW2按鍵處理
{
if(num>0)num--;
}
C. 單片機編程中xsbz:jb30h,pdgx什麼意思
xsbz:是標號,jb 30h,pdgx 意思是位定址區30H單元為1那麼程序跳轉到pdgx標號去執行
D. 我如何用單片機XS128控制晶元AD7051DI(模擬開關晶元),單片機輸出是不是需要電平轉換
同學,我覺的你還沒有了解問題的實質,你不能將你XS128的I/O直接去驅動模擬開關,原因不是你單片機的I/O物理電平(0~3.3V或0~5V)無法滿足模擬開關晶元的要求!!!最關鍵的一點是模擬開關晶元不是繼電器,內部是Mosfet結構,所以它對控制腳的電平要求與你要切換的多路信號的電平有密切關系,你的模擬開關晶元有2個電源腳,VDD必須比多路信號最高電平還要高,VEE必須比多路信號最低電平還要低,而控制腳也有要求如下:
VDD=5V Vih<VDD-1.5
VDD=10V Vih<VDD-3
VDD=15V Vih<VDD-4
所以這個決定於你的多路信號,你的多路信號如果在TTL范圍內,你就有機會不用電平轉換,直接驅動你的模擬開關晶元.
E. xs128和stm32兩種單片機分別有哪些優勢用起來有什麼區別
stm32比128高級,我兩塊板都寫過程序,更精通於32,個人也更偏向於32。
這么說吧,128能實現的的32也能,128不能實現的的32也能。而且128寫程序的編譯器還沒有寫32的keil高級,調試的時候麻煩。
F. xs128單片機是什麼內核的……
XS128是摩托羅拉基於68系列處理器的16位單片機,STM32是ARM結構cortex-m構架的32位單片機,兩個的差別當然大了。
G. 請問高手們:s12XS飛思卡爾單片機相對51有哪些區別可以用Keil編程嗎謝謝!
s12xs是十六位單片機,內部集成了PPL,CAN,輸入捕獲,匯流排是我覺得最大的特點,把主線超超頻,就很強大了。其它的什麼16位PWM,UART等都很長見。至於51,8位的單片機,呵呵,很低端了,AVR隨意的都超越了。給s12飛思卡爾單片機編程使用codewarrior編程。最近在用Keil UV4給STM編程,呵呵
H. ec9s12xs128是什麼單片機
1、MC9S12XS128是Freescale公司的16位單片機,由16位中央處理單元(CPU12X)、128KB程序Flash(P-lash)、8KB RAM、8KB數據Flash(D-lash)組成片內存儲器
2、Freescale 公司的16位單片機主要分為HC12 、HCS12、HCS12X三個系列。HC12核心是16位高速CPU12核,匯流排速度8MHZ;HCS12系列單片機以速度更快的CPU12內核為核心,簡稱S12系列,典型的S12匯流排速度可以達到25MHZ。HCS12X系列單片機是Freescale 公司於2005年推出的HCS12系列增強型產品,基於S12 CPU內核,可以達到25MHz的HCS12的2-5倍性能。匯流排頻率最高可達40 MHz。S12X系列單片機目前又有幾個子系列:MC9S12XA系列、MC9S12XB系列、MC9S12XD系列、MC9S12XE系列、MC9S12XF系列、MC9S12XH系列和MC9S12XS系列。MC9S12XS128就是S12X系列中的一個成員
3、主要功能模塊包括:
內部存儲器
內部PLL鎖相環模塊
2個非同步串口通訊 SCI
1個串列外設介面 SPI
MSCAN 模塊
1個8通道輸入/輸出比較定時器模塊 TIM
周期中斷定時器模塊 PIT
16通道A/D轉換模塊 ADC
1個8通道脈沖寬度調制模塊
PWM 輸入/輸出數字I/O口
4、詳見參考:http://wenku..com/link?url=KDgQAfL9qbJJXoiyBB-oy4TFd7M-axPBr97ajZCazgiLGURo_
I. 怎麼學好XS128單片機
既然學XS128,不可能是零基礎吧?以前玩兒過單片機的話,你應該不會對單片機陌生。
XS128不過是比51功能強大點兒罷了,完全可以按照學51的思路去學習——看書,編程,調試,驗證……
慢慢來,不要害怕,祝你成功!
J. XS128單片機中ECT模塊和TIM模塊的區別
xs128沒有ECT模塊,而是分成了PIT和TIM兩個模塊。PIT的作用是產生周期中斷,與51單片機的定時器功能一樣,只是不需像51那樣在中斷中要重賦定時器初值。計數是在TIM中實現,xs128隻有16位一個脈沖累加器PACA(與IOC7腳相連),而dg128還有PACB,比如你用光電編碼器測速,編碼器傳回一系列脈沖,由PACA記錄脈沖數,有一個脈沖就記一個數(這與你設定的觸發沿有關)。另外,每個引腳都有一個對應的TCx寄存器,當相應引腳觸發時,TIM模塊中的自由計數器TCNT中的計數值就存到對應的TCx中(讀回TCx),再觸發一次TCNT再存入TCx(再讀回),兩次相減就為兩次觸發的間隔時間。