📄 carrier.lst
字号:
C51 COMPILER V8.16 CARRIER 02/17/2009 20:15:18 PAGE 1
C51 COMPILER V8.16, COMPILATION OF MODULE CARRIER
OBJECT MODULE PLACED IN .\bin\Carrier.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE src\Carrier.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND PRINT(.\
-bin\Carrier.lst) OBJECT(.\bin\Carrier.obj)
line level source
1 #include<reg51.h>
2 #include"inc/define.h"
3 #include"inc/config.h"
4 #include"inc/carrier.h"
5
6
7 static u8 tmr_sel;
8
9 u8 SerialData[SerialLen];
10 u8 SerialPos = 0;
11
12 u8 freq_h,freq_l;
13
14 /******************************************************
15 *说明:对用于产生串行数据流的定时器进行初始化
16 *函数名称:carrier_init
17 *参数:
18 *tmr:指定用于产生PWM的定时器 0:定时器0 其他:定时器1
19 *baud:脉冲频率
20 *返回值:
21 *其他:
22 *********************************************************/
23 void carrier_init(u8 tmr,u16 baud)
24 {
25 1 freq_h = (u32)(65536 - (F_CPU/baud))/256;
26 1 freq_l = (u32)(65536 - (F_CPU/baud))%256;
27 1
28 1 if(1==tmr || 0==tmr)
29 1 tmr_sel = tmr;
30 1 else
31 1 tmr_sel = 1;
32 1 if(1 == tmr_sel)
33 1 {
34 2 TMOD &= 0x0F;
35 2 TMOD |= 0x10; /* 定时器1方式1:16位手动装载模式 */
36 2
37 2 TH1 = freq_h;
38 2 TL1 = freq_l;
39 2
40 2
41 2 EA = 1; /* 开启全局中断 */
42 2 ET1 = 1; /* 开启定时器1中断 */
43 2 TR1 = 1; /* 启动定时器1 */
44 2 }
45 1 else /* 0 == tmr_sel */
46 1 {
47 2 TMOD &= 0xF0;
48 2 TMOD |= 0x01; /* 定时器0方式1:16位手动装载模式 */
49 2
50 2 TH0 = freq_h;
51 2 TL0 = freq_l;
52 2
53 2 EA = 1; /* 开启全局中断 */
54 2 ET0 = 1; /* 开启定时器0中断 */
C51 COMPILER V8.16 CARRIER 02/17/2009 20:15:18 PAGE 2
55 2 TR0 = 1; /* 启动定时器0 */
56 2 }
57 1 }
58
59
60 /*****************************************************
61 *说明:使用定时器0产生串行数据载波时起作用
62 *函数名称:Timer0_ISR
63 *参数:
64 *返回值:
65 *其他:
66 *******************************************************/
67 void Timer0_ISR(void) interrupt 1
68 {
69 1 TH0 = freq_h;
70 1 TL0 = freq_l;
71 1
72 1 if(SerialPos < (SerialLen * 8))
73 1 SerialPos++;
74 1 else
75 1 SerialPos = 0;
76 1 CarrierPort = ((SerialData[SerialPos/8] & (1 << (SerialPos%8))) << CarrierPIN );
77 1 }
78
79 /*****************************************************
80 *说明:使用定时器1产生PWM时起作用
81 *函数名称:Timer1_ISR
82 *参数:
83 *返回值:
84 *其他:
85 *******************************************************
86 void Timer1_ISR(void) interrupt 3
87 {
88 TH1 = freq_h;
89 TL1 = freq_l;
90
91 if(SerialPos < (SerialLen * 8))
92 SerialPos++;
93 else
94 SerialPos = 0;
95 CarrierPort = ((SerialData[SerialPos/8] & (1 << (SerialPos%8))) << CarrierPIN );
96
97 }
98 *******************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 232 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 3
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 + -