📄 hd7279.lst
字号:
C51 COMPILER V6.02 HD7279 09/10/2005 18:52:20 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE HD7279
OBJECT MODULE PLACED IN .\hd7279.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\hd7279.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #define _HD7279_C_Def
2 #include "hd7279.h"
3
4 void write7279(unsigned char cmd, unsigned char dta);
5 unsigned char read7279(unsigned char command);
6 void send_byte( unsigned char out_byte);
7 unsigned char receive_byte(void);
8 void long_delay(void);
9 void short_delay(void);
10
11
12 //向HD7279发送纯指令
13 //cmd: 指令
14 void SendInstructTo7279(unsigned char cmd)
15 {
16 1 clk_HD7279 = 0;
17 1 _nop_();
18 1 _nop_();
19 1 cs_HD7279 = 0;
20 1 send_byte (cmd);
21 1 long_delay();
22 1 cs_HD7279 = 1;
23 1 }
24 //bitNo:0~7, 要设置那一位LED
25 //data: 该位LED要显示的数据, 格式为: DP|X|X|X|d3|d2|d1|d0 ,其中DP为小数点, X=无影响 , d0~d3为数据
26 //transMode: 0=译码方式0; 1=译码方式1;others=不译码
27 unsigned char SetupLedData(unsigned char bitNo, unsigned char dat, unsigned char transMode)
28 {
29 1 if( bitNo > 7) return 0;
30 1 if( transMode==0 )
31 1 bitNo = bitNo | DECODE0;
32 1 else if( transMode==1 )
33 1 bitNo = bitNo | DECODE1;
34 1 else
35 1 bitNo = bitNo | UNDECODE;
36 1
37 1 write7279(bitNo, dat);
38 1
39 1 return 1;
40 1 }
41 //flashCon: d8|...|d1 , d1到d8分别对应数码管1-8, 0=闪烁, 1=不闪烁
42 void Flash7279(unsigned char flashCon)
43 {
44 1 write7279(BLINKCTL, flashCon);
45 1 return;
46 1 }
47 //hideCon: d8|...|d1 , d1到d8分别对应数码管1-8, 0=消隐, 1=显示
48 void Hide7279(unsigned char hideCon)
49 {
50 1 write7279(ACTCTL, hideCon);
51 1 return;
52 1 }
53 //conOn: X|X|d6|...|d1, d0-d5范围为00H-3FH .从第1个数码管到第8个数码管,从G段到A,DP段 依次为每段编码.
54 void SegOn7279(unsigned char conOn)
55 {
C51 COMPILER V6.02 HD7279 09/10/2005 18:52:20 PAGE 2
56 1 write7279(SEGON, conOn);
57 1 return;
58 1 }
59 //conOff: X|X|d6|...|d1, d0-d5范围为00H-3FH .从第1个数码管到第8个数码管,从G段到A,DP段 依次为每段编码.
60 void SegOff7279(unsigned char conOff)
61 {
62 1 write7279(SEGOFF, conOff);
63 1 return;
64 1 }
65 unsigned char Read7279KeyCode(void)
66 {
67 1 return read7279(CMD_READ);
68 1 }
69
70 //向HD7279发送数据
71 void write7279(unsigned char cmd, unsigned char dta)
72 {
73 1 clk_HD7279 = 0;
74 1 _nop_();
75 1 _nop_();
76 1 cs_HD7279 = 0;
77 1 send_byte (cmd);
78 1 send_byte (dta);
79 1 long_delay();
80 1 cs_HD7279 = 1;
81 1 }
82 unsigned char read7279(unsigned char command)
83 {
84 1 clk_HD7279 = 0;
85 1 _nop_();
86 1 _nop_();
87 1 cs_HD7279 = 0;
88 1 send_byte(command);
89 1 return(receive_byte());
90 1 }
91 void send_byte( unsigned char out_byte)
92 {
93 1 unsigned char i;
94 1 long_delay();
95 1 for ( i=0;i<8;i++ )
96 1 {
97 2 if (out_byte & 0x80) dat_HD7279 = 1;
98 2 else dat_HD7279 = 0;
99 2 _nop_();
100 2 _nop_();
101 2 clk_HD7279 = 1;
102 2 short_delay();
103 2 clk_HD7279 = 0;
104 2 short_delay();
105 2 out_byte = out_byte<<1;
106 2 }
107 1 dat_HD7279 = 0;
108 1 }
109
110 unsigned char receive_byte(void)
111 {
112 1 unsigned char i, in_byte;
113 1 dat_HD7279 = 1; //
114 1 long_delay();
115 1 for ( i=0;i<8;i++ )
116 1 {
117 2 clk_HD7279 = 1;
C51 COMPILER V6.02 HD7279 09/10/2005 18:52:20 PAGE 3
118 2 short_delay();
119 2 in_byte = in_byte << 1;
120 2 if (dat_HD7279)
121 2 {
122 3 in_byte = in_byte|0x01;
123 3 }
124 2 clk_HD7279 = 0;
125 2 short_delay();
126 2 }
127 1 dat_HD7279=0;
128 1
129 1 long_delay();
130 1 cs_HD7279 = 1;
131 1 return (in_byte);
132 1 }
133 void long_delay(void)
134 {
135 1 unsigned char i;
136 1 for (i=0;i<0x30;i++)
137 1 _nop_();
138 1 }
139 void short_delay(void)
140 {
141 1 unsigned char i;
142 1 for (i=0;i<8;i++)
143 1 _nop_();
144 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 240 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -