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

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

?? ks0108_8c-source.html

?? ATMEL的AVR單片機庫文件
?? HTML
?? 第 1 頁 / 共 2 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Procyon AVRlib: ks0108.c Source File</title><link href="dox.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.6 --><div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div><h1>ks0108.c</h1><a href="ks0108_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*! \file ks0108.c \brief Graphic LCD driver for HD61202/KS0108 displays. */</span>00002 <span class="comment">//*****************************************************************************</span>00003 <span class="comment">//</span>00004 <span class="comment">// File Name    : 'ks0108.c'</span>00005 <span class="comment">// Title        : Graphic LCD driver for HD61202/KS0108 displays</span>00006 <span class="comment">// Author       : Pascal Stang - Copyright (C) 2001-2003</span>00007 <span class="comment">// Date         : 10/19/2002</span>00008 <span class="comment">// Revised      : 5/5/2003</span>00009 <span class="comment">// Version      : 0.5</span>00010 <span class="comment">// Target MCU   : Atmel AVR</span>00011 <span class="comment">// Editor Tabs  : 4</span>00012 <span class="comment">//</span>00013 <span class="comment">// NOTE: This code is currently below version 1.0, and therefore is considered</span>00014 <span class="comment">// to be lacking in some functionality or documentation, or may not be fully</span>00015 <span class="comment">// tested.  Nonetheless, you can expect most functions to work.</span>00016 <span class="comment">//</span>00017 <span class="comment">// This code is distributed under the GNU Public License</span>00018 <span class="comment">//      which can be found at http://www.gnu.org/licenses/gpl.txt</span>00019 <span class="comment">//</span>00020 <span class="comment">//*****************************************************************************</span>00021 00022 <span class="preprocessor">#ifndef WIN32</span>00023 <span class="preprocessor"></span><span class="comment">// AVR specific includes</span>00024 <span class="preprocessor">    #include &lt;avr/io.h&gt;</span>00025 <span class="preprocessor">    #include &lt;avr/interrupt.h&gt;</span>00026 <span class="preprocessor">#endif</span>00027 <span class="preprocessor"></span>00028 <span class="preprocessor">#include "<a class="code" href="global_8h.html">global.h</a>"</span>00029 <span class="preprocessor">#include "<a class="code" href="ks0108_8h.html">ks0108.h</a>"</span>00030 00031 <span class="comment">// global variables</span>00032 GrLcdStateType GrLcdState;00033 00034 <span class="comment">/*************************************************************/</span>00035 <span class="comment">/********************** LOCAL FUNCTIONS **********************/</span>00036 <span class="comment">/*************************************************************/</span>00037 00038 <span class="keywordtype">void</span> glcdInitHW(<span class="keywordtype">void</span>)00039 {00040     <span class="comment">// initialize I/O ports</span>00041     <span class="comment">// if I/O interface is in use</span>00042 <span class="preprocessor">#ifdef GLCD_PORT_INTERFACE</span>00043 <span class="preprocessor"></span>00044     <span class="comment">//TODO: make setup of chip select lines contingent on how</span>00045     <span class="comment">// many controllers are actually in the display</span>00046     00047     <span class="comment">// initialize LCD control lines levels</span>00048     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RS);00049     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RW);00050     cbi(GLCD_CTRL_PORT, GLCD_CTRL_E);00051     cbi(GLCD_CTRL_PORT, GLCD_CTRL_CS0);00052     cbi(GLCD_CTRL_PORT, GLCD_CTRL_CS1);00053     cbi(GLCD_CTRL_PORT, GLCD_CTRL_CS2);00054     cbi(GLCD_CTRL_PORT, GLCD_CTRL_CS3);00055     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RESET);00056     <span class="comment">// initialize LCD control port to output</span>00057     sbi(GLCD_CTRL_DDR, GLCD_CTRL_RS);00058     sbi(GLCD_CTRL_DDR, GLCD_CTRL_RW);00059     sbi(GLCD_CTRL_DDR, GLCD_CTRL_E);00060     sbi(GLCD_CTRL_DDR, GLCD_CTRL_CS0);00061     sbi(GLCD_CTRL_DDR, GLCD_CTRL_CS1);00062     sbi(GLCD_CTRL_DDR, GLCD_CTRL_CS2);00063     sbi(GLCD_CTRL_DDR, GLCD_CTRL_CS3);00064     sbi(GLCD_CTRL_DDR, GLCD_CTRL_RESET);00065     <span class="comment">// initialize LCD data</span>00066     outp(0x00, GLCD_DATA_PORT);00067     <span class="comment">// initialize LCD data port to output</span>00068     outp(0xFF, GLCD_DATA_DDR);00069 <span class="preprocessor">#endif</span>00070 <span class="preprocessor"></span>}00071 00072 <span class="keywordtype">void</span> glcdControllerSelect(u08 controller)00073 {00074 <span class="preprocessor">#ifdef GLCD_PORT_INTERFACE</span>00075 <span class="preprocessor"></span>    <span class="comment">//TODO: make control of chip select lines contingent on how</span>00076     <span class="comment">// many controllers are actually in the display</span>00077 00078     <span class="comment">// unselect all controllers</span>00079     cbi(GLCD_CTRL_PORT, GLCD_CTRL_CS0);00080     cbi(GLCD_CTRL_PORT, GLCD_CTRL_CS1);00081     cbi(GLCD_CTRL_PORT, GLCD_CTRL_CS2);00082     cbi(GLCD_CTRL_PORT, GLCD_CTRL_CS3);00083 00084     <span class="comment">// select requested controller</span>00085     <span class="keywordflow">switch</span>(controller)00086     {00087     <span class="keywordflow">case</span> 0: sbi(GLCD_CTRL_PORT, GLCD_CTRL_CS0); <span class="keywordflow">break</span>;00088     <span class="keywordflow">case</span> 1: sbi(GLCD_CTRL_PORT, GLCD_CTRL_CS1); <span class="keywordflow">break</span>;00089     <span class="keywordflow">case</span> 2: sbi(GLCD_CTRL_PORT, GLCD_CTRL_CS2); <span class="keywordflow">break</span>;00090     <span class="keywordflow">case</span> 3: sbi(GLCD_CTRL_PORT, GLCD_CTRL_CS3); <span class="keywordflow">break</span>;00091     <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;00092     }00093 <span class="preprocessor">#endif</span>00094 <span class="preprocessor"></span>}00095 00096 <span class="keywordtype">void</span> glcdBusyWait(u08 controller)00097 {00098 <span class="preprocessor">#ifdef GLCD_PORT_INTERFACE</span>00099 <span class="preprocessor"></span>    cli();00100     <span class="comment">// wait until LCD busy bit goes to zero</span>00101     <span class="comment">// select the controller chip</span>00102     glcdControllerSelect(controller);00103     <span class="comment">// do a read from control register</span>00104     outp(0xFF, GLCD_DATA_PORT);00105     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RS);00106     outp(0x00, GLCD_DATA_DDR);00107     sbi(GLCD_CTRL_PORT, GLCD_CTRL_RW);00108     sbi(GLCD_CTRL_PORT, GLCD_CTRL_E);00109     <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00110     <span class="keywordflow">while</span>(inp(GLCD_DATA_PIN) &amp; GLCD_STATUS_BUSY)00111     {00112         cbi(GLCD_CTRL_PORT, GLCD_CTRL_E);00113         <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00114         <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00115         sbi(GLCD_CTRL_PORT, GLCD_CTRL_E);00116         <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00117         <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00118     }00119     cbi(GLCD_CTRL_PORT, GLCD_CTRL_E);00120     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RW);00121     outp(0xFF, GLCD_DATA_DDR);00122     sei();00123 <span class="preprocessor">#else</span>00124 <span class="preprocessor"></span>    <span class="comment">// sbi(MCUCR, SRW);         // enable RAM waitstate</span>00125     <span class="comment">// wait until LCD busy bit goes to zero</span>00126     <span class="keywordflow">while</span>(*(<span class="keyword">volatile</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)00127         (GLCD_CONTROLLER0_CTRL_ADDR + GLCD_CONTROLLER_ADDR_OFFSET*controller) &amp; GLCD_STATUS_BUSY);00128     <span class="comment">// cbi(MCUCR, SRW);         // disable RAM waitstate</span>00129 <span class="preprocessor">#endif</span>00130 <span class="preprocessor"></span>}00131 00132 <span class="keywordtype">void</span> glcdControlWrite(u08 controller, u08 data)00133 {00134 <span class="preprocessor">#ifdef GLCD_PORT_INTERFACE</span>00135 <span class="preprocessor"></span>    cli();00136     glcdBusyWait(controller);   <span class="comment">// wait until LCD not busy</span>00137     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RS);00138     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RW);00139     sbi(GLCD_CTRL_PORT, GLCD_CTRL_E);00140     outp(0xFF, GLCD_DATA_DDR);00141     outp(data, GLCD_DATA_PORT);00142     <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00143     <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00144     <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00145     <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00146     cbi(GLCD_CTRL_PORT, GLCD_CTRL_E);00147     sei();00148 <span class="preprocessor">#else</span>00149 <span class="preprocessor"></span>    <span class="comment">//sbi(MCUCR, SRW);              // enable RAM waitstate</span>00150     glcdBusyWait(controller);       <span class="comment">// wait until LCD not busy</span>00151     *(<span class="keyword">volatile</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) (GLCD_CONTROLLER0_CTRL_ADDR + GLCD_CONTROLLER_ADDR_OFFSET*controller) = data;00152     <span class="comment">//cbi(MCUCR, SRW);              // disable RAM waitstate</span>00153 <span class="preprocessor">#endif</span>00154 <span class="preprocessor"></span>}00155 00156 u08 glcdControlRead(u08 controller)00157 {00158     <span class="keyword">register</span> u08 data;00159 <span class="preprocessor">#ifdef GLCD_PORT_INTERFACE</span>00160 <span class="preprocessor"></span>    cli();00161     glcdBusyWait(controller);       <span class="comment">// wait until LCD not busy</span>00162     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RS);00163     outp(0x00, GLCD_DATA_DDR);00164     sbi(GLCD_CTRL_PORT, GLCD_CTRL_RW);00165     sbi(GLCD_CTRL_PORT, GLCD_CTRL_E);00166     <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00167     <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00168     <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00169     <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>); <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00170     data = inp(GLCD_DATA_PIN);00171     cbi(GLCD_CTRL_PORT, GLCD_CTRL_E);00172     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RW);00173     outp(0xFF, GLCD_DATA_DDR);00174     sei();00175 <span class="preprocessor">#else</span>00176 <span class="preprocessor"></span>    <span class="comment">//sbi(MCUCR, SRW);              // enable RAM waitstate</span>00177     glcdBusyWait(controller);       <span class="comment">// wait until LCD not busy</span>00178     data = *(<span class="keyword">volatile</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) (GLCD_CONTROLLER0_CTRL_ADDR + GLCD_CONTROLLER_ADDR_OFFSET*controller);00179     <span class="comment">//cbi(MCUCR, SRW);              // disable RAM waitstate</span>00180 <span class="preprocessor">#endif</span>00181 <span class="preprocessor"></span>    <span class="keywordflow">return</span> data;00182 }00183 00184 <span class="keywordtype">void</span> glcdDataWrite(u08 data)00185 {00186     <span class="keyword">register</span> u08 controller = (GrLcdState.lcdXAddr/GLCD_CONTROLLER_XPIXELS);00187 <span class="preprocessor">#ifdef GLCD_PORT_INTERFACE</span>00188 <span class="preprocessor"></span>    cli();00189     glcdBusyWait(controller);       <span class="comment">// wait until LCD not busy</span>00190     sbi(GLCD_CTRL_PORT, GLCD_CTRL_RS);00191     cbi(GLCD_CTRL_PORT, GLCD_CTRL_RW);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费在线| 美女被吸乳得到大胸91| av午夜一区麻豆| 国产精品理论片在线观看| 成人网在线免费视频| 国产精品久久99| 91在线一区二区三区| 亚洲精品免费播放| 欧美美女bb生活片| 紧缚奴在线一区二区三区| 精品欧美一区二区久久| 国产精品一区二区在线观看不卡| 国产亚洲成aⅴ人片在线观看| 国产一区二区免费看| 亚洲欧洲美洲综合色网| 成人福利在线看| 亚洲一二三四久久| 欧美一区二区三区思思人 | 中文字幕欧美一区| 在线免费观看日本一区| 日韩黄色小视频| 久久精品人人做| 91亚洲精品久久久蜜桃网站| 午夜av电影一区| 337p粉嫩大胆噜噜噜噜噜91av| av一区二区三区四区| 亚洲国产cao| 久久新电视剧免费观看| 日本精品视频一区二区| 久久精品久久久精品美女| 国产精品久久精品日日| 欧美一级xxx| 顶级嫩模精品视频在线看| 亚洲一级二级三级| 久久久欧美精品sm网站| 欧美丝袜第三区| 国产一区二区三区国产| 一区二区三区在线观看欧美| 欧美不卡一区二区三区| 欧洲国内综合视频| 激情综合色综合久久综合| 亚洲卡通动漫在线| 久久九九久久九九| 欧美疯狂性受xxxxx喷水图片| 国产999精品久久久久久绿帽| 天天爽夜夜爽夜夜爽精品视频| 中文字幕乱码亚洲精品一区| 91精品国产欧美一区二区18 | 国产日韩欧美电影| 欧美高清性hdvideosex| 国产不卡在线视频| 美女www一区二区| 午夜视频在线观看一区二区三区| 国产色综合久久| 欧美成人欧美edvon| 欧美日韩国产首页在线观看| 91在线观看高清| 国产成人免费视频精品含羞草妖精| 欧美96一区二区免费视频| 亚洲三级电影全部在线观看高清| 一区二区三区在线免费| 国产视频视频一区| 日韩美女视频一区二区在线观看| 在线看不卡av| 99久久免费精品高清特色大片| 韩国三级电影一区二区| 免费在线观看一区| 奇米精品一区二区三区四区| 亚洲成人免费看| 亚洲地区一二三色| 亚洲一区av在线| 夜夜嗨av一区二区三区中文字幕 | av在线不卡网| 成人性色生活片免费看爆迷你毛片| 久久99久久99| 国产一区在线不卡| 美女一区二区三区在线观看| 香蕉乱码成人久久天堂爱免费| 亚洲已满18点击进入久久| 一区二区三区不卡视频| 亚洲精品精品亚洲| 一区二区国产盗摄色噜噜| 亚洲欧美激情小说另类| 亚洲精品成人a在线观看| 亚洲精品国产一区二区精华液 | 国产+成+人+亚洲欧洲自线| 国产一区二区三区免费播放| 国产最新精品免费| 国产精品资源在线观看| 国产白丝精品91爽爽久久 | 色美美综合视频| 色94色欧美sute亚洲线路一ni| 色先锋aa成人| 欧美日本免费一区二区三区| 欧美一区二区三区公司| 日韩视频一区二区| 国产欧美视频在线观看| 国产精品美女久久福利网站 | 亚洲综合在线视频| 亚洲成人先锋电影| 久久精品国产网站| 成人一区二区三区在线观看| 99久久综合精品| 欧洲激情一区二区| 欧美一级久久久久久久大片| 久久久不卡网国产精品二区| 国产精品久久久久久亚洲伦| 一区二区三区四区乱视频| 日韩高清中文字幕一区| 黑人巨大精品欧美一区| 成年人网站91| 欧美日韩一区在线| 欧美精品一区二区三区高清aⅴ | 91啪九色porn原创视频在线观看| 日本高清免费不卡视频| 日韩欧美在线综合网| 欧美极品美女视频| 午夜久久久影院| 国产乱子轮精品视频| bt7086福利一区国产| 91精品在线麻豆| 国产精品久久久久一区| 日韩av网站在线观看| 成人成人成人在线视频| 欧美一区二区免费视频| 国产精品久久久久桃色tv| 男人的天堂亚洲一区| 91啦中文在线观看| 精品国产乱码久久久久久老虎| 中文字幕一区二区三区色视频| 美女看a上一区| 色综合天天综合网天天狠天天 | 欧美国产丝袜视频| 亚洲va国产va欧美va观看| 成人激情动漫在线观看| 欧美一级高清片| 一区二区三区在线视频免费| 国产九色sp调教91| 欧美精选在线播放| 亚洲三级免费观看| 国产一区二区女| 制服丝袜国产精品| 亚洲一区二区三区四区在线| 国产成人av一区二区三区在线观看| 欧美日韩在线一区二区| 国产精品成人午夜| 狠狠久久亚洲欧美| 正在播放亚洲一区| 亚洲午夜精品网| 一本到不卡精品视频在线观看| 久久免费电影网| 久久国产精品99精品国产| 欧美亚州韩日在线看免费版国语版| 国产午夜三级一区二区三| 日本不卡视频在线| 欧美三级韩国三级日本三斤| 亚洲欧洲精品一区二区三区不卡 | 国产精品亲子乱子伦xxxx裸| 蜜桃传媒麻豆第一区在线观看| 欧美日韩国产综合视频在线观看| 亚洲欧美电影院| 成人av在线一区二区| 国产精品欧美久久久久一区二区| 国产在线精品国自产拍免费| 日韩一区二区三区免费看 | 久久久99久久| 国产综合久久久久久久久久久久| 欧美成人性福生活免费看| 奇米精品一区二区三区在线观看 | 色综合天天综合| 亚洲乱码国产乱码精品精98午夜| 99国产一区二区三精品乱码| 亚洲免费在线电影| 99re8在线精品视频免费播放| 国产精品福利一区| av一二三不卡影片| 亚洲欧美日韩一区二区三区在线观看| 成人久久久精品乱码一区二区三区| 欧美国产精品久久| 色综合色狠狠综合色| 一区二区三区国产| 欧美精品亚洲二区| 另类调教123区 | 日韩国产成人精品| 欧美xfplay| 岛国一区二区在线观看| 国产精品久线在线观看| 色域天天综合网| 五月激情综合网| 精品少妇一区二区三区日产乱码| 精久久久久久久久久久| 久久精品视频免费| 色综合一区二区三区| 午夜精品福利视频网站| 26uuu亚洲| 97精品超碰一区二区三区| 亚洲一区二区综合| 日韩精品一区二区三区视频在线观看 | 欧美私模裸体表演在线观看| 视频一区二区三区在线|