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

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

?? serialkr.c

?? MCS-196單片機的串口通訊.采用C語言編譯.有靈活的移植功能.
?? C
字號:
/*
** FILE     : serialkr.c
**            This program was published in "Embedded Applications Journal" 3Q 1993.
**            The article: 'C' Interrupt Routine for the serial MCS-96 Asynchronous Port.
**            by Larry C. Ferra, Intel Corporation.
**
** NOTE     : compile with model(kr) control
**            or use: #pragma model(kr)
**            or even better use:
**                      mk196 
*/

#ifdef  _C196_
#if _ARCHITECTURE_ != 'KR'
/* This will generate a warning, please check model() control. */
#pragma model(KR)
#endif
#endif
#include        <stdio.h>
#include        <kr_sfrs.h>
#include        <kr_funcs.h>

/* declare interrupt routines */
#pragma interrupt(receive=28,transmit=27)


#ifdef EVAL_BOARD

/*   Reserve the 9 bytes required by eval board   */

char                          reserve[9];
#pragma locate(reserve=0x30)

#else

/*   Initialize the chip configuration bytes   */
const unsigned int            ccr[2] = {0x20FF,0x20DE};
#pragma locate (ccr = 0x2018)

#endif

#define		WINDOW_SELECT		0x1F

#define		FREQUENCY		(long)16000000 /* 16 MHz  */
#define		BAUD_RATE_VALUE		9600
#define		BAUD_REG		((unsigned int)(FREQUENCY/((long)BAUD_RATE_VALUE*16)-1)+0x8000)

#define		RI_BIT			0x40
#define		TI_BIT			0x20

unsigned char                 status_temp;                  /*   image of sp_status  to preserve the RI
                                                                 and TI bits on a read.  */

/*   receive and transmit buffers and their indexes    */

#define		TRANSMIT_BUF_SIZE	20
unsigned char                 trans_buff[TRANSMIT_BUF_SIZE];
char                          begin_trans_buff;
char                          end_trans_buff;

#define		RECEIVE_BUF_SIZE	20
unsigned char                 receive_buff[RECEIVE_BUF_SIZE];
char                          end_rec_buff;
char                          begin_rec_buff;


/*  serial interrupt routine  */
/*  see pragma interrupt above */
void transmit(void)
{
    wsr = WINDOW_SELECT;                                    /*  Use SFR_1f if available */
    status_temp |= sp_status;                               /*  image sp_status into status_temp  */

    /*   transmitt a character if there is a character in the buffer  */
    if (begin_trans_buff != end_trans_buff)
    {
	sbuf_tx_1f = trans_buff[begin_trans_buff];          /*  transmit character  */

	/*   The next statement makes the buffer circular by starting over when the
	     index reaches the end of the buffer.   */

	if (++begin_trans_buff >= TRANSMIT_BUF_SIZE)
            begin_trans_buff = 0;
	status_temp &= ~TI_BIT;                             /*  clear TI bit in status_temp.   */
    }
}

/*  serial interrupt routine  */
/*  see pragma interrupt above */
void receive(void)
{
    wsr = WINDOW_SELECT;                                    /*  Use SFR_1f if available */
    status_temp |= sp_status;                               /*  image sp_status into status_temp  */

    /*   If the input buffer is full, the last character will be ignored,
	 and the BEL character is output to the terminal.  */

    if (end_rec_buff+1==begin_rec_buff
	||
	(end_rec_buff==RECEIVE_BUF_SIZE-1 && begin_rec_buff==0)
	)
    {
	;                                                   /*  input overrun code  */
    }
    else
    {
	/*   The next statement makes the buffer circular by starting over when the
	     index reaches the end of the buffer.   */

	if (++end_rec_buff >= RECEIVE_BUF_SIZE)
            end_rec_buff = 0;
	receive_buff[end_rec_buff] = sbuf_rx_1f;            /*  place character in buffer  */
    }
    status_temp &= ~RI_BIT;                                 /*  clear RI bit in status_temp.  */
}

