/*
HC-06蓝牙模块 ATmega16单片机
VCC----------------VCC
GND----------------GND
TXD----------------RXD(PD0端口,设置输入)
RXD----------------TXD(PD1端口,设置输出)
*/
/*ICCAVR7.2编程软件*/
/*使用内部8M晶振*/
/*手机搜索下载<蓝牙串口SPP>*/
/*头文件*/
#include #include /*宏定义*/ #define uchar unsigned char #define uint unsigned int /*全局变量*/ uchar rdata; uchar flag=0; /*端口初始化*/ void IO_init(void) { DDRA = 0XFF; DDRB = 0XF0; DDRC = 0XFF; //DDRD = 0XFF; PORTA = 0X00; PORTB = 0X00; PORTC = 0XFF; //PORTD = 0XFF; } /*延时函数*/ void delayms(uint i) { while(i--) { uint j; for(j=1;j<=1332;j++); } } /*串口初始化,波特率设置*/ void uart_init() { /*控制寄存器清零*/ UCSRB=0x00; UCSRA=0x00; /*异步模式,禁止奇偶校验,停止位为1位,数据位为8位*/ UCSRC=(1< UBRRH=(unsigned char)(0x33>>8); UBRRL=(unsigned char)0x33; /*接收、发送使能,接收中断使能*/ UCSRB=(1< SREG=BIT(7); /*配置TX为输出*/ DDRD|=0x02; } /*数据发送*/ void uart_senddata(uchar data) { /*第五位UDRE为高,数据寄存器空*/ while(!(UCSRA&(BIT(UDRE)))); /*发数据至UDR*/ UDR=data; /*第六位TXC高, 发送结束*/ while(!(UCSRA&(BIT(TXC)))); /*置位TXC*/ UCSRA|=BIT(TXC); } /*数据接收中断服务*/ #pragma interrupt_handler uart_recdata:12 void uart_recdata(void) { UCSRB&=~BIT(RXCIE); rdata=UDR; flag=1; UCSRB|=BIT(RXCIE); } /*主函数*/ void main(void) { /*端口初始化*/ IO_init(); /*串口初始化*/ uart_init(); /*大循环*/ while(1) { /*接收到蓝牙数据后发送*/ if(flag) { uart_senddata(rdata); flag=0; } /*LED灯控制*/ switch(rdata) { case 0xFF: PORTC=0xFE; delayms(2000); PORTC=0XFF; break; case 0xFE: PORTC=0xFD; delayms(2000); PORTC=0XFF; break; case 0xFD: PORTC=0Xfb; delayms(2000); PORTC=0XFF; break; case 0xFB: PORTC=0xF7; delayms(2000); PORTC=0XFF; break; } } }
上一篇:使用excel制作的AVR寄存器配置助手---轻松搞定AVR
下一篇:Atmega16l单相逆变器SPWM原理图PCB及源程序
推荐阅读最新更新时间:2024-11-07 11:29
设计资源 培训 开发板 精华推荐
- AstroBerry DIY Board V2
- FDC2214RGHT验证板
- 【训练营_进阶班】基于阿里云智能的插座-699720A-贾金鹏
- MIC2177 的典型应用:2.5A 同步降压稳压器
- ADP2503-5.0-EVALZ,用于 ADP2503ACPZ-5.0-R7、0.6 A、5V 降压升压转换器的评估板
- 【物联网】鸿蒙物联网智能Wifi开关+4233052A
- LT8705AIUHF 同步 4 开关降压-升压型 DC/DC 控制器的典型应用
- AM2F-2412SH30Z 12V 2W DC/DC 转换器的典型应用
- LT3066EMSE LED 驱动器和电流源的典型应用电路
- LT4320IDD 理想二极管桥控制器的典型应用电路