亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_viewc.c

?? This a simple OS for study.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*********************************************************************************************************
*                                           uC/OS-View
*
*                            (c) Copyright 2002, Micrium, Inc., WESTON, FL
*                                       All Rights Reserved
*
*                                     Intel 80x86 (Large Model)
*
* Filename   : OS_VIEWc.C
* Programmer : Jean J. Labrosse
*********************************************************************************************************
*/

#include "includes.h"

/*
*********************************************************************************************************
*                                               CONSTANTS
*********************************************************************************************************
*/


#define  BIT0                         0x01       /* Bit masks                                          */
#define  BIT1                         0x02
#define  BIT2                         0x04
#define  BIT3                         0x08
#define  BIT4                         0x10
#define  BIT5                         0x20
#define  BIT6                         0x40
#define  BIT7                         0x80

#define  OS_VIEW_8250_RBR                0       /* UART register definitions                          */
#define  OS_VIEW_8250_THR                0
#define  OS_VIEW_8250_DIV_LO             0
#define  OS_VIEW_8250_DIV_HI             1
#define  OS_VIEW_8250_IER                1
#define  OS_VIEW_8250_IIR                2
#define  OS_VIEW_8250_LCR                3
#define  OS_VIEW_8250_MCR                4
#define  OS_VIEW_8250_LSR                5
#define  OS_VIEW_8250_MSR                6

#define  OS_VIEW_8250_PARITY_NONE        0       /* Defines for setting parity                         */
#define  OS_VIEW_8250_PARITY_ODD         1
#define  OS_VIEW_8250_PARITY_EVEN        2

#define  OS_VIEW_8259_INT_REG       0x0020       /* 8259 Priority Interrupt Controller (PIC)           */
#define  OS_VIEW_8259_MASK_REG      0x0021
#define  OS_VIEW_8259_OCW3_REG      0x0020
#define  OS_VIEW_8259_SEL_IRR         0x0A
#define  OS_VIEW_8259_IRR_REG       0x0020

#define  OS_VIEW_8254_CTR0            0x40       /* 8254 PIT Timer 0 Register address.                 */
#define  OS_VIEW_8254_CTR1            0x41       /* 8254 PIT Timer 1 Register address.                 */
#define  OS_VIEW_8254_CTR2            0x42       /* 8254 PIT Timer 2 Register address.                 */
#define  OS_VIEW_8254_CWR             0x43       /* 8254 PIT Control Word Register address.            */

#define  OS_VIEW_8254_CTR0_MODE3      0x36       /* 8254 PIT Binary Mode 3 for Counter 0 control word. */
#define  OS_VIEW_8254_CTR2_MODE0      0xB0       /* 8254 PIT Binary Mode 0 for Counter 2 control word. */
#define  OS_VIEW_8254_CTR0_LATCH      0x00       /* 8254 PIT Latch command control word                */
#define  OS_VIEW_8254_CTR2_LATCH      0x80

#define  OS_VIEW_8255_TMR_EN_REG      0x61       /* 8255 used to enable Timer #2                       */

/*
*********************************************************************************************************
*                                         LOCAL GLOBAL VARIABLES
*********************************************************************************************************
*/

static  INT32U   OSView_TmrOvfCtr;
static  INT16U   OSView_TmrCntsPrev;

static  void   (*OSView_CommISROld)(void);

/*
*********************************************************************************************************
*                                           LOCAL PROTOTYPES
*********************************************************************************************************
*/

static  void   OSView_CfgPort(INT16U baud, INT8U bits, INT8U parity, INT8U stops);
static  void   OSView_IntVectSet(void);
static  void   OSView_IntVectRcl(void);
static  INT8U  OSView_PortIn8(INT16U port);
static  void   OSView_PortOut8(INT16U port, INT8U data);

/*$PAGE*/
/*
*********************************************************************************************************
*                                           EXIT uC/OS-View
*
* Description:
*
* Note(s)    :
*********************************************************************************************************
*/

void  OSView_Exit (void)
{
    OSView_RxIntDis();
    OSView_TxIntDis();
	OSView_IntVectRcl();					               /* Un-install the COM Interrupt vector      */
}

/*
*********************************************************************************************************
*                                           Obtain CPU name
*********************************************************************************************************
*/

void  OSView_GetCPUName (char *s)
{
    strcpy(s, "80x86 (Large)");
}

/*
*********************************************************************************************************
*                                  Obtain Interrupt Stack information
*********************************************************************************************************
*/

INT32U  OSView_GetIntStkBase (void)
{
    return (0);										  /* We are not using an ISR stack                 */
}


INT32U  OSView_GetIntStkSize (void)
{
    return (0);										  /* We are not using an ISR stack                 */
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                    INITIALIZE uC/OS-View COM PORT
*
* Description: Initialize the hardware required for the OS to run. This will work on any target hardware,
*              but may have to be tailored a little for:
*                  Interrupt vectors
*                  Time measurement timer
*                  Communications port
*                  etc.
*
* Note(s)    : 1) Timer #2 is used to measure task execution time.
*********************************************************************************************************
*/

void  OSView_InitTarget (void)
{
    INT8U  data;


    OSView_CfgPort(OS_VIEW_BAUDRATE, 8, OS_VIEW_8250_PARITY_NONE, 1);

    OSView_IntVectSet();

    OSView_PortOut8(OS_VIEW_8254_CWR,  OS_VIEW_8254_CTR2_MODE0);  /* Initialize Timer #2 on the PC                         */
    OSView_PortOut8(OS_VIEW_8254_CTR2, 0xFF);
    OSView_PortOut8(OS_VIEW_8254_CTR2, 0xFF);
    data  = (INT8U)OSView_PortIn8(OS_VIEW_8255_TMR_EN_REG);       /* Enable timer #2                                       */
    data |= BIT0;
    OSView_PortOut8(OS_VIEW_8255_TMR_EN_REG, data);

    OSView_TmrOvfCtr   = 0L;                                      /* Clear variables used to keep track of Tmr#2 overflows */
    OSView_TmrCntsPrev = 0L;

    OSView_RxIntEn();                                             /* Enable Rx interrupts                                  */
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                         DISABLE RX INTERRUPTS
*
* Description : This function disables Rx interrupts.
*********************************************************************************************************
*/

void  OSView_RxIntDis (void)
{
#if OS_CRITICAL_METHOD == 3                                              /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
    INT8U      stat;
    INT8U      mask;


    OS_ENTER_CRITICAL();
    stat = OSView_PortIn8(OS_VIEW_8250_BASE + OS_VIEW_8250_IER) & ~BIT0; /* Disable Rx interrupts                    */
    OSView_PortOut8(OS_VIEW_8250_BASE + OS_VIEW_8250_IER, stat);
    if (stat == 0x00) {                                                  /* Both Tx & Rx interrupts are disabled ?   */
        mask  = OSView_PortIn8(OS_VIEW_8259_MASK_REG);                   /* Yes, disable IRQ on the PC               */
        mask |= OS_VIEW_8259_COMM_INT_EN;
        OSView_PortOut8(OS_VIEW_8259_MASK_REG, mask);
    }
    OS_EXIT_CRITICAL();
}

/*
*********************************************************************************************************
*                                          ENABLE RX INTERRUPTS
*
* Description : This function enables the Rx interrupt.
*********************************************************************************************************
*/

void  OSView_RxIntEn (void)
{
#if OS_CRITICAL_METHOD == 3                                              /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
    INT8U      stat;
    INT8U      cmd;


    OS_ENTER_CRITICAL();
    stat = OSView_PortIn8(OS_VIEW_8250_BASE + OS_VIEW_8250_IER) | BIT0;  /* Enable Rx interrupts                     */
    OSView_PortOut8(OS_VIEW_8250_BASE + OS_VIEW_8250_IER, stat);

	cmd  = OSView_PortIn8(OS_VIEW_8259_MASK_REG) & ~OS_VIEW_8259_COMM_INT_EN;
    OSView_PortOut8(OS_VIEW_8259_MASK_REG, cmd);                         /* Enable IRQ on the PC                     */
    OS_EXIT_CRITICAL();
}

/*
*********************************************************************************************************
*                                 Rx Communication handler for uC/OS-View
*                       (NOT USED for PC since OSView_RxTxHandler() handles this)
*********************************************************************************************************
*/

void  OSView_RxISRHandler (void)
{
}

/*$PAGE*/
/*
*********************************************************************************************************
*                               Rx/Tx Communication handler for uC/OS-View
*
* Description: This function is called by OSView_RxTxISR (see OS_VIEWa.ASM) to process a received
*              or transmitted character interrupt.
*
*              On the PC, we get a single interrupt whether it's because we received a character or
*              because a character has been transmitted.
*********************************************************************************************************
*/

void  OSView_RxTxISRHandler (void)
{
    INT8U   c;
    INT8U   iir;                                                             /* Interrupt Identification Register (IIR)   */


    iir  = OSView_PortIn8(OS_VIEW_8250_BASE + OS_VIEW_8250_IIR) & 0x07;      /* Get contents of IIR                       */
    while ((iir & 0x01) == 0) {                                              /* Loop until we have no more events         */
        switch (iir) {
            case 0:                                                          /* See if we have a Modem Status interrupt   */
                 c = OSView_PortIn8(OS_VIEW_8250_BASE + OS_VIEW_8250_MSR);   /* Clear interrupt (do nothing about it!)    */
                 break;

            case 2:                                                          /* See if we have a Tx interrupt             */
                 OSView_TxCtr++;
                 OSView_TxHandler();
                 break;

            case 4:                                                          /* See if we have an Rx interrupt            */
                 OSView_RxCtr++;
                 c = OSView_PortIn8(OS_VIEW_8250_BASE + OS_VIEW_8250_RBR);   /* Process received character                */
                 OSView_RxHandler(c);
                 break;

            case 6:                                                          /* See if we have a Line Status interrupt    */
                 c = OSView_PortIn8(OS_VIEW_8250_BASE + OS_VIEW_8250_LSR);   /* Clear interrupt (do nothing about it!)    */
                 break;
        }
        iir = OSView_PortIn8(OS_VIEW_8250_BASE + OS_VIEW_8250_IIR) & 0x07;   /* Get contents of IIR                       */
    }
    OSView_PortOut8(OS_VIEW_8259_INT_REG, 0x20);                             /* Reset interrupt controller                */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久国产一区二区三区四区 | 欧美亚洲综合久久| 国产精品久久久久久久浪潮网站| 国产成人a级片| 国产精品传媒在线| 在线视频综合导航| 丝袜美腿亚洲色图| 精品国产百合女同互慰| 丁香婷婷深情五月亚洲| **欧美大码日韩| 欧美三级中文字幕| 精品一区二区三区免费视频| 久久中文字幕电影| 99亚偷拍自图区亚洲| 亚洲制服丝袜av| 欧美一区午夜精品| 国产福利一区二区三区视频| 中文字幕一区av| 欧美色男人天堂| 国产在线播放一区二区三区| 中文字幕五月欧美| 欧美日韩国产电影| 国产成人啪免费观看软件 | 亚洲图片欧美激情| 欧美在线观看视频在线| 狠狠色综合播放一区二区| 国产精品伦一区二区三级视频| 在线观看日韩电影| 国内精品伊人久久久久av影院| 一区在线播放视频| 欧美变态口味重另类| 99在线精品观看| 经典三级在线一区| 一二三四区精品视频| 久久久亚洲午夜电影| 日本精品一区二区三区高清| 久久福利资源站| 亚洲自拍另类综合| 国产精品美女一区二区| 在线综合+亚洲+欧美中文字幕| 99re这里只有精品6| 精品一区二区三区在线观看国产| 夜色激情一区二区| 国产精品欧美综合在线| 日韩欧美电影一二三| 欧美偷拍一区二区| 成人性生交大合| 美女国产一区二区三区| 洋洋av久久久久久久一区| 视频在线观看91| 亚洲日本一区二区| 国产偷国产偷亚洲高清人白洁| 欧美日韩高清一区二区不卡| 不卡大黄网站免费看| 国产精品综合av一区二区国产馆| 五月婷婷激情综合| 亚洲国产欧美在线| 亚洲欧美色综合| 国产精品人妖ts系列视频| 久久久影视传媒| 久久综合av免费| 精品国精品自拍自在线| 日韩色视频在线观看| 欧美日韩亚洲综合在线| 欧美午夜免费电影| 欧美伊人久久久久久久久影院 | 国产一区在线视频| 日本va欧美va精品| 丝袜美腿一区二区三区| 亚洲va欧美va人人爽| 亚洲地区一二三色| 亚洲亚洲人成综合网络| 亚洲一区在线免费观看| 一区二区三区美女视频| 亚洲人精品午夜| 亚洲人成亚洲人成在线观看图片| 国产精品久久久久久久久免费丝袜 | 在线观看国产一区二区| 色8久久人人97超碰香蕉987| 色综合久久精品| 在线观看区一区二| 欧美亚洲图片小说| 欧美日韩一区二区三区高清| 欧美色精品在线视频| 欧美精品在线一区二区三区| 欧美日本在线观看| 欧美一区二区三区在线| 日韩一区二区三免费高清| 欧美大片在线观看一区二区| 久久综合久久鬼色| 久久久久99精品一区| 中文字幕精品一区二区精品绿巨人| 中文字幕av一区二区三区免费看| 国产精品女同一区二区三区| 中文字幕一区三区| 亚洲第一福利视频在线| 蜜臀av性久久久久蜜臀aⅴ| 精品一区二区国语对白| 国产精品一线二线三线| 9i看片成人免费高清| 欧美日韩在线三区| 欧美一区二区三区在线观看 | 秋霞av亚洲一区二区三| 久久精品国产色蜜蜜麻豆| 国产精品一品视频| 91激情在线视频| 日韩欧美二区三区| 国产精品三级av| 午夜精品国产更新| 国产剧情一区二区三区| 91麻豆视频网站| 欧美一区二区成人6969| 国产精品国产精品国产专区不蜜| 亚洲免费av在线| 捆绑调教一区二区三区| 成人综合日日夜夜| 91精品国产欧美一区二区| 国产精品少妇自拍| 日韩在线卡一卡二| 从欧美一区二区三区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美一级欧美三级在线观看| 国产精品理论片| 精品在线免费视频| 在线观看日韩精品| 国产日产欧美精品一区二区三区| 亚洲午夜久久久久久久久电影院 | 欧美视频一区在线观看| 亚洲精品一区二区三区精华液| 中文字幕一区二区三区在线不卡 | 国产精品私人影院| 日本一道高清亚洲日美韩| 色综合视频在线观看| 精品99999| 视频一区中文字幕| 色老汉av一区二区三区| 日本一区二区三区国色天香| 日韩精品一卡二卡三卡四卡无卡| 成人激情图片网| 久久久三级国产网站| 午夜私人影院久久久久| 91一区二区三区在线观看| 久久综合狠狠综合| 免费成人小视频| 欧美精选午夜久久久乱码6080| 日韩一区在线播放| 成人激情黄色小说| 日本一二三不卡| 国产一区欧美一区| 日韩一二三区不卡| 丝袜亚洲另类欧美综合| 欧美日韩黄视频| 亚洲午夜电影在线观看| 在线一区二区三区做爰视频网站| 国产欧美一区二区精品性| 久久不见久久见免费视频1| 在线成人免费视频| 性感美女久久精品| 欧日韩精品视频| 亚洲超丰满肉感bbw| 在线观看免费视频综合| 亚洲精品第1页| 91网站在线观看视频| 亚洲免费观看高清在线观看| 99免费精品视频| 亚洲人成网站在线| 91丨porny丨在线| 亚洲男人电影天堂| 色视频一区二区| 国产成人免费在线| 中文字幕av免费专区久久| 成人小视频免费在线观看| 中文字幕 久热精品 视频在线| 成人永久看片免费视频天堂| 欧美激情一区二区| 91色porny在线视频| 悠悠色在线精品| 欧美精品第1页| 麻豆精品国产传媒mv男同| 日韩精品一区二区三区三区免费| 国产在线视视频有精品| 久久精品亚洲精品国产欧美| 播五月开心婷婷综合| 亚洲精品视频一区| 欧美视频一区二| 看国产成人h片视频| 久久九九全国免费| 91麻豆免费看| 日韩电影一二三区| www国产成人| 91亚洲精品久久久蜜桃| 日韩电影一二三区| 国产日韩欧美高清| 在线观看国产日韩| 美女视频黄免费的久久| 国产精品国产a| 在线成人午夜影院| 国产成+人+日韩+欧美+亚洲| 亚洲黄色性网站| 精品国产伦一区二区三区观看方式|