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