📄 text1.lst
字号:
C51 COMPILER V7.50 TEXT1 05/24/2006 10:37:00 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include<stdio.h>
3 sbit P32 = 0xB2;
4 xdata unsigned char RecBuffer[8]=0;/* 16个字节的环形缓冲区*/
5 unsigned char RecBufferIndex=0;/* 16个字节的环形缓冲区指针*/
6 unsigned char nRxIndex=0;/* 接收单个字符的位指针*/
7 unsigned char nRxBit=0;/* 单个字符数据位采样值*/
8 main()
9 {
10 1 TMOD=0x01; /* 定时器0工作在方式1 */
11 1 EX0=1; /* 外部中断0允许 */
12 1 EA=1; /* 全局中断允许 */
13 1 nRxIndex=0x00;
14 1 while(1);
15 1 }
16
17 void Timer0_Overflow() interrupt 1 using 0
18 { nRxBit=P32; /* 对管脚P3.2采样 */
19 1 RecBuffer[RecBufferIndex]|=(nRxBit<<nRxIndex);
20 1 TH0=0xFF; /* 写入计数初值到TH0 */
21 1 TL0=0x97; /* 写入计数初值到TL0 */
22 1 /* 1T后溢出 */
23 1 TF0=0; /* 定时器0中断标志位清0 */
24 1 nRxIndex++;
25 1 if(nRxIndex==8)
26 1 {ET0=0; /*关闭定时器0中断*/
27 2 EX0=1; /* 外部中断0允许 */
28 2 nRxIndex=0; /* 接收下一个数据的D0位 */
29 2 RecBufferIndex++;
30 2 if(RecBufferIndex==8)
31 2 RecBufferIndex =0;/* 环形缓冲区存满后从头存放 */
32 2 }
33 1
34 1 }
35
36 void int0() interrupt 0 using 0
37 { EX0=0; /* 外部中断0禁止 */
38 1 TH0=0xFF; /* 写入计数初值到TH0 */
39 1 TL0=0x63; /* 写入计数初值到TL0 */
40 1 /* 1.5T后溢出 */
41 1 TR0=1; /* 定时器0准备开始 */
42 1 TF0=0; /* 定时器0中断标志位清0 */
43 1 ET0=1; /* 定时器0中断允许*/
44 1
45 1 }
46
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 113 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 8 ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
IDATA SIZE = ---- ----
C51 COMPILER V7.50 TEXT1 05/24/2006 10:37:00 PAGE 2
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 + -