📄 uart0.lst
字号:
C51 COMPILER V7.50 UART0 03/24/2008 11:06:16 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE UART0
OBJECT MODULE PLACED IN uart0.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE uart0.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //UART0.c
2 //uart0 相关程序
3
4 #include "mytype.h"
5 #include "config.h"
6 #include<ds89c4xx.h>
7
8 //extern uint8 xdata *pt;
9 //uint8 sending;
10 uint8 code HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
11
12 void UartInit0(void) //8位数据位,1位停止位,无校验,波特率uartbuadrate
13 {
14 1 //EA = 0;
15 1 TMOD &= 0x0F;
16 1 TMOD |= 0x20; //定时器1工作在模式2
17 1 SCON0 = 0x50; //串口工作在方式1
18 1 PCON |= 0x80; //smod = 1;
19 1 TH1 = 256 - ((fosc/12)/16)/uart0baudrate; //根据波特率计算定时器初值
20 1 TL1 = 256 - ((fosc/12)/16)/uart0baudrate;
21 1 ES0=0; //串行中断允许=0
22 1 TR1=1; //启动定时器1
23 1 TI_0 = 0; //
24 1 RI_0 = 0;
25 1 REN_0=1; //允许接收
26 1 //IP1 = 0x50;
27 1 //IP0 = 0x40; //PORT1优先级3,PORT0优先级2
28 1 //EA=1; //允许中断
29 1 }
30
31 void PutChar0(uint8 send) //发送一个字节的数据
32 {
33 1 SBUF0 = send;
34 1 while(0 == TI_0) ;
35 1 TI_0 = 0; //TI_0 = 1,发送完成,再清0
36 1 }
37
38 void PutString0(uint8 *psend, uint8 idata length) //发送字符串,以字符串长度或'\0'结束
39 {
40 1 while(length--)
41 1 {
42 2 PutChar0(*psend);
43 2 psend++;
44 2 if(*psend == '\0')
45 2 return;
46 2 }
47 1 }
48
49 void PutUint320(uint32 idata send,uint8 idata shuzhi) //将32位的无符号数通过UART发送
50 {
51 1 uint8 idata buffer[10];
52 1 int8 idata i;
53 1 for(i=9;i>=0;i--)
54 1 {
55 2 buffer[i] = send%shuzhi + '0'; //转换成ASCII码
C51 COMPILER V7.50 UART0 03/24/2008 11:06:16 PAGE 2
56 2 send = send/shuzhi;
57 2 }
58 1 for(i=0;i<=9;i++)
59 1 {
60 2 if(buffer[i] != '0')
61 2 break;
62 2 }
63 1 if(10 == i)
64 1 i = 9; //如果传入为0,则至少显示一个0
65 1 for( ;i<=9;i++)
66 1 {
67 2 PutChar0(buffer[i]);
68 2 }
69 1 }
70
71 void PutHex0(uint8 idata send) //将8位无符号数转换成16进制后发送
72 {
73 1 PutChar0('0');
74 1 PutChar0('x');
75 1 PutChar0(HexTable[(send >> 4)]);
76 1 PutChar0(HexTable[(send & 0x0f)]);
77 1 PutChar0(' ');
78 1 }
79
80 /*void PutHex16bit0(uint16 send)
81 {
82 PutChar0('0');
83 PutChar0('x');
84 PutChar0(HexTable[(send >> 12)]);
85 PutChar0(HexTable[((send >> 8) & 0x0f)]);
86 PutChar0(HexTable[((uint8)send) >> 4]);
87 PutChar0(HexTable[(uint8)send & 0x0f]);
88 PutChar0(' ');
89 } */
90
91 void NextLine0(void) //换行
92 {
93 1 PutChar0(0x0d);
94 1 PutChar0(0x0a);
95 1 }
96
97 void UART0_ISR(void) interrupt 4 //uart 中断程序
98 {
99 1 //uint8 temp;
100 1 if(RI_0 == 1) //收到数据
101 1 {
102 2 RI_0 = 0; //清中断请求
103 2 //temp = SBUF0;
104 2 }
105 1 else //发送完一字节数据
106 1 {
107 2 TI_0 = 0;
108 2 //sending = 0; //清发送标志
109 2 }
110 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 266 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V7.50 UART0 03/24/2008 11:06:16 PAGE 3
DATA SIZE = ---- 5
IDATA SIZE = ---- 11
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 + -