📄 text8.lst
字号:
C51 COMPILER V7.06 TEXT8 03/13/2009 09:14:32 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEXT8
OBJECT MODULE PLACED IN Text8.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text8.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h> // 引用标准库的头文件
2 #include <intrins.h>
3 #include <stdio.h>
4 #include <math.h>
5 #include <stdlib.h>
6 #include <stdio.h>
7
8 #define uchar unsigned char
9 #define uint unsigned int
10
11 sbit DIN = P1^3; // 串行数据输入
12 sbit CLK = P1^1; // 串行时钟
13 sbit LOAD = P1^2; // 显示数据锁存控制
14
15 sbit DE_RE =P3^5;
16
17 #define Digit0 0x01 // 数码管1寄存器
18 #define Digit1 0x02 // 数码管2寄存器
19 #define Digit2 0x03 // 数码管3寄存器
20 #define Digit3 0x04 // 数码管4寄存器
21 #define DecodeMode 0x09 // 译码模式寄存器
22 #define Intensity 0x0a // 亮度寄存器
23 #define ScanLimit 0x0b // 扫描位数寄存器
24 #define ShutDown 0x0c // 低功耗模式寄存器
25 #define DisplayTest 0x0f // 显示测试寄存器
26
27 #define ShutdownMode 0x00 // 低功耗方式
28 #define NormalOperation 0x01 // 正常操作方式
29
30 #define ScanDigit 0x03 // 扫描位数设置,显示8位数码管
31 #define DecodeDigit 0xff // 译码设置,8位均为BCD码
32 #define IntensityGrade 0x0a // 亮度级别设置
33 #define TestMode 0x01 // 显示测试模式
34 #define TextEnd 0x00 // 显示测试结束,恢复正常工作模式
35 void putbyte(char c); //发送一个字节
36 //char rand();
37 uchar instruction_buf[9] = {0xff,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0f } ; // 就收缓存区
38 uchar dis_buf[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } ;//显示缓存区
39 uchar device_id;
40 /* 延时t毫秒 */
41 void delay(uint t)
42 {
43 1 uint i;
44 1 while(t--)
45 1 {
46 2 /* 对于12M时钟,约延时1ms */
47 2 for (i=0;i<125;i++)
48 2 {}
49 2 }
50 1 }
51
52 /* 向MAX7219写入字节(8位)*/
53 void SendChar (uchar ch)
54 {
55 1 uchar i,temp;
C51 COMPILER V7.06 TEXT8 03/13/2009 09:14:32 PAGE 2
56 1 _nop_();
57 1 for (i=0;i<8;i++)
58 1 {
59 2 temp=ch&0x80;
60 2 ch=ch<<1;
61 2 if(temp)
62 2 {
63 3 DIN=1;
64 3 CLK=0;
65 3 CLK=1;
66 3 }
67 2 else
68 2 {
69 3 DIN=0;
70 3 CLK=0;
71 3 CLK=1;
72 3 }
73 2 }
74 1 }
75
76 /* 向MAX7219写入字(16位)*/
77 void WriteWord (uchar addr,uchar num)
78 {
79 1 LOAD=0;
80 1 _nop_();
81 1 SendChar(addr);
82 1 _nop_();
83 1 SendChar(num);
84 1 _nop_();
85 1 LOAD=1; // 锁存进相应寄存器
86 1 }
87
88 /* MAX7219初始化 */
89 void InitDisplay (void)
90 {
91 1 WriteWord (ScanLimit,ScanDigit); // 设置扫描界限
92 1 WriteWord (DecodeMode,DecodeDigit); // 设置译码模式
93 1 WriteWord (Intensity,IntensityGrade); // 设置亮度
94 1 WriteWord (ShutDown,NormalOperation); // 设置为正常工作模式
95 1 TMOD |= 0x20;
96 1 TL1 = 0xfd; TH1 = 0xfd;
97 1 //SCON = 0x7a;
98 1 SCON = 0x50;
99 1 TR1 = 1;
100 1 //TI = 0;
101 1 ES = 1;
-
-
102 1 EA = 1;
103 1 DE_RE=0;
104 1 device_id = (P1&0xf0)>>4;
105 1 WriteWord (Digit0,0x0a);
106 1 WriteWord (Digit1,0x0a);
107 1 WriteWord (Digit2,0x0a);
108 1 WriteWord (Digit3,0x0a);
109 1 // instruction_buf[9] = {0xff,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0f } ;
110 1 }
111
112
113 /* 主函数 */
114 void main(void)
115 { uint i,delay_time;
C51 COMPILER V7.06 TEXT8 03/13/2009 09:14:32 PAGE 3
116 1 uchar j;
117 1 uchar th,hun,ten,one;
118 1 uint rand_mize,data_1,data_2;
119 1 uchar th_1,hun_1,ten_1,one_1,tttt,ttt,tt,t;
120 1
121 1 InitDisplay (); // MAX7219初始化
122 1 // serial_init();
123 1
124 1 while(1)
125 1 {//if(instruction_buf[0]==0x00 && instruction_buf[1]==0x00 && instruction_buf[2]==0x00}
126 2 // {InitDisplay ();continue;}
127 2 if(instruction_buf[8]==0xff)
128 2 { instruction_buf[8] = 0x0f;
129 3 if(instruction_buf[0]==device_id) //接收到新指令
130 3 { //for(i=0;i<7;i++) putbyte(instruction_buf[i]);
131 4 //delay(10);
132 4 dis_buf[0]= instruction_buf[0];
133 4 dis_buf[1]= instruction_buf[1];
134 4 dis_buf[2]= instruction_buf[2];
135 4 dis_buf[3]= instruction_buf[3];
136 4 dis_buf[4]= instruction_buf[4];
137 4 dis_buf[5]= instruction_buf[5];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -