搜索
bottom↓
回复: 1

共享我的AVR处女作:-LIN总线收发测试DEMO

[复制链接]

出0入0汤圆

发表于 2006-5-15 16:53:43 | 显示全部楼层 |阅读模式
感谢阿莫版主,感谢OUTAVR网站,感谢各位DX的支持,我的第一个AVR作品-LIN总线收发测试DEMO,得以问世。现拿出来共享,她肯定有很多纰漏之处,欢迎大家批评指正。

祝OURAVR越办越好。

点击此处下载armok01117532.rar
头像被屏蔽

出0入0汤圆

发表于 2006-5-15 16:59:31 | 显示全部楼层
/******************************************************************



  File name:  lin-master.c

  Vesion:     v2006-6-15

  Author:     min sheng

  Function:   作为一个LIN总线的主节点,利用MCU的USART,查询方式发送一个字节0X11,

              中断方式接受自己发送出去的数据。

  开发背景:   MCU-attiny2313v-10SI

              LIN 收发器-MC33399D

              编辑器-UltraEdit-32

              编译器-WinAVR 20050214

                      GCC V2.0.5.48

              下载器-AVR STUDIO 4.12

              下载电缆-ATMEL原装串口下载线                           



******************************************************************/







#include <avr/io.h>

#include <avr/delay.h>

#include <avr/signal.h>





#define byte unsigned char

#define word unsigned int







void Flash_LED (void);

void Delay (word a);

void Initial_2313 (void);

void  USART_transmit (byte data_tr);



























//NOTE: main的返回值须为INT型。

int main (void){

   Initial_2313 ();

   Flash_LED();

   

   Delay (0x5fff);

   USART_transmit (0x11);

   

   while (1){;}      //加一个死循环

  

  }



















/************************************************

description: 指示灯闪烁

INPUT:   NONE

OUTPUT:  NONE

*************************************************/

void Flash_LED (void){

  PORTD &= ~(1<<PORTD5);

  Delay (0xfff);



  PORTD |= 1<<PORTD5;

  Delay (0xfff);



  PORTD &= ~(1<<PORTD5);

  Delay (0xfff);



  PORTD |= 1<<PORTD5;

  Delay (0xfff);



  PORTD &= ~(1<<PORTD5);

  Delay (0xfff);

  

  }



















/************************************************

description: 延时程序

INPUT:   延时时间

OUTPUT:  NONE

*************************************************/

void Delay (word a){

   word  i;       

   for (;a>0;a--){

      for (i=0xfff;i>0;i--)

        {;}

             }

   }

   

   













/************************************************

description: TINY2313的初始化程序

INPUT:   NONE

OUTPUT:  NONE

*************************************************/

void Initial_2313 (void){

  

  SREG &= ~(1<<7);    //close grobal interrupt.

  

  DDRD |= 1<<DDD5 ;      //LED control

  

  //initial  USART

  UBRRH = 0x02;              //set baud rate  2400b/s

  UBRRL = 0x07;

   

  /*UCSRC  UMSEL=0 UPM1:0=00 USBS=0 UCSZ1:0=11 UCPOL=0 */

  UCSRC = 0X06;              //set frame format   8bit data; 1bit stopbit

  

  /*RXC= TXC= UDRE= FE= DOR= UPE= U2X=0 MPCM=0 */

  UCSRA = 0X00;

  

  /*RXCIE=1 TXCIE=0 UDRIE=0 RXEN=1 TXEN=1 UCSZ2=0 RXB8=0 TXB8=0*/

  UCSRB = 0X98;               //enable transmitter and receiver

  

  

  SREG |= 1<<7;              //Enable grobal interrupt.

  //sei(); //使能全局中断

      

  }



















/************************************************

description: USART发送一个字节数据

INPUT:   待发送的一个字节数据

OUTPUT:  NONE

*************************************************/

void  USART_transmit (byte data_tr){

  while (!(UCSRA&0X20));     //wait for data buffer empty

  UDR = data_tr;



  }













/************************************************

description: USART中断接收一个数据

INPUT:   NONE

OUTPUT:  NONE

*************************************************/

SIGNAL(SIG_USART0_RX){

  byte data_re;

  data_re = UDR;

  if (data_re == 0x11) Flash_LED();

  }
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 16:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表