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

📄 086.asm

📁 AVR液晶程序模块
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;---------------------------------------------------------------------------------------------------------
;修改日志:
;2006/04/18: 主程序中每循环一次都需要配置一下I/O口的输出方式
;2006/04/20: 外部晶振丢失复位使能
;2006/04/21:  调试,去除电机转动
;2006/04/24:  电机转动方向经常配置
;2006/05/17:  根据胡工重布电路板进行修改   1,  DCAC指示灯变化
;																					 2,  键盘稍描线由原来的P5.0~P5.3转为P2.7~P2.4
;---------------------------------------------------------------------------------------------------------
;2006/05/29:  报警档位光带显示在非输液状态都可以处理
;             在保存校正值时都需要校正累计量
;---------------------------------------------------------------------------------------------------------
;2006/06/01:  压力报警值重新确定
;---------------------------------------------------------------------------------------------------------
;2006/06/08:  压力峰值下降时(说明管变软)最大压力峰值也同时更新可避免误报警
;							电池充电达到14.0伏时停止大电流充电,熄灭充电指示灯使用PWM充电
;							输液泵休眠处理的修改,将板电流下降至750uA
;							空瓶监测转4圈无点滴滴下为空瓶报警
;             快注速度显示不显示实时速度
;
;2006/06/10   1000毫升/小时快注启动加快速度为2000滴/分()
;2006/06/13   压力检测峰值锁定重新设计,压力报警情况下按清除报警时处理重修定位最大压力峰值等于最小压力峰值
;							泵运行信号检测(5滴以下速度不检测,5滴以上检测时长2分钟)理想状态按照速度不同而不同时间长度
;2006/06/14   快注有独立的检测累计和计量累计(因为快注时校正系数与正常输液的计量参数不同)
;							实际总累计 = 正常输液累计 + 快注输液累计(累计显示相关,输液结束相关数据都是)
;							快注时额外增加25%的正补差
;							快注前需要判断是否输液量越界
;2006/06/21   语音芯片播放延时增加到10ms,解锁鸣叫音为连续两次锁键音
;2006/06/24   增加管歪检测及报警(压力峰初值很大时)
;2006/07/03   输液速度小于120滴/分的电机力矩控制Moto_up=0,否则Moto_up=1
;2006/07/06   输液泵压力报警AD值重新调整
;2006/07/10   14.0伏以上充电采用定时器2脉冲充电方式
;             名叫延时及按键稍描延时采用定时器模式
;;2006/07/11  快注时电机控制芯片充分复位,管型设置bug消除  (强磁场)
;2006/07/14   切换窗口时窗口循序的重新调换: 滴速->流速->设置量->总累计->管型->校正符号->校正值->滴速->...
;             开机后默认窗口为速度设置(滴速或流速)
;2006/07/15   滴速控制参数段重新设定
;2006/07/20   100滴/分速度以上不降速启动
;             有报警信息需要显示报警信息时恢复当前窗口数据显示,且当窗口处于设置\状态下清除已输入数据位
;2006/07/24   增加点滴计数器工程模式(第3位拨码开关=ON)时每增加一滴为一毫升
;2006/07/25   滴速控制参数超过25%错误报警err9且需要暂停超时报警   长按键加时间   锁键报警err8
;2006/07/31   电池电压13.5~14.0区间去除上升下降沿处理改为直接充电
;             连续超速15圈err9报警
;2006/08/07   漏液报警处理改为:不输液状态下检测到10滴以上点滴为漏液报警
;							增加老化测试时不充电配置模式:拨位开关2 on为老化工作模式
;2006/08/16   对流速控制方式下且校正值不等于零情况下速度控制异常增加处理
;2006/08/17   1,流速控制异常判断条件改为:实际控制频率连续30圈超过初始频率的50% 2,快注无输液控制异常报警
;2006/08/23   1,  针对诸塞时压力上升较陡情况增加判断处理(初值以初始化,无上升沿也算锁定峰值)
;							2,  对压力初始状态为直线情况的初值处理改进: 取该平均值
;2006/08/26   超速报警判断条件改为 80%
;2006/09/06   压力报警判断条件修改: 当压力峰值差没有超过限定时再判断最大压力峰值是否超过4000,如果超过也报警
;---------------------------------------------------------------------------------------------------------;  Copyright (C) 2001 CYGNAL INTEGRATED PRODUCTS, INC.;  All rights reserved.
;;;;  FILE NAME   :  BLINK.ASM ;  TARGET MCU  :  C8051F020 ;  DESCRIPTION :  This program illustrates how to disable the watchdog timer,;                 configure the Crossbar, configure a port and write to a port;                 I/O pin.;; 	NOTES: ;;-----------------------------------------------------------------------------$include (c8051f020.inc)               ; Include register definition file.

