?? main._c
字號:
/******************************************************************************
//程序功能解碼PC鍵盤,然后把鍵盤碼值通過串口發送到串口顯示
//晶振頻率:16 MHZ
//單片機類型:maget 16
//編寫日期:2009年3月13日 謝巍
*******************************************************************************/
#include <iom16v.h>
#include <macros.h>
#define IRsignal (PINA&BIT(0)) //檢測一個端口電平輸入情況就要這樣定義了
#define DIR_I DDRA&=~BIT(0)
#define DIR_O DDRA|=BIT(0)
//定義全局變量
unsigned char KB_HitFlag = 0; //按鍵標志
unsigned char KB_UpFlag = 0; //抬起標志
unsigned char KB_Buf=0; //鍵盤緩沖區
//外部中斷初始化函數
void init_devices(void)
{
MCUCR = 0x02; //INT1 的下降沿產生異步中斷請求
GICR = 0x40; //INT1中斷使能
TIMSK = 0x00; //timer interrupt sources
SEI(); //打開外部所有中斷 兩種表達方式是相同的
}
//外部中斷1中斷服務函數
#pragma interrupt_handler int1_isr:2
void int1_isr(void)
{
static unsigned char cnt = 0;
static unsigned char k=0;
if ( cnt == 0 ) //起始位
{;
}
else if ( cnt <= 8 ) //數據位
{
k >>= 1;
if (IRsignal==BIT(0))
k|= 0x80;
}
else //校驗位和停止位
{;
}
cnt++;
if ( cnt >= 11 ) //一幀數據接收完畢
{
cnt = 0;
if ( k == 0xF0 ) //抬起標志
{
KB_UpFlag = 1;
}
else
{
if ( KB_UpFlag )
{
KB_UpFlag = 0;
}
else
{
KB_Buf = k;
k=0;
KB_HitFlag = 1;
put_c(KB_Buf);
}
}
}
}
void main()
{
init_devices();
init_USART();
KB_Buf=0;
while(1)
{
;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -