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

📄 mainboard.txt

📁 msp430驱动ht1621液晶的汇编驱动程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
#include     "msp430x41x.h"

#define       lowest_word           R14
#define       highest_word          R15

              ORG      200h
com_byte                    DB      0
counter                     DB      0
lcd_address                 DB      0
Count                       DB      0
LCD_Mem                     DB      0

;系统中使用到的变量
                 ORG    230h
outhigh_word                DW      0
outlow_word                 DW      0
BinWord                     DW      0
AddUpUsed_Value1            DW      0
AddUpUsed_Value2            DW      0
Remain_Value1               DW      0
Remain_Value2               DW      0                 
                

high_bit                  equ       080h
low_bit                   equ       01h

;
lcd_cs                    equ        010h
lcd_wr                    equ        020h
lcd_data                  equ        040h

;---------------------------------------------------------------
              ORG     0F000h
;---------------------------------------------------------------
Main
RESET         mov.w   #300h,SP
StopWDT       mov.w   #WDTPW+WDTHOLD,&WDTCTL
              ;mov.b   &CALBC1_1MHZ, &BCSCTL1
              ;mov.b   &CALDCO_1MHZ, &DCOCTL
              bis.b   #80h,&P4DIR
              bis.b   #80h,&P4OUT
              ;call    #Delay50ms
              bis.b   #lcd_cs,&P4DIR
              bis.b   #lcd_cs,&P4OUT
              bis.b   #lcd_wr+lcd_data,&P4DIR
              bic.b   #lcd_wr+lcd_data,&P4OUT
              call    #Lcd_Display_On_L1
              jmp     $
              
Delay50ms
              mov     #0h,R5
Delay50ms_L1
              dec     R5
              jnz     Delay50ms_L1
              ret

;;-----------------------------------------------------------
;;数据区的显示.
;;-----------------------------------------------------------
Function_LCDMem_Write
              ret


Lcd_Group_Write
              mov.b   #0A0h,&com_byte
              call    #Function_LCD_CS_Command
              mov.b   #02h,&lcd_address
              call    #Function_LCD_Address_Mode
              clr.b   &Count
              mov     #09h, R5
Loop1
              ;mov.b   #0ffh,&com_byte
              mov.b   lcd_table(R5), &com_byte
              ;mov.b   #0feh, &com_byte
              call    #write_lcd_data
              inc.b   &Count
              cmp.b   #01h,&Count
              jnz     Loop1
              ret


;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;液晶显示的集成模块。
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Init_Ht1621
             mov.b   #080h,&com_byte       ;command mode
             call    #Function_LCD_CS_Command
             ;mov.b   #018h,&com_byte
             ;call    #command_code         ;设为内晶振256K  
             mov.b   #01h,&com_byte
             call    #Function_LCD_Command_Code         ;sys enable
             mov.b   #04h,&com_byte
             call    #Function_LCD_Command_Code         ;timer disable
             mov.b   #05h,&com_byte
             call    #Function_LCD_Command_Code         ;wdt disable
             mov.b   #029h,&com_byte
             call    #Function_LCD_Command_Code         ;bias 1/3 4commons
             mov.b   #03h,&com_byte
             call    #Function_LCD_Command_Code         ;LCD on
             ret
;;-------------------------------------------
;;---关闭LCD显示。
;lcd_display_down
            ; mov.b   #080h,&com_byte       ;command mode
            ; call    #lcd_cs_command
            ; mov.b   #02h,&com_byte
            ; call    #command_code
            ; mov.b   #0h,&com_byte
            ; call    #command_code
            ; ret
;;-------------------------------------------
;;---清lcd数据区。
;clr_lcd_data
 ;            mov.b   #0A0h,&com_byte
  ;           call    #Function_LCD_CS_Command
   ;          mov.b   #0h,&lcd_address
    ;         call    #Function_LCD_Address_Mode
     ;        mov     #020h,R5
;init_lcd
 ;            clr.b   &com_byte
  ;;           call    #write_lcd_data
   ;          dec     R5
    ;         jnz     init_lcd
     ;        ret

;;++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;显示模式的变换。
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++            
Function_LCD_CS_Command
             bis.b   #lcd_cs,&P4OUT
             bic.b   #lcd_wr,&P4OUT
             call    #Function_LCD_Delay
             bic.b   #lcd_cs,&P4OUT
             mov.b   #3h,&counter
             call    #Function_Ht1621_Write_Data
             ret
;;-------------------------------------------------------
;;命令数据的产生模块。
;;-------------------------------------------------------
Function_LCD_Command_Code
             bic.b   #lcd_wr,&P4OUT
             mov.b   #9h,&counter
             call    #Function_Ht1621_Write_Data
             ret

;;--------------------------------------------------------
;;lcd的显示数据传送?1,先发送地址。
;;--------------------------------------------------------
Function_LCD_Address_Mode
             bic.b   #lcd_wr,&P4OUT
             mov.b   &lcd_address,&com_byte
             rlc.b   &com_byte
             rlc.b   &com_byte
             mov.b   #6h,&counter
             call    #Function_Ht1621_Write_Data
             ret

;;---------------------------------------------------------
;;lcd的显示数据传送?2,接着发送数据。
;;---------------------------------------------------------
write_lcd_data;发送数据。
             mov.b   #8h,&counter
             bic.b   #lcd_wr,&P4OUT
data_next_L1
             bit.b   #low_bit,&com_byte
             jz      data_tx0
             bis.b   #lcd_data,&P4OUT
             call    #Function_LCD_Delay
             jmp     data_next_L2
data_tx0
             bic.b   #lcd_data,&P4OUT
             call    #Function_LCD_Delay
data_next_L2
             bis.b   #lcd_wr,&P4OUT
             call    #Function_LCD_Delay
             bic.b   #lcd_wr,&P4OUT
             rrc.b   &com_byte
             dec.b   &counter
             jnz     data_next_L1
             ret

;--------------------------------------------------------
;具体改变到哪种模式,由com_byte来决定。
;--------------------------------------------------------
Function_Ht1621_Write_Data
             bit.b   #high_bit, &com_byte
             jz      write_0_ht1621
             bis.b   #lcd_data, &P4OUT
             call    #Function_LCD_Delay
             jmp     write_ht1621_1
write_0_ht1621
             bic.b   #lcd_data, &P4OUT
             call    #Function_LCD_Delay
             nop
write_ht1621_1
             bis.b   #lcd_wr, &P4OUT
             call    #Function_LCD_Delay
             bic.b   #lcd_wr, &P4OUT
             rlc.b   &com_byte
             dec.b   &counter
             jnz     Function_Ht1621_Write_Data
             ret
             
Function_LCD_Delay
             nop
             nop
             nop
             ret

;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;液晶显示子程序。
;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Lcd_Display_On_L1
	    call      #Init_Ht1621
            ;call      #clr_lcd_data
            call      #Lcd_Group_Write
            ret
            
;-------------------------------------------------------------------------------
;液晶显示函数
;-------------------------------------------------------------------------------
;;------- LCD  Definitions
LCD_TYPE
a       equ     080h
b       equ     040h
c       equ     020h
d       equ     010h
e       equ     02h
f       equ     08h
g       equ     04h
;--- character definitions
lcd_table
        DB      a+b+c+d+e+f                ; displays "0"
        DB      b+c                        ; displays "1"
        DB      a+b+d+e+g                  ; displays "2"
        DB      a+b+c+d+g                  ; displays "3"
        DB      b+c+f+g                    ; displays "4"
        DB      a+c+d+f+g                  ; displays "5"
        DB      a+c+d+e+f+g                ; displays "6"
        DB      a+b+c                      ; displays "7"
        DB      a+b+c+d+e+f+g              ; displays "8"
        DB      a+b+c+d+f+g                ; displays "9"

;-------------------------------------------------------------------------------
;通用的算法
;-------------------------------------------------------------------------------
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;将十进制数变为16进制数的子程序,以便于计算.
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
com_bcd_bin
              clr    lowest_word
              clr    highest_word
com_bcd_bin_L1

⌨️ 快捷键说明

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