http://blog.sina.com.cn/chenranhong[订阅]
个人资料
分类
    内容读取中…
评论
读取中...
公告
呵呵,亲爱的朋友,来到我的博客世界我们就是朋友了.记住我呀!常来看看吧!可能有你需要的,可能有需要你的,别忘了呀,看了就来个评价吧。!
音乐播放器
单片机学习专栏
我也只是一只白菜,不是什么老牛,但我还是想牛一把,谁说的"不想当将军的士兵不是好士兵?",You saidit!
访客
读取中...
好友
读取中...
My another Blog
博文
一个好网站(2007-10-15 13:16)
 http://www.abab123.com/bbs/down.asp?html=703419

    现有S51开发板2套,做工精细,

    主要资源:USB取电插头,Max232,在线编程接口,I/O口外扩插针,8位独立按键,液晶插座,蜂鸣器,DS1302时钟插座,93C64插座,24C××插座,红外接受头,温度传感器,8位数码管显示,8位LED指示灯,能保证各种学习开发的需要。

 附增:串口线一条,USB取电线一条。ISP下载线一条。

价格:120元。

QQ:58674624

中科院考博试题(2007-07-14 16:29)
 本人有中国科学院电工所2001年到2004年电工和电力电子试题,售价10元每份,电子版或者邮件都可,共十份。

还有中科院英语复习资料两套。据说把这些题弄明白就可能通过英语考试。

价格可议。QQ:58674624

(本来是我想考的,由于某种原因不能考了,只好卖了,保证真实性!)

平常心(2007-06-13 21:39)
 遇事要稳重,心里要平静,不管是什么事情,平静地思考以后能可以做出行动;什么事都不要盲目地攀比,都要以平常心来看待,世上不公平的事情太多了,不是一个人靠那一点点微不足道的激情就能改变的,不是那一时的冲动就能够解决问题的,要学会无奈,学会忍让,这就是所谓的大度吧。不要管他人的事,自己的事情还不能做完,该做的还没有做,平静下来,做自己的事吧。多做一点,多学一点,少说一些,是明智之举。
 分辨率决定了PWM控制的优劣或精确度.
 PWM模式输出波形的实际占空比是由加载到计时器/计数器的输出比较寄存器的数值决定的.在正常的PWM模式下,计数器向下计数时遇到匹配,就把输出位设置为高电平,如果是在向上计数时遇到匹配,就将输出位的值清除,即设置为低电平.在这些方式下,如果加载到输出比较寄存器的数值等于峰值的20%,那么就可以产生20%的占空比的波形,同样可以为应用程序提供反向的PWM波形,以控制直接到PWM输出引脚,以吸收电流方式工作的LED的亮度---当加载输出比较寄存器的数值是峰值的80%时,输出的方波形比例中就有80%的波形是电平.
//本程序是由网上的程序修改而来的,内部晶振1M 

//定时器用于外部计数
//用按键来产生外部的信号变化,下降沿计数
//ICC-AVR application builder:2007-6-12
//Target:M16
//crystal:1M
//用途:演示定时器的计数功能
//a~dp接PA0~PA7
//PB0接一个独立按键
/***************************************/
#include <iom16v.h>
#include <macros.h>

const unsigned char seg7_data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//0~F and shut

void port_init(void)
{
PORTA=0xFF;   //pull up
 DDRA=0xFF;   //input
PORTB=0x01;   //PB0,是T0的外部时钟输入脚,需要设为输入,并且使能内部上拉
 DDRB=0x00;
PORTC=0x00;
 DDRC=0x00;
PORTD=0x00;
 DDRD=0x00;
}

