⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_lcd.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
        CFI V4 SameValue
        CFI V5 SameValue
        CFI V6 SameValue
        CFI V7 SameValue
        CFI PSPH Undefined
        CFI PSPL Undefined
        CFI XSPH Undefined
        CFI XSPL Undefined
        CFI ?RET Concat
        CFI ?BRET_EXT SameValue
        CFI ?RET_HIGH Frame(CFA_SP, 2)
        CFI ?RET_LOW Frame(CFA_SP, 1)
        CFI EndCommon cfiCommon1
        
        EXTERN _ltoa
        FUNCTION _ltoa,0202H
        ARGFRAME XSTACK, 43, STACK
        EXTERN osal_strlen
        FUNCTION osal_strlen,0202H
        ARGFRAME XSTACK, 41, STACK
        EXTERN osal_memcpy
        FUNCTION osal_memcpy,0202H
        ARGFRAME XSTACK, 44, STACK

// C:\Texas Instruments\ZStack-1.4.2-1.1.0\Components\hal\target\CC2430DB\hal_lcd.c
//    1 /**************************************************************************************************
//    2   Filename:       hal_lcd.c
//    3   Revised:        $Date: 2007-05-29 22:13:37 -0700 (Tue, 29 May 2007) $
//    4   Revision:       $Revision: 14456 $
//    5 
//    6   Description:
//    7 
//    8   This file contains the interface to the HAL LCD Service. - CC2430
//    9 
//   10   Notes:
//   11 
//   12   Copyright (c) 2006 by Texas Instruments, Inc.
//   13   All Rights Reserved.  Permission to use, reproduce, copy, prepare
//   14   derivative works, modify, distribute, perform, display or sell this
//   15   software and/or its documentation for any purpose is prohibited
//   16   without the express written consent of Texas Instruments, Inc.
//   17 **************************************************************************************************/
//   18 
//   19 
//   20 /**************************************************************************************************
//   21  *                                           INCLUDES
//   22  **************************************************************************************************/
//   23 #include "hal_types.h"
//   24 #include "hal_lcd.h"
//   25 #include "OSAL.h"
//   26 #include "OnBoard.h"
//   27 
//   28 #ifdef ZTOOL_PORT
//   29   #include "DebugTrace.h"
//   30 #endif
//   31 
//   32 /**************************************************************************************************
//   33  *                                          CONSTANTS
//   34  **************************************************************************************************/
//   35 #define LCD_MAX_BUF 25
//   36 
//   37 // General I/O definitions
//   38 #define IO_GIO  0  // General purpose I/O
//   39 #define IO_PER  1  // Peripheral function
//   40 #define IO_IN   0  // Input pin
//   41 #define IO_OUT  1  // Output pin
//   42 #define IO_PUD  0  // Pullup/pulldn input
//   43 #define IO_TRI  1  // Tri-state input
//   44 #define IO_PUP  0  // Pull-up input pin
//   45 #define IO_PDN  1  // Pull-down input pin
//   46 
//   47 // LCD port/bit definitions
//   48 #define LCD_CLK_PORT  2
//   49 #define LCD_CLK_PIN   0  // P2_0
//   50 #define LCD_DATA_PORT 1
//   51 #define LCD_DATA_PIN  2  // P1_2
//   52 
//   53 /* LCD Line Address */
//   54 #define LCD_LINE1_ADDR  0x80
//   55 #define LCD_LINE2_ADDR  0xC0
//   56 
//   57 // LCD device definitions
//   58 #define LCD_ADDR  0x76  // SM-Bus address of the LCD controller
//   59 #define CH1_ADDR  0x08
//   60 #define LCD_RS_0  0x00  // RS = 0 => selects instruction register for write/busy flag
//   61 #define LCD_RS_1  0x40  // RS = 1 => selects the data register for both read and write
//   62 
//   63 /**************************************************************************************************
//   64  *                                           MACROS
//   65  **************************************************************************************************/
//   66 
//   67 // Removed to allow PNAME macro to expand -
//   68 // Problem: in ioCC2430.h, #define P PSW_bit.P
//   69 #undef P
//   70 
//   71   /* I/O PORT CONFIGURATION */
//   72 #define CAT1(x,y) x##y  // Concatenates 2 strings
//   73 #define CAT2(x,y) CAT1(x,y)  // Forces evaluation of CAT1
//   74 
//   75 // LCD port I/O defintions
//   76 // Builds I/O port name: PNAME(1,INP) ==> P1INP
//   77 #define PNAME(y,z) CAT2(P,CAT2(y,z))
//   78 // Builds I/O bit name: BNAME(1,2) ==> P1_2
//   79 #define BNAME(port,pin) CAT2(CAT2(P,port),CAT2(_,pin))
//   80 
//   81 #define LCD_SCL BNAME(LCD_CLK_PORT, LCD_CLK_PIN)
//   82 #define LCD_SDA BNAME(LCD_DATA_PORT, LCD_DATA_PIN)
//   83 
//   84 // LCD port I/O defintions
//   85 #define LCD_SCL BNAME(LCD_CLK_PORT, LCD_CLK_PIN)
//   86 #define LCD_SDA BNAME(LCD_DATA_PORT, LCD_DATA_PIN)
//   87 
//   88 #define IO_DIR_PORT_PIN(port, pin, dir) \ 
//   89 {\ 
//   90   if ( dir == IO_OUT ) \ 
//   91     PNAME(port,DIR) |= (1<<(pin)); \ 
//   92   else \ 
//   93     PNAME(port,DIR) &= ~(1<<(pin)); \ 
//   94 }
//   95 
//   96 #define LCD_DATA_HIGH()\ 
//   97 { \ 
//   98   IO_DIR_PORT_PIN(LCD_DATA_PORT, LCD_DATA_PIN, IO_IN); \ 
//   99 }
//  100 
//  101 #define LCD_DATA_LOW() \ 
//  102 { \ 
//  103   IO_DIR_PORT_PIN(LCD_DATA_PORT, LCD_DATA_PIN, IO_OUT); \ 
//  104   LCD_SDA = 0;\ 
//  105 }
//  106 
//  107 #define IO_FUNC_PORT_PIN(port, pin, func) \ 
//  108 { \ 
//  109   if( port < 2 ) \ 
//  110   { \ 
//  111     if ( func == IO_PER ) \ 
//  112       PNAME(port,SEL) |= (1<<(pin)); \ 
//  113     else \ 
//  114       PNAME(port,SEL) &= ~(1<<(pin)); \ 
//  115   } \ 
//  116   else \ 
//  117   { \ 
//  118     if ( func == IO_PER ) \ 
//  119       P2SEL |= (1<<(pin>>1)); \ 
//  120     else \ 
//  121       P2SEL &= ~(1<<(pin>>1)); \ 
//  122   } \ 
//  123 }
//  124 
//  125 #define IO_IMODE_PORT_PIN(port, pin, mode) \ 
//  126 { \ 
//  127   if ( mode == IO_TRI ) \ 
//  128     PNAME(port,INP) |= (1<<(pin)); \ 
//  129   else \ 
//  130     PNAME(port,INP) &= ~(1<<(pin)); \ 
//  131 }
//  132 
//  133 #define IO_PUD_PORT(port, dir) \ 
//  134 { \ 
//  135   if ( dir == IO_PDN ) \ 
//  136     P2INP |= (1<<(port+5)); \ 
//  137   else \ 
//  138     P2INP &= ~(1<<(port+5)); \ 
//  139 }
//  140 
//  141 /**************************************************************************************************
//  142  *                                          TYPEDEFS
//  143  **************************************************************************************************/
//  144 
//  145 
//  146 /**************************************************************************************************
//  147  *                                       GLOBAL VARIABLES
//  148  **************************************************************************************************/
//  149 #ifdef LCD_HW
//  150 static uint8 *Lcd_Line1;
//  151 #endif
//  152 
//  153 /**************************************************************************************************
//  154  *                                       FUNCTIONS - API
//  155  **************************************************************************************************/
//  156 #if (defined LCD_HW) && (HAL_LCD == TRUE)
//  157 static void initLcd( void );
//  158 static void initSmb( void );
//  159 static void lcdUpdateLine( uint8 line, uint8 *pLine );
//  160 static byte lcdConvertChar( byte aChar );
//  161 static void smbSend( uint8 *buffer, uint8 len );
//  162 static bool smbSendByte( uint8 dByte );
//  163 static void smbWrite( bool dBit );
//  164 static void smbClock( bool dir );
//  165 static void smbStart( void );
//  166 static void smbStop( void );
//  167 static void smbWait( void );
//  168 #endif
//  169 
//  170 /**************************************************************************************************
//  171  * @fn      HalLcdInit
//  172  *
//  173  * @brief   Initilize LCD Service
//  174  *
//  175  * @param   init - pointer to void that contains the initialized value
//  176  *
//  177  * @return  None
//  178  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  179 void HalLcdInit(void)
HalLcdInit:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function HalLcdInit
//  180 {
        ; Saved register size: 0
        ; Auto size: 0
//  181 #if (HAL_LCD == TRUE)
//  182 
//  183 #ifdef LCD_HW
//  184   Lcd_Line1 = NULL;
//  185   initLcd();
//  186 #endif
//  187 
//  188 #endif /* HAL_LCD */
//  189 
//  190 }
        LJMP	?BRET
        CFI EndBlock cfiBlock0
//  191 
//  192 /*************************************************************************************************
//  193  *                    LCD EMULATION FUNCTIONS
//  194  *
//  195  * Some evaluation boards are equipped with Liquid Crystal Displays
//  196  * (LCD) which may be used to display diagnostic information. These
//  197  * functions provide LCD emulation, sending the diagnostic strings
//  198  * to Z-Tool via the RS232 serial port. These functions are enabled
//  199  * when the "LCD_SUPPORTED" compiler flag is placed in the makefile.
//  200  *
//  201  * Most applications update both lines (1 and 2) of the LCD whenever
//  202  * text is posted to the device. This emulator assumes that line 1 is
//  203  * updated first (saved locally) and the formatting and send operation
//  204  * is triggered by receipt of line 2. Nothing will be transmitted if
//  205  * only line 1 is updated.
//  206  *
//  207  *************************************************************************************************/
//  208 
//  209 
//  210 /**************************************************************************************************
//  211  * @fn      HalLcdWriteString
//  212  *
//  213  * @brief   Write a string to the LCD
//  214  *
//  215  * @param   str    - pointer to the string that will be displayed
//  216  *          option - display options
//  217  *
//  218  * @return  None
//  219  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  220 void HalLcdWriteString ( char *str, uint8 option)
HalLcdWriteString:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function HalLcdWriteString
//  221 {
        ; Saved register size: 0
        ; Auto size: 0
