音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

單片機(jī)驅(qū)動(dòng)標(biāo)準(zhǔn)pc機(jī)鍵盤的C51程序

作者:turmary 欄目:單片機(jī)
單片機(jī)驅(qū)動(dòng)標(biāo)準(zhǔn)pc機(jī)鍵盤的C51程序
單片機(jī)驅(qū)動(dòng)標(biāo)準(zhǔn)pc機(jī)鍵盤的C51程序


網(wǎng)上流行的這個(gè)程充很垃圾,

在我的單片機(jī)上無論如何都調(diào)試不成功.

正確的程序見http://home.hn8868.com/tary/download.html

該程序由AVR程序移植過來...

C語(yǔ)言寫的,風(fēng)格棒極了.

在P1口顯示ASCII嗎,也有使用LCD1602顯示的,需要的請(qǐng)連系我.

以下是主要的代碼KB.C

#include <ATMEL\AT89X52.h>
#include "Pindefs.h"
#include "kb.h"
#include "gpr.h"
#include "Disp1602.h"
#include "Scancodes.h"


#define BUFF_SIZE 32

unsigned CHAR edge, bitcount;    // 0 = neg. 1 = pos.
unsigned CHAR kb_buffer[BUFF_SIZE];
unsigned CHAR *inpt, *outpt;
unsigned CHAR buffcnt;


void init_kb(void)
{
    inpt = kb_buffer;    // Initialize buffer
    outpt = kb_buffer;
    buffcnt = 0;

    // INT0 interrupt on falling edge

    edge = 0;        // 0 = falling edge 1 = rising edge
    bitcount = 11;
}


void INT0_interrupt(void) interrupt 0 using 2
{
    static unsigned CHAR cdata;    // Holds the received scan code

    EA = 0;

    if (!edge)         // Routine entered at falling edge
    {
        if(bitcount < 11 && bitcount > 2)    // Bit 3 to 10 is data. Parity bit,
        {     // start and stop bits are ignored.
            cdata = (cdata >> 1);
            if(PIND)
                cdata = cdata | 0x80;    // Store a '1'
        }

        /*MCUCR = 3; */    // Set interrupt on rising edge
        edge = 1;

    }
    if (edge) {         // Routine entered at rising edge
        /*MCUCR = 2; */    // Set interrupt on falling edge
        edge = 0;

        if(--bitcount == 0)    // All bits received
        {
            decode(cdata);
            bitcount = 11;
        }
    }
    EA = 1;
}


void decode(unsigned CHAR sc)
{
    //extern void clr(void);
    static unsigned CHAR is_up = 0, shift = 0, mode = 0;
    unsigned CHAR i;

    if (!is_up)    // Last data received was the up-key identifier
    {
        SWITCH (sc)
        {
        case 0xF0 :            // The up-key identifier
            is_up = 1;
            break;
        case 0x12 :            // Left SHIFT
            shift = 1;
            break;
        case 0x59 :            // Right SHIFT
            shift = 1;
            break;
        case 0x05 :            // F1
            if(mode == 0)
                mode = 1;        // Enter scan code mode
            if(mode == 2)
                mode = 3;        // Leave scan code mode
            break;
        default:
            if(mode == 0 || mode == 3)    // If ASCII mode
            {
                if(!shift)        // If shift not pressed,
                {             // do a table look-up
                    for(i = 0; unshifted[i][0]!=sc && unshifted[i][0]; i++);
                    if (unshifted[i][0] == sc) {
                        put_kbbuff(unshifted[i][1]);
                    }
                } else {        // If shift pressed
                    for(i = 0; shifted[i][0]!=sc && shifted[i][0]; i++);
                    if (shifted[i][0] == sc) {
                        put_kbbuff(shifted[i][1]);
                    }
                }
            } else{             // Scan code mode
                print_hexbyte(sc);   &n
2樓: >>參與討論
viewtech
硬件如何連接....
以下所說內(nèi)容在哪里?

按照網(wǎng)上的文章中說明的接法即可,


3樓: >>參與討論
fish1983
支持
支持

4樓: >>參與討論
turmary
硬件接法
數(shù)據(jù)線接P2.3
時(shí)鐘線接P3.2(INT0)
鍵盤的電源當(dāng)然接5V與GND.
P1口接八個(gè)上拉發(fā)光二極管

5樓: >>參與討論
turmary
圖片
 

* - 本貼最后修改時(shí)間:2007-3-7 19:00:07 修改者:turmary

6樓: >>參與討論
binbinwb
有意思
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
程序問題
要得到2.5V基準(zhǔn)電壓用什么芯片好?
32輸入與32路輸出的方案!!!
cy7c68013的EEPRPM引導(dǎo)裝載問題
輸出一個(gè)字符是不是要4個(gè)脈沖?
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)