;本程序以6.25主板原理图为基础,构造了软件的基本框架;
    ;A/D8位变反已改,显示拖尾已改,光带8位全显已改,第二次电路板V1.0;
    ;已挂上脉率,已修改温度测量除法形式;电机驱动去掉FF字节;






;$include (c8051f020.inc);
;$include (c8051f020.inc);
		              
disp1  equ    30H;

DROPINTERVALTIME	equ		31H;de1    equ    31H; 
BATCHECHTIME   		equ    32H		;检测电池间隔时间计时器
BATFLAG   equ  33H; 
FRONTALSTATUSOFKZ   equ  34H		;快注前状态 00 未输液, 01输液中
BITJSQ   equ  35H;显示的位计数器,加上光带共有13位显示;当前数码LED灯索引

DISM1   EQU  36H;窗1BCD码四位对应滴速窗口数码管 DISM1为最低位显示
DISM2   EQU  37H;
DISM3   EQU  38H;
DISM4   EQU  39H;

DISM5   EQU  3AH;窗2 窗2BCD码四位对应管型/校准窗口数码管 DISM5为最低位显示(DISM7,DISM8无效)
DISM6   EQU  3BH;


;FLOWRATETYPE   EQU  51H				;控制流速类型  00H 滴/分 01H毫升/小时


DISM9    EQU  3EH;窗3 窗2BCD码四位对应累计窗口数码管 DISM9为最低位显示)
DISM10   EQU  3FH;
DISM11   EQU  40H;
DISM12   EQU  41H;

DISM13  EQU   42H;光带
FLICKERTIME     EQU   43H	;
KEYC    EQU   44H;    键值0FF为无键;
WINDOWS  EQU  45H;窗口编号寄存器;
DJBEG    EQU  46H;电机启动标志
TWL     EQU   47H			;快注标志KUAIZHU

TWH    EQU    48H;DRP工作单元,作为PCA2发FFFF延时的计数器,不要初始化
ML     EQU    49H;为TWH之二级暂存,(脉率数值);

ZD     EQU    4AH;针头型号;
JAZN   EQU    4BH;较准误差量(为检测滴液数时间段值);

SUML   EQU    4CH;机器输液总累计量低字节; 作为校正后的值(即显示值)
SUMH   EQU    4EH;机器输液总累计量高字节
DDS    EQU    4FH;点滴分段处理,段号
;HASEN  EQU  50H;ml/时 ;50H,51H,为键盘识别占用,暂不做其它用;

;GJBZ   EQU  51H;告警标志位,共有八个标志;

;52H;
XSTMPL   EQU  53H;任何窗口共用的显示暂存器低位;
XSTMPH   EQU  54H;任何窗口共用的显示暂存器高位;
STEP     EQU  55H;
MaxPressApexL   EQU  56H		;
MaxPressApexH   EQU  57H		
MinPressApexL   EQU  58H		;	作为压力检测峰值-最低值初始值低字节
MinPressApexH   EQU  59H		; 作为压力检测峰值-最低值初始值高字节
P1K      EQU  5AH;P1口缓存器
ADJSQ    EQU  5BH;八路AD计数器
ADTIME   EQU  5CH;AD采样间隔计数器(峰值上升次数计数器|峰值下降次数计数器)
NOMALPOWEROFFFLAG	EQU	05DH
LCDMM   EQU   5EH;23H
FATALERR   EQU  5FH						;致命的错误 bit7=1未接电池 bit6=1 未接液滴传感器 bit5=1 空瓶 BIT4=1电机不转 BIT3=1 管歪 BIT2=1 流速控制失败 其他保留
BATCHECKERRTIME	EQU 60H				  ;电池检测错误次数计数器


