娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月27日(星期五)

2020年06月27日 | AVR PS/2 硬件中斷控制程序

發布者:未來感知 來源: eefocus關鍵字:AVR  硬件中斷  控制程序 手機看文章 掃描二維碼
隨時隨地手機看文章

/*********************************************************************
目    的:   建立操作PC鍵盤的示例程序(硬件中斷讀取PS/2接收到的數據)
目標系統:   基于AVR單片機                                                 
應用軟件:   ICCAVR                                                      
版    本:   Version 1.0                                                       
*********************************************************************/

/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
版本更新記錄:

----------------------------------------------------------------------
實驗內容:
按PC鍵盤,觀察單片機讀到的數據,使用PA/PB口的LED做指示。
----------------------------------------------------------------------
硬件連接:
將PA/PB口的LED指示燈使能開關切換到"ON"狀態
將PC鍵盤插入PS2接口,將PD3與PS2.SDA連接,將PD4與PS2.SCK連接
----------------------------------------------------------------------
注意事項: 
(1)若有加載庫函數,請將光盤根目錄下的“庫函數”下的“ICC_H”文件夾拷到D盤
(2)請詳細閱讀“使用必讀”及相關資料。
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/

#include
#include "D:ICC_HCmmICC.H"
#include "D:ICC_HPS2.H"

#define PRESS_DATA_DDR DDRA
#define PRESS_DATA_PORT PORTA
#define SHIFT_DATA_DDR DDRB
#define SHIFT_DATA_PORT PORTB

#define SET_SDA sbi(PORTD,4)
#define CLR_SDA cbi(PORTD,4)
#define GET_SDA gbi(PIND,4)
#define OUT_SDA sbi(DDRD,4)
#define IN_SDA cbi(DDRD,4)

#define SET_SCK sbi(PORTD,3)
#define CLR_SCK cbi(PORTD,3)
#define GET_SCK gbi(PIND,3)
#define OUT_SCK sbi(DDRD,3)
#define IN_SCK cbi(DDRD,3)

bool rcvF = 0; //是否收到字符標志
uint8 keyVal; //鍵值

/*--------------------------------------------------------------------
函數名稱:PS/2
函數功能:
注意事項:
提示說明:
輸 入:
返 回:
--------------------------------------------------------------------*/
#pragma interrupt_handler int1_isr:3
void int1_isr(void)
{
static uint8 rcvBits = 0; //接收次數,中斷次數
if((rcvBits>0) && (rcvBits<9))

keyVal=keyVal>>1; //數據是LSB格式
//IN_SDA; //當有對鍵盤有屬性設置時,注意輸入輸出切換
//DELAY();
if(GET_SDA) 
keyVal=keyVal|0x80; 
}
rcvBits++;
while(!GET_SCK); //等待PS/2CLK拉高

if(rcvBits>10)
{
rcvBits=0; //接收11次表示接收完一幀數據
rcvF=1; //標識有字符已經輸入
}
}
/*--------------------------------------------------------------------
函數名稱:PS/2
函數功能:
注意事項:
提示說明:
輸 入:
返 回:
--------------------------------------------------------------------*/
void keyHandle(uint8 val) 
{
uint8 i;
static bool isUp=0; //按鍵釋放動作標志
static bool shift=0; //shift鍵按下標志
rcvF = 0; 
PRESS_DATA_PORT = val; //狀態指示
if(!isUp)
{
switch(val)
{
case 0xF0 : // a relase action
isUp = 1;
break;
case 0x12 : // Left shift
shift = 1;
break;
case 0x59 : // Right shift
shift = 1;
break;
default:
if(!shift) // If shift not pressed

/*
for(i=0; unshifted[i][0]!=val && unshifted[i][0]; i++)
;
上述寫法較為靈活,但KEIL非UNIXC標準,不能采用該寫法
*/
for(i=0; unshifted[i][0]!=val && i<59; i++)
;
if(unshifted[i][0] == val) 
; //狀態指示


else // If shift pressed

/*
for(i=0; unshifted[i][0]!=val && unshifted[i][0]; i++)
;
上述寫法較為靈活,但KEIL非UNIXC標準,不能采用該寫法
*/
for(i=0; shifted[i][0]!=val && i<59; i++)
;
if(shifted[i][0] == val) 
SHIFT_DATA_PORT = val;//狀態指示
}
}
}
else 
{
isUp=0; 
switch(val)
{
case 0x12 : // Left SHIFT
shift = 0;
break;
case 0x59 : // Right SHIFT
shift = 0;
break;
}
}
}
/*--------------------------------------------------------------------
函數名稱:PS/2
函數功能:
注意事項:
提示說明:
輸 入:
返 回:
--------------------------------------------------------------------*/
void int1_init()
{
IN_SCK; // set SCK_DDR (PD3/INT1) as input
SET_SCK; // set SCK_PORT as high level,avoid triggering
MCUCR |= 0b11110011; // set PD3/INT1 as low level active
GICR |= 0b10000000; // enable global interrupt
SEI(); // enable external interrupt
}
/*--------------------------------------------------------------------
函數名稱:PS/2
函數功能:
注意事項:
提示說明:
輸 入:
返 回:
--------------------------------------------------------------------*/
void main(void)
{
PRESS_DATA_DDR = 0XFF;
SHIFT_DATA_DDR = 0XFF;
IN_SDA;
int1_init();
while(1)
{
if(rcvF)
keyHandle(keyVal);
}
}


關鍵字:AVR  硬件中斷  控制程序 引用地址:AVR PS/2 硬件中斷控制程序

上一篇:LCD12864子程序
下一篇:AVR PS/2 軟件查詢控制程序

推薦閱讀

集微網消息(文/Jimmy),華為在2018年3月底推出的P20 Pro標榜搭載三鏡頭和優質照相功能的設計,“徠卡三攝”名噪一時。隨著華為P20 Pro的熱賣,三攝概念也逐漸被消費者接受,上市不到三個月銷量攀升80%,深受消費者喜愛。為了拉近自身與三星和蘋果的差距,P20 Pro采取全面屏超薄設計,搭載分辨率分別為4000萬,2000萬和800萬像素的三顆鏡頭,其拍攝畫...
據外媒報道,美國當地時間周二,埃隆·馬斯克(Elon Musk)旗下太空公司SpaceX成功發射了獵鷹重型運載火箭,將24顆衛星送入三個不同的軌道,而火箭的兩個助推器幾乎同時安全降落在地球上。 馬斯克曾將此次任務描述為SpaceX迄今為止最艱難的一次測試,幸運的是,最終發射取得了成功。此次發射突顯出SpaceX作為全球最有價值科技企業之一的地位。據股票交易...
當我們寫鏈接器腳本的時候,我們會設置代碼段的起始鏈接地址為0x30008000(S3C2440)。如果對鏈接地址理解錯誤的話,可能會出現像我這樣的問題。Q:gboot的鏈接器腳本里寫的其實鏈接地址是內存中的0x30008000,再用交叉工具反匯編得到的start.S前幾行代碼地址都變成了0x30008000+,不太對啊。ARM啟動流程里面講處理器將NAND中的代碼復制了4K到墊腳石中,墊腳...
6月25日-26日,以“心芯本相印,變化有鯤鵬”為主題,由半導體投資聯盟和手機中國聯盟主辦,愛集微和廈門半導體投資集團承辦的第五屆集微半導體峰會在廈門海滄舉行。在26日上午舉行的第五屆集微半導體峰會主題峰會上,科技部所長戴國強出席并致辭。戴國強表示,集微半導體峰會舉辦的五年也正是我們國家集成電路產業高速發展的五年,也是集成電路產業大環境...

史海拾趣

問答坊 | AI 解惑

Cadence推出基于空間的、全芯片和模塊布線解決方案

Cadence設計系統有限公司日前宣布推出基于空間的、全芯片和模塊布線解決方案,Cadence Precision Router面向高級混合信號、模擬與定制數字設計,為實現設計性能閉合并更快實現量產,它允許設計者在設計過程中制造相關的效應建模。 復雜的互連規則, ...…

查看全部問答∨

哪位高手解釋下 DC-DC開關調節器 和 線型穩壓器的區別

如題。最近在找幾款芯片用用,發現這兩個大類,究竟有什么不同呢?哪位高手進來解釋下?萬分感謝!…

查看全部問答∨

16*16點陣

  點陣的各種驅動電路,如果大家有興趣的話就來發表一下吧!歡迎大家的交流…

查看全部問答∨

兄弟們,你們有誰用過swellsoftware的pegpro?

我下載的Evaluation如何創建,編譯項目呢. 如果哪位有全功能版的,可以短消息告訴我哈.非常感謝. 主要想個人學一下.…

查看全部問答∨

linux下觸摸屏驅動自動彈出右鍵菜單

linux下觸摸屏驅動如何實現自動彈出右鍵菜單的功能?比如按住2秒不放,則自動彈出右鍵菜單。 最好有代碼參考。 …

查看全部問答∨

用evc打開已有例子時 出現fatal error

下了一個本地數據庫的小例子 打開vcw的時候 evc提示 fatal error RC1015:cannot open include file \'afxres.h\' 請問是怎么回事? 缺少頭文件?   謝謝~ 怎么解決?…

查看全部問答∨

PB 怎樣 Attach Device

我在主機上PB用菜單上的Target/Attach Device連接設備時。 調試信息的輸出窗口輸出   The Kernel Debugger is waiting to connect with target. 請問為什么?   我在PB的connectity option已經定義了設備的地址。 我還需 ...…

查看全部問答∨

STM32一書錯誤百出很失望,不知道是否在出版要求以內

                                 STM32一書錯誤百出很失望,不知道是否在出版要求以內,看書的時候和電子板的stm3210x中文參考手冊對比到看才行。該 ...…

查看全部問答∨

求活動通過名單啊~

不是說每周三有會公布審核通過的名單的嗎? 很想要C2000開發板啊~ 管理員給力?。 ?

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 穆棱市| 平武县| 连江县| 凤翔县| 安塞县| 治多县| 弥勒县| 芷江| 胶州市| 锦屏县| 温泉县| 资阳市| 正宁县| 迁西县| 高平市| 沈阳市| 安国市| 游戏| 肃南| 宜川县| 云南省| 绥德县| 达孜县| 潼南县| 太康县| 仙桃市| 河南省| 翁牛特旗| 新河县| 岐山县| 莆田市| 玛纳斯县| 开远市| 芜湖县| 鲜城| 临桂县| 泰来县| 平凉市| 信阳市| 新疆| 勐海县|