91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5.90KB
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2024-04-20
  • 語言: C/C++
  • 標(biāo)簽: 串口通訊??ATM??GA??串口??12??

資源簡介

//DMAVR-L型開發(fā)板RS485通信實(shí)驗(yàn),程序具有收發(fā)一體的功能
//RS485之間通過雙絞線連接,如果距離近,可以不使用120歐電阻匹配
//將2個DMAVR-L板子通過導(dǎo)線(雙絞線、杜邦線等)連接,連接方式為A-A,B-B
//將該程序分別下載到2個板子中,按任意一個板子的4個按鍵,都會將鍵值顯示到另外一個板子的LED燈上
//顯示LED為二進(jìn)制形式,比如1,顯示的是D1滅,其他的都亮
//發(fā)送端按下按鍵時,8個LED燈會同時滅掉
//也可以將485接口與485轉(zhuǎn)232模塊連接通信,通信操作方式一樣,按4個按鍵發(fā)送不同的鍵值
//電腦端發(fā)送的話一定要16進(jìn)制,單字節(jié)發(fā)送
//硬件相關(guān)的配置文件在Config.h里,自己建立項(xiàng)目時,需要復(fù)制到項(xiàng)目文件夾下
//編譯環(huán)境 AVR Studio 4.17/AVR GCC 優(yōu)化度-00
//系統(tǒng)時鐘16MHZ,設(shè)置熔絲位為外部高頻石英晶體振蕩,啟動時間4.1ms


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

// 包含文件
//***********************************************************************
#include <string.h>
#include <stdio.h>
#define F_CPU 16000000 // 單片機(jī)主頻為16MHz,用于延時子程序,熔絲位必須設(shè)置到外部高頻晶振才行
#include <util/delay.h>
#include <avr/io.h>
#include <avr/iom128.h>
#include <avr/interrupt.h>    //中斷信號頭文件
#include  <avr/pgmspace.h>  //須增加的頭文件,用來將數(shù)據(jù)存放在flash中
#include "Config.h"                  //配置頭文件,與硬件相關(guān)的配置在這里更改

uchar key=0xFF;
uint   tx_count=200,tx_flag=0xff;
static uchar A1,A2,A3;                                  
uchar usart_rx_data=0xff;
volatile  uchar key_check;
volatile  uchar key_checkin;

uchar aa;

//***********************************************************************
//               MSP430IO口初始化
//***********************************************************************
void Port_Init()
{
  LEDDDR  = 0xFF;                      //設(shè)置IO口方向?yàn)檩敵?br />
  LED = 0xFF;                          //PE口初始設(shè)置為FF

  KEYDDR  = 0x00;    //設(shè)置為輸入,并且要打開上拉電阻
  
  KEYDDR = 0x00 | (1<<RS485_CTR_RDE); 

  KEYPort |= ((1 << PD1) |(1 << PD5)|(1 << PD6)|(1 << PD7)); //四位獨(dú)立按鍵連接在PD1/PD5/PD6/PD7上

  
}

//**********************************************************************
// 鍵盤掃描子程序,采用逐鍵掃描的方式
//**********************************************************************

uchar keyboardscan(void) 
{

  key_checkin=KEYRead;          //讀取IO口狀態(tài),判斷是否有鍵按下
  key_checkin=KEYRead;          //讀取IO口狀態(tài),判斷是否有鍵按下

  key_checkin&= 0xE2;          //讀取IO口狀態(tài),判斷是否有鍵按下

  if(key_checkin!=0xE2)            //IO口值發(fā)生變化則表示有鍵按下
  {
    delay_ms(20);                  //鍵盤消抖,延時20MS

    key_checkin=KEYRead;
key_checkin&= 0xE2;

    if(key_checkin!=0xE2) //再次讀取狀態(tài),判斷是否有按鍵按下
    {     
      key_check=KEYRead;

      switch (key_check & 0xE2)
      {
      case 0xE0:key=1;break; //S1按下

      case 0xC2:key=2;break; //S2按下

case 0xA2:key=3;break; //S3按下

      case 0x62:key=4;break; //S4按下

      }
          
    }
  }

 
 else
  {
  return(key);
  }
}

//*************************************************************************
//               MSP430串口1初始化
//*************************************************************************
void UART1_Init()
{
 
 // DDRD |= (1<<PD3);
  
  //DDRD &= ~(1<<PD2); 

  UCSR1A=0x00;                                 //單倍速模式
  
  UCSR1B=0x98;                                 //接收中斷允許,發(fā)送結(jié)束和寄存器空中斷關(guān)閉,采用查詢發(fā)送模式                               
  
  UCSR1C=(1<<UCSZ11)|(1<<UCSZ10);              //寫UCSRC寄存器,異步通信無校驗(yàn),8位數(shù)據(jù)1位停止位
  
  UBRR1H=baud_h;                               //寫波特率的值
  
  UBRR1L=baud_l; 
}

//*************************************************************************
//              串口1發(fā)送數(shù)據(jù)函數(shù)
//*************************************************************************

void Send_Byte(uchar usart_tx_data)
{
  RS485_CTR1;

  while(!(UCSR1A&(1<<UDRE1))); //等待發(fā)送寄存器空

  UDR1=usart_tx_data; //寫入發(fā)送數(shù)據(jù)

  while(!(UCSR1A&(1<<TXC1))); //等待發(fā)送完畢

  UCSR1A|=(1<<TXC1);

  delay_ms(5);                      //切換之前先有個小延時
  
  RS485_CTR0;
}

資源截圖

代碼片段和文件信息

//********************************************************************
//DMAVR-L型開發(fā)板RS485通信實(shí)驗(yàn),程序具有收發(fā)一體的功能
//RS485之間通過雙絞線連接,如果距離近,可以不使用120歐電阻匹配
//將2個DMAVR-L板子通過導(dǎo)線(雙絞線、杜邦線等)連接,連接方式為A-AB-B
//將該程序分別下載到2個板子中,按任意一個板子的4個按鍵,都會將鍵值顯示到另外一個板子的LED燈上
//顯示LED為二進(jìn)制形式,比如1,顯示的是D1滅,其他的都亮
//發(fā)送端按下按鍵時,8個LED燈會同時滅掉
//也可以將485接口與485轉(zhuǎn)232模塊連接通信,通信操作方式一樣,按4個按鍵發(fā)送不同的鍵值
//電腦端發(fā)送的話一定要16進(jìn)制,單字節(jié)發(fā)送
//硬件相關(guān)的配置文件在Config.h里,自己建立項(xiàng)目時,需要復(fù)制到項(xiàng)目文件夾下
//編譯環(huán)境?AVR?Studio?4.17/AVR?GCC?優(yōu)化度-00
//系統(tǒng)時鐘16MHZ,設(shè)置熔絲位為外部高頻石英晶體振蕩,啟動時間4.1ms
//作者:www.avrgcc.com
//日期:2014.07.8

//***********************************************************************
// 包含文件
//***********************************************************************
#include?
#include?
#define ?F_CPU 16000000 //?單片機(jī)主頻為16MHz用于延時子程序,熔絲位必須設(shè)置到外部高頻晶振才行
#include?
#include?
#include?
#include???? //中斷信號頭文件
#include???? //須增加的頭文件,用來將數(shù)據(jù)存放在flash中
#include?“Config.h“????????????????? //配置頭文件,與硬件相關(guān)的配置在這里更改

uchar?key=0xFF;
uint???tx_count=200tx_flag=0xff;
static?uchar?A1A2A3;??????????????????????????????????
uchar?usart_rx_data=0xff;
volatile??uchar?key_check;
volatile??uchar?key_checkin;

uchar?aa;

//***********************************************************************
//???????????????MSP430IO口初始化
//***********************************************************************
void?Port_Init()
{
??LEDDDR??=?0xFF;??????????????????????//設(shè)置IO口方向?yàn)檩敵?br/>
??LED?=?0xFF;??????????????????????????//PE口初始設(shè)置為FF

??KEYDDR??=?0x00; ???//設(shè)置為輸入,并且要打開上拉電阻
??
??KEYDDR?=?0x00?|?(1<
??KEYPort?|=?((1?<
??
}

//**********************************************************************
// 鍵盤掃描子程序,采用逐鍵掃描的方式
//**********************************************************************

uchar?keyboardscan(void)?
{

??key_checkin=KEYRead;?????????? //讀取IO口狀態(tài),判斷是否有鍵按下
??key_checkin=KEYRead;?????????? //讀取IO口狀態(tài),判斷是否有鍵按下

??key_checkin&=?0xE2;?????????? //讀取IO口狀態(tài),判斷是否有鍵按下

??if(key_checkin!=0xE2)???????????? //IO口值發(fā)生變化則表示有鍵按下
?? {
???? delay_ms(20);?????????????????? //鍵盤消抖,延時20MS

???? key_checkin=KEYRead;
key_checkin&=?0xE2;

???? if(key_checkin!=0xE2) //再次讀取狀態(tài),判斷是否有按鍵按下
???? {?????
????? key_check=KEYRead;

????? switch?(key_check?&?0xE2)
????? {
????? case?0xE0:key=1;break; //S1按下

????? case?0xC2:key=2;break; //S2按下

case?0xA2:key=3;break; //S3按下

????? case?0x62:key=4;break; //S4按下

????? }
??????????
???? }
??}

?
?else
?

評論

共有 條評論