DDSL     EQU   61H;;ADM4 
DDSH     EQU   62H;;ADM5  
HASENL   EQU   63H;;ADM6 
HASENH   EQU   64H;;ADM7
LEDDM   EQU   65H; 段码寄存器
FLOWRATETYPE  EQU   66H;位码寄存器
KCODE   EQU   67H;键代码,由(KEYC)键内码查表得到;
JCQ1    EQU   68H;当前窗口首址寄存器;
FHW    EQU    69H;保持下面的延时上长延时电平相同标志,在T1中断中用,有初始化
LEDW2  EQU    6AH;窗口指示及告警灯映射2:2FFFH;
TOTAL  EQU    6BH;应输总量
TOTAH  EQU    6CH;
NOMOTOSIGNTIME   EQU    6EH;无电机信号计时
WBZ    EQU    6FH;当前窗口的位标志;0,1,2,3;



POINT  EQU    70H;小数点;
DQBIT  EQU    71H;
MSEC   EQU    72H;毫秒计数器 ;
SEC    EQU    73H;
STILLDROPCOUNTER    EQU    74H;静态滴液计数器
PApexDECCounter   EQU    75H;压力峰值下降次数计数器
TIMBZ1 EQU    76H;物理窗口1计时器;好像是ADC采样时,无用处
TIMBZ2 EQU    77H;物理窗口2计时器;
TIMBZ3 EQU    78H;物理窗口3计时器;机障定时报警计数器,长时间输液没有检测到液滴就报警 500ms级计时器
NORMALPOWEROFF EQU   79H		;正常关机标志
DL1BF   EQU   7AH;步进电机延时常数的四个寄存器;
DL2BF   EQU   7BH;
;泵转动圈数计数器
PumpRoundCounterL   EQU   7CH;
PumpRoundCounterH   EQU   7DH;


ADM0L    EQU   80H;5DH;AD数据缓存器
ADM0H    EQU   81H;
ADM1L    EQU   82H;5EH;
ADM1H    EQU   83H
ADM2L    EQU   84H;5FH;
ADM2H    EQU   85H
ADM3L    EQU   86H
ADM3H    EQU   87H
ADM4L    EQU   88H;
ADM4H    EQU   89H;60H;
ADM5L    EQU   8AH;5DH;AD数据缓存器
ADM5H    EQU   8BH;
ADM6L    EQU   8CH;5EH;
ADM6H    EQU   8DH
ADM7L    EQU   8EH;5FH;
ADM7H    EQU   8FH


RAM16    EQU   90H;开关S1,S2,S3,X;
RAM21    EQU   91H;开关X,S4,S6,S5;
RAM24    EQU   92H;开关"阻塞,气泡,欠压"
RAM25    EQU   93H;开关X,H1,H2,H3;
RAM26    EQU   94H;开关"X,输完,开门,机障"
RAM27    EQU   95H;开关X,H4,H5,H6
RAM28    EQU   96H;开关X,S15,S16,S17;
RAM29    EQU   97H;开关X,S18,S19,S20;
;---------------------未使用---------------------------------
;MTHL    EQU   98H			;本次脉宽寄存器
;MTHH    EQU   99H			;
;MT0L    EQU   9AH			;T0计数器上一次数值
;MT0H    EQU   9BH			;
;------------------------------------------------------
MLT1    EQU   98H;9CH;乘法工作单元;因乘法本间访是接使用的状态,
MLT2    EQU   99H;9DH;故可以放在高128区
MLT3    EQU   9AH;9EH;
MLT4    EQU   9BH;9FH;
KUAIZHU  EQU 	9CH;0A0H;快注标志
KDDSL    EQU 9DH
KDDSH    EQU 9EH
KVOTWH     EQU 9FH
KVODEL1    EQU 0A0H;
KVODEL2    EQU 0A1H
WARNTIME    EQU  0A1H;
; [b7=1: 输完]  [b6=1: 暂停] 
; 
; [b0=1: 滴/分控制 b0=0: 毫升/小时控制 ]
STATUS     EQU  0A3H	;机器运行状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=1加油锁键盘,b3=1全部锁定键盘,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
OCCL0L     EQU  0A4H;
OCCL0H     EQU  0A5H;
OCCL1L     EQU  0A6H;
OCCL1H     EQU  0A7H;
KVOBZ      EQU  0A8H;
DSJCQL     EQU  0A9H;
DSJCQH     EQU  0AAH;
ZDJCQ      EQU  0ABH;
LOW10M     EQU  0ACH;欠压10分标志
;----------------------------------------------------------
;增加全局变量
;----------------------------------------------------------
SAVENSTEP       EQU  0ADH;保存的矫正值
SAVENDSJCQL     EQU  0AEH;保存的设定滴速低字节
SAVENDSJCQH     EQU  0AFH;保存的设定滴速高字节
SAVENHASENL     EQU  0B0H;保存的预置设定流速低字节
SAVENHASENH     EQU  0B1H;保存的预置设定流速高字节

