📄 serial.lst
字号:
C51 COMPILER V7.50 SERIAL 10/20/2006 13:56:20 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: D:\Keil51\keil\C51\BIN\C51.EXE serial.c OPTIMIZE(1,SPEED) BROWSE ORDER DEBUG OBJECTEXTEND CODE
line level source
1 /*
2 extern char getbyte(void);//从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
3 extern putbyte(char c);//放入一个字节到发送缓冲区
4 extern putstring(uchar *puts);//发送一个字符串到串口
5 extern puthex(uchar c);//发送一个字节的hex码,分成两个字节发。
6 extern bit inbufsign;
7 #define CR putstring("\r\n")//发送一个回车换行
8 extern void serial_init (void);
9 extern putint(uint n);
10 */
11
12 //*************************************************************************
13 #include "W77E516.H"
14 #define uchar unsigned char
15 #define uint unsigned int
16
17 //#define ILEN 16 //32 //设置串口中断接收缓冲区大小
18 //idata uchar inbuf[ILEN];
19 //data uchar idata *inlast=inbuf; //最后由中断进入接收缓冲区的字节位置
20 //data uchar idata *getlast=inbuf; //最后取走的字节位置
21 //bit inbufsign; //接收缓冲区非空标志 有=1
22 //bit inbufful; //输入缓冲区满标志 满=1
23 #define CR putstring("\r\n") //CR=回车换行
24
25 //*************************************
26 //从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
27 uchar getbyte (void)
28 {
29 1 while(!RI)P34=~P34;
30 1 P34=~P34;
31 1 RI=0;
32 1 return (SBUF); //取回数据
33 1 }
34
35 //**********************************
36
37
38 //放入一个字节到发送缓冲区
39 putbyte(unsigned char c)
40 {
41 1 SBUF=c;
42 1 while(!TI)P34=~P34;
43 1 P34=~P34;
44 1 TI=0;
45 1 }
46
47 //***************************************
48 //发送一个定义在程序存储区的字符串到串口
49 putstring(uchar *puts)
50 {
51 1 for(;*puts!=0;puts++) //遇到停止符0结束
52 1 putbyte(*puts);
53 1 }
54
55 //*******************************************
C51 COMPILER V7.50 SERIAL 10/20/2006 13:56:20 PAGE 2
56 uchar reputstring(uchar *puts)
57 {
58 1 uchar i;
59 1 i=0;
60 1 do{
61 2 for(;*(puts+i)!=0;i++) //遇到停止符0结束
62 2 putbyte(*(puts+i));
63 2 i=0;
64 2 }while(!RI);
65 1 RI=0;
66 1 return SBUF;
67 1 }
68
69 //*************************************
70 //发送一个字节的hex码,分成两个字节发。
71 uchar code hex_[]={"0123456789ABCDEF"};
72 puthex(unsigned char c)
73 {
74 1 int ch;
75 1 ch=(c>>4)&0x0f;
76 1 putbyte(hex_[ch]);
77 1 ch=c&0x0f;
78 1 putbyte(hex_[ch]);
79 1 }
80
81 //*****************************
82 //串口初始化 0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200 110592
83 void serial_init (void)
84 {
85 1 //用t1作波特
86 1 TR1 = 0;
87 1 SCON0 = 0x50; // mode 1: 8-bit UART, enable receiver
88 1 TMOD |= 0x21; // timer 1 mode 2: 8-Bit reload th0 1X16
89 1 PCON |= 0x80;
90 1 TH1 = 0xfa;//fd, //baud*2 /* reload value 19200 baud
91 1 TR1 = 1; // timer 1 run
92 1
93 1 // 0xf9=19200 0xf3=9600 0xe6=4800 0xcc=2400
94 1 /* //用t2作波特率
95 1
96 1 T2CON=0x30;
97 1 RCAP2H=0xFF;
98 1 RCAP2L=0xb8;//70=4800,b8=9600,dc=19200,ee=38400,f4=57600,fa=115200
99 1 TR2=1;ET2=1;
100 1 SCON0=0x50;//SCON0=0xd0;
101 1
102 1 */
103 1 //ES = 1;
104 1 REN=1;
105 1 //EA=1;
106 1 SM2=1; //SM2=1时收到的第9位为1才置位RI标志
107 1
108 1 }
109
C51 COMPILER V7.50 SERIAL 10/20/2006 13:56:20 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION getbyte (BEGIN)
; SOURCE LINE # 27
; SOURCE LINE # 28
0000 ?C0001:
; SOURCE LINE # 29
0000 209804 JB RI,?C0002
0003 B2B4 CPL P34
0005 80F9 SJMP ?C0001
0007 ?C0002:
; SOURCE LINE # 30
0007 B2B4 CPL P34
; SOURCE LINE # 31
0009 C298 CLR RI
; SOURCE LINE # 32
000B AF99 MOV R7,SBUF
; SOURCE LINE # 33
000D ?C0003:
000D 22 RET
; FUNCTION getbyte (END)
; FUNCTION _putbyte (BEGIN)
; SOURCE LINE # 39
0000 8F00 R MOV c,R7
; SOURCE LINE # 40
; SOURCE LINE # 41
0002 850099 R MOV SBUF,c
0005 ?C0004:
; SOURCE LINE # 42
0005 209904 JB TI,?C0005
0008 B2B4 CPL P34
000A 80F9 SJMP ?C0004
000C ?C0005:
; SOURCE LINE # 43
000C B2B4 CPL P34
; SOURCE LINE # 44
000E C299 CLR TI
; SOURCE LINE # 45
0010 22 RET
; FUNCTION _putbyte (END)
; FUNCTION _putstring (BEGIN)
; SOURCE LINE # 49
0000 8B00 R MOV puts,R3
0002 8A00 R MOV puts+01H,R2
0004 8900 R MOV puts+02H,R1
; SOURCE LINE # 50
; SOURCE LINE # 51
0006 ?C0007:
0006 AB00 R MOV R3,puts
0008 AA00 R MOV R2,puts+01H
000A A900 R MOV R1,puts+02H
000C 120000 E LCALL ?C?CLDPTR
000F FF MOV R7,A
0010 EF MOV A,R7
0011 601A JZ ?C0010
; SOURCE LINE # 52
0013 AB00 R MOV R3,puts
0015 AA00 R MOV R2,puts+01H
0017 A900 R MOV R1,puts+02H
C51 COMPILER V7.50 SERIAL 10/20/2006 13:56:20 PAGE 4
0019 120000 E LCALL ?C?CLDPTR
001C FF MOV R7,A
001D 120000 R LCALL _putbyte
0020 7401 MOV A,#01H
0022 2500 R ADD A,puts+02H
0024 F500 R MOV puts+02H,A
0026 E4 CLR A
0027 3500 R ADDC A,puts+01H
0029 F500 R MOV puts+01H,A
002B 80D9 SJMP ?C0007
; SOURCE LINE # 53
002D ?C0010:
002D 22 RET
; FUNCTION _putstring (END)
; FUNCTION _reputstring (BEGIN)
; SOURCE LINE # 56
0000 8B00 R MOV puts,R3
0002 8A00 R MOV puts+01H,R2
0004 8900 R MOV puts+02H,R1
; SOURCE LINE # 57
; SOURCE LINE # 59
0006 750000 R MOV i,#00H
; SOURCE LINE # 60
; SOURCE LINE # 61
0009 ?C0014:
0009 AB00 R MOV R3,puts
000B AA00 R MOV R2,puts+01H
000D A900 R MOV R1,puts+02H
000F AF00 R MOV R7,i
0011 8F82 MOV DPL,R7
0013 758300 MOV DPH,#00H
0016 120000 E LCALL ?C?CLDOPTR
0019 FF MOV R7,A
001A EF MOV A,R7
001B 6018 JZ ?C0015
; SOURCE LINE # 62
001D AB00 R MOV R3,puts
001F AA00 R MOV R2,puts+01H
0021 A900 R MOV R1,puts+02H
0023 AF00 R MOV R7,i
0025 8F82 MOV DPL,R7
0027 758300 MOV DPH,#00H
002A 120000 E LCALL ?C?CLDOPTR
002D FF MOV R7,A
002E 120000 R LCALL _putbyte
0031 0500 R INC i
0033 80D4 SJMP ?C0014
0035 ?C0015:
; SOURCE LINE # 63
0035 750000 R MOV i,#00H
; SOURCE LINE # 64
0038 3098CE JNB RI,?C0014
; SOURCE LINE # 65
003B C298 CLR RI
; SOURCE LINE # 66
003D AF99 MOV R7,SBUF
; SOURCE LINE # 67
003F ?C0017:
003F 22 RET
; FUNCTION _reputstring (END)
C51 COMPILER V7.50 SERIAL 10/20/2006 13:56:20 PAGE 5
; FUNCTION _puthex (BEGIN)
; SOURCE LINE # 72
0000 8F00 R MOV c,R7
; SOURCE LINE # 73
; SOURCE LINE # 75
0002 E500 R MOV A,c
0004 C4 SWAP A
0005 540F ANL A,#0FH
0007 FF MOV R7,A
0008 7E00 MOV R6,#00H
000A 750000 R MOV ch,#00H
000D EF MOV A,R7
000E 540F ANL A,#0FH
0010 F500 R MOV ch+01H,A
; SOURCE LINE # 76
0012 AE00 R MOV R6,ch
0014 AF00 R MOV R7,ch+01H
0016 7400 R MOV A,#LOW hex_
0018 2F ADD A,R7
0019 F582 MOV DPL,A
001B 7400 R MOV A,#HIGH hex_
001D 3E ADDC A,R6
001E F583 MOV DPH,A
0020 E4 CLR A
0021 93 MOVC A,@A+DPTR
0022 FF MOV R7,A
0023 120000 R LCALL _putbyte
; SOURCE LINE # 77
0026 E500 R MOV A,c
0028 540F ANL A,#0FH
002A FF MOV R7,A
002B 7E00 MOV R6,#00H
002D 8E00 R MOV ch,R6
002F 8F00 R MOV ch+01H,R7
; SOURCE LINE # 78
0031 AE00 R MOV R6,ch
0033 AF00 R MOV R7,ch+01H
0035 7400 R MOV A,#LOW hex_
0037 2F ADD A,R7
0038 F582 MOV DPL,A
003A 7400 R MOV A,#HIGH hex_
003C 3E ADDC A,R6
003D F583 MOV DPH,A
003F E4 CLR A
0040 93 MOVC A,@A+DPTR
0041 FF MOV R7,A
0042 120000 R LCALL _putbyte
; SOURCE LINE # 79
0045 22 RET
; FUNCTION _puthex (END)
; FUNCTION serial_init (BEGIN)
; SOURCE LINE # 83
; SOURCE LINE # 84
; SOURCE LINE # 86
0000 C28E CLR TR1
; SOURCE LINE # 87
0002 759850 MOV SCON0,#050H
; SOURCE LINE # 88
0005 438921 ORL TMOD,#021H
; SOURCE LINE # 89
0008 438780 ORL PCON,#080H
C51 COMPILER V7.50 SERIAL 10/20/2006 13:56:20 PAGE 6
; SOURCE LINE # 90
000B 758DFA MOV TH1,#0FAH
; SOURCE LINE # 91
000E D28E SETB TR1
; SOURCE LINE # 104
0010 D29C SETB REN
; SOURCE LINE # 106
0012 D29D SETB SM2
; SOURCE LINE # 108
0014 22 RET
; FUNCTION serial_init (END)
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 232 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
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 + -