?? csy.lst
字號:
C51 COMPILER V7.06 CSY 11/19/2005 14:46:36 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CSY
OBJECT MODULE PLACED IN csy.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE csy.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <AT89X51.H>//6.000MHz
2 #define uchar unsigned char
3 #define uint unsigned int
4 #define L 0
5 #define R 1
6 uchar SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,
7 0x6d,0x7d,0x07,0x7f,0x6f};/*0~9的數碼管段碼*/
8 #define reset() {WDT=0x1e;WDT=0xe1;}
9 uchar act[2]={0xf3,0xfc};//數碼管位碼
10 /***************************************************************/
11 uchar time_cnt;
12 uchar deda=0; ///*100mS計數單元清零*/
13 sfr WDT=0xa6;
14
15 /**************端口定義***********/
16 sbit INPUT=P3^2;
17 sbit RL1=P1^7;
18 sbit RL2=P1^6;
19 sbit LED1=P1^2;
20 sbit LED2=P1^3;
21 sbit BZ1=P1^4;
22 sbit BZ2=P1^5;
23 /***************************/
24 bit LR;
25 bit ERR;
26 /***********************/
27 /*定時器T0初始化*/
28 void init_timer0()
29 {
30 1 TMOD=0x11;
31 1 TH0=-(50235/256);//100mS定時初值
32 1 TL0=-(50235%256);
33 1 }
34
35 /*定時器T1初始化*/
36 void init_timer1()
37 {
38 1 TH1=-(2000/256);//4mS定時初值
39 1 TL1=-(2000%256);
40 1 TR1=1;
41 1 }
42
43 //************初始化***********
44 void init(void)
45 { P0=0;P1=0xff;P2=0xff;P3=0xff;
46 1 reset()
47 1 init_timer0();
48 1 init_timer1();
49 1 ET0=1;ET1=1;EX1=1;
50 1 TR1=1;IT1=1;
51 1 EA=1;
52 1 }
53
54
55 /*************延時子函數*************/
C51 COMPILER V7.06 CSY 11/19/2005 14:46:36 PAGE 2
56 void delay(uint k)
57 {
58 1 uint i,j;
59 1 for(i=0;i<k;i++){
60 2 for(j=0;j<60;j++)
61 2 {;}reset()}
62 1 }
63
64 /*100mS定時中斷服務子函數*/
65 void time_zd0(void) interrupt 1 using 1
66 {
67 1 TH0=-(50235/256);
68 1 TL0=-(50235%256);
69 1 if(!INPUT)deda++;
70 1 time_cnt++;
71 1 if(time_cnt==15)// 當 time_cnt==20 , 開始測試
72 1 { TR0=0;
73 2 if((deda>2)&&(deda<11))// 先檢測開鎖脈沖
74 2 {RL1=1;RL2=1;// 正常
75 3 delay(90);
76 3 BZ1=1;BZ2=1;RL1=1;RL2=0;
77 3 deda=0;ERR=0;
78 3 TR0=1;//deda=0;LR=R;
79 3 }
80 2 else ERR=1;// 否則有錯
81 2 }
82 1 //=============================================
83 1 if(time_cnt==30)// 當time_cnt==20 , 開始測試
84 1 {TR0=0;
85 2 if((deda>2)&&(deda<11))// 再檢測閉鎖脈沖
86 2 {RL1=1;RL2=1;// 正常
87 3 BZ1=1;BZ2=1;RL1=1;RL2=1;
88 3 TR0=0;
89 3 EX1=1;}
90 2 else ERR=1;// 否則有錯
91 2 }
92 1
93 1 }
94
95 /**************************/
96 /*4mS定時中斷服務子函數,掃描刷新兩位數碼管*/
97 void time_zd1(void) interrupt 3 using 3
98 {
99 1 TH1=-(2000/256);
100 1 TL1=-(2000%256);
101 1 LR=!LR;
102 1 if(LR==L)
103 1 {P0=SEG7[deda/10]|0x80;
104 2 P2=act[1];}
105 1 else
106 1 {P0=SEG7[deda%10];
107 2 P2=act[0];}
108 1 }
109
110 /******************主函數*****************/
111 void main()
112 { init();
113 1 while(1)
114 1 { reset()
115 2 if(time_cnt<=15)
116 2 { if(!INPUT)
117 3 {LED1=0;LED2=1;}
C51 COMPILER V7.06 CSY 11/19/2005 14:46:36 PAGE 3
118 3 else
119 3 {LED1=1;LED2=1;}
120 3 }
121 2 else
122 2 { if(!INPUT)
123 3 {LED1=1;LED2=0;}
124 3 else
125 3 {LED1=1;LED2=1;}
126 3 }
127 2 //============================================
128 2 if(ERR)
129 2 {BZ1=0;BZ2=0;TR0=0;}
130 2 }
131 1 }
132 /**********************************************************/
133
134 void extern_zd1(void) interrupt 2 using 2//測試啟動
135 { delay(10);
136 1 if(!P3_3)
137 1 {BZ1=0;BZ2=0;
138 2 delay(200);
139 2 LR=L;ERR=0;
140 2 BZ1=1;BZ2=1;
141 2 deda=0;
142 2 time_cnt=0;
143 2 EX1=0;TR0=1;
144 2 RL1=0;RL2=1;
145 2 }
146 1 }
147
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 370 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -