📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 12/03/2006 19:49:13 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 ////////////////////////////
2 //private counter
3 //cjy 2006 11.28 at GDUT
4 ///////////////////////////
5 #include "reg51.h"
6 #include"24c02.h"
7 ////////端口定义///////////
8 #define data_port P0
9 #define bit_port P2
10 sbit total_led =P3^1;//总计数LED
11 sbit src =P3^0;//可控硅
12 sbit relay =P3^6;//继电器
13 ///////按键定义///////////
14 #define set 1
15 #define right 2
16 #define up 3
17 #define rst 4
18 /////////led数码管笔画表////////////
19 unsigned char code led_tab[]={
20 0xC0,/*0*/
21 0xF9,/*1*/
22 0xA4,/*2*/
23 0xB0,/*3*/
24 0x99,/*4*/
25 0x92,/*5*/
26 0x82,/*6*/
27 0xF8,/*7*/
28 0x80,/*8*/
29 0x90,/*9*/
30 0x88,/*A*/
31 0x83,/*b*/
32 0xBF,/*-*/};
33 ///////函数声明/////////////////////
34 void sys_init(void);
35 void delay(unsigned int t);
36 void led_diplay(void);
37 unsigned char scan_key(void);
38 unsigned char get_key(void);
39 void conver(void);
40 void read_all(void);
41 ///////变量声明/////////////////////
42 unsigned char buff_pointer=0;
43 struct buff
44 {
45 unsigned char bits[7];
46 unsigned int num;
47 };
48 struct buff led_buff[3];
49
50 ////////////主函数//////////////////
51 void main(void)
52 {
53 1 sys_init();//系统初始化
54 1 x24c02_init();//初始化EEPROM
55 1 //read_all();//从EEPROM读出各个计数值
C51 COMPILER V7.06 MAIN 12/03/2006 19:49:13 PAGE 2
56 1 led_buff[0].num=12345;
57 1 while(1){
58 2 conver();
59 2 led_diplay();}
60 1 while(1)
61 1 {
62 2 //unsigned char key;
63 2 switch(get_key())
64 2 {
65 3 case set: ; break;
66 3 case right: ; break;
67 3 case up: led_buff[0].num-- ; break;
68 3 case rst: led_buff[0].num++ ; break;
69 3 default: ; break;
70 3 }while(1){
71 3 conver();
72 3 led_diplay();}
73 2
74 2 }
75 1 }
76 //INT0中断服务程序
77 void INT0_ISR (void) interrupt 0
78 {
79 1
80 1 total_led=~total_led;
81 1 //src=~src;
82 1 //relay=~relay;
83 1 }
84
85 void sys_init(void)
86 {
87 1 //这里编写需要初始化的参数
88 1 total_led=0;
89 1 IT0=1;//负边缘触发
90 1 EX0=1;//开INT0中断
91 1 EA=1;//开总中断
92 1
93 1 }
94 unsigned char scan_key(void)
95 {
96 1 unsigned char result=0;
97 1 P1|=0x78;//01111000
98 1 //if(P1&0x78!=0x78)
99 1 switch (P1&0x78)
100 1 {
101 2 case 0x38: result=1; break;
102 2 case 0x58: result=2; break;
103 2 case 0x68: result=3; break;
104 2 case 0x70: result=4; break;
105 2 default: result=0; break;
106 2 }
107 1 return result;
108 1 }
109
110 unsigned char get_key(void)
111 {
112 1 unsigned char temp1,key_num=0;
113 1 unsigned int i=8000;//按键时间
114 1 if((temp1=scan_key())!=0);
115 1 {
116 2 delay(30);
117 2 if(temp1==scan_key())
C51 COMPILER V7.06 MAIN 12/03/2006 19:49:13 PAGE 3
118 2 {
119 3 key_num=temp1;
120 3 while(scan_key()!=0&&i--);//放开按键或时间到都可以退出循环
121 3 }
122 2 }
123 1 return key_num;
124 1 }
125
126 void delay(unsigned int t)
127 {
128 1 unsigned int i;
129 1 for(i=0;i<t;i++)//
130 1 ;
131 1 }
132 void conver(void)
133 {
134 1 unsigned int i;
135 1 unsigned char j;
136 1 i=led_buff[buff_pointer].num;
137 1 for(j=0;j<6;j++)
138 1 {
139 2 led_buff[buff_pointer].bits[j]=i%10;
140 2 i/=10;
141 2 }
142 1 }
143 void led_display(void)
144 {
145 1 unsigned char k,temp,num;
146 1 temp=0x80;
147 1 for(k=0;k<6;k++)//从右到左扫描,低位到高位
148 1 {
149 2 num=led_buff[0].bits[0];
150 2 data_port=led_tab[num];
151 2 bit_port=~temp;
152 2 temp=temp>>1;
153 2 delay(300);
154 2 bit_port=0xff;//消除鬼影
155 2 //delay(10);
156 2 }
157 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 242 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 28 6
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 + -