?? main.lst
字號:
C51 COMPILER V8.08 MAIN 04/23/2009 10:31:10 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <includes.h>
2
3 /*----------------------------------------------------------*/
4
5
6 #include <intrins.h>
7
8 /*--------------------------------------------------*/
9 sbit dis_DIN=P3^0; /*顯示串行數據輸入端*/
10 sbit dis_LOAD=P1^0; /*顯示數據鎖存端*/
11 sbit dis_CLK=P3^1; /*顯示時鐘輸入端*/
12
13 #define NoOp 0x00 /*空操作*/
14 #define Digit0 0x01 /*數碼管1*/
15 #define Digit1 0x02 /*數碼管2*/
16 #define Digit2 0x03 /*數碼管3*/
17 #define Digit3 0x04 /*數碼管4*/
18 #define Digit4 0x05 /*數碼管5*/
19 #define Digit5 0x06 /*數碼管6*/
20 #define Digit6 0x07 /*數碼管7*/
21 #define Digit7 0x08 /*數碼管8*/
22 #define DecodeMode 0x09 /*譯碼模式*/
23 #define Intensity 0x0a /*亮度*/
24 #define ScanLimit 0x0b /*掃描界限*/
25 #define ShutDown 0x0c /*掉電模式*/
26 #define DisplayTest 0x0f /*顯示測試*/
27
28 #define ShutdownMode 0x00 /*掉電方式工作*/
29 #define NormalOperation 0x01 /*正常操作方式*/
30
31 #define DecodeDigit 0xff /*譯碼位數設置*/
32
33 #define IntensityGrade 0x0f7 /*顯示亮度級別設置*/
34
35 #define ScanDigit 0x07 /*掃描位數設置*/
36
37 #define TestMode 0x01 /*顯示測試方式*/
38 #define TextEnd 0x00 /*顯示測試結束,正常工作*/
39
40
41 unsigned char data DisBuffer[8]={0,0,0,0,0,0,0,0}; /*顯示緩存區*/
42
43
44 unsigned char code dispaly_list[]=
45 {
46 0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b, /*0,1,2,3,4,5,6,7,8,9*/
47 0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff,0x00}; /*A,B,C,D,E,F,P,U,全
48 亮,全滅*/
49
50
51
52 /*--------------------------------------------------------
53 10ms延時子程序
54 ---------------------------------------------------------*/
55
C51 COMPILER V8.08 MAIN 04/23/2009 10:31:10 PAGE 2
56 void delayX10ms(unsigned char count)
57 {
58 1 unsigned char j,k;
59 1 while(count--!=0)
60 1 {
61 2 for(j=0;j<43;j++)
62 2 for(k=0;k<73;k++)
63 2 ;
64 2 }
65 1 }
66
67 /*-------------------------------------------------
68 向MAX7219寫入字節(8位)
69 --------------------------------------------------*/
70 void SendChar (unsigned char ch)
71 {
72 1 unsigned char i,temp;
73 1 _nop_();
74 1 for (i=0;i<8;i++)
75 1 {
76 2 temp=ch&0x80;
77 2 ch=ch<<1;
78 2 if(temp)
79 2 {
80 3 dis_DIN=1;
81 3 dis_CLK=0;
82 3 dis_CLK=1;
83 3 }
84 2 else
85 2 {
86 3 dis_DIN=0;
87 3 dis_CLK=0;
88 3 dis_CLK=1;
89 3 }
90 2 }
91 1 }
92
93 /*-------------------------------------------------
94 向MAX7219寫入字(16位)
95 -------------------------------------------------*/
96 void WriteWord (unsigned char addr,unsigned char num)
97 {
98 1 dis_LOAD=0;
99 1 _nop_();
100 1 SendChar (addr);
101 1 _nop_();
102 1 SendChar (num);
103 1 _nop_();
104 1 dis_LOAD=1;
105 1 }
106
107 /*-------------------------------------------------
108 MAX7219初始化
109 -------------------------------------------------*/
110 void InitDis (void)
111 {
112 1 WriteWord (ScanLimit,ScanDigit); /*設置掃描界限*/
113 1 WriteWord (DecodeMode,DecodeDigit); /*設置譯碼模式*/
114 1 WriteWord (Intensity,IntensityGrade); /*設置亮度*/
115 1 WriteWord (ShutDown,NormalOperation); /*設置電源工作模式*/
116 1 }
117
C51 COMPILER V8.08 MAIN 04/23/2009 10:31:10 PAGE 3
118 /*-------------------------------------------------
119 系統上電初始化
120 -------------------------------------------------*/
121 void InitMain (void)
122 {
123 1 IE=0x00; /*設置中斷允許寄存器*/
124 1 IP=0x00; /*設置中斷優先級管理寄存器*/
125 1 TH0=0xd8; /*設定時器初值,10ms*/
126 1 TL0=0xf0;
127 1 TMOD=0x01; /*T1 定時器模式2,波特率發生器,T0 定時器模式1*/
128 1 TCON=0x11; /*設置定時器控制寄存器,INT0設置為邊沿觸發方式*/
129 1 PSW=0x00;
130 1 }
131
132 /*-------------------------------------------------
133 顯示函數
134 -------------------------------------------------*/
135 void main(void)
136 {
137 1 InitMain ();
138 1 InitDis ();
139 1
140 1 WriteWord (DisplayTest,TestMode);
141 1 delayX10ms(0x64);
142 1
143 1 WriteWord (DisplayTest,TextEnd);
144 1
145 1
146 1 while(1)
147 1 {
148 2 unsigned char i;
149 2 for (i=9;i<=9;i--)
150 2 {
151 3 delayX10ms(0x64);
152 3
153 3 InitDis ();
154 3 DisBuffer[0]=i;
155 3 DisBuffer[1]=i;
156 3 DisBuffer[2]=i;
157 3 DisBuffer[3]=i;
158 3 DisBuffer[4]=i;
159 3 DisBuffer[5]=i;
160 3 DisBuffer[6]=i;
161 3 DisBuffer[7]=i;
162 3
163 3 WriteWord (Digit0,DisBuffer[0]);
164 3 WriteWord (Digit1,DisBuffer[1]);
165 3 WriteWord (Digit2,DisBuffer[2]);
166 3 WriteWord (Digit3,DisBuffer[3]);
167 3 WriteWord (Digit4,DisBuffer[4]);
168 3 WriteWord (Digit5,DisBuffer[5]);
169 3 WriteWord (Digit6,DisBuffer[6]);
170 3 WriteWord (Digit7,DisBuffer[7]);
171 3 }
172 2
173 2 }
174 1
175 1
176 1
177 1 }
C51 COMPILER V8.08 MAIN 04/23/2009 10:31:10 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 246 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 1
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 + -