这个不同的芯片手册内容结构会有一些差异。
总体来说有几个方面:
1:大致了解一下芯片功能
2:芯片应用环境(电压、电流要求等,包括供电电压及最大电压等内容)
3:管脚说明,了解每个管脚的作用。
4:典型应用。很多芯片可以参照典型应用画原理图。
5:封装(这个主要是为了画PCB时使用)
当然,芯片资料中可能还有关于芯片原理的介绍,芯片内部结构等,那个需要的时候再去了解。
首先声明一点,真正的新手是看不懂数据手册的,如果你能,说明你已经入门了。所以,当你看到数据手册头疼的时候,不要灰心,其实别人和你一样。
但是数据手册(以ATMEL的AVR为例)是AVR最好的书,你又必须得看懂数据手册,看数据手册不能急于求成,要一遍一遍的多看,应该说每次看都有不同的收获。
新手看第一遍,迷迷糊糊。
看第二遍,大体了解AVR有哪些模块。
第三次看,知道AVR的部分寄存器,但是仍然不知道如何使用,如何编程。
在这里就要发挥ICC AVR的优势了,使用ICC avr的程序生成向导(使用方法会在新手入门里面介绍),你使用哪一个模块,就生成哪一个模块的程序,然后再去看程序中使用到了哪写寄存器,再到数据手册里面去搜索相应词语,查看寄存器各个位的介绍和意义,以及设置方法。多这样几次,你就能够熟悉起来了,也就能看明白数据手册了。
一个精通单片机的人,无论拿来一个什么芯片,看看数据手册,很快就可以使用。
这里以定时器的数据手册为例:
//ICC-AVR application builder : 2007-3-22 10:17:15
// Target : M16
// Crystal: 7.3728Mhz
#include
#include
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
//m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
}
在整个51系列中,最常用的型号就是STC89C52这个型号,因为这款单片机功耗比较低、抗干扰能力比较强、使用寿命长,功能比较齐全,更重要的是价格比较,这款单片机的这些特点可以减小系统的成本,降低编程难度,因此大多数做毕设的同学都比较热衷这款型号的单片机。
//TIMER0 initialize - prescale:1024
// WGM: Normal
// desired value: 10mSec
// actual value: 9.861mSec (1.4%)
void timer0_init(void)
{
TCCR0 = 0x00;
//stop
TCNT0 = 0xB9; //set count
OCR0 = 0x47; //set compare
TCCR0 = 0x05; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
TCNT0 = 0xB9; //reload counter value
}
//call this routine to initialize all peripherals
void init_devices(void){
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer0_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x01; //timer interrupt sourcesSEI(); //re-enable interrupts//all peripherals are now initialized
}
上面的程序是由ICC的程序生成向导自动生成的,红色部分是和定时器0相关的,那么现在你可以去查数据手册,TCCR0,TCNT0,OCR0,TCCR0,TIMSK你就可以充分了解定时器的工作原理及控制方法了。
比如:查看TIMSK,描述为中断屏蔽寄存器- TIMSK
Bit 1 – OCIE0: T/C0 输出比较匹配中断使能
当OCIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的输出比较匹配中断使能。 当T/C0 的比较匹配发生,即TIFR 中的OCF0 置位时,中断服务程序得以执行。
Bit 0 – TOIE0: T/C0 溢出中断使能
当TOIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的溢出中断使能。当T/C0 发生溢出,即TIFR 中的TOV0 位置位时,中断服务程序得以执行。
可以看出TIMSK = 0x01;说明T/C0 溢出中断使能了,允许寄存器定时溢出中断,这就使得下面这段程序可以运行。
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void){TCNT0 = 0xB9; //reload counter value}
如皋二手抛丸清理机回收收购网点即把锥齿轮作为一个传动元件输入模块配置为;输出模块配置为。本设计中是以-系列单片机,系列相对系列指令丰富,相对系列价格便宜,系列中,是无的,是用代替的。