main.lst
来自「基于51单片机实现UART通信 SPI通信 和IIC通信」· LST 代码 · 共 146 行
LST
146 行
C51 COMPILER V8.02 MAIN 06/01/2008 12:08:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\ElectronicTools\KeilC51\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <intrins.h>
3 #include <string.h>
4
5 sbit P0_0=P0^0;
6 sbit P0_1=P0^1;
7 sbit P0_2=P0^2;
8 sbit P0_3=P0^3;
9 sbit P0_4=P0^4;
10 sbit P0_5=P0^5;
11 sbit P0_6=P0^6;
12 sbit P0_7=P0^7;
13
14
15 void Delay_Xms(unsigned char x);
16 unsigned char keyscan(void);
17
18
19 sfr SPCR = 0xd5; //SPI控制寄存器
20 sfr SPSR = 0xaa; //SPI状态寄存器
21 sfr SPDAT = 0x86; //SPI数据寄存器 */
22
23
24 sbit _cs = P1^4;//spi片选信号
25
26 void main()
27 {
28 1 unsigned char key_flag;
29 1
30 1 SPCR = 0x7c;//
31 1 SPSR = 0x00;
32 1
33 1 RCLK = 0;TCLK=0;
34 1 TMOD = 0x20;//定时器1 ,模式2,自动加载
35 1 TH1 = 0xFD;//设定波特率为9600
36 1 SCON = 0x50;//模式1
37 1 IE = 0x90;; //串行中断允许
38 1 TR1 = 1;//启动定时器1 */
39 1
40 1
41 1 while(1){
42 2 key_flag = keyscan();
43 2 _cs = 0;
44 2 SPDAT =key_flag;
45 2 while(SPSR&0x80==0);
46 2 SPSR = 0x00;
47 2 _cs = 1;
48 2 Delay_Xms(20);
49 2
50 2 }
51 1
52 1 }
53
54 //键盘扫描程序
55 unsigned char keyscan(void){
C51 COMPILER V8.02 MAIN 06/01/2008 12:08:12 PAGE 2
56 1 unsigned char co[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
57 1 unsigned char m[]={"press keys"},a=0x80,i,sum;
58 1 unsigned char v=0;
59 1 sum=0;
60 1 P0=0xFF;
61 1 P0_0=0;
62 1 if(P0_4==0){
63 2 v='0'; co[0]=1;}
64 1 if(P0_5==0){
65 2 v='1'; co[1]=1;}
66 1 if(P0_6==0){
67 2 v='2'; co[2]=1;}
68 1 if(P0_7==0){
69 2 v='3'; co[3]=1;}
70 1 P0=0xFF;
71 1 P0_1=0;
72 1 if(P0_4==0){
73 2 v='4'; co[4]=1;}
74 1 if(P0_5==0){
75 2 v='5'; co[5]=1;}
76 1 if(P0_6==0){
77 2 v='6'; co[6]=1;}
78 1 if(P0_7==0){
79 2 v='7'; co[7]=1;}
80 1 P0=0xFF;
81 1 P0_2=0;
82 1 if(P0_4==0){
83 2 v='8'; co[8]=1;}
84 1 if(P0_5==0){
85 2 v='9'; co[9]=1;}
86 1 if(P0_6==0){
87 2 v='A'; co[10]=1;}
88 1 if(P0_7==0){
89 2 v='B'; co[11]=1;}
90 1 P0=0xFF;
91 1 P0_3=0;
92 1 if(P0_4==0){
93 2 v='C'; co[12]=1;}
94 1 if(P0_5==0){
95 2 v='D'; co[13]=1;}
96 1 if(P0_6==0){
97 2 v='E'; co[14]=1;}
98 1 if(P0_7==0){
99 2 v='F'; co[15]=1;}
100 1 for(i=0;i<16;i++){
101 2 sum+=co[i];
102 2 co[i]=0;
103 2 }
104 1 if(sum>1) v=0;
105 1 return(v);
106 1 }
107
108 //x取值1~255;
109 void Delay_Xms(unsigned char x)
110 {
111 1 unsigned int i,j;
112 1 for(i=0;i<x;i++)
113 1 for(j=0;j<200;j++)
114 1 {
115 2 _nop_();
116 2 _nop_();
117 2 }
C51 COMPILER V8.02 MAIN 06/01/2008 12:08:12 PAGE 3
118 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 296 ----
CONSTANT SIZE = 27 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 28
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?