?? 掉電存儲..lst
字號:
C51 COMPILER V8.02 礯電存儲_ 10/14/2010 19:55:09 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 礯電存儲_
OBJECT MODULE PLACED IN 掉電存儲..OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 掉電存儲..c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 匯誠科技
3
4 實現功能:掉電存儲控制程序
5 使用芯片:AT89S52
6 晶振:11.0592MHZ
7 波特率:9600
8 編譯環境:Keil
9 作者:zhangxinchunleo
10 網站:www.ourhc.cn
11 淘寶店:匯誠科技 http://shop36330473.taobao.com
12 【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!
13
14 *********************************************************************/
15 /********************************************************************
16 程序說明:
17
18 當IN0口與GND口接通后,對應的繼電器K8吸合(即:COM7與CK接通CB斷開);
19 當IN1口與GND口接通后,對應的繼電器K7吸合(即:COM6與CK接通CB斷開);
20 當IN2口與GND口接通后,對應的繼電器K6吸合(即:COM5與CK接通CB斷開);
21 當IN3口與GND口接通后,對應的繼電器K5吸合(即:COM4與CK接通CB斷開);
22
23
24 當電源斷電后,或者按下復位按鍵后,控制板再次供電,控制板恢復斷電前或者復位前狀態。
25 *********************************************************************/
26 #include<reg52.h> //庫文件
27 #define uchar unsigned char//宏定義無符號字符型
28 #define uint unsigned int //宏定義無符號整型
29 uchar dat; //存儲數據值
30 bit write=0; //寫24C08 的標志;
31 /********************************************************************
32 初始定義
33 *********************************************************************/
34
35 /*定義八位輸入為單片機P1口*/
36 sbit IN0=P1^0;
37 sbit IN1=P1^1;
38 sbit IN2=P1^2;
39 sbit IN3=P1^3;
40
41 /*定義八位輸出為單片機P2口*/
42 sbit K1=P2^0;
43 sbit K2=P2^1;
44 sbit K3=P2^2;
45 sbit K4=P2^3;
46
47
48 sbit scl=P3^6;
49 sbit sda=P3^7;
50
51
52 /********************************************************************
53 24C08 讀寫驅動程序
54 *********************************************************************/
55 void delay1(uchar x)
C51 COMPILER V8.02 礯電存儲_ 10/14/2010 19:55:09 PAGE 2
56 {
57 1 uint i;
58 1 for(i=0;i<x;i++);
59 1 ;
60 1 }
61 void flash(){ ; ; }
62 void x24c08_init() //24c08 初始化子程序
63 {
64 1 scl=1;
65 1 flash();
66 1 sda=1;
67 1 flash();
68 1 }
69 void start() //啟動(I方C)總線
70 {
71 1 sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();
72 1 }
73 void stop() //停止(I方C)總線
74 {
75 1 sda=0; flash(); scl=1; flash(); sda=1; flash();
76 1 }
77 void writex(uchar j) //寫一個字節
78 {
79 1 uchar i,temp;
80 1 temp=j;
81 1 for (i=0;i<8;i++)
82 1 {
83 2 temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
84 2 }
85 1 scl=0; flash(); sda=1; flash();
86 1 }
87 uchar readx() //讀一個字節
88 {
89 1 uchar i,j,k=0;
90 1 scl=0; flash(); sda=1;
91 1 for (i=0;i<8;i++)
92 1 {
93 2 flash(); scl=1; flash();
94 2 if (sda==1) j=1;
95 2 else j=0;
96 2 k=(k<<1)|j;
97 2 scl=0;}
98 1 flash(); return(k);
99 1 }
100 void clock() //(I方C)線時鐘
101 {
102 1 unsigned char i=0;
103 1 scl=1; flash();
104 1 while ((sda==1)&&(i<255))i++;
105 1 scl=0; flash();
106 1 }
107 /********************************************************************
108 從24c08 的地址address 中讀取一個字節數據
109 *********************************************************************/
110 unsigned char x24c08_read(unsigned char address)
111 {
112 1 unsigned char i;
113 1 start(); writex(0xa0);
114 1 clock(); writex(address);
115 1 clock(); start();
116 1 writex(0xa1); clock();
117 1 i=readx(); stop();
C51 COMPILER V8.02 礯電存儲_ 10/14/2010 19:55:09 PAGE 3
118 1 delay1(10);
119 1 return(i);
120 1 }
121 /********************************************************************
122 向24c08 的address地址中寫入一字節數據
123 *********************************************************************/
124 void x24c08_write(unsigned char address,unsigned char info)
125 {
126 1 EA=0;
127 1 start(); writex(0xa0);
128 1 clock(); writex(address);
129 1 clock(); writex(info);
130 1 clock(); stop();
131 1 EA=1;
132 1 delay1(50);
133 1 }
134 /********************************************************************
135 延時函數
136 *********************************************************************/
137 void delay(uchar t)
138 {
139 1 uchar i,j;
140 1 for(i=0;i<t;i++)
141 1 {
142 2 for(j=13;j>0;j--);
143 2 { ;
144 3 }
145 2 }
146 1 }
147
148 /********************************************************************
149 主函數
150 *********************************************************************/
151 void main(void)
152 {
153 1 x24c08_init(); //初始化24C08
154 1 dat=x24c08_read(2);//讀出保存的數據賦于dat
155 1 P2=dat;//將存儲的數據賦予P2口
156 1 while(1)
157 1 {
158 2 if(IN0==0){delay(100);while(!IN0);P2=0XFE;write=1;} //當IN0與GND接通后,P2口輸出11111110,繼電器K8吸合其它
-繼電器斷開;
159 2 if(IN1==0){delay(100);while(!IN1);P2=0XFD;write=1;} //當IN1與GND接通后,P2口輸出11111101,繼電器K7吸合其它
-繼電器斷開;
160 2 if(IN2==0){delay(100);while(!IN2);P2=0XFB;write=1;} //當IN2與GND接通后,P2口輸出11111011,繼電器K6吸合其它
-繼電器斷開;
161 2 if(IN3==0){delay(100);while(!IN3);P2=0XF7;write=1;} //當IN3與GND接通后,P2口輸出11110111,繼電器K5吸合其它
-繼電器斷開;
162 2
163 2 if(write==1) //判斷計時器是否計時一秒
164 2 {
165 3 write=0; //清零
166 3 dat=P2; //將P2口的值賦予dat
167 3 x24c08_write(2,dat); //在24c08 的地址2 中寫入數據dat
168 3 }
169 2 }
170 1 }
171
172
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V8.02 礯電存儲_ 10/14/2010 19:55:09 PAGE 4
CODE SIZE = 342 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -