📄 hd7279a.lst
字号:
C51 COMPILER V7.08 HD7279A 02/13/2006 09:55:21 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE HD7279A
OBJECT MODULE PLACED IN HD7279A.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE HD7279A.C BROWSE DEBUG OBJECTEXTEND
line level source
1 // This is a demo program for 7279a
2 // It is test for HY500R circuit
3 // This is a demo for HD7279A
4 // Last change :27,Jan,06
5 //****************************************
6 #include <reg51.h>
7 #include "hd7279a.h"
8
9 // 数据类型定义
10 #define uchar unsigned char
11 #define uint unsigned int
12 #define ulong unsigned long
13
14
15 //变量及IO口定义
16 uchar digit[5];
17 uchar key_number, j, k;
18 uint delay;
19 ulong wait_cnter;
20 sbit cs_7279=P1^4;
21 sbit clk=P1^7;
22 sbit dat=P1^6;
23 sbit key=P2^7;
24 sbit SPEAKER = P1^3;
25
26
27 /***************主函数***********************/
28 main()
29 {
30 1 delay10ms(5); // 上电延时
31 1
32 1 while (1)
33 1 {
34 2 SPEAKER=0;
35 2 for (delay=0;delay<0x2000;delay++); // 加电延时
36 2 send_byte(RESET_7279); // 复位7279A
37 2 delay10ms(2);
38 2 //******************************************
39 2 // test demo
40 2 //******************************************
41 2 send_byte(TEST_7279); // 测试指令,全亮并闪烁
42 2 for (j=0;j<3;j++) // 延时约3秒
43 2 {
44 3 delay10ms(100);
45 3 }
46 2 send_byte(RESET_7279); // 复位,清除显示
47 2
48 2
49 2 write7279(DECODE1+0,0x00);
50 2 write7279(DECODE1+1,0x01);
51 2 write7279(DECODE1+2,0x02);
52 2 write7279(DECODE1+3,0x03);
53 2 write7279(DECODE1+4,0x04);
54 2 write7279(DECODE1+5,0x05);
55 2 write7279(DECODE1+6,0x06);
C51 COMPILER V7.08 HD7279A 02/13/2006 09:55:21 PAGE 2
56 2 write7279(DECODE1+7,0x07);
57 2 //ite7279(DECODE1+0,8);
58 2
59 2 //*********************************************
60 2 //译码方式1及右移指令测试
61 2 //*********************************************
62 2 // for (j=0;j<16;j++)
63 2 // {
64 2 // send_byte(RTR_UNCYL); // 不循环右移指令
65 2 // write7279(DECODE1+7,j);
66 2 // 译码方式0指令,显示在第8位
67 2 delay10ms(50);
68 2 // }
69 2 delay10ms(1500);
70 2 //*********************************************
71 2 }
72 1 }
73 // 写指令--------------------------
74 void write7279(uchar cmd, uchar dta)
75 {
76 1 send_byte (cmd);
77 1 send_byte (dta);
78 1 }
79 // 读数据--------------------------
80 uchar read7279(uchar cmd)
81 {
82 1 send_byte(cmd);
83 1 return(receive_byte());
84 1 }
85 // 发送一个字节
86 void send_byte(uchar sbyte)
87 {
88 1 uchar i;
89 1 cs_7279=0;
90 1 long_delay();
91 1 for (i=0;i<8;i++)
92 1 {
93 2 if (sbyte&0x80)
94 2 {
95 3 dat=1; // 第8位为1则置发送的第一个电平为高
96 3 }
97 2 else
98 2 {
99 3 dat=0;
100 3 }
101 2 clk=1; // 在上升沿写入
102 2 short_delay();
103 2 clk=0;
104 2 short_delay();
105 2 sbyte=sbyte*2; // 左移一位
106 2 }
107 1 dat=0; // 发送完一个字节后置数据线为0,输出状态
108 1 }
109
110 // 接收一个字节
111 uchar receive_byte(void)
112 {
113 1 uchar i, ibyte;
114 1 dat=1; // 设为输入状态
115 1 long_delay();
116 1 for (i=0;i<8;i++)
117 1 {
C51 COMPILER V7.08 HD7279A 02/13/2006 09:55:21 PAGE 3
118 2 clk=1;
119 2 short_delay();
120 2 ibyte=ibyte*2; // 左移一位
121 2 if (dat)
122 2 {
123 3 ibyte=ibyte|0x01;
124 3 }
125 2 clk=0;
126 2 short_delay();
127 2 }
128 1 dat=0;
129 1 return (ibyte);
130 1 }
131
132 // 处理按键
133 void key_process(void)
134 {
135 1 // add code here
136 1 }
137
138 // delay 160us
139 void long_delay(void)
140 {
141 1 uchar i;
142 1 for (i=0;i<0x30;i++);
143 1 }
144
145 // delay 33us
146 void short_delay(void)
147 {
148 1 uchar i;
149 1 for (i=0;i<8;i++);
150 1 }
151
152 // *********************延时n*10ms **********************
153 void delay10ms(uchar ms)
154 {
155 1 uchar i;
156 1 uint j;
157 1
158 1 for (i=0;i<ms;i++)
159 1 {
160 2 for(j=0;j<0x390;j++)
161 2 {
162 3 if(!key) // 有按键则先处理按键中断
163 3 {
164 4 key_process();
165 4 }
166 3 }
167 2 }
168 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 289 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V7.08 HD7279A 02/13/2006 09:55:21 PAGE 4
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -