📄 at89c51.lst
字号:
C51 COMPILER V7.50 AT89C51 04/06/2008 20:32:16 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AT89C51
OBJECT MODULE PLACED IN .\obj\AT89C51.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE src\AT89C51.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lst\AT89C51.lst) OBJECT(.\o
-bj\AT89C51.obj)
line level source
1 #include <reg51.h>
2 #include <math.h>
3
4 #include "AT89C51.h"
5 uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xb9,0xbf};
6 uchar count=0;
7 ///////////////////空闲延时函数///////////////16us*k+24////////////////////////
8 void KX_delay1(long k)//延时程序,k是形式参数
9 {
10 1 uint i;
11 1 for(i=0;i<k;i++);
12 1 }
13
14 ////////////////数据发送函数////////////////////////////////////////////////////////////////////////////
15 bit Send_Data(uchar z,uchar y)
16 {
17 1 if( (Send_leader())&& ////引导码发送成功/////
18 1 (Send_user_data(z))&&////用户码发送成功////
19 1 (Send_user_data(y)) ) return (1);/////数据码发送成功////3者都发送成功,则返回1///
20 1 else return(0); ///////否则数据发送失败////////
21 1 }
22 /////////////////////引导码发送函数///////////////////////////////////////////////////////////////////////
-/
23 bit Send_leader(void)
24 {
25 1 count=6;//调试值////count是个全局变量//引导码宽度为M*500us//
26 1 TR0=1; ///打开定时/计数器0开始运行//
27 1 TR1=1; ////打开定时/计数器1开始运行//
28 1 //P34=0; ////此句可要可不要////
29 1 while(TR0==1);////脉冲没有结束,等待//////
30 1 KX_delay1(N);/////脉冲结束后,有大概多长时间的宽度,根据实际情况调整///////
31 1 //KX_delay1(30);//延时1秒左右//用于调试////
32 1 return(1);
33 1 }
34 /////////////////////用户码和数据码发送函数(包含其反码)/////////////////////////////////////////////////
-///////////////////////
35 bit Send_user_data(uchar z1)
36 {
37 1 // uchar i,j=8;////注意这样只对j赋值为8,要全部赋值应该为uchar i=8;uchar j=8;或 uchar j;uchar i=j=8;/////
-/////
38 1 ///////////////直接uchar i=j=8;也不正确///////////////
39 1 uchar z2;
40 1 uchar i=8;
41 1 uchar j=8;
42 1 z2=~z1; ////z1的反码传给z2////////
43 1 while(i--)
44 1 {
45 2 if((z1&0x80)==0x80) Send_bitdata_1();/////先发高位,后发低位//////
46 2 else Send_bitdata_0();
47 2 // KX_delay1(30);//延时1秒左右//用于调试////
48 2 z1=z1<<1;
49 2 }
50 1 while(j--)
51 1 {
C51 COMPILER V7.50 AT89C51 04/06/2008 20:32:16 PAGE 2
52 2 if((z2&0x80)==0x80) Send_bitdata_1();
53 2 else Send_bitdata_0();
54 2 //KX_delay1(30);//延时1秒左右//用于调试////
55 2 z2=z2<<1;
56 2 }
57 1 return (1);
58 1 }
59 /////////////////////发送位数据0函数//////////////////////////////////////////////////////////////////////
-//
60 void Send_bitdata_0(void)
61 {
62 1 count=1;//调试值//count是全局变量//定义逻辑0为1000us的脉宽//
63 1 TR0=1; ///打开定时/计数器0开始运行//
64 1 TR1=1; ////打开定时/计数器1开始运行//
65 1 //P34=0; ////此句可要可不要////
66 1 while(TR0==1);////脉冲没有结束,等待//////
67 1 KX_delay1(N);//////////脉冲结束后,有大概多长时间的宽度,根据实际情况调整///////
68 1 }
69
70 /////////////////////发送位数据1函数//////////////////////////////////////////////////////////////////////
-//
71 void Send_bitdata_1(void)
72 {
73 1 count=3;//调试值//count是全局变量//定义逻辑1为2000us的脉宽//
74 1 TR0=1; ///打开定时/计数器0开始运行//
75 1 TR1=1; ////打开定时/计数器1开始运行//
76 1 // P34=0; ////此句可要可不要////
77 1 while(TR0==1);////脉冲没有结束,等待//////
78 1 KX_delay1(N);//////////脉冲结束后,有大概多长时间的宽度,根据实际情况调整///////
79 1 }
80 ////////////////////AT89C51初始化函数/////////////////////////////////////////////////////////////////////
-////
81 void AT89C51_initialize(void)
82 {
83 1 TMOD=0x21; //确定定时器0和定时器1的工作模式
84 1 TH0=0xfe; ///定时器0定时500us////
85 1 TL0=0x0c;
86 1 TH1=0xf3; ///定时器1定时13us////
87 1 TL1=0xf3;
88 1 EA=1; //开总中断允许//
89 1 ET0=1; //开定时/计数器0允许/
90 1 ET1=1; //开定时/计数器0允许//
91 1 P34=0; ////置0使发光二极管处于熄灭状态//////
92 1 }
93 ////////////////////////////////////////////////////////////////////////////////////////////
94 ///////////////////////////////////////////////////////////////////////////////
95 ////////////////////数码管显示程序//////////////////////////////////////////////
96 void display(uchar z)
97 {
98 1 // uchar m,t,k;
99 1 // if(z<=125){t=10;k=z;}
100 1 // else{t=11;k=z-125;}
101 1 uchar m;
102 1 for(m=0;m<100;m++)
103 1 {
104 2 // P1=tab[t];
105 2 // LED0=1;
106 2 // LED1=0;
107 2 // LED2=0;
108 2 // LED3=0;
109 2 // delay();
110 2 // LED0=0;
C51 COMPILER V7.50 AT89C51 04/06/2008 20:32:16 PAGE 3
111 2
112 2 P1=tab[z/100];
113 2 LED0=0;
114 2 LED1=1;
115 2 LED2=0;
116 2 LED3=0;
117 2 delay();
118 2 LED1=0;
119 2
120 2 P1=tab[z%100/10];
121 2 LED0=0;
122 2 LED1=0;
123 2 LED2=1;
124 2 LED3=0;
125 2 delay();
126 2 LED2=0;
127 2
128 2 P1=tab[z%10];
129 2 LED0=0;
130 2 LED1=0;
131 2 LED2=0;
132 2 LED3=1;
133 2 delay();
134 2 LED3=0;
135 2 }
136 1 }
137 /////////////////数码管显示程序结束/////////////////////////////////////////////
138 ///////////////////////////////////////////////////////////////////////////////
139
140 void delay()
141 {
142 1 unsigned int i,j;
143 1 for(i=0;i<15;i++)
144 1 for(j=0;j<15;j++);
145 1
146 1 }
147 ///////////////////////////////////////////////////////////////////////////////
148
149
150
151
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 349 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 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 + -