?? 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 + -