⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bishe.c

📁 AVR中mega162的串口以及zlg7289的例子
💻 C
字号:
#include "zlg7289.h"

#define BAUDRATE        9600	//波特率

#define LED0  0
#define LED1  1
#define LED2  0

#define LED0_ON()  PORTB&=~(1<<LED0)
#define LED1_ON()  PORTB&=~(1<<LED1) 
#define LED2_ON()  PORTA&=~(1<<LED2) 

#define LED0_OFF() PORTB|=(1<<LED0) 
#define LED1_OFF() PORTB|=(1<<LED1) 
#define LED2_OFF() PORTA|=(1<<LED2) 

volatile unsigned char PC_COMMAND; 

//-----------------------------------------------------------------

void uart0_init(void)
{
 UCSR0B = 0x00; //disable while setting baud rate
 UCSR0A = 0x00; //disable while setting baud rate
 UBRR0L =(F_CPU/BAUDRATE/16-1)%256;
 UBRR0H =(F_CPU/BAUDRATE/16-1)/256;
 UCSR0C = (1<<URSEL0) | (3<<UCSZ00);
// UCSR0B = (1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0); //enable
  UCSR0B = (1<<RXEN0)|(1<<TXEN0); //enable
}

void put_c(unsigned char c) //发送采用查询方式
{
	while( !(UCSR0A & (1<<UDRE0)) );
	UDR0=c;
	while( !(UCSR0A & (1<<TXC0)) );
	 UCSR0A|=(1<<TXC0);             
}

//-------------------------------------------------------------------
 


void port_init(void)
{
 DDRB|=(1<<LED0)|(1<<LED1);
 DDRA|=(1<<LED2) ;
}

void external_intrupt(void)
{
   GICR= 0x80;//启用外部中断1
   MCUCR= 0x00; //低电平触发
}

void Key_Use(unsigned char Key)
{
 switch (Key)  
  {  
   case 0x00:break;  
   case 0x01:break;  
   case 0x02:break;  
   case 0x03:break;  
   case 0x04:break;  
   case 0x05:break;  
   case 0x06:break;  
   case 0x07:break;  
   case 0x08:break;  
   case 0x09:break;  
   case 0x0A:break;  
   case 0x0B:break;  
   case 0x0C:break;  
   case 0x0D:break;  
   case 0x0E:break;  
   case 0x0F:break;  
   case 0x10:break;  
   case 0x11:break;  
   case 0x12:break;  
   case 0x13:break;  
   case 0x14:break;  
   case 0x15:break;  
   case 0x16:break;  
   case 0x17:break;  
   case 0x18:break;  
   case 0x19:break;  
   case 0x1A:break;  
   case 0x1B:break;  
   case 0x1C:break;  
   case 0x1D:break;  
   case 0x1E:break;  
   case 0x1F:break;  
   case 0x20:break;  
   case 0x21:break;  
   case 0x22:break;  
   case 0x23:break;  
   case 0x24:break;  
   case 0x25:break;  
   case 0x26:break;  
   case 0x27:break;  
   case 0x28:break;  
   case 0x29:break;  
   case 0x2A:break;  
   case 0x2B:break;  
   case 0x2C:break;  
   case 0x2D:break;  
   case 0x2E:break;  
   case 0x2F:break;  
   case 0x30:break;  
   case 0x31:break;  
   case 0x32:break;  
   case 0x33:break;  
   case 0x34:break;  
   case 0x35:break;  
   case 0x36:break;  
   case 0x37:break;  
   case 0x38:break;  
   case 0x39:break;  
   case 0x3A:break;  
   case 0x3B:break;  
   case 0x3C:break;  
   case 0x3D:break;  
   case 0x3E:break;  
   case 0x3F:break;  
  }  
}



int main(void)
{
	 
	cli();
    port_init();
	ZLG7289_Init();
	external_intrupt();
	uart0_init();
	sei();
	LED0_OFF() ;
	LED1_OFF();
	LED2_ON() ;   
 	while(1)
	{	 
		;
	}
	 
}

SIGNAL(SIG_INTERRUPT1) //INT1中断服务程序
{
     cli();
   //硬件自动清除INTF0标志位
	PC_COMMAND=ZLG7289_Key() ;
	Delay_Nms(10);	
	PORTB=PC_COMMAND ;
	put_c(PC_COMMAND) ;  
    put_c(0x01) ;   
	Delay_Nms(100);
	//sei();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -