📄 m128_alky_touch_con1.lst
字号:
(0315) #define IN_ADS1100_data() DDRD&=~(1<<ADS1100_data)
(0316) #define OUT_ADS1100_data() DDRD|=1<<ADS1100_data
(0317)
(0318) #define Set_ADS1100_data() PORTD|=1<<ADS1100_data
(0319) #define Clr_ADS1100_data() PORTD&=~(1<<ADS1100_data)
(0320) #define Set_ADS1100_scl() PORTD|=1<<ADS1100_scl
(0321) #define Clr_ADS1100_scl() PORTD&=~(1<<ADS1100_scl)
(0322) //***********************
(0323) //*****************气室浓度读取*****************
(0324) #define QS_ADS1100_data 5 //pd5 ads1100的第4脚
(0325) #define QS_ADS1100_scl 4 //pd4 ads1100的第3脚
(0326)
(0327) #define IN_QS_ADS1100_data() DDRD&=~(1<<QS_ADS1100_data)
(0328) #define OUT_QS_ADS1100_data() DDRD|=1<<QS_ADS1100_data
(0329)
(0330) #define Set_QS_ADS1100_data() PORTD|=1<<QS_ADS1100_data
(0331) #define Clr_QS_ADS1100_data() PORTD&=~(1<<QS_ADS1100_data)
(0332) #define Set_QS_ADS1100_scl() PORTD|=1<<QS_ADS1100_scl
(0333) #define Clr_QS_ADS1100_scl() PORTD&=~(1<<QS_ADS1100_scl)
(0334)
(0335) //**********************************
(0336) //**********************************
(0337) //*****************触摸屏ADS7846*****************
(0338) #define ADS7846_DCLK 2 //PE2
(0339) #define ADS7846_CS 3 //PE3
(0340) #define ADS7846_DIN 5 //PE5
(0341) //#define ADS7846_BUSY 5 //PE5
(0342) #define ADS7846_DOUT 6 //PE6
(0343) #define ADS7846_INT 7 //PE7
(0344)
(0345) #define ADS7846_DOUT_PIN PINE
(0346) #define ADS7846_BUSY_PIN PINE
(0347)
(0348) #define Set_ADS7846_DCLK() PORTE|=1<<ADS7846_DCLK
(0349) #define Clr_ADS7846_DCLK() PORTE&=~(1<<ADS7846_DCLK)
(0350)
(0351) #define Set_ADS7846_CS() PORTE|=1<<ADS7846_CS
(0352) #define Clr_ADS7846_CS() PORTE&=~(1<<ADS7846_CS)
(0353)
(0354) #define Set_ADS7846_DIN() PORTE|=1<<ADS7846_DIN
(0355) #define Clr_ADS7846_DIN() PORTE&=~(1<<ADS7846_DIN)
(0356)
(0357) //**********************************
(0358) //**********************************
(0359) #define DS1302_RST 2 //pb2
(0360) #define DS1302_SDA 1 //pb1
(0361) #define DS1302_SCLK 0 //pb0
(0362) //ds1302相关
(0363) //DS1302_RST=1
(0364) #define Set_DS1302_RST() PORTB|=1<<DS1302_RST
(0365) //DS1302_RST=0
(0366) #define Clr_DS1302_RST() PORTB&=~(1<<DS1302_RST)
(0367) //DS1302_SDA=1
(0368) #define Set_DS1302_SDA() PORTB|=1<<DS1302_SDA
(0369) //DS1302_SDA=0
(0370) #define Clr_DS1302_SDA() PORTB&=~(1<<DS1302_SDA)
(0371) //DS1302_SCLK=1
(0372) #define Set_DS1302_SCLK() PORTB|=1<<DS1302_SCLK
(0373) //DS1302_SCLK=0
(0374) #define Clr_DS1302_SCLK() PORTB&=~(1<<DS1302_SCLK)
(0375)
(0376) //DS1302的SDA置为输出脚
(0377) #define Set_DS1302_DDRSDA() DDRB|=1<<DS1302_SDA
(0378) //DS1302的SDA置为输入脚
(0379) #define Clr_DS1302_DDRSDA() DDRB&=~(1<<DS1302_SDA)
(0380) #define DS1302_SEC_Reg 0x80
(0381) #define DS1302_MIN_Reg 0x82
(0382) #define DS1302_HR_Reg 0x84
(0383) #define DS1302_DATE_Reg 0x86
(0384) #define DS1302_MONTH_Reg 0x88
(0385) #define DS1302_DAY_Reg 0x8a
(0386) #define DS1302_YEAR_Reg 0x8c
(0387) #define DS1302_CONTROL_Reg 0x8e
(0388) #define DS1302_CHARGER_Reg 0x90
(0389) #define DS1302_CLKBURST_Reg 0xbe
(0390) #define DS1302_Flag 0xc0
(0391) //**********************************
(0392) //**********************************
(0393) //**********************************
(0394)
(0395) void delay_nus (unsigned int n);
(0396) void delay_nms (unsigned int n);
(0397) void Sound_delay_nms (unsigned int n);
(0398) void delay_1us(void); //1us延时函数
(0399) void delay_1ms(void); //1us延时函数
(0400) void LCD_init(void); //液晶初始化
(0401) void OUT_LCM (unsigned char n);
(0402) void init_devices(void);
(0403) void port_init(void);
(0404) void Disp_DQ_LD(unsigned char PN,unsigned int addr,unsigned int n);
(0405) void Disp_Set_LD(unsigned char flag,unsigned int addr,unsigned int n);
(0406) void Disp_Set_TWO(unsigned char flag,unsigned int addr,unsigned char n);
(0407) void Disp_Set_FOUR(unsigned char flag,unsigned int addr,unsigned int n);
(0408) void Disp_mgl(unsigned int n,float f);
(0409) void Disp_dot(unsigned int addr,float f);
(0410) void Disp_Set_LD111(unsigned int addr,unsigned int n);
(0411) void Display_Time(unsigned char n);
(0412) void Display_Time_CLR(void);
(0413)
(0414) void DS1302_Write(uchar reg,uchar data);
(0415) uchar DS1302_Read(uchar reg);
(0416) uchar Check_DS1302(void);
(0417) void DS1302_Init(void);
(0418) void ReadTime(void);
(0419)
(0420) void delay_us(unsigned int n);
(0421)
(0422) void Sound_Nms(unsigned int n);
(0423)
(0424) //*********
(0425) void ads1100_start(void); /*i2c start */
(0426) void ads1100_stop(void); /*i2c stop*/
(0427) uchar ackby_ads1100(void); /*ads1100应答*/
(0428) void ackby_master(void); /*主机应答*/
(0429) void send_frame(uchar framedata); /*send 8bit to ads1100*/
(0430) uchar read_frame(void); /*read bbit from ads1100*/
(0431) void ads1100_write(unsigned char addr,unsigned char command); /*write a command to the ads1100*/
(0432) unsigned int ads1100_read(unsigned char addr); /*read a convert data from ads1100*/
(0433)
(0434) void QS_ads1100_start(void); /*i2c start */
(0435) void QS_ads1100_stop(void); /*i2c stop*/
(0436) uchar QS_ackby_ads1100(void); /*ads1100应答*/
(0437) void QS_ackby_master(void); /*主机应答*/
(0438) void QS_send_frame(uchar framedata); /*send 8bit to ads1100*/
(0439) uchar QS_read_frame(void); /*read bbit from ads1100*/
(0440) void QS_ads1100_write(unsigned char addr,unsigned char command); /*write a command to the ads1100*/
(0441) unsigned int QS_ads1100_read(unsigned char addr); /*read a convert data from ads1100*/
(0442)
(0443) void FL_ads1100_start(void); /*i2c start */
(0444) void FL_ads1100_stop(void); /*i2c stop*/
(0445) uchar FL_ackby_ads1100(void); /*ads1100应答*/
(0446) void FL_ackby_master(void); /*主机应答*/
(0447) void FL_send_frame(uchar framedata); /*send 8bit to ads1100*/
(0448) uchar FL_read_frame(void); /*read bbit from ads1100*/
(0449) void FL_ads1100_write(unsigned char addr,unsigned char command); /*write a command to the ads1100*/
(0450) unsigned int FL_ads1100_read(unsigned char addr); /*read a convert data from ads1100*/
(0451)
(0452) void BENG_ads1100_start(void); /*i2c start */
(0453) void BENG_ads1100_stop(void); /*i2c stop*/
(0454) uchar BENG_ackby_ads1100(void); /*ads1100应答*/
(0455) void BENG_ackby_master(void); /*主机应答*/
(0456) void BENG_send_frame(uchar framedata); /*send 8bit to ads1100*/
(0457) uchar BENG_read_frame(void); /*read bbit from ads1100*/
(0458) void BENG_ads1100_write(unsigned char addr,unsigned char command); /*write a command to the ads1100*/
(0459) unsigned int BENG_ads1100_read(unsigned char addr); /*read a convert data from ads1100*/
(0460) //*********
(0461)
(0462) void Disp_Start_donghua(unsigned int addr,unsigned char n);
(0463) uchar keboard(void);
(0464)
(0465) void EEPROM_write(unsigned int uiAddress, unsigned char ucData);
(0466) unsigned char EEPROM_read(unsigned int uiAddress);
(0467) void EEPROM_init(void);
(0468) void Read_EE_10(unsigned char n);
(0469) void Write_EE_10(unsigned char n);
(0470)
(0471) uint SYS_ADC(unsigned char n);
(0472) int PIDCalc( PID *pp, uint NextPoint);
(0473) int PIDCalc_WD( PID *pp, uint NextPoint);
(0474) void PIDInit (PID *pp);
(0475) float WENDU_TZ(uint ad_v);
(0476) void Display_Start_donghua320240(void);
(0477) void Display_CON320240(void);
(0478) void Display_CLR(void);
(0479) void CON_Value_XIANSHI(void);
(0480) void F_Value_XIANSHI(void);
(0481) void L_LDBD_XIANSHI(void);
(0482) void PID_Value_XIANSHI(void);
(0483) void XG_CON_Set(unsigned char kkk);
(0484) void XG_PID_Set(unsigned char kkk);
(0485) void L_LDBD_Set(unsigned char kkk);
(0486) unsigned char P_I_D_SUB1(unsigned char XX,unsigned char k);
(0487) unsigned int P_I_D_SUB2(unsigned int XX,unsigned char k);
(0488) void XG_F_Set(unsigned char kkk);
(0489)
(0490) void Display_F320240(void);
(0491) void Display_L320240(void);
(0492) void Display_L_PID320240(void);
(0493) void Display_TOUCH_KEY(void);
(0494) void Display_TOUCH_KEY_VAL(void);
(0495) void Display_TOUCH_MENU(void);
(0496) void Disp_SJ_MODE_CLR(void);
(0497) void Disp_SJ_MODE_DianD(void);
(0498) void Disp_SJ_MODE_ChangK(void);
(0499) void Disp_Select_BDLD(unsigned int addr);
(0500) void Disp_Select_BDLD_Clr(unsigned int addr);
(0501) void Disp_MiMa(unsigned char flag,unsigned int addr);
(0502) void MiMa_TEMP_Clr(void);
(0503) void Button_YN(void);
(0504) void Disp_Message(uchar n,unsigned int addr);
(0505) void Display_TOUCH_Message(unsigned char n);
(0506) void Display_TOUCH_LOCK(unsigned char n);
(0507) void Display_TOUCH_KEY_BD(void);
(0508) void LD_JiSuan(void);
(0509)
(0510) uchar keyboard(void);
(0511) uint ReadFromCharFrom7846(void);
(0512) void WriteCharTo7846(unsigned char num);
(0513) void ADS7846_start(void);
(0514) //******************************************
(0515) //******************************************
(0516) //******************************************
(0517) //******************************************
(0518) //******************************************
(0519) //******************************************
(0520) //******************************************
(0521) //******************************************
(0522) //******************************************
(0523) //=============================PID计算部分==============================================
(0524) int PIDCalc( PID *pp, uint NextPoint)
(0525) {
(0526) int dError,Error,TEMP;
(0527) Error = pp->SetPoint - NextPoint; // 偏差
6206 01FA MOVW R30,R20
6207 80C0 LDD R12,Z+0
6208 80D1 LDD R13,Z+1
6209 18CA SUB R12,R10
620A 08DB SBC R13,R11
(0528) pp->SumError += Error; // 积分
620B 01CF MOVW R24,R30
620C 9609 ADIW R24,0x9
620D 01FC MOVW R30,R24
620E 8020 LDD R2,Z+0
620F 8031 LDD R3,Z+1
6210 0C2C ADD R2,R12
6211 1C3D ADC R3,R13
6212 8231 STD Z+1,R3
6213 8220 STD Z+0,R2
(0529) if(pp->SumError > 20000)
6214 E280 LDI R24,0x20
6215 E49E LDI R25,0x4E
6216 01FA MOVW R30,R20
6217 8421 LDD R2,Z+9
6218 8432 LDD R3,Z+10
6219 1582 CP R24,R2
621A 0593 CPC R25,R3
621B F41C BGE 0x621F
(0530) {pp->SumError = 20000;}
621C 8792 STD Z+10,R25
621D 8781 STD Z+9,R24
621E C00B RJMP 0x622A
(0531) else
(0532) {
(0533) // TEMP=pp->SumError+Max;
(0534) if(pp->SumError < -20000)
621F 01FA MOVW R30,R20
6220 8581 LDD R24,Z+9
6221 8592 LDD R25,Z+10
6222 3E80 CPI R24,0xE0
6223 EBA1 LDI R26,0xB1
6224 079A CPC R25,R26
6225 F424 BGE 0x622A
(0535) pp->SumError= -20000;
6226 EE80 LDI R24,0xE0
6227 EB91 LDI R25,0xB1
6228 8792 STD Z+10,R25
6229 8781 STD Z+9,R24
(0536) }
(0537) dError = pp->LastError - pp->PrevError; // 当前微分
622A 01FA MOVW R30,R20
622B 8027 LDD R2,Z+7
622C 8430 LDD R3,Z+8
622D 80A5 LDD R10,Z+5
622E 80B6 LDD R11,Z+6
622F 18A2 SUB R10,R2
6230 08B3 SBC R11,R3
(0538) pp->PrevError = pp->LastError;
6231 8025 LDD R2,Z+5
6232 8036 LDD R3,Z+6
6233 8630 STD Z+8,R3
6234 8227 STD Z+7,R2
(0539) pp->LastError = Error;
6235 82D6 STD Z+6,R13
6236 82C5 STD Z+5,R12
(0540) if(Set_LD_Value>299)
6237 E28B LDI R24,0x2B
6238 E091 LDI R25,1
6239 9020 013F LDS R2,Set_LD_Value
623B 9030 0140 LDS R3,Set_LD_Value+1
623D 1582 CP R24,R2
623E 0593 CPC R25,R3
623F F4F0 BCC 0x625E
(0541) return (pp->Proportion * Error + (pp->Integral * pp->SumError)/2 + pp->Derivative * dError);
6240 8521 LDD R18,Z+9
6241 8532 LDD R19,Z+10
6242 8103 LDD R16,Z+3
6243 2711 CLR R17
6244 940E 9BA2 CALL empy16s
6246 E022 LDI R18,2
6247 E030 LDI R19,0
6248 940E 9AEA CALL div16s
624A 0118 MOVW R2,R16
624B 01FA MOVW R30,R20
624C 8102 LDD R16,Z+2
624D 2711 CLR R17
624E 0196 MOVW R18,R12
624F 940E 9BA2 CALL empy16s
6251 0128 MOVW R4,R16
6252 0C42 ADD R4,R2
6253 1C53 ADC R5,R3
6254 01FA MOVW R30,R20
6255 8104 LDD R16,Z+4
6256 2711 CLR R17
6257 0195 MOVW R18,R10
6258 940E 9BA2 CALL empy16s
625A 0E40 ADD R4,R16
625B 1E51 ADC R5,R17
625C 0182 MOVW R16,R4
625D C01E RJMP 0x627C
(0542) else
(0543) return (pp->Proportion * Error + (pp->Integral * pp->SumError)/4 + pp->Derivative * dError);
625E 01FA MOVW R30,R20
625F 8521 LDD R18,Z+9
6260 8532 LDD R19,Z+10
6261 8103 LDD R16,Z+3
6262 2711 CLR R17
6263 940E 9BA2 CALL empy16s
6265 E024 LDI R18,4
6266 E030 LDI R19,0
6267 940E 9AEA CALL div16s
6269 0118 MOVW R2,R16
626A 01FA MOVW R30,R20
626B 8102 LDD R16,Z+2
626C 2711 CLR R17
626D 0196 MOVW R18,R12
626E 940E 9BA2 CALL empy16s
6270 0128 MOVW R4,R16
6271 0C42 ADD R4,R2
6272 1C53 ADC R5,R3
6273 01FA MOVW R30,R20
6274 8104 LDD R16,Z+4
6275 2711 CLR R17
6276 0195 MOVW R18,R10
6277 940E 9BA2 CALL empy16s
6279 0E40 ADD R4,R16
627A 1E51 ADC R5,R17
627B 0182 MOVW R16,R4
627C 940C 9C2E JMP pop_xgset303C
_PIDCalc_WD:
TEMP --> Y,+1
dError --> R10
Error --> R12
NextPoint --> R10
pp --> R20
627E 940E 9C27 CALL push_xgset303C
6280 0159 MOVW R10,R18
6281 01A8 MOVW R20,R16
(0544) }
(0545) //******************************************
(0546) //=============================PID计算部分==============================================
(0547) int PIDCalc_WD( PID *pp, uint NextPoint)
(0548) {
(0549) int dError,Error,TEMP;
(0550) Error = pp->SetPoint - NextPoint; // 偏差
6282 01FA MOVW R30,R20
6283 80C0 LDD R12,Z+0
6284 80D1 LDD R13,Z+1
6285 18CA SUB R12,R10
6286 08DB SBC R13,R11
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -