📄 test7279.lst
字号:
C51 COMPILER V7.06 TEST7279 06/21/2006 21:44:00 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEST7279
OBJECT MODULE PLACED IN Test7279.OBJ
COMPILER INVOKED BY: c:\KEIL\C51\BIN\C51.exe Test7279.c DB OE
stmt level source
1 #include "c8051f020.h"
2 #include <intrins.h>
3
4 sbit HD7279_DAT=P1^7;
5 sbit HD7279_CLK=P1^6;
6
7 #define NOSELECT7279 P5 |= 0x80 //SPICS4(P57)=1
8 #define SELECT7279 P5 &= ~(0x80) //SPICS4(P57)=0;
9 #define Set7279DAT HD7279_DAT=1
10 #define Clr7279DAT HD7279_DAT=0
11 #define Set7279CLK HD7279_CLK=1
12 #define Clr7279CLK HD7279_CLK=0
13
14
15
16 // I/O口初始化
17
18 void Delay1ms(unsigned char T);
19 void Delay1s(unsigned char T);
20 void Delay1us(unsigned char T);
21
22 void Send7279Byte(unsigned char ch)
23 {
24 1 char i;
25 1 SELECT7279; //置CS低电平
26 1 Delay1us(100); //延时50μ
27 1
28 1 for (i=0;i<8;i++)
29 1 {
30 2 if (ch&0x80) //输出7位到HD7279A的DATA端
31 2 {
32 3 Set7279DAT;
33 3 }
34 2 else
35 2 {
36 3 Clr7279DAT;
37 3 }
38 2 Set7279CLK; //置CLK高电平
39 2 ch=ch<<1; //待发数据左移
40 2 Delay1us(20); //延时20μ
41 2 Clr7279CLK; //置CLK低电平
42 2 Delay1us(20); //延时50μ
43 2 }
44 1 Clr7279DAT; //发送完毕,DATA端置低,返回
45 1 }
46
47 unsigned char Receive7279Byte(void)
48 {
49 1 unsigned char i,ch;
50 1 ch=0;
51 1 Set7279DAT; //DATA端置为高电平,输入状态
52 1 Delay1us(100); //延时50μ
53 1 for (i=0;i<8;i++)
54 1 {
55 2 Set7279CLK; //置CLK高电平
C51 COMPILER V7.06 TEST7279 06/21/2006 21:44:00 PAGE 2
56 2 Delay1us(20); //延时8μ
57 2 ch=ch<<1; //接收数据左移1位
58 2 if (HD7279_DAT)
59 2 ch+=1; //接收1位数据
60 2 Clr7279CLK; //置CLK低电平
61 2 Delay1us(20); //延时8μ
62 2 }
63 1 Clr7279DAT; //接收完毕,DATA端重新置成低电平(输出状态)
64 1 return ch;
65 1 }
66
67
68 char GetKeyValue(void)
69 {
70 1 char KeyValue;
71 1 if (CPT1CN&0x40) return -1; //无键按下
72 1 Send7279Byte(0x15); //发读键盘指令
73 1 KeyValue=Receive7279Byte();
74 1 NOSELECT7279; //置CS高电平
75 1 return KeyValue;
76 1 }
77
78 void WaitKeyOff(void)
79 {
80 1 while (!(CPT1CN&0x40));
81 1 }
82
83 void FlashLED(unsigned char No)
84 {
85 1 char i;
86 1 Send7279Byte(0x88); //发闪烁指令
87 1 i=0x1;
88 1 while (No)
89 1 {
90 2 i=i<<1;
91 2 No--;
92 2 }
93 1 Send7279Byte(~i); //1闪烁
94 1 NOSELECT7279; //置CS高电平
95 1 }
96
97 unsigned char code BdSeg[]={
98 0x7e,0x30,0x6d,0x79, // 0 1 2 3
99 0x33,0x5b,0x5f,0x70, // 4 5 6 7
100 0x7f,0x7b,0x77,0x1f, // 8 9 a b
101 0x4e,0x3d,0x4f,0x47, // c d e f
102 0x00,0x01};
103 /*
104 ; b6
105 ; ----
106 ; b1| b0 |b5
107 ; ---- small
108 ; b2| b3 |b4
109 ; ---- .b7
110 */
111 void DispLED(char *DispBuf,char ShowDot)//ShowDot 显示小数点位
112 {
113 1 char i,ch;
114 1 ShowDot--;
115 1 for (i=0;i<6;i++)
116 1 {
117 2 ch=DispBuf[i];
C51 COMPILER V7.06 TEST7279 06/21/2006 21:44:00 PAGE 3
118 2 if ((ch>='a') && (ch<='f'))
119 2 {
120 3 ch-='a';ch+=0xa;
121 3 }
122 2 if ((ch>='A') && (ch<='F'))
123 2 {
124 3 ch-='A';ch+=0xa;
125 3 }
126 2 Send7279Byte(0x90+5-i); //不译码
127 2 if (ch==' ')
128 2 Send7279Byte(0x00);
129 2 else
130 2 if (ch=='-')
131 2 Send7279Byte(0x01);
132 2 else
133 2 {
134 3 if (ShowDot==i)
135 3 Send7279Byte(0x80|BdSeg[ch&0x0f]);
136 3 else
137 3 Send7279Byte(BdSeg[ch&0x0f]);
138 3 }
139 2 }
140 1 NOSELECT7279; //置CS高电平
141 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 354 ----
CONSTANT SIZE = 18 ----
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 + -