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

📄 hal_lcd.s51

📁 CC2430上开关控制灯和温度传感器采集两个例子
💻 S51
📖 第 1 页 / 共 5 页
字号:
        CFI V0 SameValue
        CFI V1 SameValue
        CFI V2 SameValue
        CFI V3 SameValue
        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   }

⌨️ 快捷键说明

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