📄 hal_lcd.s51
字号:
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 + -