8255A(使用C語言) - 第 2 頁

第 2 頁,共 2 頁 首頁首頁 1 2
顯示結果從第 11 筆 到 12 筆,共計 12 筆
  1. #11
    會員
    註冊日期
    2002-03-08
    討論區文章
    29
    加油!!加油!!

  2. #12
    會員
    註冊日期
    2006-09-16
    所在地區
    ADSL 1M/64
    討論區文章
    2

    回覆: 8255A(使用C語言)

    小弟我也類似的問題....想要麻煩大大幫我解一下,也是關於8255晶片控制的
    以下是原程式:
    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>
    #include "LPT_Win.C" //引入實驗卡所提共各種I/O函數

    #define PA 0x00 //定義8255各個Port與控制暫存器之位址
    #define PB 0x01
    #define PC 0x02
    #define Ctrl 0x03

    main( )
    {
    char key=0,prv_key=0;
    int i,buf,tst,tmp=0;

    LoadIODLL( ); //載入WIN32 I/O動態連結檔
    Set_EPP( ); //若平行埠為ECP模式,則將導向EPP模式
    clrscr( ); //清除控制台模式視窗螢幕
    WR_Port(Ctrl,0x89); //規劃8255為Mode 0,且PA為輸出,PC為輸入
    WR_Port(PA,0xff); //起始時所有LEDs皆不顯示
    printf("Select display modes or Select 'Q'to exit\n"); //按鍵功能畫面顯示
    printf("'1': Display the corresponding 'ON' positiions of DIP S.W\n");
    printf("'2': Display the highest 'ON' position of DIP S.W\n");
    printf("'3': Display the sum of the 'ON' numbers of DIP S.W\n");


    do{
    if(kbhit( )) //按鍵輸入偵測
    {
    key=getch( ); //取出鍵值
    if(key>0x60)
    key=key-0x20; //強制將小寫鍵轉為大寫鍵
    }
    else
    key=prv_key; //若無按鍵輸入則保持原鍵值
    switch(key)
    {
    case 0:
    break; //起始時鍵值
    case '1': //功能選項1
    prv_key=key; //更新鍵值
    buf=RD_Port(PC); //由Port C讀取DIP S.W設定值
    WR_Port(PA,buf); //直接將Port C讀取值輸出至LEDs
    break;
    case '2': //功能選項2
    prv_key=key; //更新鍵值
    buf=~RD_Port(PC); //由Port C讀取DIP S.W設定值,並將之取補數
    tst=0x80;
    for(i=8;i>0;i--) //由讀取值最高位元逐一遞減檢查是否為"Hi"
    {
    if((buf&tst)==0)
    tst=tst>>1;
    else
    break; //若該位元為"Hi",則停止檢查
    }
    WR_Port(PA,~tst); //顯示相對應於第一個為"Hi"位元位置之LED
    break;
    case '3': //功能選項3
    prv_key=key; //更新鍵值
    buf=~RD_Port(PC); //由Port C讀取DIP S.W設定值,並將之取補數
    tst=0x80;
    for(i=8;i>0;i--) //由讀取值最高位元逐一遞減檢查是否為"Hi"
    {
    if((buf&tst)!=0)
    tmp=tmp+i; //若該位元為"Hi",則累加該位元編號大小
    tst=tst>>1;
    }
    WR_Port(PA,~tmp); //顯示累加值其相對應二進值之LEDs
    tmp=0;
    break;
    case 'Q':
    exit(0); //離開程式
    break;
    default:
    key=prv_key; //若非指定按鍵輸入,仍保持原鍵值
    break;
    }
    }while(1);
    }
    老師希望我們改成,不使用鍵盤,只使用DIP SW來控制LED的動作,我和數位同學弄了一個下午,還是沒有下文....麻煩高手大大,指點我一條明路

類似的主題

  1. 求救c語言
    作者:puice 所在討論版:-- 其 他 軟 體 討 論 版
    回覆: 6
    最後發表: 2009-04-07, 07:15 PM
  2. 關於C語言中的char
    作者:流浪者~MIT 所在討論版:-- 其 他 軟 體 討 論 版
    回覆: 8
    最後發表: 2002-11-23, 10:07 PM
  3. c語言中的if敘述
    作者:流浪者~MIT 所在討論版:-- 其 他 軟 體 討 論 版
    回覆: 1
    最後發表: 2002-11-03, 01:02 PM
  4. CorelDraw10無法用ps2語言列印??????
    作者:kitty388 所在討論版:-- 繪 圖 軟 體 討 論 版
    回覆: 5
    最後發表: 2001-12-17, 10:14 AM

 

8255卡 and EPP模式

發表文章規則

  • 不可以發表新主題
  • 不可以回覆文章
  • 不可以上傳附加檔案
  • 不可以編輯自己的文章
  •