text1.lst
来自「单片机快速入门原程序」· LST 代码 · 共 73 行
LST
73 行
C51 COMPILER V7.50 TEXT1 06/13/2006 00:17:04 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 sbit P10 = 0x90;
5 xdata unsigned char RecBuffer[8]=0;/* 16个字节的环形缓冲区*/
6 unsigned char RecBufferIndex=0;/* 16个字节的环形缓冲区指针*/
7 unsigned char nRxIndex=0;/* 接收单个字符的位指针*/
8 unsigned char nRxBit=0;/* 单个字符数据位采样值*/
9 main()
10 {
11 1 TMOD=0x01; /* 定时器0工作在方式1 */
12 1 EX0=1; /* 外部中断0允许 */
13 1 EA=1; /* 全局中断允许 */
14 1 nRxIndex=0x00;
15 1 while(1);
16 1 }
17
18 void int0() interrupt 0 using 0
19 { EX0=0; /* 外部中断0禁止 */
20 1 TH0=0xFF; /* 写入计数初值到TH0 */
21 1 TL0=0x63; /* 写入计数初值到TL0 */
22 1 /* 1.5T后溢出 */
23 1 TR0=1; /* 定时器0准备开始 */
24 1 TF0=0; /* 定时器0中断标志位清0 */
25 1 ET0=1; /* 定时器0中断允许*/
26 1 }
27
28
29 void Timer0_Overflow() interrupt 1 using 0
30 { nRxBit=P32; /* 对管脚P3.2采样 */
31 1 P10=~P10; /* P10端口电平信号取反 */
32 1 RecBuffer[RecBufferIndex]|=(nRxBit<<nRxIndex);
33 1 TH0=0xFF; /* 写入计数初值到TH0 */
34 1 TL0=0x97; /* 写入计数初值到TL0 */
35 1 /* 1T后溢出 */
36 1 TF0=0; /* 定时器0中断标志位清0 */
37 1 nRxIndex++;
38 1 if(nRxIndex==8)
39 1 {ET0=0; /*关闭定时器0中断*/
40 2 EX0=1; /* 外部中断0允许 */
41 2 nRxIndex=0; /* 接收下一个数据的D0位 */
42 2 RecBufferIndex++;
43 2 if(RecBufferIndex==8)
44 2 RecBufferIndex =0;/* 环形缓冲区存满后从头存放 */
45 2 }
46 1 }
47
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 115 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 8 ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
C51 COMPILER V7.50 TEXT1 06/13/2006 00:17:04 PAGE 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?