📄 m128_alky_touch_con1.lst
字号:
__start:
__text_start:
61E1 EFCF LDI R28,0xFF
61E2 E1D0 LDI R29,0x10
61E3 BFCD OUT 0x3D,R28
61E4 BFDE OUT 0x3E,R29
61E5 51C0 SUBI R28,0x10
61E6 40D0 SBCI R29,0
61E7 EA0A LDI R16,0xAA
61E8 8308 STD Y+0,R16
61E9 2400 CLR R0
61EA E0E0 LDI R30,0
61EB E0F1 LDI R31,1
61EC E011 LDI R17,1
61ED 39E7 CPI R30,0x97
61EE 07F1 CPC R31,R17
61EF F011 BEQ 0x61F2
61F0 9201 ST R0,Z+
61F1 CFFB RJMP 0x61ED
61F2 8300 STD Z+0,R16
61F3 ECE2 LDI R30,0xC2
61F4 ECF3 LDI R31,0xC3
61F5 E0A0 LDI R26,0
61F6 E0B1 LDI R27,1
61F7 EC13 LDI R17,0xC3
61F8 3CE2 CPI R30,0xC2
61F9 07F1 CPC R31,R17
61FA F021 BEQ 0x61FF
61FB 95C8 LPM
61FC 9631 ADIW R30,1
61FD 920D ST R0,X+
61FE CFF9 RJMP 0x61F8
61FF 940E 99BD CALL _main
_exit:
6201 CFFF RJMP _exit
_PIDCalc:
TEMP --> Y,+1
dError --> R10
Error --> R12
NextPoint --> R10
pp --> R20
6202 940E 9C27 CALL push_xgset303C
6204 0159 MOVW R10,R18
6205 01A8 MOVW R20,R16
FILE: D:\Program\M128_ALKY_Touch_CON1\M128_ALKY_Touch_CON1.c
(0001) //ICC-AVR application builder : 2007-10-26 14:46:56
(0002) // Target : M128
(0003) // Crystal: 4.0000Mhz
(0004) // IC:M128,DS1302,LM324
(0005) // 功能:酒精浓度气体发生Hh6232A
(0006) // 说明:酒精浓度检测采用LM324模拟电路
(0007) // 作者:邵伍胜
(0008) // 创作时期:2007年10月
(0009) // 修改时期:2008年01月
(0010)
(0011) #include <iom128v.h>
(0012) #include <macros.h>
(0013)
(0014)
(0015) #define uint unsigned int
(0016) #define uchar unsigned char
(0017) //********************************** main
(0018) //**********************************
(0019) typedef struct PID {
(0020) uint SetPoint; // 设定目标Desired value
(0021) uchar Proportion; // 比例常数Proportional Const
(0022) uchar Integral; // 积分常数Integral Const
(0023) uchar Derivative; // 微分常数Derivative Const
(0024) int LastError; // Error[-1]
(0025)
(0026) int PrevError; // Error[-2]
(0027) int SumError; // Sums of Errors
(0028) } PID;
(0029)
(0030) PID LD_PID;
(0031) PID WD_PID;
(0032) //LD_PID.Proportion=5; LD_PID.Integral=1; LD_PID.Derivative=12;
(0033) //WD_PID.Proportion=20; WD_PID.Integral=2; WD_PID.Derivative=40;
(0034) //***********************************
(0035)
(0036) const unsigned char KEY_TZ[16];
(0037) const unsigned char CON_TAB[240][40];
(0038) const unsigned char START_TAB[240][40];
(0039) const unsigned char L_TAB[240][40];
(0040) const unsigned char ZM_Verdana_fifty[10][51][6];
(0041) const unsigned char ZM_Verdana_nine[12][9];
(0042) const unsigned char ZM_Songti_twelve[12][11];
(0043) const unsigned char ZM_Songti_ten_ChangK[12][4];
(0044) const unsigned char ZM_Songti_ten_DianD[12][4];
(0045) const unsigned char MiMa_TAB[3][8];
(0046) const unsigned char GX_TAB[8];
(0047) const unsigned char SELECT_BDLD_TAB[12][32];
(0048) const unsigned char OK_BDLD_TAB[12][32];
(0049) const unsigned char Succeed_BDLD_TAB[12][32];
(0050) const unsigned char Fail_BDLD_TAB[12][32];
(0051) const unsigned char TOUCH_KEY_TAB[195][28];
(0052) const unsigned char TOUCH_MENU_TAB[195][28];
(0053) const unsigned char TOUCH_KEY_BD[38][7];
(0054) const unsigned char TOUCH_MENU_Message[16][12][25];
(0055) const unsigned char TOUCH_LOCK_TAB[2][16][2];
(0056) //**********************************
(0057) //EEPROM存储结构
(0058) #define EE_Set_LD_AddrL 0x0030 //
(0059) #define EE_Set_LD_AddrH 0x0031 //浓度
(0060) #define EE_Set_FL_AddrL 0x0032 //
(0061) #define EE_Set_FL_AddrH 0x0033 //风量
(0062) #define EE_Set_WD_Addr 0x0034 //温度
(0063) #define EE_MODE_SJ_Addr 0x0035 //时间模式,1:定时控制;2:点动;3:常开
(0064) #define EE_Set_SJ_Addr 0x0036 //时间
(0065) //******
(0066)
(0067) #define EE_F_WDZQ_Addr 0x0037 //
(0068) #define EE_F_LDZQ_AddrL 0x0038 //
(0069) #define EE_F_LDZQ_AddrH 0x0039 //
(0070) #define EE_F_FSYZ_Addr 0x003A //换算因子标记 0:2000;1:2100;2:2200
(0071) #define EE_F_YYJB_Addr 0x003B //
(0072)
(0073) #define EE_F_MiMa_Addr1 0x003C //
(0074) #define EE_F_MiMa_Addr2 0x003D //
(0075) #define EE_F_MiMa_Addr3 0x003E //
(0076) #define EE_F_MiMa_Addr4 0x003F //
(0077) #define EE_F_MiMa_Addr5 0x0040 //
(0078) #define EE_F_MiMa_Addr6 0x0041 //用户级
(0079)
(0080) #define EE_L_MiMa_Addr1 0x0042 //
(0081) #define EE_L_MiMa_Addr2 0x0043 //
(0082) #define EE_L_MiMa_Addr3 0x0044 //
(0083) #define EE_L_MiMa_Addr4 0x0045 //
(0084) #define EE_L_MiMa_Addr5 0x0046 //
(0085) #define EE_L_MiMa_Addr6 0x0047 //工厂级
(0086)
(0087) #define EE_LDPID_P_Addr 0x0048 //浓度P系数
(0088) #define EE_LDPID_I_Addr 0x0049 //浓度I系数
(0089) #define EE_LDPID_D_Addr 0x004A //浓度D系数
(0090) #define EE_LDPID_MAX_AddrL 0x004B //浓度饱和值
(0091) #define EE_LDPID_MAX_AddrH 0x004C //浓度饱和值
(0092) #define EE_WDPID_P_Addr 0x004D //温度P系数
(0093) #define EE_WDPID_I_Addr 0x004E //温度I系数
(0094) #define EE_WDPID_D_Addr 0x004F //温度D系数
(0095) #define EE_WDPID_MAX_AddrL 0x0050 //温度饱和值
(0096) #define EE_WDPID_MAX_AddrH 0x0051 //温度饱和值
(0097)
(0098) #define EE_BDLD_052_AddrL 0x0052
(0099) #define EE_BDLD_052_AddrH 0x0053
(0100) #define EE_BDLD_130_AddrL 0x0054
(0101) #define EE_BDLD_130_AddrH 0x0055
(0102) #define EE_BDLD_208_AddrL 0x0056
(0103) #define EE_BDLD_208_AddrH 0x0057
(0104) #define EE_BDLD_300_AddrL 0x0058
(0105) #define EE_BDLD_300_AddrH 0x0059
(0106) #define EE_BDLD_520_AddrL 0x005A
(0107) #define EE_BDLD_520_AddrH 0x005B
(0108) #define EE_BDLD_780_AddrL 0x005C
(0109) #define EE_BDLD_780_AddrH 0x005D
(0110)
(0111) #define EE_LD_CLR_Addr 0x0060
(0112)
(0113) #define EE_BD_Year_Addr 0x0061
(0114) #define EE_BD_Month_Addr 0x0062
(0115) #define EE_BD_Date_Addr 0x0063
(0116)
(0117) //0x0070-0x00BF为十组参数记忆
(0118) //**********************************
(0119) #define SELECT_BDLD_1 0x01
(0120) #define OK_BDLD_2 0x02
(0121) #define Succeed_BDLD_3 0x03
(0122) #define Fail_BDLD_4 0x04
(0123)
(0124) #define Year DataTime[0]
(0125) #define Month DataTime[1]
(0126) #define Date DataTime[2]
(0127) #define Hour DataTime[3]
(0128) #define Minute DataTime[4]
(0129) #define Second DataTime[5]
(0130)
(0131) #define BDLD_052 BDLD_DianYa[0]
(0132) #define BDLD_130 BDLD_DianYa[1]
(0133) #define BDLD_208 BDLD_DianYa[2]
(0134) #define BDLD_300 BDLD_DianYa[3]
(0135) #define BDLD_520 BDLD_DianYa[4]
(0136) #define BDLD_780 BDLD_DianYa[5]
(0137)
(0138) unsigned char DataTime[6];
(0139)
(0140) unsigned int BDLD_DianYa[6];
(0141)
(0142) unsigned char BD_Year;
(0143) unsigned char BD_Month;
(0144) unsigned char BD_Date;
(0145) unsigned char BD_Succeed_Flag;
(0146)
(0147) unsigned char MENU_NUM;
(0148) unsigned char Last_Key;
(0149) unsigned char Time_Change_Enable; //时间改变使能
(0150) unsigned char Time_Change_Flag; //时间改变标志1-10
(0151) unsigned char Flag_500ms; //半秒闪烁标志
(0152)
(0153) unsigned char Set_Change_Enable; //设定值改变使能
(0154) unsigned char Set_Change_Flag1; //设定值改变标志1-4
(0155) unsigned char Set_Change_Flag2; //
(0156) unsigned char PID_Change_Flag1; //
(0157) unsigned char PID_Change_Flag2; //
(0158)
(0159) unsigned char L_Change_Enable;
(0160) unsigned char L_PID_Change_Enable;
(0161) unsigned char F_Change_Enable;
(0162) unsigned char F_FLAG1; //
(0163) unsigned char F_FLAG2; //
(0164) unsigned char Button_FLAG; //
(0165)
(0166) unsigned char L_FLAG1; //
(0167) unsigned char L_FLAG2; //
(0168) unsigned char BDLD_FLAG; //
(0169) unsigned char LD_CLR_FLAG;
(0170)
(0171) unsigned char BDLD_YN_FLAG052;
(0172) unsigned char BDLD_YN_FLAG130;
(0173) unsigned char BDLD_YN_FLAG208;
(0174) unsigned char BDLD_YN_FLAG300;
(0175) unsigned char BDLD_YN_FLAG520;
(0176)
(0177)
(0178) unsigned char MiMa_TEMP[6];
(0179) unsigned char KEY_TEMP[6];
(0180) unsigned char P_OK;
(0181)
(0182) unsigned char Count_50ms;
(0183)
(0184) unsigned char Count_5S;
(0185)
(0186) //*********
(0187) unsigned int DQ_LD_Value; //当前浓度值
(0188) unsigned int Set_LD_Value; //设定浓度值
(0189) unsigned int Set_LiuLiang_Value; //设定流量值
(0190) unsigned char Set_WenDu_Value; //设定温度值
(0191) unsigned char Set_ShiJian_Value; //设定时间值
(0192) unsigned char Set_ShiJian_MODE; //时间模式,1:定时控制;2:点动;3:常开
(0193) float DQ_WenDu_Value; //当前温度值
(0194) unsigned char DQ_ShiDu_Value; //当前湿度值
(0195) float ZhuQi_WenDu_Value; //注气温度值
(0196) unsigned int DQ_LiuLiang_Value; //当前流量值
(0197) unsigned char DaoJiShi_Value; //倒计时间值
(0198) float DQ_mgl_Value; //当前mgl值
(0199) float DQ_BAC_Value; //当前BAC值
(0200) //****************
(0201) unsigned char F_WDZQ_Value; //设定温度周期值
(0202) unsigned int F_LDZQ_Value; //设定浓度周期值
(0203) unsigned char F_FSYZ_FLAG; //换算因子标记 0:2000;1:2100;2:2200
(0204) unsigned char F_YYJB_Value; //设定原液加补值
(0205) unsigned int YYJB_DJS_Value; //原液加补倒计时间值
(0206)
(0207) unsigned int DQ_LD_XianShi_TOT;
(0208) unsigned int DQ_LD_Value_XianShi;
(0209) unsigned int DQ_WenDu_TOT; //当前温度值之和
(0210) unsigned int ZhuQi_WenDu_TOT; //注气温度值之和
(0211) unsigned int DQ_ShiDu_TOT; //当前湿度值之和
(0212) unsigned long int ADC_data_T;
(0213) unsigned int BDLD_AD_Value; //标定时浓度AD值
(0214) unsigned int ICR1_TEMP;
(0215) unsigned int ICR3_TEMP;
(0216)
(0217) unsigned char LOCK_Count;
(0218)
(0219) unsigned int LD_CLR_Count;
(0220) unsigned char LD_CLR_Value;
(0221)
(0222) unsigned int LDPID_MAX; //浓度PID饱和值
(0223) unsigned int WDPID_MAX; //温度PID饱和值
(0224)
(0225) unsigned int LDPWM_Value_XianShi; //
(0226) uchar FLAG;
(0227) //*********FLAG***********
(0228) #define TOUCH_KEY_DISP_F 0x07
(0229) #define TOUCH_MENU_DISP_F 0x06
(0230) #define TOUCH_LOCK_F 0x05
(0231)
(0232)
(0233) #define Set_TOUCH_KEY_DISP_F() FLAG|=1<<TOUCH_KEY_DISP_F
(0234) #define Clr_TOUCH_KEY_DISP_F() FLAG&=~(1<<TOUCH_KEY_DISP_F)
(0235) #define YN_TOUCH_KEY_DISP_F (FLAG&(1<<TOUCH_KEY_DISP_F))
(0236)
(0237) #define Set_TOUCH_MENU_DISP_F() FLAG|=1<<TOUCH_MENU_DISP_F
(0238) #define Clr_TOUCH_MENU_DISP_F() FLAG&=~(1<<TOUCH_MENU_DISP_F)
(0239) #define YN_TOUCH_MENU_DISP_F (FLAG&(1<<TOUCH_MENU_DISP_F))
(0240)
(0241) #define Set_TOUCH_LOCK_F() FLAG|=1<<TOUCH_LOCK_F
(0242) #define Clr_TOUCH_LOCK_F() FLAG&=~(1<<TOUCH_LOCK_F)
(0243) #define YN_TOUCH_LOCK_F (FLAG&(1<<TOUCH_LOCK_F))
(0244) //**********************************
(0245) #define F_WDZQ_Addr 0x47B9 //
(0246) #define F_LDZQ_Addr 0x4BC9 //
(0247) #define F_FSYZ_Addr 0x4FB1 //
(0248)
(0249) #define F_Year_Addr 0x53E9 //
(0250) #define F_Month_Addr 0x53EE //
(0251) #define F_Date_Addr 0x53F2 //
(0252) #define F_Hour_Addr 0x53F7 //
(0253) #define F_Minute_Addr 0x53FA //
(0254) #define F_Second_Addr 0x53FD //
(0255)
(0256) #define F_YYJB_Addr 0x57A9 //
(0257) #define F_MiMa_Addr 0x5BEA //
(0258) //**********************************
(0259) #define DQ_LD_Addr 0x494C //当前浓度
(0260) #define Set_LD_Addr 0x47B2 //(49*40)+(80/8)浓度
(0261) #define Set_LiuLiang_Addr 0x4BC2 //(75*40)+(80/8)流量
(0262) #define Set_WenDu_Addr 0x4FD2 //(101*40)+(80/8)温度
(0263) #define Set_ShiJian_Addr 0x53E2 //(127*40)+(80/8)时间
(0264) #define DQ_WenDu_Addr 0x57F2 //(153*40)+(80/8)当前温度
(0265) #define DQ_ShiDu_Addr 0x5B8A //(176*40)+(80/8)当前湿度
(0266) #define ZhuQi_WenDu_Addr 0x5F70 //(201*40)+(64/8)注气温度
(0267) #define DQ_LiuLiang_Addr 0x5F7B //(201*40)+(152/8)流量
(0268) #define DaoJiShi_Addr 0x5F8B //(201*40)+(280/8)倒计时间
(0269) #define mgl_Addr 0x57FE
(0270) #define BAC_Addr 0x5808
(0271) //**********************************
(0272) //#define DQ_WenDu_ADC 0x02 //当前温度 ADMUX select adc input 2
(0273) //#define DQ_ShiDu_ADC 0x03 //当前湿度 ADMUX select adc input 3
(0274) //#define ZhuQi_WenDu_ADC 0x01 //注气温度 ADMUX select adc input 1
(0275) //#define DQ_LD_ADC 0x00 //当前浓度 ADMUX select adc input 0
(0276)
(0277) #define DQ_WenDu_ADC 0x00 //当前温度 ADMUX select adc input 0
(0278) #define DQ_ShiDu_ADC 0x01 //当前湿度 ADMUX select adc input 1
(0279) #define ZhuQi_WenDu_ADC 0x04 //注气温度 ADMUX select adc input 4
(0280) #define DQ_LD_ADC 0x06 //当前浓度 ADMUX select adc input 6
(0281) //**********************************
(0282) #define SOUND_PORT PORTB
(0283) #define SOUND 0x03 //portb3
(0284) #define Set_SOUND() SOUND_PORT|=1<<SOUND
(0285) #define Clr_SOUND() SOUND_PORT&=~(1<<SOUND)
(0286) //**********************************
(0287) #define Set_FA_OUT() PORTB|=1<<7
(0288) #define Clr_FA_OUT() PORTB&=~(1<<7)
(0289) #define Cpl_FA_OUT() PORTB^=1<<7
(0290) //***********
(0291) //#define Set_BENG_CON() PORTB|=1<<6
(0292) //#define Clr_BENG_CON() PORTB&=~(1<<6)
(0293) #define Set_BENG_CON() PORTB|=1<<5
(0294) #define Clr_BENG_CON() PORTB&=~(1<<5)
(0295) //**********************************
(0296) #define LCD_WR_PORT PORTD
(0297) #define LCD_RD_PORT PORTD
(0298) #define LCD_CS_PORT PORTG
(0299) #define LCD_RS_PORT PORTG
(0300)
(0301) #define LCD_DATA_PORT PORTC
(0302)
(0303) #define LCD_WR 0x40 //portd6 out
(0304) #define LCD_RD 0x80 //portd7 out
(0305) #define LCD_CS 0x01 //portg0 out
(0306) #define LCD_RS 0x02 //portg1 out 注意置位的格式
(0307) //**********************************
(0308) //**********************************
(0309) #define ads1100_writeaddr 0x90
(0310) #define ads1100_readaddr 0x91
(0311)
(0312) #define ADS1100_data 1 //pd1 ads1100的第4脚
(0313) #define ADS1100_scl 0 //pd0 ads1100的第3脚
(0314)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -