📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 10/20/2006 11:28:35 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <stdio.h>
2 #include <absacc.h>
3 #include <intrins.h>
4 #include <./Atmel/at89x52.h>
5 #include "source.h"
6 #define MAX_SBUF 10
7 unsigned char sbuf[MAX_SBUF];//串口缓冲区
8 unsigned char shead=0; //串口缓冲区的存储数据位置
9 unsigned char stail=0; //串口缓冲区的存读数据位置
10 void Enable_Int(unsigned char i);
11 void Disable_Int(unsigned char i);
12 main(void){
13 1 IE=0X40;//禁止所有中断
14 1 EX0=1;//使能外部中断0
15 1 IT0=0;//外部中断0,电平触发。
16 1 EA=1; /* 使能中断 */
17 1 XBYTE[BAUD_HPORT]=BAUD_H;//设置串口波特率分频的高8位
18 1 XBYTE[BAUD_LPORT]=BAUD_L;//设置串口波特率分频的低8位,把波特率设置为19.2Kbps
19 1 Enable_Int(0);//使能扩展串口发送中断
20 1 Enable_Int(1);//使能扩展串口接收中断
21 1 while(1){
22 2 if(stail!=shead){//数据缓冲区不为空
23 3 Enable_Int(0);//打开发送中断
24 3 }
25 2 }
26 1 }
27 void Enable_Int(unsigned char i){//使能扩展中断i
28 1 unsigned char temp;
29 1 temp=XBYTE[INT_ENA]; //读出使能寄存器的状态
30 1 temp |=1<<i;//要对应的要使能比特写1
31 1 XBYTE[INT_ENA]=temp;//把temp值给使能寄存器的
32 1 }
33 void Disable_Int(unsigned char i){//禁止扩展中断i
34 1 unsigned char temp;
35 1 unsigned char mask;
36 1 mask=1<<i;
37 1 mask=~mask; //把要屏幕中断的比特设置0,其他比特为1
38 1 temp=XBYTE[INT_ENA];//读出使能寄存器的状态
39 1 temp &=mask;
40 1 XBYTE[INT_ENA]=temp;//把使能寄存器相应的比特设置为0
41 1 }
42 void int0() interrupt 0 {//C51外部中断0的中断处理函数
43 1 unsigned char stat;
44 1 stat=XBYTE[INT_PEND];//读中断状态
45 1 if(stat&0x01){//扩展串口发送中断
46 2 if(stail!=shead){//发送缓冲区不为空
47 3 XBYTE[SDAT_PORT]=sbuf[stail];//发送接收到的串口数据
48 3 stail++; //把读位置加1
49 3 stail %=MAX_SBUF;
50 3 }
51 2 else{//发送缓冲区为空
52 3 Disable_Int(0);//禁止扩展串口发送中断
53 3 }
54 2 }
55 1 if(stat&0x02){//扩展串口接收中断
C51 COMPILER V7.06 MAIN 10/20/2006 11:28:35 PAGE 2
56 2 sbuf[shead]=XBYTE[SDAT_PORT];//读串口接收数据
57 2 shead ++; //把写位置加1
58 2 shead %=MAX_SBUF;
59 2 }
60 1 }
61
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 201 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 ----
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 + -