第06 章 不确定推理 人工智能课件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

简易单片机教程ICCAVR的使用参考程序代码1模拟比较器#includeiom16v.h#includemacros.hvoidmain(){unsignedcharmid;DDRC=0xFF;PORTC=0xFF;ACSR=0x00;//启动模拟比较器参考电压接比较器正端中断屏蔽触发定时计数器1的捕获关闭while(1){mid=ACSR&0x20;//读出模拟比较器的输出值if(mid==0)PORTC|=BIT(0);//PC0=1elsePORTC&=~BIT(0);//PC0=0}}2彩灯(软件例子程序)/*---------------------------------Function:流水灯Author:CWBData:2010-05-05--------------------------------*/#includeiom16.hvoiddelay_ms(intms){intm,n;for(m=0;m=ms;m++)for(n=0;n=450;n++);}voidmain(){inti,j,k;DDRA=0xFF;DDRB=0xFF;DDRC=0xFF;DDRD=0xFF;PORTA=0x00;PORTB=0x00;PORTC=0x00;PORTD=0x00;while(1){j=0x01;for(i=0;i=6;i++){PORTA=j;PORTB=j;PORTD=j;delay_ms(600);j=(j1);}for(i=0;i=6;i++){PORTA=j;PORTB=j;PORTD=j;delay_ms(600);j=(j1);}}}3、定时计数器TC2#includeiom16v.h#pragmainterrupt_handlerMyCounter:20staticintiCounter=0;voidMyCounter(void){if(iCounter=10){//PORTA^=0xFF;//~PINA;//0xFF;//iCounter++;//iCounter=0;}elseiCounter=0;}voidmain(void){DDRA=0xFF;PORTA=0x00;//PORTB=0xFF;DDRB=0xFF;TCCR0=0x1B;//PWM相位可调,T/C0与输出引脚断开,CLK/64分频//00011011TCNT0=0x00;//从0开始计数OCR0=0x3E;//达到63时,比较匹配发生TIMSK=0x02;//中断屏蔽寄存器T/C0输出匹配中断使能#asm(sei);//总中断开放SREG|=0x80;while(1){//inti,j;//for(i=0;i1000;i++)//for(j=0;j400;j++);if(iCounter==8)PORTA^=0xFF;};}4、计数器TC0#includeiom16v.h#pragmainterrupt_handlerMyCounter:20staticintiCounter=0;voidMyCounter(void){if(iCounter=10){//PORTA^=0xFF;//~PINA;//0xFF;//iCounter++;//iCounter=0;}elseiCounter=0;}voidmain(void){DDRA=0xFF;PORTA=0x00;//PORTB=0xFF;DDRB=0xFF;TCCR0=0x1B;//PWM相位可调,T/C0与输出引脚断开,CLK/64分频//00011011TCNT0=0x00;//从0开始计数OCR0=0x3E;//达到63时,比较匹配发生TIMSK=0x02;//中断屏蔽寄存器T/C0输出匹配中断使能#asm('sei')/********************************************//不明原因,C中嵌入汇编不能用**********************************************/SREG|=0x80;//总中断开放SREG|=0x80;while(1){inti,j;//for(i=0;i1000;i++)//for(j=0;j400;j++);if(iCounter==8){PORTA^=0xFF;for(i=0;i1000;i++)for(j=0;j400;j++);}};}5、EEPROM/*访问单片机资源EEPROM*/#includeiom16v.h#definesei()SREG|=0X80#definecli()SREG&=0X7F//EEPROM控制寄存器位定义#defineEERE0//READ#defineEEWE1//WRITE#defineEEMWE2//总写入#defineWWRIE3//中断/*端口初始化*/void_init(void){DDRA=0XFF;PORTA=0XFF;}/*EEPROM读程序*/charEEPROM_R(unsignedintEEAdd){while(EECR&(1EEWE));//写等待EEAR=EEAdd;//设置读入地址EECR|=(1EERE);//读命令returnEEDR;}/*EEPROM写程序*/charEEPROM_W(unsignedintEEAdd,unsignedcharEEData){while(EECR&(1EEWE));//写等待EEAR=EEAdd;//设置写入地址EEDR=EEData;//设置写入数据EECR|=(1EEMWE);//总写入允许EECR|=(1EEWE);//开始写入}voidmain(){_init();cli();//关中断EEPROM_W(0X100,0X07);//将数据写入EEPROM中的0x0100单元PORTA=EEPROM_R(0X0100);//读取0x0100单元的数据,送显sei();//开中断/***********************开中断关中断的作用??*****************************/while(1);}6、计数器测频率#includeiom16v.h/*******************程序还有问题要解决**************************/voidmain(){DDRB=0x08;PORTB=0x00;//PB3(OC0)CONFIGoutputTCCR0=0x1B;//64分频pwm比较匹配发生oc0触发TCNT0=0x00;OCR0=0x80;//RECTWAVEASSR=0x00;//同步方式///T/C2目的定时1MSTCCR2=0x0B;//32fenpinCTC与输出引脚断开TCNT2=0x00;//从零开始记数OCR2=0x7D;//0b01111101~~125TCCR1A=0x00;TCCR1B=0x06;//时钟外部T1引酵下降驱动一般模式TCNT1H=0x00;TCNT1L=0x00;//从零开始记数ICR1H=0x00;//似乎没用到输入捕获寄存器??OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;//都为0TCNT1中也为0比较匹配貌似在这种情况不发生TIMSK=0x80;SREG|=0x80;//t/c2比较匹配中断开放全局中断开放}7、串口中断int//Target:M16//Crystal:8.0000Mhz//AVR单片机atmega16串口中断接收和发送程序。接收到字符后再发送出去#includeiom16v.h#includemacros.hunsignedcharcom_in_buf[1];voidport_init(void){PORTA=0xFF;DDRA=0xFF;PORTB=0x00;DDRB=0x00;PORTC=0x00;DDRC=0x00;PORTD=0x00;DDRD=0x00;}//UART0initialize//desiredbaudrate:9600//actual:baudrate:9615(0.2%)//charsize:8bit//parity:Disabledvoiduart0_init(void){UCSRB=0x00;//disablewhilesettingbaudrateUCSRA=0x00;UCSRC=BIT(URSEL)|0x06;UBRRL=0x33;//setbaudrateloUBRRH=0x00;//setbaudratehiUCSRB=0x98;}voidsend_data(unsignedcharback){while(!(UCSRA&(1UDRE)));UDR=back;}#pragmainterrupt_handleruart0_rx_isr:12voiduart0_rx_isr(void){//uarthasreceivedacharacterinUDRcom_in_buf[0]=UDR;send_data(com_in_buf[0]);}//callthisroutinetoinitializeallperipheralsvoidinit_devices(void){//stoperrantinterruptsuntilsetupCLI();//disableallinterruptsport_init();uart0_init();MCUCR=0x00;GICR=0x00;TIMSK=0x00;//timerinterruptsourcesSEI();//re-enableinterrupts//allperipheralsarenowinitialized}voidmain(void){charj;init_devices();while(1){for(j=1;j100;j++);}}8、中断#includeiom16v.h//#includemacros.hvoiddelay_ms(ms){inti;for(i=0;i=ms;i++)for(i=0;i=10;i++);}intx;voidmain(){DDRA=0xFF;PORTA=0xF0;//GICR=0x40;//INT0中断使能//通用中断控制寄存器//MCUCR=0x07;//上升沿触发//MCU控制寄存器//MCUCSR=0x00;//MCUCSR//MCU控制和状态寄存器//GIFR=0x40;//通用中断标志寄存器//SREG|=0x80;//全局使能,状态寄存器#asm(sei)while(1){PORTA=~(PORTA&0x04);delay_ms(50);}}//#pragmainterrupt_handlerint0_isr:2//voidint0_isr(void)//{//x++;//}9、键盘扫描#includeiom16v.hvoiddelay_ms(ms){inti;for(i=0;i=ms;i++)for(i=0;i=400;i++);}charScan(){chartem_key;DDRB=0X0F;PORTB=0B11110000;if(PINB==0XF0)return(0XFF);if(PINB&0X08==0)tem_key=0;elseif(PINB&0X10==0)tem_key=1;elseif(PINB&0X20==0)tem_key=2;elseif(PINB&0X30==0)tem_key=3;DDRB=0B11110000;//反转PORTB=0X0F;delay_ms(5);If(PINB&0X01==0)tem_key=tem_key+0;//获取按下键的行编码elseif(PINB&0X02==0)tem_key=tem_key+4;elseif(PINB&0X03==0)tem_key=tem_key+8;elseif(P

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功