//  222 #if (HAL_LCD == TRUE)
//  223 
//  224 #ifdef LCD_SD
//  225   byte x;
//  226   byte bln;
//  227   byte sln;
//  228   char *buf;
//  229 
//  230   if ( Lcd_Line1 == NULL )
//  231   {
//  232     // Set up system start-up message
//  233     Lcd_Line1 = osal_mem_alloc( MAX_LCD_CHARS+1 );
//  234     HalLcdWriteString( "Figure8 Wireless", HAL_LCD_LINE_1 );
//  235   }
//  236 
//  237   sln = (byte)osal_strlen( str );
//  238 
//  239   // Check boundries
//  240   if ( sln > MAX_LCD_CHARS )
//  241     sln = MAX_LCD_CHARS;
//  242 
//  243   if ( option == HAL_LCD_LINE_1 ) {
//  244     // Line 1 gets saved for later
//  245     osal_memcpy( Lcd_Line1, str, sln );
//  246     Lcd_Line1[sln] = '\0';
//  247   }
//  248   else {
//  249     // Line 2 triggers action
//  250     x = (byte)osal_strlen( (char*)Lcd_Line1 );
//  251     bln = x + 1 + sln + 1;
//  252     buf = osal_mem_alloc( bln );
//  253     if ( buf != NULL ) {
//  254       // Concatenate strings
//  255       osal_memcpy( buf, Lcd_Line1, x );
//  256       buf[x++] = ' ';
//  257       osal_memcpy( &buf[x], str, sln );
//  258       buf[x+sln] = '\0';
//  259       // Send it out
//  260 #ifdef ZTOOL_PORT
//  261       debug_str( (byte*)buf );
//  262 #endif
//  263       osal_mem_free( buf );
//  264     }
//  265   }
//  266 #endif // LCD_SD
//  267 
//  268 #ifdef LCD_HW
//  269   lcdUpdateLine( option, (byte*)str );
//  270 #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -