📄 m7219.lst
字号:
C51 COMPILER V6.12 M7219 12/05/2008 11:40:39 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE M7219
OBJECT MODULE PLACED IN .\M7219.OBJ
COMPILER INVOKED BY: C:\Keil_51\C51\BIN\C51.EXE .\M7219.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /* *********************************************************************
2 数字钟
3 串行8位显示Max7219模块。
4 晶振 11.0592MHz,
5 2008年10月
6 *************************************************************************/
7 #include <reg51.h>
8 #include <absacc.h>
9 #include <intrins.h>
10 #define uchar unsigned char
11 #define uint unsigned int
12 #define _NOP() _nop_();_nop_()
13
14
15 sbit LOAD=P3^4; // P1^0
16 sbit DIN=P1^4; // P1^1
17 sbit CLK=P1^5; // P1^2
18
19 ///////////////////////////////////////////////////////////////////////////////
20 /* 发送一字节到MAX7219,高位在前 */
21 void send(uchar c)
22 { uchar bit_cnt;
23 1 CLK=0;
24 1 _NOP();
25 1 for(bit_cnt=0;bit_cnt<8;bit_cnt++)
26 1 { if((c<<bit_cnt)&0x80)DIN=1;
27 2 else DIN=0;
28 2 _NOP();
29 2 CLK=1;
30 2 _NOP();
31 2 _NOP();
32 2 CLK=0;
33 2 _NOP();
34 2 _NOP();
35 2 }
36 1
37 1 }
38 /*向显示器某位送命令或数字*/
39 void input(uchar addr,uchar dat)
40 {
41 1 send(addr);/*传送寄存器地址字节(位选)*/
42 1 send(dat);/*传送寄存器数据字节*/
43 1 LOAD=1;
44 1 _NOP();
45 1 _NOP();
46 1 LOAD=0;
47 1 }
48 /*初始化显示器*/
49 void dip_int(void)
50 { uchar i;
51 1 CLK=0;
52 1 LOAD=0;
53 1 input(0x0c,0x00);/*关闭显示*/
54 1 input(0x09,0xff);/*全译码模式*/
55 1 input(0x0b,0x07);/*显示 8*LED */
C51 COMPILER V6.12 M7219 12/05/2008 11:40:39 PAGE 2
56 1 input(0x0a,0x02);/*亮度占空比31/32 */
57 1 input(0x0f,0x00);/*显示测试寄存器为正常显示方式 */
58 1 input(0x0c,0x01);/*开显示 */
59 1 for(i=8;i>0;i--)input(i,0);
60 1
61 1 }
62 /*关闭显示*/
63 void cls(void)
64 { uchar i;
65 1 CLK=0;
66 1 LOAD=0;
67 1 for(i=1;i<9;i++)input(i,0x0f);/*每个字符‘黑’*/
68 1 LOAD=1;
69 1 CLK=1;
70 1 }
71 /*显示字符串(8 位)*/
72 void str(uchar *s)
73 { uchar i;
74 1 input(0x0c,0x01);
75 1 for(i=8;i>0;i--)
76 1 input(i,s[i-1]);
77 1 }
78 /*软件延时*/
79 void msec( uint x)
80 { uchar j;
81 1 while(x--)
82 1 { for(j=0;j<250;j++)
83 2 {
84 3 }/*一次延时0.5毫秒。*/
85 2 }
86 1 }
87 ////////////////////////////////////////////////////////////////////////////////
88 /* 主程序 */
89 void main(void)
90 {
91 1 uchar sz[11]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x00};
92 1 dip_int();
93 1 msec(500);
94 1 cls();
95 1 msec(500);
96 1 str(sz);
97 1 sz[5]=sz[5]&0x3f;/*小数点不显示 */
98 1 msec(350);
99 1 str(sz);
100 1 sz[5]=sz[5]|0x80;/*小数点显示 */
101 1 msec(350);
102 1 str(sz);
103 1 for(;;);
104 1 }
105 ///////////////////////////////////////////////////////////////////////////////
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 266 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 11
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 + -