mega8驱动PTR2000发送数据

发布者:姑苏清风泉源客最新更新时间:2016-10-24 来源: eefocus关键字:mega8  驱动PTR2000  发送数据 手机看文章 扫描二维码
随时随地手机看文章
#include

#include
#define fosc 1000000 //晶振1MHZ
#define baud 4800  //波特率

#define led1 (1<<4)
#define led2 (1<<5)
#define led3 (1<<2)
#define led4 (1<<3)

#define ptr_TXEN       (1<<3)
#define send_mode  PORTD|=ptr_TXEN
#define rcv_mode   PORTD&=~ptr_TXEN

#define ptr_CS  (1<<2)
#define ch4339   PORTD&=~ptr_CS
#define ch4343   PORTD|=ptr_CS
void Delay(void);


void port_init(void)
{
 PORTB = 0xff;
 DDRB  = 0xFF;
 PORTC = 0x7f; //m103 output only
 DDRC  = 0x7F;
 PORTD = 0xff;
 DDRD  = 0xFc;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 CLI(); //disable all interrupts
 port_init();

 MCUCR = 0x00;
 GICR  = 0x00;
 TIMSK = 0x00; //timer interrupt sources
 SEI(); //re-enable interrupts
 //all peripherals are now initialized
}
/*****************字符输出函数*****************/
void putchar(unsigned char c)
 {
 while (!(UCSRA&(1<  UDR=c;
 }

void uart_init(void)
 {
 //OSCCAL=0xA1;//在主程序中设置
 UCSRB=(1<  //允许接收中断、发送和接收
   UBRRL=(fosc/16/baud-1)%256;
   UBRRH=((fosc/16/baud-1)/256)&0b01111111;
 UCSRC=(1<  //8位数据+1位STOP位
 }
 
 
void Delay(void)
{unsigned int i,j;
  for(i=5;i>0;i--){for(j=5500;j>0;j--);}
}

void ptr_init(void)
{send_mode;
 ch4339;
 Delay();
}

void main(void)
{unsigned char i=0;Delay();
init_devices();
uart_init();
ptr_init();
while(1)
{putchar(i);
 switch (i%4)
  {
  case 0x00:
   {PORTC=(PORTC|0x3c)&(~led1);break;}
  case 0x01:
   {PORTC=(PORTC|0x3c)&(~led2);break;}
  case 0x02:
   {PORTC=(PORTC|0x3c)&(~led3);break;}
  case 0x03:
   {PORTC=(PORTC|0x3c)&(~led4);break;}  
  default:
  { break;}
  }
Delay();i++;
}
}

关键字:mega8  驱动PTR2000  发送数据 引用地址:mega8驱动PTR2000发送数据

上一篇:mega8驱动PTR2000接收数据
下一篇:mega8驱动PTR8000接收数据

推荐阅读最新更新时间:2024-03-16 15:17

多串口数据接收和发送
对于ARM7串口接收、发送数据的处理中,一般都会涉及到中断,但是有时候有的数据可以丢弃,有的必须接收或发送。有两种处理方法: 1、中断优先级的设置可以。中断的话,直接调用自己的中断处理函数。 2、可以用查询方式来接收或发送。查询的话,直接查看接收或发送状态(LPC2000里好像是LSR寄存器),根据状态来接受或发送。 对于多串口操作,个人觉得,可以用查询方式+中断方式来处理。
[单片机]
STM8S003F使用IO口模拟串口(三)使用中断方式发送和接收数据
在前两篇文章中我们介绍了IO口模拟串口发送数据和接收数据,前两种方法都是使用定时器来进行发送和接收,没有用到中断,优点是逻辑简单,但是缺点很明显,只能进行单个字节的发送和接收,而且不能同时工作。因此在实际工程中没有什么作用,仅供学习使用。使用中断方式我们可以发送和接收多个字节的数据。 1、使用中断方式进行IO口模拟串口发送和接收数据的原理 这篇文章我将使用中断的方式进行发送和接收,同样的,由于原理缺陷,这篇文章介绍的方法无法同时接收和发送,而且由于发送会延时,是一个不太好的方法,仅供学习使用。 注意:这篇文章实现的IO口模拟串口无法同时接收和发送数据!如有需要在实际项目中使用IO口模拟串口工作,请移步: 1.1、发送数据的
[单片机]
stm32串口发送数据最高位错误问题
最近,在做基于stm32f401串口的ModBus协议通信,遇到了stm32串口发送数据的问题。花了一整天去查找问题,从ModBus协议格式、调度算法到串口配置,最终终于把问题解决,记录下来。 问题描述: ModBus协议中配置stm32f401串口为奇校验,8位数据位,1位停止位,程序如下: void uart_init( u32 bound ) { //GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructur
[单片机]
STM32实现USART+DMA接收未知长度的数据发送
前言:开始学USART+DMA的时候看到帖子《STM32 UART DMA实现未知数据长度接收》,觉得方法妙极了。此下出自此帖子——(整体的思路是这样的,一开始设置好DMA接收,可以把缓冲区长度设置为帧最大长度,我们可以把RX连接到定时器的管脚输入端,并且一开始设置输入并且使能引脚下降沿中断,当帧的第一个字节发送时,因为起始位为低电平,空闲时UART为高电平,满足条件,进入中断,禁止中断,并且在中断中开启定时器,该定时器工作在复位模式,上升沿复位,并且设置好定时器输出比较值为超时时间,比如20ms,这样,在传输后面字节时,肯定会有高低电平出现,即便是传输的是0x00,0xFF,虽然UART数据区不变,但是都为1,或都为0,但是因为
[单片机]
dsPIC33F串口通讯中断接收发送数据UART
/* 功能描述: 串行通讯程序,DSP中断收到8个数据后,将收到的8个数 据以中断发送方式返送回发送方。 * */ #include p30f6014.h //ds30f6014头文件 unsigned int receive ; // 接收数据数组 unsigned int send ; // 发送数据数组 unsigned int receive_count=0; // 接收数据个数计数 unsigned int send_count=0; // 发送数据个数计数 unsigned int *pointer; // 发送指针 unsigned int Receiveflag; // =1,接收到8个数据 /* 函
[单片机]
STM32CubeMx开发之路—3发送USART数据和printf重定向
运行环境 Windows10 STM32CubeMX___Version 5.0.0 Keil5(MDK5)___Version 5.15 简介 本例程主要讲解如何通过串口发送数据和重定向printf STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx(Keil5)开发之路—1配置第一个项目 STM32CubeMx USART1配置 1——点击USART1进行设置 2——模式选择Asynchronous异步传输 3——可以看到右边自动出现了Tx和Rx 4——可以自行设置波特率,停止位,校验位等参数 代码修改 1——选择main.c文件 2——在USER CODE中添加如下代码,重定向printf
[单片机]
STM32CubeMx开发之路—3<font color='red'>发送</font>USART<font color='red'>数据</font>和printf重定向
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved