ad549.lst
来自「单片机开发板源程序 适合初学者 第五部分 报警产生器」· LST 代码 · 共 150 行
LST
150 行
C51 COMPILER V7.06 AD549 09/13/2007 02:56:56 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AD549
OBJECT MODULE PLACED IN AD549.OBJ
COMPILER INVOKED BY: C:\tools\Keil\C51\BIN\C51.EXE AD549.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*实验名称:按加减键实现内部加减 0.01
2 功能:数码显示0.20---2.00
3 作者:http://www.mcuprog.com
4 05-02-01
5 */
6 #include <reg51.h>
7 //LCD的口线
8 sbit E=P2^2;
9 sbit RW=P2^1;
10 sbit RS=P2^0;
11 //AD(TLC549)引脚
12 sbit AD_CS=P3^7;
13 sbit AD_CK=P3^5;
14 sbit AD_OUT=P3^6;
15 //8字LED的连接方法
16 //P0.7 P.06 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
17 // H G F E D C B A
18
19 unsigned char code ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
20 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管段码表
21 unsigned char adbl,ledbai,ledshi,ledge,keytime;
22 unsigned char bdata myflag;
23 sbit keybit = myflag^0;
24
25 void time0(void);
26 void read_549(void);
27 void Delay(unsigned int t);
28 void SendCommandByte(unsigned char ch);
29 void SendDataByte(unsigned char ch);
30 void InitLcd(void);
31 void dispdpbl(void);
32
33 void main(void)
34 {
35 1 InitLcd();
36 1 myflag=0x00;
37 1 keytime=4; //20MS扫一次按键
38 1 SendCommandByte(0x80);
39 1 Delay(2);
40 1 SendDataByte('A');
41 1 SendDataByte('D');
42 1 SendDataByte('C');
43 1 SendDataByte(':');
44 1 TH0=0xee; //定时5MS
45 1 TL0=0x00;
46 1 TMOD=0x01;
47 1 TR0=1;
48 1 IE=0x82;
49 1 while(1)
50 1 {}
51 1 }
52
53 void time0(void) interrupt 1
54 {
55 1 TH0=0xee;
C51 COMPILER V7.06 AD549 09/13/2007 02:56:56 PAGE 2
56 1 TL0=0x00;
57 1 read_549();
58 1 ledbai=(adbl/100)|0x30;
59 1 ledshi=((adbl%100)/10)|0x30;
60 1 ledge=(adbl%10)|0x30;
61 1 dispdpbl();
62 1 }
63
64 void read_549(void)
65 {
66 1 unsigned char i;
67 1 AD_CS=0;
68 1 adbl=0x00;
69 1 for(i=0;i<8;i++)
70 1 {
71 2 AD_CK=1;
72 2 adbl=adbl<<1;
73 2 if(AD_OUT==1) adbl++;
74 2 AD_CK=0;
75 2 }
76 1 AD_CS=1;
77 1 }
78
79 void Delay(unsigned int t) // delay 40us
80 {
81 1 for(;t!=0;t--) ;
82 1 }
83 //=============================================
84 void SendCommandByte(unsigned char ch)
85 {
86 1 RS=0;
87 1 RW=0;
88 1 P0=ch;
89 1 E=1;
90 1 Delay(1);
91 1 E=0;
92 1 Delay(100); //delay 40us
93 1 }
94 //-------------------------------------------------------
95 void SendDataByte(unsigned char ch)
96 { RS=1;
97 1 RW=0;
98 1 P0=ch;
99 1 E=1;
100 1 Delay(1);
101 1 E=0;
102 1 Delay(100); //delay 40us
103 1 }
104 //-------------------------------------------------
105 void InitLcd(void)
106 {SendCommandByte(0x30);
107 1 SendCommandByte(0x30);
108 1 SendCommandByte(0x30);
109 1 SendCommandByte(0x38); //设置工作方式
110 1 SendCommandByte(0x0c); //显示状态设置
111 1 SendCommandByte(0x01); //清屏
112 1 SendCommandByte(0x06); //输入方式设置
113 1 }
114
115 void dispdpbl(void)
116 {
117 1 SendCommandByte(0x85);
C51 COMPILER V7.06 AD549 09/13/2007 02:56:56 PAGE 3
118 1 SendDataByte(ledbai);
119 1 SendDataByte(ledshi);
120 1 SendDataByte(ledge);
121 1
122 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 296 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?