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(再读回),两次相减就为两次触发的间隔时间。