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

📄 m128_alky_touch_con1.lst

📁 m8做的电压检测
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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 + -