欢迎来到天天文库
浏览记录
ID:40595928
大小:55.00 KB
页数:7页
时间:2019-08-04
《全国电子设计大赛C组程序清单》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序清单/*******************/主程序/*******************//*--------------Atmega16主控芯片晶振频率8MHZ--------------------*/#include#include#include"motor.h"#include"sensor.h"#include"wireless.h"#include"ctr.h"#include"debug.h"#include"def.h"volatileunsignedcharSpiRxDat[RX_PL
2、OAD_WIDTH];volatileunsignedcharUartRxByte;//串口接收字volatileunsignedcharUartTxByte;//串口发送控制字节BYTEMode=0;//模式:默认主车voidInitMCU(){//初始化串口UCSRB
3、=(1<4、(1<5、(1<6、=(1<7、F24L01();InitSensor();InitSmg();while(1){FlushOpState();//刷新光电传感器的状态AnalySta();//分析小车状态Ctrl();//输出控制命令}}-7-SIGNAL(SIG_INTERRUPT2){//接收到nRF24L01的数据SetRX_Mode();nRF24L01_RxPacket((unsignedchar*)SpiRxDat);}SIGNAL(SIG_UART_RECV){//接收来自M8的数据}/****************************/转弯90度并向前行驶适当距离/****8、************************/#include"wireless.h"#include#include#defineKEY1_DOWN!(PIND&(1<9、));UDR=byte;}voidUartTxStr(unsignedcharstr[]){unsignedchari=0;while(str[i]!=0){UartTxByte(str[i]);i++;DelayMs(2);}}intmain(){unsignedcharUartIsOk[]={"UartIsOK!"};DDRB10、=0x03;//LED输出PORTB11、=0x03;MCUCR12、=(1<13、(1<14、=(1<15、(1<16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
4、(1<5、(1<6、=(1<7、F24L01();InitSensor();InitSmg();while(1){FlushOpState();//刷新光电传感器的状态AnalySta();//分析小车状态Ctrl();//输出控制命令}}-7-SIGNAL(SIG_INTERRUPT2){//接收到nRF24L01的数据SetRX_Mode();nRF24L01_RxPacket((unsignedchar*)SpiRxDat);}SIGNAL(SIG_UART_RECV){//接收来自M8的数据}/****************************/转弯90度并向前行驶适当距离/****8、************************/#include"wireless.h"#include#include#defineKEY1_DOWN!(PIND&(1<9、));UDR=byte;}voidUartTxStr(unsignedcharstr[]){unsignedchari=0;while(str[i]!=0){UartTxByte(str[i]);i++;DelayMs(2);}}intmain(){unsignedcharUartIsOk[]={"UartIsOK!"};DDRB10、=0x03;//LED输出PORTB11、=0x03;MCUCR12、=(1<13、(1<14、=(1<15、(1<16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
5、(1<6、=(1<7、F24L01();InitSensor();InitSmg();while(1){FlushOpState();//刷新光电传感器的状态AnalySta();//分析小车状态Ctrl();//输出控制命令}}-7-SIGNAL(SIG_INTERRUPT2){//接收到nRF24L01的数据SetRX_Mode();nRF24L01_RxPacket((unsignedchar*)SpiRxDat);}SIGNAL(SIG_UART_RECV){//接收来自M8的数据}/****************************/转弯90度并向前行驶适当距离/****8、************************/#include"wireless.h"#include#include#defineKEY1_DOWN!(PIND&(1<9、));UDR=byte;}voidUartTxStr(unsignedcharstr[]){unsignedchari=0;while(str[i]!=0){UartTxByte(str[i]);i++;DelayMs(2);}}intmain(){unsignedcharUartIsOk[]={"UartIsOK!"};DDRB10、=0x03;//LED输出PORTB11、=0x03;MCUCR12、=(1<13、(1<14、=(1<15、(1<16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
6、=(1<7、F24L01();InitSensor();InitSmg();while(1){FlushOpState();//刷新光电传感器的状态AnalySta();//分析小车状态Ctrl();//输出控制命令}}-7-SIGNAL(SIG_INTERRUPT2){//接收到nRF24L01的数据SetRX_Mode();nRF24L01_RxPacket((unsignedchar*)SpiRxDat);}SIGNAL(SIG_UART_RECV){//接收来自M8的数据}/****************************/转弯90度并向前行驶适当距离/****8、************************/#include"wireless.h"#include#include#defineKEY1_DOWN!(PIND&(1<9、));UDR=byte;}voidUartTxStr(unsignedcharstr[]){unsignedchari=0;while(str[i]!=0){UartTxByte(str[i]);i++;DelayMs(2);}}intmain(){unsignedcharUartIsOk[]={"UartIsOK!"};DDRB10、=0x03;//LED输出PORTB11、=0x03;MCUCR12、=(1<13、(1<14、=(1<15、(1<16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
7、F24L01();InitSensor();InitSmg();while(1){FlushOpState();//刷新光电传感器的状态AnalySta();//分析小车状态Ctrl();//输出控制命令}}-7-SIGNAL(SIG_INTERRUPT2){//接收到nRF24L01的数据SetRX_Mode();nRF24L01_RxPacket((unsignedchar*)SpiRxDat);}SIGNAL(SIG_UART_RECV){//接收来自M8的数据}/****************************/转弯90度并向前行驶适当距离/****
8、************************/#include"wireless.h"#include#include#defineKEY1_DOWN!(PIND&(1<9、));UDR=byte;}voidUartTxStr(unsignedcharstr[]){unsignedchari=0;while(str[i]!=0){UartTxByte(str[i]);i++;DelayMs(2);}}intmain(){unsignedcharUartIsOk[]={"UartIsOK!"};DDRB10、=0x03;//LED输出PORTB11、=0x03;MCUCR12、=(1<13、(1<14、=(1<15、(1<16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
9、));UDR=byte;}voidUartTxStr(unsignedcharstr[]){unsignedchari=0;while(str[i]!=0){UartTxByte(str[i]);i++;DelayMs(2);}}intmain(){unsignedcharUartIsOk[]={"UartIsOK!"};DDRB
10、=0x03;//LED输出PORTB
11、=0x03;MCUCR
12、=(1<13、(1<14、=(1<15、(1<16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
13、(1<14、=(1<15、(1<16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
14、=(1<15、(1<16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
15、(1<16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
16、(1<17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
17、(1<18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB22、=0x03;}}/*
18、UBRRL=51;init_NRF24L01();sei();UartTxStr(UartIsOk);while(1);}SIGNAL(SIG_INTERRUPT0){//按键1两轮以相同速度前行100脉冲再停下if(KEY1_DOWN){DelayMs(200);if(KEY1_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x01;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB
19、=0x03;}}}SIGNAL(SIG_INTERRUPT1){//按键2右轮前进左轮后退以相同
20、速度走50脉冲if(KEY2_DOWN){DelayMs(200);if(KEY2_DOWN){PORTB&=~(PB1);TX_Buf[0]=0x02;nRF24L01_TxPacket((unsignedchar*)TX_Buf);TX_Buf[0]=0x00;PORTB
21、=0x03;}}}SIGNAL(SIG_INTERRUPT2){//无线中断SetRX_Mode();if(nRF24L01_RxPacket(RX_Buf)){PORTB&=~(PB0);//接收到数据点亮LED7UartTxStr(RX_Buf);-7-PORTB
22、=0x03;}}/*
此文档下载收益归作者所有