📄 send.lst
字号:
C51 COMPILER V7.09 SEND 12/02/2004 18:29:10 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE SEND
OBJECT MODULE PLACED IN send.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE send.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************/
2 // send.c
3 // 遥控发射器
4 // LRM 2004.10.22
5 /*********************************************************************/
6 //使用AT89C52单片机,12MHZ晶振,
7 //
8 //#pragma src(E:\remote.asm)
9 #include "reg51.h"
10 #include "intrins.h" //_nop_();延时函数用
11 //
12 #define char unsigned char
13 #define int unsigned int
14 #define key0 P0 //键列线
15 #define key1 P1 //键行线
16 //
17 sbit remoteout=P3^5; // 遥控输出口
18 //
19 //
20 int i,j,m,n,k,s;
21 char keyvol; //键值存放
22 char code keyv[8]={1,2,4,8,16,32,64,128};
23 //
24 ////
25 /*********1毫秒延时程序**********/
26 delay1ms(int t)
27 {
28 1 for(i=0;i<t;i++)
29 1 for(j=0;j<120;j++)
30 1 ;
31 1 }
32 //
33 //
34 /***********初始化函数**********/
35 clearmen()
36 {
37 1 remoteout=0; //关遥控输出
38 1 IE=0x00;
39 1 IP=0x01;
40 1 TMOD=0x22; //8位自动重装模式
41 1 TH1=0xf3; //40KHZ初值
42 1 TL1=0xf3;
43 1 EA=1; //开总中断
44 1 }
45 //
46 //
47
48 //
49 /**********发射函数************/
50 sed()
51 {
52 1 ET1=1;TR1=1;delay1ms(3);ET1=0;TR1=0;remoteout=0;//40KHZ发3毫秒
53 1 for(m=keyvol;m>0;m--)
54 1 {
55 2 delay1ms(1); //停1毫秒
C51 COMPILER V7.09 SEND 12/02/2004 18:29:10 PAGE 2
56 2 ET1=1;TR1=1;delay1ms(1);ET1=0;TR1=0;remoteout=0;//40KHZ发1毫秒
57 2 }
58 1 delay1ms(10);
59 1 }
60 //
61 tx()
62 {
63 1 switch(keyvol)
64 1 {
65 2 case 0:keyvol=keyvol+1;sed();break;
66 2 case 1:keyvol=keyvol+1;sed();break;
67 2 case 2:keyvol=keyvol+1;sed();break;
68 2 case 3:keyvol=keyvol+1;sed();break;
69 2 case 4:keyvol=keyvol+1;sed();break;
70 2 case 5:keyvol=keyvol+1;sed();break;
71 2 case 6:keyvol=keyvol+1;sed();break;
72 2 case 7:keyvol=keyvol+1;sed();break;
73 2 case 8:keyvol=keyvol+1;sed();break;
74 2 case 9:keyvol=keyvol+1;sed();break;
75 2 case 10:keyvol=keyvol+1;sed();break;
76 2 case 11:keyvol=keyvol+1;sed();break;
77 2 case 12:keyvol=keyvol+1;sed();break;
78 2 case 13:keyvol=keyvol+1;sed();break;
79 2 case 14:keyvol=keyvol+1;sed();break;
80 2 case 15:keyvol=keyvol+1;sed();break;
81 2 default:break;
82 2 }
83 1 }
84 //
85 //
86 /**********键功能函数************/
87 keywork()
88 {
89 1 keyvol=0x00;key1=0xf0;if(key0!=0xff)
90 1 {delay1ms(20);if(key0!=0xff)
91 2 {while(key0!=0xff);
92 3 key1=0xfe;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i;tx();}} }
93 3 else{key1=0xfd;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i+8;tx();}} }}
94 3 // key1=0xfb;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i+16;tx();}} }
95 3 // key1=0xf7;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i+24;tx();}} }
96 3 }
97 2 }
98 1 }
99 //
100 //
101 /***********主函数***************/
102 main()
103 {
104 1 clearmen(); //初始化
105 1 while(1)
106 1 {
107 2 keywork(); //按键扫描
108 2 }
109 1 }
110 //
111 //
112 /*********40KHZ发生器***********/
113 //定时中断T1
114 void time_intt1(void) interrupt 3
115 {
116 1 remoteout=~remoteout;
117 1 }
C51 COMPILER V7.09 SEND 12/02/2004 18:29:10 PAGE 3
118 //
119 //
120 //*********************结束**************************//
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 346 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -