📄 chengxu.lst
字号:
C51 COMPILER V8.05a CHENGXU 11/11/2010 12:12:55 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.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 #include<reg52.h> //库文件
26 #define uchar unsigned char//宏定义无符号字符型
27 #define uint unsigned int //宏定义无符号整型
28 uchar dat; //存储数据值
29 bit write=0; //写24C08 的标志;
30 /********************************************************************
31 初始定义
32 *********************************************************************/
33
34 /*定义八位输入为单片机P1口*/
35 sbit IN0=P1^0;
36 sbit IN1=P1^1;
37 sbit IN2=P1^2;
38 sbit IN3=P1^3;
39
40 /*定义八位输出为单片机P2口*/
41 sbit K1=P2^0;
42 sbit K2=P2^1;
43 sbit K3=P2^2;
44 sbit K4=P2^3;
45 /********************************************************************
46 24C08 读写驱动程序
47 *********************************************************************/
48 sbit scl=P3^6; // 24c08 SCL
49 sbit sda=P3^7; // 24c08 SDA
50
51 void delay1(uchar x)
52 {
53 1 uint i;
54 1 for(i=0;i<x;i++);
55 1 ;
C51 COMPILER V8.05a CHENGXU 11/11/2010 12:12:55 PAGE 2
56 1 }
57 void flash(){ ; ; }
58 void x24c08_init() //24c08 初始化子程序
59 {
60 1 scl=1;
61 1 flash();
62 1 sda=1;
63 1 flash();
64 1 }
65 void start() //启动(I方C)总线
66 {
67 1 sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();
68 1 }
69 void stop() //停止(I方C)总线
70 {
71 1 sda=0; flash(); scl=1; flash(); sda=1; flash();
72 1 }
73 void writex(uchar j) //写一个字节
74 {
75 1 uchar i,temp;
76 1 temp=j;
77 1 for (i=0;i<8;i++)
78 1 {
79 2 temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
80 2 }
81 1 scl=0; flash(); sda=1; flash();
82 1 }
83 uchar readx() //读一个字节
84 {
85 1 uchar i,j,k=0;
86 1 scl=0; flash(); sda=1;
87 1 for (i=0;i<8;i++)
88 1 {
89 2 flash(); scl=1; flash();
90 2 if (sda==1) j=1;
91 2 else j=0;
92 2 k=(k<<1)|j;
93 2 scl=0;}
94 1 flash(); return(k);
95 1 }
96 void clock() //(I方C)线时钟
97 {
98 1 unsigned char i=0;
99 1 scl=1; flash();
100 1 while ((sda==1)&&(i<255))i++;
101 1 scl=0; flash();
102 1 }
103 /********************************************************************
104 从24c08 的地址address 中读取一个字节数据
105 *********************************************************************/
106 unsigned char x24c08_read(unsigned char address)
107 {
108 1 unsigned char i;
109 1 start(); writex(0xa0);
110 1 clock(); writex(address);
111 1 clock(); start();
112 1 writex(0xa1); clock();
113 1 i=readx(); stop();
114 1 delay1(10);
115 1 return(i);
116 1 }
117 /********************************************************************
C51 COMPILER V8.05a CHENGXU 11/11/2010 12:12:55 PAGE 3
118 向24c08 的address地址中写入一字节数据
119 *********************************************************************/
120 void x24c08_write(unsigned char address,unsigned char info)
121 {
122 1 EA=0;
123 1 start(); writex(0xa0);
124 1 clock(); writex(address);
125 1 clock(); writex(info);
126 1 clock(); stop();
127 1 EA=1;
128 1 delay1(50);
129 1 }
130 /********************************************************************
131 延时函数
132 *********************************************************************/
133 void delay(uchar t)
134 {
135 1 uchar i,j;
136 1 for(i=0;i<t;i++)
137 1 {
138 2 for(j=13;j>0;j--);
139 2 { ;
140 3 }
141 2 }
142 1 }
143 /********************************************************************
144 主函数
145 *********************************************************************/
146 void main(void)
147 {
148 1 x24c08_init(); //初始化24C08
149 1 dat=x24c08_read(2);//读出保存的数据赋于dat
150 1 dat=10;//设定操作次数
151 1 while(1)
152 1 {
153 2 if(dat>=1){
154 3 if(IN0==0){delay(100);while(!IN0);P2=0XFE;dat--;write=1;} //当IN0与GND接通后,P2口输出11111110,继电器K8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -