📄 4.3.4.lst
字号:
C51 COMPILER V8.02 4_3_4 12/13/2007 12:52:34 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 4_3_4
OBJECT MODULE PLACED IN 4.3.4.OBJ
COMPILER INVOKED BY: D:\Edaexe\Keilu3\UV3 8.05\C51\BIN\C51.EXE 4.3.4.c DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h> /*函数定义*/
2 void long_delay(void); //长延时
3 void short_delay(void); //短延时
4 void delay10ms(unsigned char); //延时10ms
5 void write7279(unsigned char, unsigned char); //写入HD7279
6 unsigned char read7279(unsigned char); //读HD7279
7 void send_byte(unsigned char); //发送一个字节
8 unsigned char receive_byte(void); //接收一个字节
9 /*****************变量及I/O口定义**********************/
10 unsigned char digit[5];
11 unsigned char key_number, j, k;
12 unsigned int tmr;
13 unsigned long wait_cnter;
14 sbit cs=P2^3; //cs连接P1.4
15 sbit clk=P2^0; //clk连接P1.5
16 sbit dat=P2^1; //dat连接P1.2
17 sbit key=P2^2; //key连接P1.3
18
19 /****** ***********HD7279A指令定义*********************/
20 #define CMD_RESET 0xa4 //复位指令
21 #define CMD_TEST 0xbf //测试指令
22 #define DECODE0 0x80 //方式0译码指令
23 #define DECODE1 0xc8 //方式1译码指令
24 #define CMD_READ 0x15 //读键盘指令
25 #define UNDECODE 0x90 //不译码指令
26 #define RTL_CYCLE 0xa3 //循环左移指令
27 #define RTR_CYCLE 0xa2 //循环右移指令
28 #define RTL_UNCYL 0xa1 //左移指令
29 #define RTR_UNCYL 0xa0 //右移指令
30 #define ACTCTL 0x98 //消隐控制指令
31 #define SEGON 0xe0 //段点亮指令
32 #define SEGOFF 0xc0 //段关闭指令
33 #define BLINKCTL 0x88 //闪烁控制指令
34
35 /********************主程序*********************************/
36 void main()
37 {
38 1 while (1)
39 1 {
40 2 for (tmr=0;tmr<0x2000;tmr++); //上电延时
41 2 send_byte(CMD_RESET); //复位HD7279A
42 2 /*************闪烁指令指令及键盘接口测试程序,将用户***************************/
43 2 send_byte(CMD_TEST); //测试指令
44 2 for (j=0;j<3;j++) //延时约3
45 2 {
46 3 delay10ms(100);
47 3 }
48 2 send_byte(CMD_RESET); //清除显示
49 2 /**********************************************
50 2 测试指令演示程序将用户按键的键码显示出来,如果10秒内无按键或者按S0键进入下一步演示
51 2 **********************************************/
52 2 wait_cnter=0;
53 2 key_number=0xff;
54 2 write7279(BLINKCTL,0xfc); //第1、2两位设为闪烁显示
55 2 write7279(UNDECODE,0X08); //在第1位显示下划线'_'
C51 COMPILER V8.02 4_3_4 12/13/2007 12:52:34 PAGE 2
56 2 write7279(UNDECODE+1,0x08); //在第2位显示下划线 '_'
57 2 do
58 2 {
59 3 if (!key) //如果有键按下
60 3 {
61 4 key_number=read7279(CMD_READ); //读出键码
62 4 write7279(DECODE1+1,key_number/16); //在第2位显示键码高8位
63 4 write7279(DECODE1,key_number&0x0f); //在第1位显示键码低8位
64 4 while (!key); //等待按键按下
65 4 wait_cnter=0;
66 4 }
67 3 wait_cnter++;
68 3 } while (key_number!=0 && wait_cnter<0x30000);
69 2 //如果按键为'0'和超时则进入下一步演示
70 2 write7279(BLINKCTL,0xff); //清除闪烁设置
71 2 /****************快速计数演示程序***************************/
72 2 for (j=0;j<5;j++) //计数初始值为00000
73 2 {
74 3 digit[j]=0;
75 3 write7279(DECODE0+j,digit[j]);
76 3 write7279(DECODE0+5,0x0e); //显示P
77 3 }
78 2 while (digit[4]<2) //如果计数到20000就停止
79 2 {
80 3 digit[0]++;
81 3 if (digit[0]>9)
82 3 {
83 4 digit[0]=0;
84 4 digit[1]++;
85 4 if (digit[1]>9)
86 4 {
87 5 digit[1]=0;
88 5 digit[2]++;
89 5 if (digit[2]>9)
90 5 {
91 6 digit[2]=0;
92 6 digit[3]++;
93 6 if (digit[3]>9)
94 6 {
95 7 digit[3]=0;
96 7 digit[4]++;
97 7 if (digit[4]>9)
98 7 {
99 8 digit[4]=0;
100 8 }
101 7 }
102 6 }
103 5 }
104 4 }
105 3 write7279(DECODE0,digit[0]);
106 3 if (digit[0]==0)
107 3 {
108 4 write7279(DECODE0+1,digit[1]);
109 4 if (digit[1]==0)
110 4 {
111 5 write7279(DECODE0+2,digit[2]);
112 5 if (digit[2]==0)
113 5 {
114 6 write7279(DECODE0+3,digit[3]);
115 6 if (digit[3]==0)
116 6 {
117 7 write7279(DECODE0+4,digit[4]);
C51 COMPILER V8.02 4_3_4 12/13/2007 12:52:34 PAGE 3
118 7 }
119 6 }
120 5 }
121 4 }
122 3 }
123 2 delay10ms(150);
124 2 send_byte(CMD_RESET); //清除显示
125 2 /************下载数据但不译码指令测试程序***************/
126 2 write7279(UNDECODE+7,0x49); //在第8位按不译码方式显示一字符'三'
127 2 delay10ms(80);
128 2 /***********循环左右移测试'三'字向右移动23次,再向左移动23次*******************/
129 2 for (j=0;j<23;j++)
130 2 {
131 3 send_byte(RTR_CYCLE); //循环右移23次
132 3 delay10ms(12);
133 3 }
134 2 for (j=0;j<23;j++)
135 2 {
136 3 send_byte(RTL_CYCLE); //循环左移23次
137 3 delay10ms(12);
138 3 }
139 2 /***********译码方式0及左移指令测试程序*******************/
140 2 for (j=0;j<16;j++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -