首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于MSP430单片机的微功耗中文人机界面设计(3)

基于MSP430单片机的微功耗中文人机界面设计(3)

3、部分程序实例
  程序是在MSP430单片机的开发平台IAR Embedded Workbench下采用汇编语言编写,仿真机采用了TI公司的MSP-FET430P410。
  由于本系统中选用了MSP430F149单片机,对源程序编译前需对IAR Embeded WorkBench平台进行以下设置:
A. 点击Project菜单下的Options…命令进入设置窗口,对左边Category框内的"XLINK"选项下的"Include"页面进行设置,把"XCL file name"框的内容设置为"Crogram FilesIAR Systemsew23430icc430msp430F149A.xcl"。
B. 点击Project菜单下的Options…命令进入设置窗口,对左边Category框内的"C-SPY"选项下的"Setup"页面进行设置,把"Chip Description"框的内容设置为"Crogram FilesIAR Systemsew23430cw430msp430F149.ddf"。
  以下给出了一些常量定义和发送命令字子程序(SEND_COM)、发送数据子程序(SEND_DATA)及液晶状态查询子程序(LCD_STE)的源代码。
#include       "msp430x14x.h"
;程序在液晶上显示"汉字液晶"。
;---------定义LCD的引脚
LCD_RST   EQU  04H    4.2
LCD_E1    EQU  40H     4.6
LCD_E2    EQU   20H    4.5
LCD_RW    EQU   10H    4.4
LCD_A0    EQU   08H    4.3
;----------定义LCD使用的数据寄存器
LCD_PAGE   EQU   0200h          ;定义显示页面
LCD_ORDER  EQU   0201h          ;暂存液晶控制指令
LCD_DATA   EQU  0202h          ;暂存液晶数据
LCD_CNT   EQU   0203h           ;液晶计数存储器
LCD_ROW   EQU   0204h           ;存放列地址数据
LCD_LINE   EQU   0205h           ;存放行地址数据
LCD_CHAR   EQU   0206h           ;存放当前字符数据的首地址
LCD_BYTECNT EQU  0207h           ;存放要显示的字节数
LCD_STATUS  EQU   0208h          ;存放液晶当前状态的数据
SEND_COM  ;发送命令字子程序,以LCD_ORDER为入口参数
       BIS.B  #LCD_E1,&4OUT        ;SET E1=1 ,使能CHIP1
       CALL  #LCD_STE
       BIC.B  #LCD_A0,&4OUT        ;A0=0,SEND OUT INSTRUCTION
       BIC.B  #LCD_RW,&4OUT       ;R/W=0,WRITABLE
       BIS.B  #0FFH,&5DIR         ;SET P5 PINS OUTPUT
       MOV.B  LCD_ORDER,&5OUT     ;SEND ORDER BYTE TO LCD
       BIC.B  #LCD_E1,&P4OUT       ;SET E1=0
       RET
;发送数据子程序,以LCD_DATA为入口参数
SEND_DATA  BIS.B  #LCD_E1,&P4OUT       ;SET E1=1
        CALL   #LCD_STE
        BIS.B  #LCD_A0,&P4OUT      ;A0=1,SEND OUT DATA
        BIC.B  #LCD_RW,&P4OUT     ;R/W=0,WRITABLE
        BIS.B  #0FFH,&P5DIR       ;SET P5 PINS OUTPUT
        MOV.B  LCD_DATA,&P5OUT    ;SEND DATA BYTE TO LCD
        BIC.B  #LCD_E1,&P4OUT     ;SET E1=0
        RET
;读液晶当前状态的子程序LCD_STE
LCD_STE   BIC.B  #LCD_A0,&P4OUT      ;A0=0,SEND OUTINSTRUCTION
        BIS.B #LCD_RW,&P4OUT      ;R/W=1,READABLE
        BIC.B  #0FFH,&P5DIR       ;SET P5 PINS INPUT
STE_AGN   MOV.B  &P5IN,LCD_STATUS    ;GET STATUS DATA FROM LCD
       BIT.B  #80H,LCD_STATUS     ;如状态存储器第7位为1,忙,则等待
       JC    STE_AGN
       RET
继承事业,薪火相传
返回列表