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

📄 main.c

📁 AVR系列单片机与PS2口通讯子程序
💻 C
字号:
#include <iom8.h>
#include "board.h"
void intset(void);
volatile uchar no,star,bitno,data,ps2_time;
//*************//
void main(void)
{
  no=0;
  bitno=0;
  star=0;
  data=2;
  ps2_time=0;
  intset();
 //while(UCSRA&(1<<TXC));
// UDR=0xff;
while(1);
//{
  // while(UCSRA&(1<<TXC));
// UDR=0xff;
//}
}
//***********//
void intset(void)
{
 CLI(); //禁止所有中断
 MCUCR  = 0x00;
 MCUCSR = 0x80;//禁止JTAG
//**串口设置**//
 UCSRB = 0x00;//禁止中断
 UCSRA = 0x00;
 UCSRC =0x86;
 UBRRL = 0x0C;
 UBRRH = 0x00;
 UCSRB = 0x18; 
//**外部中断1**//
 MCUCR |= 0x08;
 MCUCSR|= 0x00;
 GICR  |= 0x80; 
 //**IO设置**//
 DDRD&=~(1<<4);
 //**定时器设置**//
 TCNT0  = 0x64;
 TIMSK|=0x01;
 TCCR0=0X03; 
 SEI();//开全局中断
}
//****外部中断程序****//
#pragma vector=INT1_vect
__interrupt void INT1_vcct_isr(void)
{
  ps2_time=0;
  bitno++;
  if((bitno==1)|| (bitno==10))  {return;}
  if(bitno==11)  {UDR=data;bitno=0;return;}
  data>>=1;
  if(PIND&(1<<4)) data+=0x80;      
}
//****定时器0溢出中断***//
#pragma vector=TIMER0_OVF_vect
__interrupt void TIMER0_ovf_isr(void)
{
  TCNT0  = 0x64;
  ps2_time++;
if(ps2_time>5)  {bitno=0;ps2_time=0;}  

}













⌨️ 快捷键说明

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