小弟初识松翰单片机,现用sn8p2711,编写了一个PWM调光的程序。

作者&投稿:班巧 (若有异议请与网页底部的电邮联系)
松翰单片机unsigned long多少字节~

参考过了,感觉还不够详细。通常是8位的数据通信,搞不懂16位的两边都是你自己编程,协议你说了算,传两个字节不就16位了?字拆分成字节和字节合并成字你不至于不会吧?

给个51单片机的给你参考下




*---------------
文件名称: PWM.C
功能 :单片机脉冲方式产生PWM信号
----------------*/
#include // 引用标准库的头文件
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define COUNT0 XBYTE [0X0000] // 8254计数器0寄存器地址
#define COUNT1 XBYTE [0X0200] // 8254计数器1寄存器地址
#define COUNT2 XBYTE [0X0400] // 8254计数器2寄存器地址
#define COMWORD XBYTE [0X0600] // 8254控制寄存器地址

/********************************
函数名称: SIGNAL(SIG_OUTPUT_COMPARE1A)
功能 :定时器0中断子程序
入口参数:无
返回值 :无
********************************/
void time0_int () interrupt 1 using 1
{
TR0=0; // 关闭T0
TH0=-(20000/256);
TL0=-(20000%256); //重置20ms计数值
/*--------------用8254计数器发送第一路的PWM信号-----------*/
COMWORD=0x30; //1MHz时钟作为计数时钟,计数1000次后实现1ms高电平
COUNT0=0xE0;
COUNT1=0x03;
/*--------------用8254发送第二路的PWM信号----------------*/
COMWORD=0x70; //1MHz时钟作为计数时钟,计数2000次后实现2ms高电平
COUNT0=0xD0;
COUNT1=0x07;
/*-------------用8254发送第三路的PWM信号----------------*/
COMWORD=0xB0;//1MHz时钟作为计数时钟,计数3000次后实现32ms高电平
COUNT0=0xB0;
COUNT1=0x0B;
TR0=1; //启动T0
}
//主函数
void main ()
{
EA=1; // 开CPU总中断
ET0=1; // 开T0定时器中断
TMOD=0x01; // 开定时器中断
TH0=-(20000/256); //20ms定时器计数初值
TL0=-(20000%256);
/*--------------向8254控制寄存器选择计数器0,并对其赋值0-----------------*/
COMWORD=0x30;
COUNT0=0; //赋低位字节
COUNT0=0; //赋高位字节
/*---------------向8254控制寄存器选择计数器1,并对其赋值0------------------*/
COMWORD=0x70;
COUNT0=0; //赋低位字节
COUNT0=0; //赋高位字节
/*---------------向8254控制寄存器选择计数器2,并对其赋值0-----------------*/
COMWORD=0xB0;
COUNT0=0; //赋低位字节
COUNT0=0; //赋高位字节
TR0=1; //启动定时器0
While (1); //无限次循环
}

TC0C是定时器自身计数用的当然不能赋值,如果想调整占空比只有对TC0R赋值。规格书上写得很清楚:
PWM 信号输出到 PWM0OUT ( P5.4 引脚), TC0OUT 和 ALOAD0 标志位控制 PWM 输出的阶数( 256 、 64 、 32
和 16 )。 8 位计数器 TC0C 计数过程中不断与 TC0R 相比较,当 TC0C 计数到两者相等时, PWM 输出低电平,当 TC0C
再次从零开始计数时, PWM 被强制输出高电平。 PWM0 输出占空比 = TC0R/ 计数量程 (计数量程 = 256 、 64 、 32 或 16 ) 。
参考寄存器保持输入 00H 可使 PWM 的输出长时间维持在低电平,通过修改 TC0R 可改变 PWM 输出占空比。

进不了中断, 确认中断函数的定义是否正确,

中断函数无法进入, 自然无法设定初值


小弟初识松翰单片机,现用sn8p2711,编写了一个PWM调光的程序。
参考寄存器保持输入 00H 可使 PWM 的输出长时间维持在低电平,通过修改 TC0R 可改变 PWM 输出占空比。

