📄 mainboard.txt
字号:
#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 + -