📄 595.lst
字号:
C51 COMPILER V8.02 595 04/19/2009 22:58:40 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 595
OBJECT MODULE PLACED IN 595.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 595.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <intrins.h> /*used for _nop_() function*/
3
4 #define duanma P0
5 #define uchar unsigned char
6
7 sbit SDATA_595 =P1^0 ; /*串行数据输入*/
8 sbit RCK_595 =P1^1 ; /*输出锁存器控制脉冲*/
9 sbit SCLK_595 = P1^2; /*移位时钟脉冲*/
10
11
12
13 /****************************************************************/
14 //显示段码
15 unsigned char data disp_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
16 0x99,0x92,0x82,0xf8,0x80,0x90,0xff};// 4, 5, 6, 7, 8, 9, off
17
18
19 /****************************************************************/
20 /***************************************************************************/
21 void delay_1ms(unsigned int ms)
22 {
23 1 unsigned char i;
24 1 while(ms--)
25 1 for(i=0;i<20;i++);
26 1 }
27 /***************************************************************************/
28
29 /*写数据到74HC595函数*/
30 void WR_595(uchar data num2)
31 {
32 1 uchar data count1;
33 1
34 1 for(count1=0;count1<=7;count1++)
35 1 {
36 2 if((num2&0x80)==0x80) /*最高位为1,则向SDATA_595发送1*/
37 2 SDATA_595=1;/*发出数据的最高位*/
38 2 else
39 2 SDATA_595=0;
40 2
41 2 num2<<=1; /*左移位*/
42 2 SCLK_595=0;
43 2 _nop_();
44 2 _nop_();
45 2 SCLK_595=1; /*产生上升沿*/
46 2
47 2 }
48 1
49 1 }
50
51 /****************************************************************/
52 /*更新74HC595输出数据函数void Out_595(void)*/
53 void Out_595(void)
54 {
55 1 RCK_595=0;
C51 COMPILER V8.02 595 04/19/2009 22:58:40 PAGE 2
56 1 _nop_();
57 1 _nop_();
58 1 RCK_595=1; /*上升沿锁存数据*/
59 1
60 1
61 1 }
62
63 /****************************************************************/
64 void Led_Drive(void)
65 {
66 1
67 1
68 1 while(1)
69 1 {
70 2
71 2 WR_595(0x01);
72 2 Out_595();
73 2 duanma=disp_code[1];
74 2 delay_1ms(2);
75 2 duanma=disp_code[10];
76 2
77 2 WR_595(0x02);
78 2 Out_595();
79 2 duanma=disp_code[2];
80 2 delay_1ms(2);
81 2 duanma=disp_code[10];
82 2
83 2 WR_595(0x04);
84 2 Out_595();
85 2 duanma=disp_code[3];
86 2 delay_1ms(2);
87 2 duanma=disp_code[10];
88 2
89 2 WR_595(0x08);
90 2 Out_595();
91 2 duanma=disp_code[4];
92 2 delay_1ms(2);
93 2 duanma=disp_code[10];
94 2
95 2 WR_595(0x10);
96 2 Out_595();
97 2 duanma=disp_code[5];
98 2 delay_1ms(2);
99 2 duanma=disp_code[10];
100 2
101 2 WR_595(0x20);
102 2 Out_595();
103 2 duanma=disp_code[6];
104 2 delay_1ms(2);
105 2 duanma=disp_code[10];
106 2
107 2 WR_595(0x40);
108 2 Out_595();
109 2 duanma=disp_code[7];
110 2 delay_1ms(2);
111 2 duanma=disp_code[10];
112 2
113 2 WR_595(0x80);
114 2 Out_595();
115 2 duanma=disp_code[8];
116 2 delay_1ms(2);
117 2 duanma=disp_code[10];
C51 COMPILER V8.02 595 04/19/2009 22:58:40 PAGE 3
118 2
119 2 }
120 1 }
121 /****************************************************************/
122 main()
123 {
124 1
125 1 Led_Drive(); //自身是个无限循环显示的程序
126 1
127 1
128 1
129 1 }
130 //当MR为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口。
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 199 ----
CONSTANT SIZE = ---- ----
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 + -