📄 音乐-1路转速-1路温度-8led(启动发送按键)-06-7-20.s43
字号:
#include "msp430x12x2.h"
;******************************************************************************
; 测试转速(速度)、温度、电子音乐合成器(S.H.E组合改编的作品:不想长大,原创为莫扎特G小调第40交响曲、祝你生日快乐)、
; 键盘乐器程序,利用功能键转换,测试结果可经串口传送给上位机.版本1.0,
; 显示器为4位LED,主时钟MCLK采用4MHZ晶振. 2005.5.28
; Description; Echo a received character, RX ISR used. Normal mode is LPM0,
; USART0 RX interrupt triggers TX Echo.
; ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = UCLK0 = DCOCLK = 1048576
; Baud rate divider with 1048576hz = 1048576Hz/9600 ~ 109 (006Dh)
; //*An external watch crystal on XIN XOUT is required for ACLK*//
;
; MSP430F1222
; -----------------
; /|\| XIN|-
; | | | 2.0MHz
; --|RST XOUT|-
; | |
; | P3.5(16)|<-----------
; | | 9600 - 8N1
; | P3.4(15)|----------->
;
;
;控制代码定义:
; F0H;串行通信数据起始码
; F1H: 向上位机发送电池基本信息时的起始码
; FFH;串行通信数据结束码 EDH !!!
; CEH;由充电机发来的激活充电码(收到该码后将上次激活后已充电
; 次数单元F_CDCSP和上次充电后存放天数单元F_CFTSP内容清0)
; CFH;由充电机发来的充满电代码(收到该码后将上次充电后
; 存放天数单元F_CFTSP内容清0)
; BEH: 虚拟仪器上位机向下位机发送的测试开始码
; BFH: 虚拟仪器上位机向下位机发送的暂停测试码
; EDH: 测试结束码
;通信数据块格式:F0H+1字节地址+1字节温度+2字节时间+2字节转速+2字节速度+2字节备用+FFH
ORG 01000H ;定义LED字型表起始地址
Flash_DAT DB 3Fh, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H ;0--7
DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H ;8--F
DB 00H, 54H, 3DH, 5CH, 63H ;"空","n","GOOd",o
F_CFTST = Flash_DAT+14 ;定义总存放天数单元
F_CFTSP = Flash_DAT+16 ;定义上次充电后存放天数单元
F_CDCST = Flash_DAT+18 ;定义总充电次数单元
F_CDCSP = Flash_DAT+20 ;定义上次激活后已充电次数单元
FDC_DAT = 22 ;FLASH中保存的电池信息数据个数
;低8度基本音阶表
YJ_TBL DB 01, 253, 226, 201, 189, 169, 151, 134 ;01, 低8度
YJ_TBL8 DB 126, 114, 103, 95, 85, 75, 67 ;113 中8度
DB 63, 56, 51, 47, 42, 38, 33 ; 高8度
DB 31, 28, 25, 24
;键值表
;K_TBL DB 01H, 02H, 03H, 04H, 05H, 06H, 07H ;00,
; DB 08H, 09H, 0AH, 0BH, 0CH, 0DH, 0EH
; DB 0FH, 10H, 11H, 12H, 13H, 14H, 15H
;键值表
K_TBL DB 03H, 0BH, 02H, 0AH, 01H, 09H, 00H, 08H ;00,
DB 07H, 0FH, 06H, 0EH, 05H, 0DH, 04H, 0CH
;;;乐曲音符表:音符字节的编码规则为高4位为音高,低4位为基本音阶,紧跟音符的下一个字节为拍节常数
;S.H.E组合改编的作品:不想长大,原创为莫扎特G小调第40交响曲
MU_TBL DB 14H,04, 13H,04, 13H,08, 14H,04, 13H,04, 13H,08, 14H,04, 13H,04, 13H,08, 21H,16
DB 21H,04, 17H,04, 16H,08, 16H,04, 15H,04, 14H,08, 14H,04, 13H,04, 12H,08, 12H,16
DB 13H,04, 12H,04, 12H,08, 13H,04, 12H,04, 12H,08
DB 13H,04, 12H,04, 12H,08, 17H,16, 17H,04, 16H,04, 16H,08, 16H,04, 15H,04 ;00H,01;休止符
DB 14H,08, 13H,04, 12H,04, 11H,08, 11H,20, 0FFH ; 14H!!!!!!
;祝你生日快乐:5 5 6 5 1 7- 5 5 6 5 2 1-5 5 5 3 1 7 6- 4 4 3 1 2 1-
MU_TBL1 DB 05,08, 05,08, 06,16, 05,16, 11H,16, 07,32, 05,08, 05,08, 06,16, 05,16
DB 12H,16, 11H,32, 05H,08, 05H,08, 15H,16, 13H,16, 11H,16, 07,16, 06,32, 14H,08
DB 14H,08, 13H,16, 11H,16, 12H,16, 11H,32, 0FFH
ORG 200H
DATA DW 0 ;RAM区从200H开始 EQU 200H
DATP DW 0 ;DATA+2 定义数据指针存放单元
VOLT DW 0 ;DATA+4 速度采样测试值存放单元
TEMP DW 0 ;DATA+6 温度采样值存放单元
TC = 278 ;实测温度修正系数
TIM_S = TEMP ;秒累计时时间存放单元
LEDTP DW 0 ;DATA+12 字型表指针
DP DW 0 ;DATA+14 显缓区指针单元
DBUF_P DW 0 ;DATA+18 VOLT ;显缓区指针存放地址单元
D_BUF DS 8 ;DATA+16 显缓区起始地址单元
n = 11H
G = 12H
o = 13H
d = 0DH
oC = 14H
RX_DAT DS 16 ;230H 定义接收数据存放区
TX_DAT DS 16 ;250H 定义发送数据存放区
RXDP DW 0 ;RX_DAT-2
TXDP DW 0 ;RX_DAT-3
DSTP DW 0 ;DATA+18 目标指针工作单元
CONT1 DS 2 ;DATA+20 计数器工作单元
CONT2 DS 2 ;DATA+22
CONT3 DS 2 ;DATA+24
C_CR0 = 50000 ;25000 50000 9450
TIM_DAY DS 2 ;DATA+28 定义小时累计时单元地址
TIM_W = TIM_DAY ;测试时间计时单元
T_WDT = 5 ;测试时间基本计时单位为1/100秒
HOUR = 2 ;定义小时累计时值(12X2=24小时)
SPEED DS 2 ;DATA+30 定义速度采样计数单元
SD DS 2
T36mS DB 0 ;DATA+26 定义速度采样定时单元地址
C36mS = 9 ;采样时间为36mS ???
T05S DB 0 ;DATA+27 500mS累计时时间存放单元
C05S = 10 ;100 该系数可微调转速,每字相当于0.39转
T1S DB 0 ;秒时间累计时单元
C1S = 10 ;20 秒时间计时系数 !!!!!!!
nL DB 0 ;DATA+32 显示字符的Y(列)坐标存放单元地址
Y = nL
nH DB 0 ;DATA+33 显示字符的X(行)坐标存放单元地址
X = nH
nHL = nL
XY = nL
T_mS DB 0 ; 1/100秒累计时时间计数单元
T_S DB 0 ; 秒累计时时间计数单元
T_M DB 0 ; 分累计时时间计数单元
RAM1 DS 2 ; 暂存单元1
RAM2 DS 2 ;
RAM3 DS 2 ;
S_M DS 2 ;DATA+38 距离(米:M)计数单元
S_CM DB 0 ;DATA+40 距离(厘米:CM)计数单元
LED_BIT DB 0 ;DATA+10
KEY_N DB 0 ;DATA+47
KEY_N1 DB 0 ;
KEY_N2 DB 0 ;
KEY_F DB 0
RX_FLG DB 0 ;RX_DAT-1 定义接收标志存放单元
COM_FLG DB 0 ;RX_DAT-4 虚拟仪器上位机发送给下位机的命令码存放单元
FLG DB 0 ;通用标志单元:D0为乐曲选择标志,为0时选择第1首乐曲;为1时选择第2首乐曲.
CFT = 14
CFP = 16
CDT = 18
CDP = 20
TX_BUF = 77H ;定义发送缓冲器(在CPU内部)地址
RX_BUF = 76H ;定义接收缓冲器(在CPU内部)地址
ID = 01 ;下位机地址或ID码
RES = BIT1
REQ = BIT3
LCD_BUSY = BIT6
KEY_ON = BIT0
K21 = BIT1
KP20 = BIT0
KP21 = BIT1
LCD_DIS MACRO M, N, CODE, W ;向LCD送显示字符的宏定义指令:形参M为字符所在行;形参N为
MOV.B M, &nH ;字符所在列;形参CODE为字符代码;形参W为字符写入子程序名
MOV.B N, &nL ;宏调用指令格式为LCD_DIS M,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -