📄 irc_tran.lst
字号:
C51 COMPILER V7.06 IRC_TRAN 07/01/2005 06:08:19 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE IRC_TRAN
OBJECT MODULE PLACED IN Irc_tran.OBJ
COMPILER INVOKED BY: G:\开发工具\Keil\C51\BIN\C51.EXE Irc_tran.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**********************************Copyright (c)*********************************
2 ;** 西南科技大学计算机学院
3 ;** http://cs.swust.edu.cn
4 ;**
5 ;** 日期: 2005.5.10
6 ;** 描述: 红外数据通信实验,本程序也通过调试,仅供参考。
7 ;** 实验内容: 利用红外线传输数据
8 ;** 适用机型: AT89S52
9 *********************************************************************************/
10 #include <at89x52.h> //定义芯片特殊功能寄存器的头文件
11 #define uchar unsigned char
12 uchar Send_data[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
13 ,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
14 uchar count=0x00; //计时变量
15 uchar ptr=0x00; //取数指针
16 uchar Receive_data; //接收到的数据
17 /*******************************************************
18 名称: 初始化运行环境
19 功能: 初始化各寄存器与端口状态
20 设置串口工作方式,波特率 3138
21 参数: 无
22 返回值:无
23 *******************************************************/
24 void DeviceInit(void)
25 {
26 1 TL0=0xC0; //置定时器处置,设置中断时间为20ms
27 1 TH0=0x63;
28 1 TMOD=0x01; //设定定时器/计数器0工作方式为1
29 1 IE=0x92; //允许全局中断,允许定时器/计数器0溢出中断,允许串口接收终端
30 1 T2CON = 0x39; //设置定时器2的工作模式为波特率发生器方式,
31 1 RCAP2H = 0xFF; //设置波特率为3138Hz
32 1 RCAP2L = 0x11;
33 1 SCON = 0x50; //设置串口工作方式为方式1
34 1 TR2 = 0x01; //启动定时器2*/
35 1 TR0=0x01; //启动定时器/计数器0
36 1 P1=0xFE;
37 1 }
38 /*******************************************************
39 名称: 发送模块
40 功能: 利用串口发送1个字符
41 参数: 无
42 返回值:无
43 *******************************************************/
44 void SendChar(uchar dat)
45 {
46 1 SBUF=dat; //发送数据送发送缓冲区
47 1 while(TI==0); //等待发送完成
48 1 TI=0; //置发送完成标志
49 1 }
50 /*******************************************************
51 名称: 接收中断模块
52 功能: 将接收到的数据保送数码管显示
53 参数: 无
54 返回值:无
55 *******************************************************/
C51 COMPILER V7.06 IRC_TRAN 07/01/2005 06:08:19 PAGE 2
56 void Receive (void) interrupt 4
57 {
58 1 if(RI) //当接收终端标志设立时,开始读取接收到的数据
59 1 {
60 2 RI = 0; //清除接收终端标志
61 2 Receive_data=SBUF; //将接收到的数据送缓冲区保存
62 2 P0=Receive_data; //显示接收到的数据
63 2 }
64 1 }
65 /*******************************************************
66 名称: 定时器中断模块
67 功能: 每隔一秒发送一个数据
68 参数: 无
69 返回值:无
70 *******************************************************/
71 void Timer0Over(void) interrupt 1
72 {
73 1 count++;
74 1 if(count==0x32) //每隔相同时间发送一个数据
75 1 {
76 2 if(ptr<=15)
77 2 {
78 3 SendChar(Send_data[ptr]);
79 3 ptr++;
80 3 }
81 2 else
82 2 {
83 3 SendChar(Send_data[0]);
84 3 ptr=0x01;
85 3 }
86 2 count=0x00; //计时清零
87 2 }
88 1 TL0=0xC0; //中断时间20ms
89 1 TH0=0x63;
90 1 }
91 /*******************************************************
92 名称: 主函数
93 功能: 应用程序入口
94 参数: 无
95 返回值:无
96 *******************************************************/
97 void main()
98 {
99 1 DeviceInit(); //初始化定时器0与串口
100 1 while(1);
101 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 122 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 19 ----
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 + -