📄 main.lst
字号:
C51 COMPILER V6.23a MAIN 04/21/2007 22:23:30 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: e:\mcs51\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************************************
2 程序名称:红外发送(向串行口发送数据,通过红外线管发射出去)
3 硬件接法:TXD通过跳线JP3接到红外发射电路
4 运行效果:复位时发送一次字符串Hello world!
5 *******************************************************************************/
6
7
8 #include <reg51.h>
9 #include <stdio.h>
10
11
12 //定义I/O
13 sbit CarryPin = P1^0;
14
15
16 //T0中断函数,产生38kHz载波信号
17 void T0_ISR() interrupt 1
18 {
19 1 CarryPin = !CarryPin;
20 1 }
21
22
23 //T0初始化
24 void T0_Init()
25 {
26 1 TMOD &= 0xF0; //T0设置在方式2,即8位自动重装定时器(不改变T1的模式)
27 1 TMOD |= 0x02;
28 1 TH0 = TL0 = 0xF4;
29 1 ET0 = 1;
30 1 EA = 1;
31 1 TR0 = 1;
32 1 }
33
34
35 #define MCLK 11059200L
36 #define BAUD_RATE 1200L
37
38
39 void UartInit()
40 {
41 1 //串行口设置:8位UART,允许接收,TI置位
42 1 SCON = 0x52;
43 1 //波特率加倍
44 1 PCON |= 0x80;
45 1 //设置定时器T1为8位自动重装模式
46 1 TMOD &= 0x0F;
47 1 TMOD |= 0x20;
48 1 //设置定时器T1的初值
49 1 TH1 = 256 - ( MCLK / 12 ) / (16 * BAUD_RATE );
50 1 TL1 = TH1;
51 1 //启动定时器T1
52 1 TR1 = 1;
53 1 }
54
55
C51 COMPILER V6.23a MAIN 04/21/2007 22:23:30 PAGE 2
56 //主函数
57 void main()
58 {
59 1 UartInit();
60 1 T0_Init();
61 1 printf("Hello world!\r\n"); //输出字符串
62 1 IE = 0;
63 1 for (;;); //停机(按RST键再次发送)
64 1 }
65
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 63 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -