📄 shumaguan.lst
字号:
C51 COMPILER V7.06 SHUMAGUAN 09/10/2008 17:00:58 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SHUMAGUAN
OBJECT MODULE PLACED IN shumaguan.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE shumaguan.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2 #include<absacc.h>
3 #include<intrins.h>
4 #define uchar unsigned char
5 #define uint unsigned int
6 sbit DIN=P1^0; //串行数据输入
7 sbit CLK=P1^1; //串行时钟
8 sbit LOAD=P1^2; //显示数据锁存控制
9 #define NoOp 0x00 //空操作寄存器
10 #define Digit0 0x01 //数码管1寄存器
11
12 #define DecodeMode 0x09 //译码模式寄存器
13 #define Intensity 0x0a //亮度寄存器
14 #define ScanLimit 0x0b //扫描位数寄存器
15 #define ShutDown 0x0c //低功耗模式寄存器
16 #define DisplayTest 0x0f //显示测试寄存器
17
18 #define ShutDownMode 0x00 //低功耗方式
19 #define NormalOperation 0x01 //正常操作方式
20
21 #define ScanDigit 0x00 //扫描位数设置,显示8位数码管
22 #define DecodeDigit 0xff //译码设置8位均为BCD码
23 #define IntensityGrade 0x01 //亮度级别设置
24
25 #define TestMode 0x01 //显示测试模式
26 #define TestEnd 0x00 //显示测试结束,恢复正常工作模式
27
28 uchar DisBuffer[8]={0,0,0,0,0,0,0,0}; //显示缓存区
29
30 void delay(uint t)
31 {
32 1 uint i;
33 1 while(t--)
34 1 {
35 2 for(i=0;i<125;i++)
36 2 {}
37 2
38 2 }
39 1
40 1 }
41
42 //向MAX7219写入字节(8位)
43 void SendChar (uchar ch)
44 {
45 1 uchar i,temp;
46 1 _nop_();
47 1 for (i=0;i<8;i++)
48 1 {
49 2 temp=ch & 0x80;
50 2 ch=ch<<1;
51 2 if(temp)
52 2 {
53 3 DIN=1;
54 3 CLK=0;
55 3 CLK=1;
C51 COMPILER V7.06 SHUMAGUAN 09/10/2008 17:00:58 PAGE 2
56 3 }
57 2 else
58 2 {
59 3 DIN=0;
60 3 CLK=0;
61 3 CLK=1;
62 3 }
63 2
64 2 }
65 1
66 1 }
67
68 //向MAX7219写入字节
69 void WriteWord (uchar addr,uchar num)
70 {
71 1 LOAD=0;
72 1 _nop_();
73 1 SendChar(addr);
74 1 _nop_();
75 1 SendChar(num);
76 1 _nop_();
77 1 LOAD=1; //锁存进相应的寄存器
78 1 }
79
80 // MAX7219初始化
81 void InitDisplay (void)
82 {
83 1 WriteWord(ScanLimit,ScanDigit); //设置扫描界限
84 1 WriteWord(DecodeMode,DecodeDigit); //设置译码模式
85 1 WriteWord(Intensity,IntensityGrade); //设置亮度
86 1 WriteWord(ShutDown,NormalOperation); //设置正常工作模式
87 1
88 1 }
89
90
91 void main (void)
92 {
93 1 InitDisplay(); //初始化MAX7219
94 1 WriteWord(DisplayTest,TestMode); //开始显示测试,点亮所有LED
95 1 delay(3000); //延时约3秒
96 1 WriteWord (DisplayTest,TestEnd); //退出显示测试模式
97 1
98 1
99 1 while(1)
100 1 {
101 2 uchar i;
102 2
103 2 //8个数码管以相同时间间隔2S同时变化显示0~9的数字
104 2 for(i=0;i<=9;i++)
105 2 {
106 3 delay(2000); //间隔约两秒
107 3 InitDisplay();
108 3
109 3 DisBuffer[0]=i;
110 3
111 3 WriteWord(Digit0,DisBuffer[0]);
112 3
113 3
114 3 }
115 2
116 2 }
117 1
C51 COMPILER V7.06 SHUMAGUAN 09/10/2008 17:00:58 PAGE 3
118 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 163 ----
CONSTANT SIZE = ---- ----
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 + -