/* See stdio.h for declaration of putch. */
int putch(int c)
{
    /*   remain in loop while the buffer is full.  This is done by checking
	 the end of buffer index to make sure it does not overrun the
	 beginning of buffer index.   The while instruction checks the case
	 when the end index is one less then the beginning index and at the
	 end of the buffer when the beginning index may be equal to 0 and
	 the end buffer index may be at the buffer end.   */

    while (end_trans_buff+1==begin_trans_buff
	   ||
	   (end_trans_buff==TRANSMIT_BUF_SIZE-1 && begin_trans_buff==0)
	   )
      /* loop here */;

    trans_buff[end_trans_buff] = c;                         /*  put character in buffer  */
    if (++end_trans_buff >= TRANSMIT_BUF_SIZE)              /*  make buffer appear circular */
        end_trans_buff = 0;
    if (status_temp & TI_BIT)
        int_pend1 |= 0x08;                                  /*  If transmitt buffer
                                                                was empty, then cause
                                                                an interrupt to start
                                                                transmitting.  */
}

/* See stdio.h for declaration of getch. */
int getch(void)
{
    while (begin_rec_buff == end_rec_buff);                 /* remain in loop while there is
                                                               not a character available. */
    if (++begin_rec_buff >= RECEIVE_BUF_SIZE)               /*  make buffer appear circular */
        begin_rec_buff = 0;
    return receive_buff[begin_rec_buff];                    /*  return the character in buffer. */
}

void main(void)
{
    char                          c;

    wsr = WINDOW_SELECT;                                    /*  Use SFR_1f if available */
    sp_baud = BAUD_REG;                                     /* set baud rate as described by the Embedded
                                                             ** Controller Handbook
                                                             */
    sp_con  = 0x09;                                         /* mode 1, no parity, receive enabled, no 9th bit */
    status_temp = sp_status;
    p2_reg   = 0xFF;                                         /*  Init port2 reg */
    p2_dir   = 0xFE;                                         /*  TXD output     */
    p2_mode  = 0x03;                                         /*  p2.0-1 lsio  */
 
    wsr = 0;                                                /*  Use SFR without suffix */
    end_rec_buff     = 0;                                   /* initialize buffer pointers        */
    begin_rec_buff   = 0;
    end_trans_buff   = 0;
    begin_trans_buff = 0;
    status_temp = TI_BIT;                                   /* allow for initial transmission    */
    int_mask1   = 0x18;                                     /* enable the serial port interrupt  */

    enable();                                               /* global enable of interrupts       */
 
    while ((c=getch()) != 0x1b)                             /*  stay in loop till escape key pressed  */
        printf("key pressed = %02X\r\n",c);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久色中文字幕| 亚洲乱码中文字幕综合| 综合色中文字幕| 秋霞av亚洲一区二区三| aaa国产一区| 日韩欧美的一区二区| 亚洲午夜电影网| 不卡av电影在线播放| 精品国产凹凸成av人导航| 亚洲自拍偷拍欧美| 风间由美一区二区av101| 在线成人免费视频| 亚洲女性喷水在线观看一区| 国产精品996| 精品国精品自拍自在线| 午夜亚洲国产au精品一区二区| 成人午夜免费视频| 精品久久国产字幕高潮| 日韩一区欧美二区| 欧洲av在线精品| 国产精品午夜电影| 国产成人自拍网| 久久久欧美精品sm网站| 国产一区福利在线| 精品国产a毛片| 蜜臀精品一区二区三区在线观看 | 欧美电视剧免费全集观看| 亚洲精品国产视频| 日本精品一级二级| 亚洲精品久久嫩草网站秘色| 波多野结衣中文一区| 国产精品每日更新| 成人av在线播放网站| 中文字幕第一区第二区| 成人av在线一区二区| 国产精品超碰97尤物18| 不卡的电影网站| 亚洲欧洲性图库| 色网站国产精品| 亚洲自拍偷拍综合| 欧美日韩在线观看一区二区| 亚洲成a人v欧美综合天堂| 欧美色视频在线| 免费高清成人在线| 欧美mv日韩mv国产网站| 国产成人福利片| 亚洲美女淫视频| 欧美精品久久天天躁| 美女视频免费一区| 国产亚洲精品资源在线26u| 国产精品一级黄| 国产精品久久影院| 欧洲一区在线电影| 免费看欧美美女黄的网站| 日韩欧美一卡二卡| 成人动漫一区二区三区| 亚洲视频精选在线| 欧美日本国产视频| 久久99精品久久久久婷婷| 欧美国产日韩亚洲一区| 日本高清不卡在线观看| 蜜桃av噜噜一区二区三区小说| 国产喂奶挤奶一区二区三区| 在线免费观看日本欧美| 久久se精品一区精品二区| 中文字幕精品综合| 欧美午夜寂寞影院| 国产乱子轮精品视频| 亚洲丝袜精品丝袜在线| 在线综合+亚洲+欧美中文字幕| 国产在线一区二区| 亚洲精品免费视频| 欧美刺激脚交jootjob| 成人黄色777网| 毛片av一区二区| 国产精品初高中害羞小美女文| 69堂国产成人免费视频| 成人av网在线| 六月丁香综合在线视频| 亚洲久草在线视频| 久久久久99精品一区| 欧美优质美女网站| 国产91在线看| 久久精品国产999大香线蕉| 亚洲靠逼com| 欧美激情自拍偷拍| 日韩午夜在线观看| 91国产成人在线| 国产成人午夜高潮毛片| 日韩精品一二三区| 洋洋成人永久网站入口| 一个色综合av| 国产成人精品免费看| 综合色天天鬼久久鬼色| 精品1区2区在线观看| 欧美日韩黄色一区二区| 欧美日韩国产精品成人| 高清av一区二区| 久久精品国产99久久6| 日日夜夜免费精品| 一区二区三区免费网站| 最新国产成人在线观看| 久久久另类综合| 日韩免费视频线观看| 91精品国产综合久久香蕉的特点| 一本久道久久综合中文字幕| 成人开心网精品视频| 国产另类ts人妖一区二区| 久热成人在线视频| 免费不卡在线观看| 秋霞影院一区二区| 麻豆91在线观看| 日本中文字幕一区二区视频| 日韩精品国产欧美| 日韩av中文字幕一区二区三区| 午夜私人影院久久久久| 亚洲综合免费观看高清完整版在线| 亚洲欧洲美洲综合色网| 国产精品初高中害羞小美女文| 国产精品人成在线观看免费| 国产精品婷婷午夜在线观看| 国产精品水嫩水嫩| 亚洲色图色小说| 亚洲女人的天堂| 亚洲国产婷婷综合在线精品| 亚洲观看高清完整版在线观看| 一区二区三区美女| 亚洲国产精品精华液网站| 天天色天天爱天天射综合| 另类专区欧美蜜桃臀第一页| 国产精一区二区三区| 国产精品一区二区久久不卡| 国产精品18久久久久久久久| 不卡av在线网| 欧美视频在线一区| 欧美成人a视频| 中文在线资源观看网站视频免费不卡| 国产欧美日韩另类一区| **性色生活片久久毛片| 亚洲午夜免费视频| 蜜臀av亚洲一区中文字幕| 激情久久久久久久久久久久久久久久| 国产一区二区不卡老阿姨| 99久久精品国产精品久久| 欧美三级午夜理伦三级中视频| 日韩欧美国产三级| 欧美国产一区在线| 婷婷中文字幕综合| 欧美日本韩国一区二区三区视频| 欧美一级片免费看| 国产精品乱码一区二区三区软件 | 看片的网站亚洲| 成人高清av在线| 538prom精品视频线放| 久久蜜桃香蕉精品一区二区三区| 亚洲欧美日韩中文播放 | 秋霞电影网一区二区| 国产成人精品亚洲午夜麻豆| 99久久777色| 精品欧美一区二区在线观看| 亚洲欧洲性图库| 美女视频一区二区| 色综合久久久久网| 精品久久人人做人人爽| 亚洲综合色视频| 福利一区福利二区| 538prom精品视频线放| 亚洲视频免费在线观看| 国产在线视频一区二区| 欧美精品在线视频| 最近中文字幕一区二区三区| 日韩电影在线观看电影| 日本丶国产丶欧美色综合| 久久精品日产第一区二区三区高清版 | 成人毛片老司机大片| 欧美一区二区三区在| 亚洲乱码日产精品bd| 国产99久久久国产精品免费看 | 色哟哟在线观看一区二区三区| 2021久久国产精品不只是精品| 亚洲综合激情网| 99这里都是精品| 国产午夜亚洲精品羞羞网站| 蜜桃视频第一区免费观看| 欧美色欧美亚洲另类二区| 国产精品国产精品国产专区不片| 激情五月播播久久久精品| 欧美乱妇23p| 午夜视频在线观看一区| 99久久精品久久久久久清纯| 日本一区二区三区视频视频| 国产在线麻豆精品观看| 日韩天堂在线观看| 三级欧美在线一区| 欧美一卡二卡三卡四卡| 日韩av一级电影| 欧美一级片免费看| 免费成人av在线| 欧美精品一区二区三区高清aⅴ | 欧美日产国产精品|