SAVENTOTALL     EQU  0B2H;保存的预置设定量低字节
SAVENTOTALH     EQU  0B3H;保存的预置设定量高字节

STEPSIGN			  EQU  0B4H;校正值符号
SIGNLEDSTATUS	  EQU  0B5H;校正值符号显示状态
STEPSIGNTIME    EQU  0B6H;校正值符号闪烁定时器
SAVENSTEPSIGN   EQU  0B7H;保存的校正值符号
COUNTSUML   		EQU  0B8H;输液总量低位; 实际检测到的计数值(校正前值)
COUNTSUMH   		EQU  0B9H;输液总量高位
PAUSETIME		   	EQU  0BAH;暂停输液时间
;许可压力检测标志
CheckPressureEnable     EQU  0BBH	;许可压力检测标志
PumpPositionVoltage		  EQU  0BCH	;泵位置检测脚电平状态。
PUSHKEYTIME  						EQU  0BDH	;按键时间
SAVENPRESSLEVEL					EQU	 0BEH	;
ADJUSTPUMPFLAG					EQU	 0BFH	;因为泵状态变化而调整过电机控制参数标志(5AH)
ADJUSTPUMPDRPRATEL			EQU	 0C0H	;调整泵位置状态时的泵控制参数低字节
ADJUSTPUMPDRPRATEH			EQU	 0C1H	;调整泵位置状态时的泵控制参数低字节
PulsChargeMode					EQU	 0C2H	;脉冲充电模式
;快注模式下的计量累计
FastTransSumL			EQU	 0C3H	;快注阶段的计量累计低字节
FastTransSumH			EQU	 0C4H	;快注阶段的计量累计高字节
;快注模式下的检测累计
FastTransCheckSumL			EQU	 0C5H	;快注阶段的检测累计低字节
FastTransCheckSumH			EQU	 0C6H	;快注阶段的检测累计高字节

OverPressLimitCount			EQU	 0C7H	;压力检测超过极限计数器
ChargePulseTime         EQU  0C8H ;脉冲充电计时器
TempTimeCounter         EQU  0C9H ;零时计时器(50毫秒级)
T10msCounter						EQU  0CAH ;10毫秒计时器
ErrorCode								EQU  0CBH	;错误代码

DL1BFBak								EQU  0CCH ;频率控制参数1备份
DL2BFBak							  EQU  0CDH ;频率控制参数2备份

BeyondRateCycle					EQU  0CEH ;频率控制参数2备份

DATAI   EQU  20H;
HSJSQ   EQU  21H;滴数寄存器,以针头值为模
WINJCQ  EQU  22H;
GZUJCQ  EQU  23H;工作寄存器
GZJCQ1  EQU  24H;工作寄存器

;PSECH  EQU  25H;
P6K     EQU  25H;

TXBUF   EQU  26H;

EEPROM0 EQU  27H;
MLTRAM0 EQU  28H;乘法积单元首址四个,应为MLT1即可;此可另用
  
p5k  equ  29h;;EEPROM2 EQU  29H;  
p4k  EQU  2AH;EEPROM3 EQU  2AH;  
;EEPROM4 EQU  2BH;
  
MSECL EQU  2CH;毫秒计数单元双字  
MSECH EQU  2DH;
  
MTHJSQ EQU  2EH;脉宽累加计数器;

GDTIM   EQU  2FH;

TXDE   equ  p1.4;
;TXRE   EQU  P1.5;

VSCL EQU P0.3
VSDA EQU P0.2
SLA  DATA 1EH       ;寻址字节存放单元
;SLAW 寻址字节写
;SLAR 寻址字节读
NUMBYT DATA 1FH;    ; 传送字节数存放单元
;MTD EQU 30H   ;发送数据缓冲区
;MRD EQU 40H   ;接收字节缓冲区




MTHSL   EQU   16H;脉宽累加器;(实际意义并非如此。。。只是一些被废弃的含义)
MTHSH   EQU   17H;

;-----------------------------未使用的RAM------------------------------------
PMSECL   EQU  18H;脉搏上次触发时点,初值为0;
PMSECH   EQU  19H;

MLJSQ    EQU  1AH;中断中对脉率计数最新加1
PMLJSQ   EQU  1BH;上次脉率计数值,主程序判断是否有新的中断;
;------------------------------------------------------------------------------



GJBZ1   EQU   1CH;;b7=1漏液(电机停止时漏液),b6=暂停超时,b5=输完,b4=门,b3=机障,b2=阻塞,b1=气泡,b0=欠压
SLEN    EQU   1DH;串通长度;
STIME   EQU   1EH;
LEDW1   EQU   1FH;

;-----------------------------------------------------------------------------
;FLASH 存储地址定义
;-----------------------------------------------------------------------------
ADDR_STEP				  EQU   0000H;	校正值保存位置 长度1
ADDR_ZD					  EQU   0001H;	针头类型保存位置 长度1 
ADDR_SAVENDSJCQ   EQU   0004H;  设定滴速保存位置 长度2
ADDR_SAVENHASHEN	EQU   0006H;	设定流速保存位置 长度2
ADDR_SAVENTOTAL		EQU   0008H;	预设置量保存位置 长度2
ADDR_STEPSIGN			EQU   000AH;	校正值符号保存位置 长度1
ADDR_PRESSLEVEL		EQU   000BH;	压力报警档位保存位置 长度1
ADDR_NOMALOFF			EQU   000CH;	正常关机标志;-----------------------------------------------------------------------------; EQUATES;-----------------------------------------------------------------------------
GREEN_LED         equ   P1.6             ; Port I/O pin connected to Green LED.
	WTV170_P01      	equ   P3.3;7		       ; Port I/O pin connected to WTV170_BUSY P01
WTV170_P02      	equ   P3.4;6					 ; Port I/O pin connected to WTV170_CLK  P02
WTV170_P03      	equ   P3.5						 ; Port I/O pin connected to WTV170_DATA P03
WTV170_P04      	equ   P3.6						 ; Port I/O pin connected to WTV170_DATA P03
WTV170_RST      	equ   P3.2;4					 ; Port I/O pin connected to WTV170_RESET

AC_Power_LED      EQU  P2.2;P3.1

DC_Power_LED      EQU  P2.3;P3.0



;-----------------------------------------------------------------------------; RESET and INTERRUPT VECTORS;-----------------------------------------------------------------------------
               ; Reset Vector               cseg AT 0
                  ljmp main         ;Locate a jump to the start of code at 

                                      ; the reset vector.ORG  0003H
   LJMP  HSINT

ORG 000BH; 
   LJMP  TT0;

ORG  0013H
   LJMP  HSINTEMPTY

ORG   001BH;

   LJMP  TTT1;

ORG  0023H;
   LJMP   TXSVE;

ORG  002BH
   LJMP  TIME2_int

ORG  0033H
   LJMP  HSINTEMPTY

ORG  003BH
   LJMP  HSINTEMPTY

ORG  0043H
   LJMP  HSINTEMPTY

org  04bh;
   ljmp   pca;

ORG  0053H
   LJMP  HSINTEMPTY

ORG  005BH
   LJMP  HSINTEMPTY

ORG  0063H
   LJMP  HSINTEMPTY

ORG  006BH
   LJMP  HSINTEMPTY

org  0073H;
   LJMP   TTT3
ORG  007BH
   LJMP  HSINTEMPTY

ORG  0083H
   LJMP  HSINTEMPTY

ORG  008BH
   LJMP  HSINTEMPTY

ORG  0093H
   LJMP  HSINTEMPTY

ORG  009BH
   LJMP  HSINTEMPTY

ORG  00A3H
   LJMP  HSINTEMPTY

ORG  00ABH
   LJMP  HSINTEMPTY
;-----------------------------------------------------------------------------;CODE SEGMENT;-----------------------------------------------------------------------------Blink          segment  CODE
               rseg     Blink          ; Switch to this code segment.
               using    0              ; Specify register bank for the following
                                       ; program code.main:          ; If interrupts were enabled, we would need to explicitly disable               ; them so that the 2nd move to WDTCN occurs no more than four clock                ; Disable the WDT. (IRQs not enabled at this point.)               ; cycles after the first move to WDTCN.							 ; 设置比较器为非复位源
						   MOV P74OUT,#01H
							 mov P4,#00H
							 MOV P5,#08H
							 MOV   A,#00H
							 MOV   RSTSRC,A

							 CLR   EA;

⌨️ 快捷键说明

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