📄 anjian.lst
字号:
C51 COMPILER V7.50 ANJIAN 10/25/2007 17:23:22 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ANJIAN
OBJECT MODULE PLACED IN anjian.OBJ
COMPILER INVOKED BY: D:\常用软件\80C51\KeilC51v750a_Full\KeilC51v750a_Full\安装\C51\BIN\C51.EXE anjian.c DEBUG OBJECTEXT
-END
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #define unchar unsigned char
4
5 unsigned char code TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,
6 0x5e,0x79,0x71}; //proteus里面CC数码管是共阴的
7
8 unchar m,sz[6];
9
10 sbit SDATA_595 = P3^6 ; /*串行数据输入14DS*/
11 sbit SCLK_595 = P3^4; /*移位时钟脉冲11SCH*/
12 sbit RCK_595 = P3^5; /*输出锁存器控制脉冲12STCP*/
13
14 static void WR_595(unsigned char data num2 )
15 {
16 1 unsigned char data count1;
17 1
18 1 for(count1=0;count1<=7;count1++)
19 1 {
20 2 if((num2&0x80)==0x80) /*最高位为1,则向SDATA_595发送1*/
21 2 SDATA_595=1; /*发出数据的最高位*/
22 2 else
23 2 SDATA_595=0;
24 2
25 2 num2<<=1; /*右移位*/
26 2 SCLK_595=0; /*产生上生沿*/
27 2 SCLK_595=1;
28 2
29 2 }
30 1
31 1 }
32 /*-------------------------------------------------------------------------------
33 打开锁存,更新74595输出子程序
34 ---------------------------------------------------------------------------------*/
35 static void Out_595(void)
36 {
37 1 RCK_595=0;
38 1 _nop_();
39 1 _nop_();
40 1 RCK_595=1; /*上升沿锁存数据*/
41 1
42 1 }
43
44 //判断键值//
45 unsigned char k; //键值判断//
46 void delay_10ms(void) //延时//
47 {
48 1 unsigned char i,j;
49 1 for(i=0;i>0;i--)
50 1 for(j=248;j>0;j--);
51 1 }
52 void Getch()
53 {
54 1 unsigned char x,y,z;
C51 COMPILER V7.50 ANJIAN 10/25/2007 17:23:22 PAGE 2
55 1 P2=0xff;
56 1 P2=0x0f; //先对P2置数,进行行扫描//
57 1 if(P2!=0x0f) //判断是否有键按下//
58 1 {
59 2 delay_10ms(); //软件延时//
60 2 if(P2!=0x0f) //确认是否按下//
61 2 {
62 3 x=P2;
63 3 P2=0xf0; //列扫描//
64 3 y=P2;
65 3 z=x^y; //用Z取出键值//
66 3 switch(z) //判断键值//
67 3 {
68 4 case 0x77: k=0; break; //对按键附值//
69 4 case 0x7b: k=1; break;
70 4 case 0x7d: k=2; break;
71 4 case 0x7e: k=3; break;
72 4 case 0xb7: k=4; break;
73 4 case 0xbb: k=5; break;
74 4 case 0xbd: k=6; break;
75 4 case 0xbe: k=7; break;
76 4 case 0xd7: k=8; break;
77 4 case 0xdb: k=9; break;
78 4 case 0xdd: k=10;break;
79 4 case 0xde: k=11;break;
80 4 case 0xe7: k=12;break;
81 4 case 0xeb: k=13;break;
82 4 case 0xed: k=14;break;
83 4 case 0xee: k=15;break;
84 4 }
85 3 }
86 2 }
87 1 }
88
89 //显示//
90 void disp(void)
91 {
92 1 WR_595(TAB[k]);
93 1 WR_595(0x00);
94 1 Out_595();
95 1
96 1 }
97
98 void main(void) //主程序
99 {
100 1 while(1)
101 1 { P2=0x00;
102 2 Getch();
103 2 disp();
104 2 }
105 1 }
106
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 232 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.50 ANJIAN 10/25/2007 17:23:22 PAGE 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -