📄 main.asm
字号:
;==========================================================================*
* File name : main.asm *
* Author: Qu Bo *
* Data: 2006.11.19*
* Version: 2.0 *
* Organization: DSP&EMC,National Key Laboratory of Power Electronics,
* Zhejiang University, Hangzhou 310027, China *
* Description : PROGRAM TO CONTROL A ELECTRIC CAR USE F2407A *
;============================================================================*
.include "F2407.h" ;头文件
.def _c_int0
.bss TEMP,1
.bss TEMP1,1
.bss TEMP2,1
.bss COUNT,1
.bss DATA3,1
.bss GPR0,1
;======================================================
;系统初始化
;使能EVA,EVB,SPI模块,其他的未使能(根据要求使能)。
;======================================================
.text ;加密位
.word #0ffffh
.word #0ffffh
.word #0ffffh
.word #0ffffh
_c_int0:
LDP #0H
SETC INTM ;屏蔽总中断程序
CLRC SXM ;符号位不作扩展
LACC IFR ;清标志
SACL IFR
CLRC CNF ;B0为数据存储区
SETC OVM ;正常溢出
LDP #WDCR>>7
SPLK #006Fh,WDCR ;看门狗不使能
KICK_DOG
SPLK #00h,GPR0
OUT GPR0,WSGR ;与外部等待时间为0
LDP #SCSR1>>7
SPLK #0000000000101100B,SCSR1 ;使能EVA,EVB,SPI
LDP #IMR>>7
SPLK #0002H,IMR ;中端级2使能
LDP #MCRB>>7
SPLK #0FFFDH,MCRB ;9~15脚须置1,以实现在线仿真功能
LDP #PCDATDIR>>7
SPLK #0FFFDH,PCDATDIR
LDP #TEMP2
SPLK #0FFFFH,TEMP2
OUT TEMP2,2000H
OUT TEMP2,6000H
MAIN:
CALL INIT ;调用INIT子程序
LDP #COUNT
SPLK #0,COUNT ;计数值COUNT初始化
LDP #TEMP1
SPLK #80H,TEMP1 ;TEMP1的初始值
CALL ADD_SET ;DDRAM地址设定
SHOW_LP
LDP #COUNT
LACC COUNT
AND #00FFH
ADD #TABLE
TBLR TEMP1 ;查表显示
CALL DATA_SET ;数据设定
LACC COUNT
ADD #1
SACL COUNT ;加1计数,不大于64时逐一显示
SUB #64
BCND SHOW_LP,LT ;ACC<0
LOOP
NOP
NOP
B LOOP ;大循环等待
INIT
CALL A11 ;调用"基本指令"子程序
CALL A0 ;调用"清寄存器"子程序
CALL A2 ;调用"显示关"子程序
CALL A3 ;调用"整体显示"子程序
NOP
RET
A0
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选,加一时钟信号,使负责液晶使能输出的锁存器工作
SPLK #01H,TEMP ;清寄存器,也为待命模式
OUT TEMP,04000H ;送数据给送显示的锁存器
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选,加一时钟信号,使负责液晶数据输入显示的锁存器工作
CALL DELAY1 ;延时等待
CALL DELAY1
CALL DELAY1
RET
A1
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #02H,TEMP
OUT TEMP,04000H ;送数据,地址复位
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY1 ;延时等待
CALL DELAY1
CALL DELAY1
RET
A2
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #08H,TEMP
OUT TEMP,04000H ;送数据,显示关(整体显示,游标,游标位置均关)
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
A3
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #0CH,TEMP ;字体左右移可通过修改此数据实现
OUT TEMP,04000H ;送数据,实现整体显示
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
A4
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #0EH,TEMP
OUT TEMP,04000H ;送数据,实现游标显示
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
A5
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #0FH,TEMP
OUT TEMP,04000H ;送数据,实现游标位置显示
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
A6
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #10H,TEMP
OUT TEMP,04000H ;送数据,实现光标左移
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
A7
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #14H,TEMP
OUT TEMP,04000H ;送数据,实现光标右移
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
A8
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #18H,TEMP
OUT TEMP,04000H ;送数据,实现整体显示左移
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
A9
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #02H,TEMP
OUT TEMP,04000H ;送数据,实现整体显示右移
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
A10
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
SPLK #34H,TEMP
OUT TEMP,04000H ;送数据,实现扩充指令
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
A11
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选等
SPLK #30H,TEMP
OUT TEMP,04000H ;送数据,基本指令功能
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
ADD_SET
LDP #TEMP
SPLK #0F6H,TEMP
OUT TEMP,0C000H ;片选
LACC TEMP1
SACL TEMP
OUT TEMP,04000H ;送数据,DDRAM地址设定
CALL DELAY ;延时等待
SPLK #0F4H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY
RET
DATA_SET
LDP #TEMP
SPLK #0F7H,TEMP
OUT TEMP,0C000H ;片选
LACC TEMP1
SACL TEMP
OUT TEMP,04000H ;送数据,送入的为要显示的内容
CALL DELAY ;延时等待
SPLK #0F5H,TEMP
OUT TEMP,0C000H ;片选
CALL DELAY ;延时等待
RET
DELAY: ;延时子程序
LACC #0B0H
D_LOOP
SUB #1
BNZ D_LOOP
RET
DELAY1 ;延时子程序
LACC #01000H
D1_LOOP
SUB #1
BNZ D1_LOOP
RET
TABLE:
.WORD #20H ;80
.WORD #54H ;1 T
.WORD #48H ;81 H
.WORD #46H ;2 F
.WORD #2DH ;82 -
.WORD #32H ; 2
.WORD #20H ;83
.WORD #20H ;
.WORD #20H ;84
.WORD #20H ;
.WORD #20H ;85
.WORD #44H ; D
.WORD #53H ;86 S
.WORD #50H ; P
.WORD #20H ;87
.WORD #20H ;
.WORD #0CCH ;1 天
.WORD #0ECH ;
.WORD #0BBH ;2 煌
.WORD #0CDH ;
.WORD #0BDH ;3 教
.WORD #0CCH ;
.WORD #0D2H ;4 仪
.WORD #0C7H ;
.WORD #0B0H ;5 伴
.WORD #0E9H ;
.WORD #0C4H ;6 你
.WORD #0E3H ;
.WORD #0B3H ;7 成
.WORD #0C9H ;
.WORD #0B3H ;8 长
.WORD #0A4H ;
.WORD #0CAH ;1 实
.WORD #0B5H ;
.WORD #0D1H ;2 验
.WORD #0E9H ;
.WORD #0D3H ;3 与
.WORD #0EBH ;
.WORD #0BFH ;4 开
.WORD #0AAH ;
.WORD #0B7H ;5 发
.WORD #0A2H ;
.WORD #0CFH ;6 系
.WORD #0B5H ;
.WORD #0CDH ;7 统
.WORD #0B3H ;
.WORD #020H ;8
.WORD #020H ;
.WORD #0C8H ;1 日
.WORD #0D5H ;
.WORD #0C6H ;2 期
.WORD #0DAH ;
.WORD #3AH ;3 :
.WORD #32H ; 2
.WORD #30H ;4 0
.WORD #30H ; 0
.WORD #37H ;5 7
.WORD #2EH ; .
.WORD #30H ;6 0
.WORD #35H ; 5
.WORD #2EH ;7 .
.WORD #31H ; 1
.WORD #37H ;8 7
.WORD #20H ;
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -