📄 38k.lst
字号:
C51 COMPILER V6.12 38K 01/01/2003 15:02:43 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 38K
OBJECT MODULE PLACED IN .\38k.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\38k.c DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************
2 38K载波接收程序 T1产生波特率 T0用于精确定时 *
3 数据格式 起始位(9ms 高 4.5ms 低)+8位数据 *
4 (0.560ms 高 0.565 低:0 1.685ms 高 0.565ms 低:1) *
5 write by wisdom 2008-8 *
6 *******************************************************/
7 #include <AT89X51.h>
8
9 #define IR_IN P3_4
10 unsigned char IR_Data;
11
12 //#define _MHz_ 11.0592
13
14
15 void Init_INT0(void)
16 {
17 1 IT0=1; //INT0为负边沿触发, (1:负边沿触发,0:低电平触发)
18 1 EX0=1; //外部中断INT0开, (1:开, 0:关 )
19 1 EA=1; //开所有中断
20 1 }
21
22
23 //T0 精确定时 T1产生波特率 初始化串口
24 void Init_Timer(void)
25 {
26 1 TMOD=0x21; //T0 mode 1 T1 mode 2
27 1 SCON=0x50; //mode 1 8位 允许接受
28 1 PCON|=0x80; //smod=1 波特率=2^SMOD/32 * fosc/(12*(256-X)
29 1 TH1=250; //256-11.0592/12.0/9600/16*1000000;
30 1 TL1=TH1;
31 1 TR1=1;
32 1 }
33
34
35 void Delay10ms(void)
36 {
37 1 TH0=220; //(65536-us/12*11.0592)/256;
38 1 TL0=0; //(65536-us/12*11.0592)%256;
39 1 TR0=1;
40 1 while(!TF0);
41 1 TF0=0;
42 1 }
43
44 void Delay0_8ms(void)
45 {
46 1
47 1 }
48
49
50 void main(void)
51 {
52 1 Init_INT0();
53 1 Init_Timer();
54 1 IR_IN=1; //set IR_IN as i
55 1
C51 COMPILER V6.12 38K 01/01/2003 15:02:43 PAGE 2
56 1 while(1)
57 1 {
58 2 TI=0;
59 2 SBUF=IR_Data;
60 2 while(!TI);
61 2 TI=0;
62 2 Delay10ms();
63 2 }
64 1 }
65
66
67 //-----------------------------------------------------------------------
68 //INT0 ISR
69 void INT0_ISR(void) interrupt IE0_VECTOR using 1
70 {
71 1 unsigned char i;
72 1 EA=0;
73 1
74 1 IR_Data=0;
75 1 for(i=0;i<4;i++)
76 1 {
77 2 Delay0_8ms();
78 2 if(IR_IN==1) //0.8ms后位1,不是起始位
79 2 {
80 3 i=5;
81 3 break;
82 3 }
83 2 else if(i==3) //3.2ms后,判断是起始位
84 2 {
85 3 while(IR_IN==1);
86 3 }
87 2 }
88 1 for(i=0;i<8;i++)
89 1 {
90 2 Delay0_8ms();
91 2 IR_Data=IR_Data<<1;
92 2 if(IR_IN==1)
93 2 IR_Data=IR_Data|0x01; //接收1
94 2 else
95 2 IR_Data=IR_Data & 0xFE; //接收0
96 2 }
97 1 EA=1;
98 1 }
99
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 133 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
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 + -