?? contrler.lst
字號:
C51 COMPILER V7.07 CONTRLER 07/08/2005 10:08:22 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE CONTRLER
OBJECT MODULE PLACED IN contrler.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE contrler.c INTVECTOR(0X8000) DEBUG OBJECTEXTEND LISTINCLUDE
stmt level source
1 //File name: contrler.c
2 //Founded by Wang Feng on Oct 19,2004
3 //Last modified on Oct 25,2004
4
5 #include "I2C.h"
1 =1 #include "ctrler.h" /*特殊功能寄存器聲明頭文件*/
1 =2 //File name: contrler.h
2 =2 //Founded by Wang Feng,Oct.18,2004
3 =2 //Last modified on Oct.18,2004
4 =2
5 =2 #include <reg51.h>
1 =3 /*--------------------------------------------------------------------------
2 =3 REG51.H
3 =3
4 =3 Header file for generic 80C51 and 80C31 microcontroller.
5 =3 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =3 All rights reserved.
7 =3 --------------------------------------------------------------------------*/
8 =3
9 =3 #ifndef __REG51_H__
10 =3 #define __REG51_H__
11 =3
12 =3 /* BYTE Register */
13 =3 sfr P0 = 0x80;
14 =3 sfr P1 = 0x90;
15 =3 sfr P2 = 0xA0;
16 =3 sfr P3 = 0xB0;
17 =3 sfr PSW = 0xD0;
18 =3 sfr ACC = 0xE0;
19 =3 sfr B = 0xF0;
20 =3 sfr SP = 0x81;
21 =3 sfr DPL = 0x82;
22 =3 sfr DPH = 0x83;
23 =3 sfr PCON = 0x87;
24 =3 sfr TCON = 0x88;
25 =3 sfr TMOD = 0x89;
26 =3 sfr TL0 = 0x8A;
27 =3 sfr TL1 = 0x8B;
28 =3 sfr TH0 = 0x8C;
29 =3 sfr TH1 = 0x8D;
30 =3 sfr IE = 0xA8;
31 =3 sfr IP = 0xB8;
32 =3 sfr SCON = 0x98;
33 =3 sfr SBUF = 0x99;
34 =3
35 =3
36 =3 /* BIT Register */
37 =3 /* PSW */
38 =3 sbit CY = 0xD7;
39 =3 sbit AC = 0xD6;
40 =3 sbit F0 = 0xD5;
41 =3 sbit RS1 = 0xD4;
42 =3 sbit RS0 = 0xD3;
43 =3 sbit OV = 0xD2;
44 =3 sbit P = 0xD0;
C51 COMPILER V7.07 CONTRLER 07/08/2005 10:08:22 PAGE 2
45 =3
46 =3 /* TCON */
47 =3 sbit TF1 = 0x8F;
48 =3 sbit TR1 = 0x8E;
49 =3 sbit TF0 = 0x8D;
50 =3 sbit TR0 = 0x8C;
51 =3 sbit IE1 = 0x8B;
52 =3 sbit IT1 = 0x8A;
53 =3 sbit IE0 = 0x89;
54 =3 sbit IT0 = 0x88;
55 =3
56 =3 /* IE */
57 =3 sbit EA = 0xAF;
58 =3 sbit ES = 0xAC;
59 =3 sbit ET1 = 0xAB;
60 =3 sbit EX1 = 0xAA;
61 =3 sbit ET0 = 0xA9;
62 =3 sbit EX0 = 0xA8;
63 =3
64 =3 /* IP */
65 =3 sbit PS = 0xBC;
66 =3 sbit PT1 = 0xBB;
67 =3 sbit PX1 = 0xBA;
68 =3 sbit PT0 = 0xB9;
69 =3 sbit PX0 = 0xB8;
70 =3
71 =3 /* P3 */
72 =3 sbit RD = 0xB7;
73 =3 sbit WR = 0xB6;
74 =3 sbit T1 = 0xB5;
75 =3 sbit T0 = 0xB4;
76 =3 sbit INT1 = 0xB3;
77 =3 sbit INT0 = 0xB2;
78 =3 sbit TXD = 0xB1;
79 =3 sbit RXD = 0xB0;
80 =3
81 =3 /* SCON */
82 =3 sbit SM0 = 0x9F;
83 =3 sbit SM1 = 0x9E;
84 =3 sbit SM2 = 0x9D;
85 =3 sbit REN = 0x9C;
86 =3 sbit TB8 = 0x9B;
87 =3 sbit RB8 = 0x9A;
88 =3 sbit TI = 0x99;
89 =3 sbit RI = 0x98;
90 =3
91 =3 #endif
6 =2
7 =2 #define CrystalFreq12 12 // Defined the Crystal Frequence. 12 means 12 M
8 =2 #ifdef CrystalFreq12
9 =2 #define SYNU 6300 //同步脈沖最大脈寬6.3
10 =2 #define SYNL 5200 //同步脈沖最小脈寬5.7
11 =2 #define BIT1U 3300 //數據1最大脈寬3.3ms
12 =2 #define BIT1L 2200 //數據1最小脈寬2.7
13 =2 #define BIT0U 2300 //數據0最大脈寬2.3ms
14 =2 #define BIT0L 1200 //數據0最小脈寬1.7
15 =2 #define ENDU 4800 //結束脈沖最大脈寬4.8ms
16 =2 #define ENDL 3900 //結束脈沖最小脈寬4.2
17 =2 #elif CrystalFreq6
=2 #define SYNU 3150 //同步脈沖最大脈寬6.3
=2 #define SYNL 2850 //同步脈沖最小脈寬5.7
=2 #define BIT1U 1650 //數據1最大脈寬3.3ms
C51 COMPILER V7.07 CONTRLER 07/08/2005 10:08:22 PAGE 3
=2 #define BIT1L 1350 //數據1最小脈寬2.7
=2 #define BIT0U 1150 //數據0最大脈寬2.3ms
=2 #define BIT0L 850 //數據0最小脈寬1.7
=2 #define ENDU 2400 //結束脈沖最大脈寬4.8ms
=2 #define ENDL 2100 //結束脈沖最小脈寬4.2
=2 #endif
27 =2 #define True 1
28 =2 #define False 0
29 =2 #define ON 1
30 =2 #define OFF 0
2 =1 #include <intrins.h> /*C51庫函數*/
1 =2 /*--------------------------------------------------------------------------
2 =2 INTRINS.H
3 =2
4 =2 Intrinsic functions for C51.
5 =2 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =2 All rights reserved.
7 =2 --------------------------------------------------------------------------*/
8 =2
9 =2 #ifndef __INTRINS_H__
10 =2 #define __INTRINS_H__
11 =2
12 =2 extern void _nop_ (void);
13 =2 extern bit _testbit_ (bit);
14 =2 extern unsigned char _cror_ (unsigned char, unsigned char);
15 =2 extern unsigned int _iror_ (unsigned int, unsigned char);
16 =2 extern unsigned long _lror_ (unsigned long, unsigned char);
17 =2 extern unsigned char _crol_ (unsigned char, unsigned char);
18 =2 extern unsigned int _irol_ (unsigned int, unsigned char);
19 =2 extern unsigned long _lrol_ (unsigned long, unsigned char);
20 =2 extern unsigned char _chkfloat_(float);
21 =2
22 =2 #endif
23 =2
3 =1
4 =1 /*為方便程序書寫,作一些宏定義*/
5 =1 #define uchar unsigned char
6 =1 #define uint unsigned int
7 =1 #define _Nop() _nop_()
8 =1
9 =1 #define I2C0 0 /*總線0識別號*/
10 =1 #define I2C1 1 /*總線1識別號*/
11 =1
12 =1 #define setSDA SETSDA(port)
13 =1 #define clrSDA CLRSDA(port)
14 =1 #define setSCL SETSCL(port)
15 =1 #define clrSCL CLRSCL(port)
16 =1
17 =1 sbit I2C0SDA=P0^5; /*總線0數據線*/
18 =1 sbit I2C0SCL=P0^4; /*總線0時鐘線*/
19 =1
20 =1 sbit I2C1SDA=P0^6; /*總線1數據線*/
21 =1 sbit I2C1SCL=P0^7; /*總線1時鐘線*/
22 =1
23 =1 sbit KeyCopy=P0^0;
24 =1
25 =1 /********************************************************************************************
26 =1 多字節數據寫函數
27 =1 功能: 通過"port"總線,向器件地址為"sla"的E2PROM從子地址"suba"開始寫入"no"個數據,要發送的數據在指鐘"s"所指
-向的地址中。返回值為1表示操作成功。
28 =1 ********************************************************************************************/
29 =1 bit WriteStr(uchar sla, uchar suba, uchar *s, uchar no, uchar port) ;
C51 COMPILER V7.07 CONTRLER 07/08/2005 10:08:22 PAGE 4
30 =1
31 =1 /********************************************************************************************
32 =1 多字節數據讀函數
33 =1 功能: 通過"port"總線,從器件地址為"sla"的E2PROM的子地址"suba"開始讀取"no"個數據,讀取的數據放在指鐘"s"所指
-向的地址中。返回值為1表示操作成功。
34 =1 ********************************************************************************************/
35 =1 bit ReadStr(uchar sla, uchar suba, uchar *s, uchar no, uchar port);
36 =1
37 =1 /********************************************************************************************
38 =1 延時"us"微秒,沒有返回值。
39 =1 ********************************************************************************************/
40 =1 void delay(int us);
41 =1
42 =1 /********************************************************************************************
43 =1 等待"port"總線上,地址為"sla"的器件寫操作結束
44 =1 ********************************************************************************************/
45 =1 bit Wait(uchar sla, uchar port);
6 bit bKeyUP; //Whether the key of contrler is up
7 bit bNewCodeFlag; //If the code just received is a new code
8 bit bNewKey=False; //A key press action occurs or no
9 unsigned char ucSysCode,ucData,ucCnt,ucCount;
10 //The system code,code data,the count of T1 interrupt after received last code,
11 //the count of the pulses
12 unsigned char bdata uc_tmpKeyCode;
13 //Stores the received code temporarily
14 sbit D_0=uc_tmpKeyCode^0;
15 sbit D_1=uc_tmpKeyCode^1;
16 sbit D_2=uc_tmpKeyCode^2;
17 sbit D_3=uc_tmpKeyCode^3;
18 sbit D_4=uc_tmpKeyCode^4;
19 sbit D_5=uc_tmpKeyCode^5;
20 sbit D_6=uc_tmpKeyCode^6;
21 sbit D_7=uc_tmpKeyCode^7;
22 sbit LED1=P1^7;
23 sbit LED2=P1^7;
24
25 void Delay(/*unsigned char*/);
26
27 void LightFlash(unsigned char);
28 /*=====================================================
29 Function name: void main()
30 Funciton:
31 Used to decode the signal carried by the infrared light,
32 and light the LED according to the data code decoded.
33 ---Founded by Wang Feng on Oct 19,2004
34 ---Modified by Wang Feng on Ocr 20,2004
35 =====================================================*/
36 void main()
37 {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -