📄 main_8c-source.html
字号:
<!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>AVR323 Interfacing GSM modems: ATAVRBFLY_FILES/main.c Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.7 --><div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a></div><h1>ATAVRBFLY_FILES/main.c</h1><a href="main_8c.html">Go to the documentation of this file.</a><pre class="fragment"><div>00001 <span class="comment">// This file has been prepared for Doxygen automatic documentation generation.</span>00047 <span class="comment"></span><span class="comment">//Includes</span>00048 <span class="preprocessor">#include<inavr.h></span>00049 <span class="preprocessor">#include<iom169.h></span>00050 00051 <span class="preprocessor">#include"<a class="code" href="main_8h.html">main.h</a>"</span>00052 <span class="preprocessor">#include"LCD_functions.h"</span>00053 <span class="preprocessor">#include"<a class="code" href="LCD__driver_8h.html">LCD_driver.h</a>"</span>00054 <span class="preprocessor">#include"<a class="code" href="button_8h.html">button.h</a>"</span>00055 <span class="preprocessor">#include"<a class="code" href="BCD_8h.html">BCD.h</a>"</span>00056 <span class="preprocessor">#include"<a class="code" href="types_8h.html">types.h</a>"</span>00057 <span class="preprocessor">#include"<a class="code" href="STATE__functions_8h.html">STATE_functions.h</a>"</span>00058 <span class="preprocessor">#include"<a class="code" href="menu_8h.html">menu.h</a>"</span>00059 00060 <span class="preprocessor">#include"..\AVRGSM_FILES\AVRGSM_api.h"</span>00061 <span class="preprocessor">#include"..\AVRGSM_FILES\AVRGSM_com.h"</span>00062 00063 <a name="l00064"></a><a class="code" href="main_8c.html#a0">00064</a> <span class="preprocessor">#define pLCDREG_test (*(char *)(0xEC))</span>00065 <span class="preprocessor"></span>00066 <a name="l00067"></a><a class="code" href="main_8c.html#a1">00067</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="AVRGSM__api_8c.html#a0">rx_ack</a>; <span class="comment">//From AVRGSM_com.c</span>00068 <a name="l00069"></a><a class="code" href="main_8c.html#a2">00069</a> <span class="keyword">extern</span> __flash <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="LCD__driver_8c.html#a10">LCD_character_table</a>[];00070 <a name="l00071"></a><a class="code" href="main_8c.html#a3">00071</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="main_8c.html#a3">state</a>; <span class="comment">// helds the current state, according to</span>00072 <span class="comment">// "menu.h"</span>00073 00074 <a name="l00084"></a><a class="code" href="main_8c.html#a4">00084</a> __C_task <span class="keywordtype">void</span> <a class="code" href="main_8c.html#a4">main</a>( <span class="keywordtype">void</span> )00085 {00086 00088 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> nextstate;00089 <span class="keyword">static</span> <span class="keywordtype">char</span> __flash *statetext;00090 char (*pStateFunc)(<span class="keywordtype">char</span>);00091 <span class="keywordtype">char</span> <a class="code" href="main_8h.html#a27">input</a>;00092 <span class="keywordtype">char</span> i;00093 00095 <a class="code" href="main_8c.html#a3">state</a> = nextstate = <a class="code" href="main_8h.html#a26a2">ST_AVR_IDLE</a>;00096 statetext = <a class="code" href="menu_8h.html#a0">MT_IDLE</a>;00097 pStateFunc = <a class="code" href="types_8h.html#a3">NULL</a>;00098 00099 00101 <a class="code" href="main_8c.html#a6">Initialization</a>( );00102 __enable_interrupt();00103 00104 00106 <span class="keywordflow">for</span>( ;; )00107 {00108 00109 <span class="keywordflow">if</span>( ( <a class="code" href="main_8c.html#a3">state</a> == <a class="code" href="main_8h.html#a26a4">ST_AVR_READY</a> ) && ( <a class="code" href="AVRGSM__api_8c.html#a0">rx_ack</a> == 1 ) ) <span class="comment">//New SMS</span>00110 {00111 00112 <a class="code" href="main_8c.html#a3">state</a> = nextstate = <a class="code" href="main_8h.html#a26a9">ST_AVR_NEW_SMS_function</a>; <span class="comment">//Setting new state</span>00113 statetext = <a class="code" href="types_8h.html#a3">NULL</a>;00114 pStateFunc = <a class="code" href="STATE__functions_8c.html#a5">ST_get_index</a>;00115 }00116 00117 <span class="comment">// Plain menu text</span>00118 <span class="keywordflow">if</span>( statetext )00119 {00120 00121 <a class="code" href="Lcd__functions_8h.html#a0">LCD_puts_f</a>( statetext, 1 );00122 <a class="code" href="Lcd__functions_8h.html#a5">LCD_Colon</a>( 0 );00123 statetext = <a class="code" href="types_8h.html#a3">NULL</a>;00124 }00125 00126 <span class="comment">//Get input</span>00127 <a class="code" href="main_8h.html#a27">input</a> = <a class="code" href="button_8c.html#a7">getkey</a>( );00128 00129 <span class="keywordflow">if</span> ( pStateFunc )00130 {00131 00132 <span class="comment">// When in this state, we must call the state function</span>00133 nextstate = pStateFunc(<a class="code" href="main_8h.html#a27">input</a>);00134 }00135 00136 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="main_8h.html#a27">input</a> != <a class="code" href="main_8h.html#a27a17">KEY_NULL</a>)00137 {00138 00139 <span class="comment">// Plain menu, clock the state machine</span>00140 nextstate = <a class="code" href="main_8h.html#a24">StateMachine</a>(<a class="code" href="main_8c.html#a3">state</a>, <a class="code" href="main_8h.html#a27">input</a>);00141 }00142 00143 <span class="keywordflow">if</span> (nextstate != <a class="code" href="main_8c.html#a3">state</a>)00144 {00145 <a class="code" href="main_8c.html#a3">state</a> = nextstate;00146 00147 <span class="keywordflow">for</span> (i=0; <a class="code" href="menu_8h.html#a11">menu_state</a>[i].<a class="code" href="structMENU__STATE.html#o2">state</a>; i++)00148 {00149 00150 <span class="keywordflow">if</span> (<a class="code" href="menu_8h.html#a11">menu_state</a>[i].<a class="code" href="structMENU__STATE.html#o2">state</a> == <a class="code" href="main_8c.html#a3">state</a>)00151 {00152 00153 statetext = <a class="code" href="menu_8h.html#a11">menu_state</a>[i].<a class="code" href="structMENU__STATE.html#o1">pText</a>;00154 pStateFunc = <a class="code" href="menu_8h.html#a11">menu_state</a>[i].<a class="code" href="structMENU__STATE.html#o0">pFunc</a>;00155 <span class="keywordflow">break</span>;00156 }00157 }00158 }00159 }00160 }00161 00162 <a name="l00171"></a><a class="code" href="main_8h.html#a24">00171</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="main_8h.html#a24">StateMachine</a>( <span class="keywordtype">char</span> state, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> stimuli )00172 {00173 00174 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> nextstate = <a class="code" href="main_8c.html#a3">state</a>; <span class="comment">// Default stay in same state</span>00175 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> i;00176 00177 <span class="keywordflow">for</span> ( i=0; <a class="code" href="menu_8h.html#a10">menu_nextstate</a>[i].<a class="code" href="structMENU__NEXTSTATE.html#o2">state</a>; i++ )00178 {00179 00180 <span class="keywordflow">if</span> ( ( <a class="code" href="menu_8h.html#a10">menu_nextstate</a>[i].<a class="code" href="structMENU__NEXTSTATE.html#o2">state</a> == <a class="code" href="main_8c.html#a3">state</a> ) && ( <a class="code" href="menu_8h.html#a10">menu_nextstate</a>[i].<a class="code" href="structMENU__NEXTSTATE.html#o0">input</a> == stimuli ) )00181 {00182 00183 <span class="comment">// This is the one!</span>00184 nextstate = <a class="code" href="menu_8h.html#a10">menu_nextstate</a>[i].<a class="code" href="structMENU__NEXTSTATE.html#o1">nextstate</a>;00185 <span class="keywordflow">break</span>;00186 }00187 }00188 00189 <span class="keywordflow">return</span> nextstate;00190 }00191 00192 <a name="l00206"></a><a class="code" href="main_8h.html#a23">00206</a> <span class="keywordtype">void</span> <a class="code" href="main_8c.html#a6">Initialization</a>(<span class="keywordtype">void</span>)00207 {00208 00209 PORTB = (15<<PORTB0); <span class="comment">// Enable pullup on</span>00210 PORTE = (15<<PORTE4);00211 00212 <a class="code" href="AVRGSM__com_8h.html#a7">COM_init</a>( 51 ); <span class="comment">//9600bps @ 8MHz</span>00213 <a class="code" href="button_8c.html#a3">Button_Init</a>( ); <span class="comment">// Initialize pin change interrupt on joystick</span>00214 <a class="code" href="LCD__driver_8c.html#a11">LCD_Init</a>( ); <span class="comment">// initialize the LCD</span>00215 }</div></pre><hr size="1"><address style="align: right;"><small>Generated on Tue Nov 1 16:21:39 2005 for AVR323 Interfacing GSM modems by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -