在Keil上实现的24输入编码功能源代码
源代码在线查看: code.lst
C51 COMPILER V7.50 CODE 10/12/2007 13:06:44 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE CODE
OBJECT MODULE PLACED IN Code.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Code.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************
2 **********************************************************************
3 **项目名称:电磁脉冲振打控制系统(控制板程序)
4 **作 者:周文委 浙江工业大学电子工程系
5 **起始日期:2006年9月15日
6 **结束日期:
7 **********************************************************************
8 **修 改 人:
9 **修改日期:
10 **********************************************************************
11 *********************************************************************/
12 #include
13 //#include
14 #include
15 #include
16 #include
17 /**************************************************************
18 宏定义:
19 **************************************************************/
20 #define uchar unsigned char
21 #define uint unsigned int
22 #define ulong unsigned long
23 #define T 0xc8 //100us计时数
24 #define Device1Address 0xa0
25 #define Device2Address 0xa1
26 #define Tmax 0xffff //振打周期最大值
27 #define Imax 100 //电流最大值待定
28 #define dI 0 //闭环控制允许电流波动范围
29 #define QMax 90 //占空比允许最大值
30 #define QMin 0 //占空比允许最小值
31 #define dtl 27 //tl的修正参数
32 #define START 0xfa //开始分组振打代码
33 //#define START2 0xaf //开始无分组振打代码
34 //#define START3 0xf5 //开始维护手动振打代码
35 //#define START4 0x5f //开始维护自动振打代码
36 #define END 0x99 //结束振打代码
37 #define WError 0x64 //严重短路代码
38 #define WOverI 0x65 //过流代码
39 #define WUnderI 0x66 //欠流代码
40 #define WCOM 0x67 //RS232通信故障代码
41 #define WEEPROM 0x68 //EEPROM通信故障代码
42 #define WPARA 0x69 //EEPROM结果错误代码
43 #define StackOver 0x70 //堆栈溢出代码
44 #define RunError 0x71 //程序跑飞代码
45 #define CONTACT 0xaa //联络信号代码
46 #define CONTACTSUCESS 0x55 //联络成功代码
47 #define CONTACTFAIL 0xcc //联络失败代码
48 #define COMSUCESS 0xa5 //接收成功代码
49 #define COMFAIL 0x5a //接收失败代码
50 #define MaxTeam 10 //设置最大组数
51 #define MaxT 0xffff //设置最大运行周期,防止停打
52 #define StackSize 64 //堆栈大小
53
54 //#define FastWork
55 #define test
C51 COMPILER V7.50 CODE 10/12/2007 13:06:44 PAGE 2
56 //#define test2
57 /*============================================================
58 Variables Definition:
59 ============================================================*/
60 uchar C0,C1,C2;
61 sbit GS0=P1^0;
62 sbit GS1=P1^1;
63 sbit GS2=P3^4;
64 sbit ADC573=P1^2;
65
66 bit First_Bit; //首轮振打标志
67 sbit WarnIndicate=P1^3; //报警指示信号
68
69 sfr WDT_COUNTER=0xe1;
70
71 //=============================================================
72 //主函数里的一些初始化
73 void Main_Init()
74 {
75 1 if(F0) //异常复位报警指示信号有效
76 1 {
77 2 // TR0=0;TR1=0;EA=0; //异常复位,停止所有工作
78 2 WarnIndicate=1;
79 2 }
80 1 else //正常启动不报警
81 1 WarnIndicate=0;
82 1 First_Bit=1;
83 1 //参数初始化
84 1 /* IP = 0xb;//0x8; //优先级:INT0,T0,T1,INT1,COM,T2
85 1 TMOD=0x11; //2个定时器均为方式1,16位定时器
86 1 TH0=0xff;TL0=0xaf;//TH0=0x3c;TL0=0xaf;
87 1 TH1=0xff;TL1=0xff;
88 1 IT0=0; //外部中断0采用电平触发方式
89 1 IT1=1; //外部中断1采用边沿触发方式
90 1 IE=0x1f; //ET0=ET1=EX1=ES=1;T0,T1,INT1,COM中断允许
91 1 SCON = 0x50; //串口方式1,允许接收
92 1 RCAP2H=0xff;RCAP2L=0x64;T2CON=0x34;
93 1 */ WDT_COUNTER=0x33;
94 1
95 1 /* if(F0)
96 1 Error(7);
97 1 */ F0=1;
98 1 P0=0xff;
99 1 }
100 /*********************************************************************
101 **main函数
102 *********************************************************************/
103 void main()
104 {
105 1 //start:
106 1 // uchar i;
107 1 Main_Init(); //一些初始化,中断etc
108 1 // EA=1; //开CPU总中断
109 1 while(1)
110 1 {
111 2 ADC573=0;//i=P0;
112 2 C0=P1;C2=P3;
113 2 C1=(C0>>5)&0x7; C0=(C0>>2)&0x7; C2=(C2>>5)&0x7;
114 2 if(!GS2)
115 2 {
116 3 // C2=(C2>>5)&0x7;
117 3 P0=C2;
C51 COMPILER V7.50 CODE 10/12/2007 13:06:44 PAGE 3
118 3 }
119 2 else if(!GS1)
120 2 {
121 3 // C1=(P1>>5)&0x7;
122 3 P0=8+C1;
123 3 }
124 2 else if(!GS0)
125 2 {
126 3 // C0=(P1>>2)&0x7;
127 3 P0=16+C0;
128 3 }
129 2 else
130 2 {
131 3 P0=0xff;
132 3 }
133 2
134 2 WDT_COUNTER=0x33;
135 2 }
136 1 }
137 /**************************main 函数结束****************************/
138
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 92 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)