?? pump.lst
字號:
182 =1 sbit F1 = PSW ^ 1; /* USER FLAG 1 */
183 =1 sbit P = PSW ^ 0; /* ACCUMULATOR PARITY FLAG */
184 =1
185 =1 /* PCA0CN D8H */
186 =1 sbit CF = PCA0CN ^ 7; /* PCA 0 COUNTER OVERFLOW FLAG */
187 =1 sbit CR = PCA0CN ^ 6; /* PCA 0 COUNTER RUN CONTROL BIT */
188 =1 sbit CCF4 = PCA0CN ^ 4; /* PCA 0 MODULE 4 INTERRUPT FLAG */
189 =1 sbit CCF3 = PCA0CN ^ 3; /* PCA 0 MODULE 3 INTERRUPT FLAG */
190 =1 sbit CCF2 = PCA0CN ^ 2; /* PCA 0 MODULE 2 INTERRUPT FLAG */
191 =1 sbit CCF1 = PCA0CN ^ 1; /* PCA 0 MODULE 1 INTERRUPT FLAG */
192 =1 sbit CCF0 = PCA0CN ^ 0; /* PCA 0 MODULE 0 INTERRUPT FLAG */
193 =1
194 =1 /* ADC0CN E8H */
195 =1 sbit ADCEN = ADC0CN ^ 7; /* ADC 0 ENABLE */
196 =1 sbit ADCTM = ADC0CN ^ 6; /* ADC 0 TRACK MODE */
197 =1 sbit ADCINT = ADC0CN ^ 5; /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG */
198 =1 sbit ADBUSY = ADC0CN ^ 4; /* ADC 0 BUSY FLAG */
199 =1 sbit ADSTM1 = ADC0CN ^ 3; /* ADC 0 START OF CONVERSION MODE BIT 1 */
200 =1 sbit ADSTM0 = ADC0CN ^ 2; /* ADC 0 START OF CONVERSION MODE BIT 0 */
201 =1 sbit ADWINT = ADC0CN ^ 1; /* ADC 0 WINDOW COMPARE INTERRUPT FLAG */
202 =1 sbit ADLJST = ADC0CN ^ 0; /* ADC 0 RIGHT JUSTIFY DATA BIT */
203 =1
204 =1 /* SPI0CN F8H */
205 =1 sbit SPIF = SPI0CN ^ 7; /* SPI 0 INTERRUPT FLAG */
206 =1 sbit WCOL = SPI0CN ^ 6; /* SPI 0 WRITE COLLISION FLAG */
207 =1 sbit MODF = SPI0CN ^ 5; /* SPI 0 MODE FAULT FLAG */
208 =1 sbit RXOVRN = SPI0CN ^ 4; /* SPI 0 RX OVERRUN FLAG */
209 =1 sbit TXBSY = SPI0CN ^ 3; /* SPI 0 TX BUSY FLAG */
210 =1 sbit SLVSEL = SPI0CN ^ 2; /* SPI 0 SLAVE SELECT */
211 =1 sbit MSTEN = SPI0CN ^ 1; /* SPI 0 MASTER ENABLE */
212 =1 sbit SPIEN = SPI0CN ^ 0; /* SPI 0 SPI ENABLE */
8 #include <intrins.h>
1 =1 /*--------------------------------------------------------------------------
2 =1 INTRINS.H
3 =1
4 =1 Intrinsic functions for C51.
5 =1 Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 #ifndef __INTRINS_H__
10 =1 #define __INTRINS_H__
11 =1
12 =1 extern void _nop_ (void);
13 =1 extern bit _testbit_ (bit);
14 =1 extern unsigned char _cror_ (unsigned char, unsigned char);
15 =1 extern unsigned int _iror_ (unsigned int, unsigned char);
16 =1 extern unsigned long _lror_ (unsigned long, unsigned char);
17 =1 extern unsigned char _crol_ (unsigned char, unsigned char);
18 =1 extern unsigned int _irol_ (unsigned int, unsigned char);
19 =1 extern unsigned long _lrol_ (unsigned long, unsigned char);
20 =1 extern unsigned char _chkfloat_(float);
21 =1 extern void _push_ (unsigned char _sfr);
C51 COMPILER V8.01 PUMP 09/19/2006 11:35:54 PAGE 5
22 =1 extern void _pop_ (unsigned char _sfr);
23 =1
24 =1 #endif
25 =1
9
10 /********************************************變量類型縮略定義***********************************/
11 #define uint unsigned int //縮略定義
12 #define uchar unsigned char
13 #define ulint unsigned long
14
15 /***********************************************常量定義****************************************/
16 #define Time_1ms 6 //時間常量(12M) 6x-x/8
17 #define Time_5ms 30
18 #define Time_10ms 59
19 #define Time_15ms 88
20 #define Time_20ms 118
21 #define Time_50ms 294
22 #define Time_80ms 470
23 #define Time_100ms 588
24 #define Time_200ms 1175
25
26 #define DAC0_DATA 0x01BC //斬波驅動參考電壓設定值
27 #define DAC1_DATA 0x0C00 //比較器參考電壓設定值
28 #define Delay_STime 0x09C4 //檢測到氣泡報警的時間延遲(短)
29 #define Delay_LTime 0xF424 //檢測到氣泡報警的時間延遲(長)
30 #define Bubble_NUM 0x0001 //累計氣泡為150個
31 /*******************************************I/O端口對應輸出聲明*********************************/
32 sbit SDA=P0^0; //SMBUS設置
33 sbit SCL=P0^1; //用作T3定時器的自動重載觸發(fā)源
34 sbit CEX0=P0^2; //PCA第一個比較、捕捉模塊
35 sbit T1=P0^3; //定時器T1計數(shù)源輸入端,對小氣泡進行計數(shù)
36 sbit INT1=P0^4; //鍵盤中斷
37 sbit T2EX=P0^5; //由內部計數(shù)器2對氣泡檢測脈沖進行計數(shù)
38 sbit CNVSTR=P0^6; //時鐘輸出
39 sbit SM_RST=P0^7; //L297復位控制位
40 sbit Balarm_flag=P1^0; //氣泡報警標志位,為1時正常,為0時報警
41 sbit Heat_flag=P1^1; //加熱標志位
42 //sbit SHIFT_DATA=P1^2; //移位寄存器串行數(shù)據(jù)輸入位,H時為1,L時為0
43 sbit DI2PIN=P1^2; //LCD2時鐘輸入引腳
44 sbit Lpower_LED=P1^3; //低電壓報警
45 //sbit SHIFT_CLK=P1^3; //移位寄存器時鐘輸入
46 sbit CLK2PIN=P1^4; //LCD2數(shù)據(jù)輸入引腳
47 //sbit SHIFT_CLR=P1^4; //移位寄存器清零端
48 sbit CLKPIN = P1^5; //用戶自定義CLK對應引腳
49 sbit T1IN=P1^6; //定時器T1的輸入
50 sbit State_LED=P1^7; //狀態(tài)標志位
51 sbit DIPIN = P2^0; //用戶自定義DI對應引腳
52 sbit SM_CLK1=P2^2; //步進電機時鐘位
53 sbit SM_EN=P2^3; //L297使能位
54 sbit SM_CW=P2^4; //L297方向控制位
55 sbit SM_MODE=P2^5; //L297環(huán)形分配器分配方式控制位
56 /*******************************************全局變量定義****************************************/
57 uchar temp[4]; //LCD顯示數(shù)字緩存
58 uchar temp2[4]; //LCD2顯示數(shù)字緩存
59 uchar code temp_code[4]={0,1,0,0}; //LCD顯示數(shù)字的十進制形式
60 uchar code temp2_code[4]={0,5,0,0}; //LCD2顯示數(shù)字的十進制形式
61 uchar Point_Flag; //小數(shù)點標志位
62 uchar data l_data[5]; //用戶自定義LCD緩沖區(qū)
63 uchar lcd_data[10]; //0~9對應的顯示代碼緩存;
64 uchar code lcd_data_code[10]={0x88,0xbb,0xc1,0x91,0xb2,0x94,0x84,0xb9,0x80,0xb0}; //0~9對應的顯示代碼;
65 uchar code_h; //行掃描值
66 uchar code_l; //列掃描值
C51 COMPILER V8.01 PUMP 09/19/2006 11:35:54 PAGE 6
67 uchar keycode=0x00; //最終鍵值
68 uint k=0; //LCD顯示段位置序號
69 uint kk=0; //LCD2顯示段位置序號
70 uint BUFFER; //步進電機轉速控制
71 uint Buffer_NUM; //T0循環(huán)次數(shù)
72 uint PWM_Width; //定時器0溢出周期控制
73 uint Drop_Num; //設定的液滴數(shù)
74 ulint Flux_Pulse; //設定的流速對應的脈沖數(shù)
75 ulint All_Pulse; //需要產(chǎn)生的全部脈沖數(shù)
76 float Drop_NStep; //一滴所對應的步進電機的步數(shù)
77 bit Fluxdrop_Flag; //流量和滴速單位標志位,為0單位是流量,為1時單位是滴速
78 bit Speed_Set; //流速設置標志位,為0時設置保存,為1時允許設置
79 bit Hold_Flag; //鍵盤鎖定標志位,為1時鍵盤鎖定,為0時允許鍵盤動作
80 bit SR_Flag; // 運行/停止標志位,為0時停止,為1時運行
81 bit PK_Flag; //排空標志位,為0停止排空操作,為1時開始排空操作
82 bit Gross_Flag; //輸液量設置標志,為1時允許設置,為0時保存設置
83 /******************************************函數(shù)聲明********************************************/
84 void SYSCLK_Init(void); //系統(tǒng)時鐘初始化
85 void IO_Init(void); //I/O端口設置初始化
86 void ISR_Init(void); //系統(tǒng)中斷設置初始化
87 void Global_Init(void); //全局變量初始化
88 void Bubble_alarm(void); //氣泡檢測報警
89 void delay( uint t); //軟件延遲,(102.647t+2.3646)us
90 void nop(uint t); //軟件短延遲函數(shù)
91 void pk(void); //輸液前的排空操作
92 void lcdwbit(bit n); //LCD位傳輸函數(shù)
93 void lcdwd(uchar data1); //LCD字節(jié)傳輸函數(shù)
94 void lcdwd1(); //LCD4段數(shù)據(jù)傳輸函數(shù)
95 void l_set(); //各段顯示數(shù)據(jù)設置
96 void display(); //顯示設置數(shù)據(jù)
97 void noplay(); //空白顯示
98 void lcd2wbit(bit n); //LCD2位傳輸函數(shù)
99 void lcd2wd(uchar data1); //LCD2字節(jié)傳輸函數(shù)
100 void lcd2wd1(); //LCD2的4段數(shù)據(jù)傳輸函數(shù)
101 void l2_set(); //LCD2各段顯示數(shù)據(jù)設置
102 void display2(); //LCD2顯示設置數(shù)據(jù)
103 void noplay2(); //LCD2空白顯示
104 void SM_Set(void); //步進電機工作狀態(tài)設置
105 void T0_Set(void); //定時器T0設置
106 void T0_ISR(void); //定時器T0中斷服務函數(shù)
107 void SM_SR(void); //步進電機運行停止控制函數(shù)
108 void DAC0_Set(void); //步進電機參考電壓設置
109 void DAC1_Set(void); //比較器參考電壓設置
110 void data_inv(void); //流量參數(shù)變換
111 void pulse_inv(void); //輸液量參數(shù)變換
112 void ADC_Set(void); //ADC窗口比較器設置
113 void ADC_ISR(void); //ADC窗口比較器中斷服務函數(shù)
114 void T1_Set(void); //定時器T1參數(shù)設置
115 void T1_ISR(void); //定時器T1中斷服務函數(shù)
116 void T2_Set(void); //定時器T2參數(shù)設置
117 void T2_ISR(void); //定時器T2中斷服務函數(shù)
118 void T3_Set(void); //定時器T3參數(shù)設置
119 void T3_ISR(void); //定時器T3中斷服務函數(shù)
120 void PCA_ADC(void); //PCA高速輸出方式啟動ADC
121 void keyinterrupt(void); //INT1即鍵盤中斷服務函數(shù)
122 void main(void); //主函數(shù)
123 /***************************************函數(shù)定義***********************************************/
124
125 /**********************************************************************************************
126 函數(shù):void SYSCLK_Init(void)
127 說明:系統(tǒng)時鐘初始化,選擇外部12M晶振,關閉看門狗。
128 ***********************************************************************************************/
C51 COMPILER V8.01 PUMP 09/19/2006 11:35:54 PAGE 7
129 void SYSCLK_Init(void)
130 {
131 1 int i;
132 1 WDTCN=0x07; //最大時間延遲
133 1 WDTCN=0xDE;
134 1 _nop_();
135 1 WDTCN=0xAD; //禁止看門狗中斷
136 1 OSCXCN=0x77; //外部時鐘寄存器設置
137 1 for(i=0;i<256;i++) ; // 至少等待1ms
138 1 while(!(OSCXCN&0x80)) ; //等待晶振穩(wěn)定,
139 1 OSCICN=0x88; // 采用外部晶振作為時鐘源
140 1 WDTCN=0xFF; //鎖定看門狗禁止功能禁止,看門狗在程序中一直有效
141 1 WDTCN=0xA5; //喂狗
142 1 }
143 /**********************************************************************************************
144 函數(shù):void IO_Init()
145 說明:I/O端口設置初始化,內部資源和IO端口交叉開關設置;輸入和5V輸出采用開漏輸出,3.3V輸出采用
146 推挽輸出,允許全局弱上拉
147 ***********************************************************************************************/
148 void IO_Init()
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -