资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,6,章,ATM16,输入输出,端口应用,M,16,输入输出端口,引脚配置,端口引脚第二功能表,(1),端口引脚,第二功能,PA0,ADC,输入通道0,PA1,ADC,输入通道1,PA2,ADC,输入通道2,PA3,ADC,输入通道3,PA4,ADC,输入通道4,PA5,ADC,输入通道5,PA6,ADC,输入通道6,PA7,ADC,输入通道7,端口,引脚,第二功能,PB0,T0 (T/C0,外计数输入,),XCK(USCRT,外时钟输入/输出),PB1,T1 (T/C0,外计数输入,),PB2,AIN0(,模拟比较正输入),INT2(,外中断2输入),PB3,AIN1(,模拟比较负输入),OC0(T/C0,输出比较匹配输出),PB4,SS,(SPI,从机选择引脚),PB5,MOSI(SPI,主机出/从机入信号),PB6,MISO(SPI,主机入,/,从机出信号),PB7,SCK(SPI,总线串行时钟),*SPI,串行外部接口,端口引脚第二功能表,(2),端口引脚,第二功能,PD0,RXD(USART,输入引脚 ),PD1,TXD(USART,输出引脚),PD2,INT0(,外部中断0输入 ),PD3,INT1(,外部中断1输入,),PD4,OC1B(T/C1,输出比较,B),PD5,OC1A(T/C1,输出比较,A),PD6,ICP1(T/C1输入捕获输入),PD7,OC2(T/C2,输出比较输出),*,USART,通用异同步收发端口,端口引脚,第二功能,PC7,TOSC2(,定时振荡引脚2),PC6,TOSC1(,定时振荡引脚1,),PC5,TDI(JTAG,测试数据输入),PC4,TDO(JTAG,测试数据输入,),PC3,TMS(JTAG,测试模式选择),PC2,TCK(JTAG,测试时钟),PC1,SDA(,两线串口数据入/出线),PC0,SCL(,两线串口时钟入/出线,),*JTAG,Joint Test Action Group,(联合测试行动组),一位,I/O,口线电路示意图,一位,I/O,端口线电路示意图,I/O,引脚等效原理图,每个端口都具三个寄存器:,DDRx-,数据方向寄存器;,PORTx-,数据数值寄存器;,PINx-,引脚电平寄存器;,四个端口;,X=A、B、C、D,端口,每寄存器都有8个位:,n=0、1、2、3、4、5、6、7,位,全部端口引脚都有内部上拉电阻,且有保护二极管与,VCC,和地相连,在输入时能够选用。,端口引脚配置,1、,DDRxn=0,,,该端口位配置为输入。,1),若,PORTxn=0,PUD=X,,,内拉上拉电阻无效,。,2)若,PORTxn=1,PUD=0,,,内拉上拉电阻,使能,。,PUD=1,,内部上拉电阻无效。,2,、,DDRxn=1,,,该端口位配置为输出,,内部上拉电阻无效。,3、,复位时各引脚均为高阻态。,此时没有时钟在运营。,端口设置举例,例:配置端口,A,旳引脚03输出高电平、引脚47输出低电平。,DDRA 0 x0FF;/8,位全高电平1,表达输出,DDRTA0 x0F;/,高四位输出低电平,,/,低四位输出高电平。,例:假设端口,B,旳引脚和外部连接、要读端口,B,旳电平。,unsigned char c;/,定义无符号字符,C,C=PINB;/,令,C,等于,B,端口电平,端口应用,举例,6.4,(,p118),6.4.2 设端口,PA,交替输出0,xaa,0 x55。,8个发光管间隔闪亮500毫秒。,#include,/,输入/输出端口包括头文件,#define,uchar,unsingned char,/,定义,uchar,为无符号字符数据,#deinde,uint,unsingned int,/,定义,uint,为无符号整形数据,void delay_ms (uint k),/,定义,delayw,为,ms,级延时子函数,uint i,j;/,定义无符号整形数,i,j,for(i=0;ik;i+)/,设,for,循环语句,for(j=0;j8)counte=1;/,如,counter8,则,counter=1,delay_ms(300);/,调延时300,MS,子函数,if(PIND&0 x08=0)/,如,D,口引脚值和0,x08,相与=0,即,S2,按下,if(-counter1)counter=8;/,如,counter1,则,counter=8,delay_ms(300);,端口应用,举例,6.7,(,p128),/=,定义开关语句,条件体现式为,counter,switch (counter),case 1:PORTB=0 xfe;break;/,当,counter=1,时,亮灯1,case 2:PORTB=0 xfd;break;/,当,counter=2,时,亮灯2,case 3:PORTB=0 xfb;break;/,当,counter=3,时,亮灯3,case 4:PORTB=0 x7e;break;/,当,counter=4,时,亮灯4,case 5:PORTB=0 xef;break;/,当,counter=5,时,亮灯5,case 6:PORTB=0 xdf;break;/,当,counter=6,时,亮灯6,case 7:PORTB=0 xbf;break;/,当,counter=7,时,亮灯7,case 8:PORTB=0 x7f;break;/,当,counter=8,时,亮灯8,/switch,开关语句结束,/while,循环语句结束,/main,主程序结束,端口应用,举例,6.8,(,p131),例题:按下键,S1,数码管1、2显示0099,,,按下键,S2,数码管1、2显示9900,。,/,在,D:,建立个人文件佳如“,WXW”,在,CV AVR,环境编辑,C,程序,#include /,输入/输出端口包括头文件,#,include,#define uchar unsingned char /,定义,uchar,为无符号字符数据,#deinde uint unsingned int /,定义,uint,为无符号整形数据,flash uchar SEG7 10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,/,定义全局变量,LEG7,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;,/(,共阴段码),flash uchar ACT 2=0 xfe,0 xfd;,/,定义全局变量,ACT(,共阴位码),/=,程序段分割符,void delay_ms(uint k),/,定义,delay,为,ms,级延时子函数,uint I,j;/,定义无符号整形数,i,j,for(i=0;ik;i+)/,设,for,循环语句,for(j=0;j570;j+)/,重设,for,循环语句,;/,设空语句,/,重设,for,循环体结束,端口应用,举例6.8,(,p131),void main (void)/,定义主函数为空函数,char i ,counter=0;/,定义循环字符变量,i,和数据变量,counter=0,DDRC=0 xff;/,设端口,C,为段码输出,DDRB=0 xff;/,设端口,B,为位码输出,DDRD=0 x00;/,设端口,D,为控制输入,PORTC=0 x00;/,设端口,C,输出初值为0,X00,PORTB=0 xff;/,设端口,B,输出初值为,0Xff,PORTD=0 xff;/,设端口,B,初值为0,Xff,while (1)/,设,wnile,无限循环语句,if(PIND&0 x04=0)/,如,D,口引脚值0,x04,相与=0,即,S1,按下,if(counter99)counter+;/,如,counter0)counter-;/,如,counter1,则,counter-1,for(i=0;i100;i+),PORTC=SEG7counter%10 ;,PORTB=ACT0;,delay_ms(1);,PORTC=SEG7counter/10 ;,PORTB=ACT0;,delay_ms(1);,
展开阅读全文