双桨共轴遥控直升机飞机 陀螺仪 程序 IC是松翰2711A ,陀螺仪锁尾的思路...
的大概我是这样写的,结果锁尾 会抖,往一边慢慢的转。 我想是方法不对。因为AD差值为0的话。两路PWM是一样的,一样的时候肯定会往一边转动。转动陀螺仪,又给它调直,调直后又是一样的PWM,一样又转。。。望高手指点下

51内核单片机:51内核的单片机有没有自带A\/D转换的,PWM输出的,看门狗...
STC系列,C8051F系列,以及NXP的一系列增强51,自带很多片上资源,一般除了段式LCD驱动外,你说的资源都有。但是要提醒,C8051F系列抗干扰能力有问题。你提到的单片机,除了PIC外,其余品种市场生存力都有问题,侧面反映出很多其市场认可度较低。就是喜欢ATMEL型号的话,AT89C5115,可以满足你的要求。51内...

寒亭区18324219470: 小弟初识松翰单片机,现用sn8p2711,编写了一个PWM调光的程序. -
包奚复方: 进不了中断, 确认中断函数的定义是否正确, 中断函数无法进入, 自然无法设定初值

寒亭区18324219470: sn8p2501单片机具体介绍.
包奚复方: 应该和SN8P2604差不多吧!!! SN8P2604 8位微控制器具有高性能,低功耗的特点.指令执行时间为1个时钟震荡周期的结构使工作速度可达16MIPS.高EFT能力使 SN8P2604适合在高干扰环境下工作.SN8P2604的IC结构设计一流,包括...

寒亭区18324219470: 淘宝的信誉评价可靠吗?
包奚复方: 不可靠,确实的,的确是炒出来的,有的是有的不是.

寒亭区18324219470: 汇编语言 -
包奚复方: SIZE DATA1=LENGTH DATA1*TYPE DATA1,TYPE DATA1=1,TYPE属性返回变量的类型值,DB为1,DW为2,LENGTH DATA1=1,LENGTH返回的是变量的重复次数,即变量中使用DUP的,就返回DUP前面的重复次数,如果没有DUP,就...

寒亭区18324219470: Silverlight开发好还是Flex开发好
包奚复方: FLEX吧,大多数电脑都支持flash,但不见得支持silverlight,这个理由就足够了

寒亭区18324219470: 网上SN8P2501八脚单片机为什么没有PDF资料 -
包奚复方: http://wenku.baidu.com/view/c666ae2e58fb770bf78a5537.html?re=view

寒亭区18324219470: 单片机无线模块用什么比较好? -
包奚复方: 单对单通信的话用最简单的315M/433M的无线通信模块,频率低,穿透好,传得远,抗干扰也强些 ;这种模块淘宝上一搜一大把

寒亭区18324219470: SBUF的详细介绍?SBUF的详细介绍!(51单片机)
包奚复方: SBUF---即串口数据缓冲寄存器 MCS-51串行口有两个在物理上独立的串行数据缓冲寄存器SBUF, 这两个缓冲寄存器共用一个地址99H,(它们都是字节寻址的寄存器,...

寒亭区18324219470: C++中的: 和::分别是什么意思?
包奚复方: ::一般都是用在类名后面表示某一个类的成员, :就有好几种了:1.类的继承的时候有用,2.switch中有用,3.三目运算符

寒亭区18324219470: 堆栈 和 托管堆 都是放什么数据的 -
包奚复方: 你说的堆栈,应该指的就是本地堆吧,和托管堆相对应的.本地堆和托管堆都是可动态增长的一维连续空间,用于存放程序中的动态数据.不同的是本地堆需要程序员自己管理,自己申请的空间,自己负责回收;托管堆由.net运行支持环境负责管理,你只管申请用,平台的垃圾回收机制会帮助程序员释放没有被引用的堆资源.C#当中,new申请的都是托管堆空间.在CLI/C++中,new申请的是本地堆,gcnew申请的是托管堆.所谓堆栈,意旨其实可以很广泛,这里就说这么多吧.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网