//TIMER0 initialize-prescale:Fall

 一、定时/计数器PWM设计要点 

  根据PWM的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点: 
  1.首先应根据实际的情况,确定需要输出的PWM频率范围,这个频率与控制的对象有关。如输出PWM波用于控制灯的亮度,由于人眼不能分辨42Hz以上的频率,所以PWM的频率应高于42Hz,否则人眼会察觉到灯的闪烁。 
  2.然后根据需要PWM的频率范围确定ATmega128定时/计数器的PWM工作方式。AVR定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。 
  3.快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定PWM的频率,而比较匹配寄存器的值决定了占空比的大小。PWM频率的计算公式为: 
    PWM频率 系统时钟频率/(分频系数*(1+计数器上限值)) 
  4.快速PWM模式适合要求输出PWM频率较高,但频率固定,占空比调节精度要求不高的应用。 
  5.频率(相位)调整PWM模式的占空比调节
 
 //此程序为AVR外部中断,时钟中断,串行通信,IIC综合实例  #include <iom16v.h> #include <macros.h> #define uchar unsigned char  #define uint  unsigned int #pragma interrupt_handler int2:19//外部中断2 #pragma interrupt_handler timer0_ovf_isr:10//时钟中断 #pragma interrupt_handler rec:12//串口接收中断 void delay(uint ticks);//延时  unsigned char const Tab[]={0x14,0x9F,0x38,0x1A,0x93,0x52,0x50,0x1F,                           0x10,0x12,0x11,0xD0,0x74,0x98,0x70,0x71};  //数码管显示代码 unsigned int count=0;//软件记数 void main() {    uchar Address,date;  int x=0,j=0;  init_devices();  //中断设置  CLI();//关总中断  //INT2设置  MCUCSR&=~0x40;//下降沿触发  GIFR|=0x20;//清INT2标志  GICR|=0x20;//开INT2中断  //定时设置  TCCR0 = 0x00; //stop  TCNT0 = 0x83; //set count  OCR0  = 0x7D;  //set compare  //TCCR0 = 0x03; //start timer  TIMSK = 0x01; //timer interrupt sources  //串口设置,波特率:9600  UCSRB = 0x00; //disable while setting baud rate  UCSRA = 0x00;  UCSRC = BIT(UR
 AVR的中断源比较多,尤其是ATmega128,一共有35个外部以及内部中断源。通常情况下,Flash程序存储器空间的最低位置(0x0000-0x0045)定义为复位和中断向量空间。完整的中断向量见第二章表2-23。在中断向量表中,处于低地址的中断向量所对应的中断拥有高优先级,所以,系统复位RESET拥有最高优先级。

A.中断设计注意点:


1.具备Bootloader功能的AVR,其中断向量区可以在Flash程序存储器空间最低位置和Bootloader区的头部来回迁移,这主要用于配合Bootloader程序的应用。如果不使用Bootloader功能,一般不要中断向量区进行迁移。

2.Flash较小的AVR芯片,其一个中断向量占据1个字的空间,用于放置一条相对转移RJMP指令(范围-2K~+2K字),跳到中断服务程序。对于不使用的中断,在中断向量区中应放置1条中断返回指令RETI,增强程序的抗干扰性。

3.ATmega128的Flash空间为64K字节,因此它的一个中断向量占据2个字的空间,用于放置一条绝对转移JMP指令(指令长度为2个字),跳到中断服务程序。对于不使用的中断,在中断向量区中应连续放置2条中断返回指令RETI

关于BoolLoader自编程(2007-06-13 01:13)
 A区和B区的大小是可以通过熔丝位的设置改变大小的,但RWW,NRWW是固定的,不会改变。对于M8来说,B区的大小可设置为128、256、512、1024字,而RWW/NRWW则固定为3072/1024字。

2.MCU挂起,表示MCU“暂停”工作,即暂时停止取指令、响应中断等,待前一个硬件操作完成后再继续执行后续的指令操作。

3.当MCU对RWW区域进行页读取、写入或擦除时,一旦指令发出后,操作将由硬件自动完成(例如由硬件将RWW区中的一页32字读到临时缓冲页中),这个操作过程需要占用一定的时间,在这段时间内,MCU可以读取NRWW区中的指令并执行。这与“一边读写RWW区域,一边干别的什么事”是不同的概念。这同当AVR的硬件在做AD转换,或URAT正在接收一个字节数据时,MCU也同时执行一条指令是类似的。下面给一个例子:

a.从UART口读入32个字,存入RAM(程序在NRWW区域的B区中)

b.使用循环将32个字写入临时缓冲页中(程序在NRWW区域的B区中)

c.将00000101写入SPMCR寄存器,并执行SPM指令实施对RWW区中的页写入(程序在NRWW区域的B区中)

d1.等待3.7ms,待页写入操作完成(程序