📄 shouchiji2.lst
字号:
C51 COMPILER V7.07 SHOUCHIJI2 09/16/2006 18:17:29 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE SHOUCHIJI2
OBJECT MODULE PLACED IN shouchiji2.OBJ
COMPILER INVOKED BY: D:\keil2\C51\BIN\C51.EXE shouchiji2.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**********************************************/
2 //题目:手持机启动程序
3 //功能:启动设备
4 //创作人:李焕杰
5 //创作时间:2006/08/08
6 /*********************************************/
7 #include <at892051.H>
8 #include <intrins.h>
9
10 #define unchar unsigned char
11 #define unint unsigned int
12
13 sbit hunzhan=P3^3;
14 sbit duizhan=P3^2;
15 sbit jia=P3^5;
16 sbit jian=P3^4;
17 sbit lamp=P3^7;
18 sbit lamphz=P1^0;
19 sbit lampdz=P1^1;
20 sbit qh=P1^2;//切换键,设置生命数还是子弹数
21
22 sbit LED_DATA=P1^5;//4094,显示
23 sbit LED_CLK=P1^4;
24 sbit LED_OE=P1^7;
25 sbit LED_STB=P1^6;
26
27 unchar i;qiehuan;
28 unint ming;zidan;
29
30 unint fashe1;fashe2;fashe3;
31 unchar Led[6];
32 unchar Countl,send,a,dsjs;
33 unchar code ledbuf[19] = // digit convert table segment=0,on
34 {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff, //共阴极段表
35 // 0 1 2 3 4 5 6 7 8 9 消隐
36 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
37 unchar code fsbuf[10] ={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90};
38
39 //**************
40 //*延时函数
41 //延时4个周期
42 //**************
43 void delay()
44 {
45 1 _nop_();
46 1 _nop_();
47 1 _nop_();
48 1 _nop_();
49 1 }
50
51 //*******************
52 //*4094显示函数
53 //*******************
54 void SendLED_Byte(unchar by)
55 {
C51 COMPILER V7.07 SHOUCHIJI2 09/16/2006 18:17:29 PAGE 2
56 1 unchar sa;
57 1 LED_CLK=0;
58 1 _nop_();
59 1 LED_DATA=0;
60 1 _nop_();
61 1 for(sa=0;sa<8;sa++)
62 1 {
63 2 LED_DATA=by&1;
64 2 by=by>>1;
65 2 delay();
66 2 LED_CLK=1;
67 2 delay();
68 2 LED_CLK=0;
69 2 delay();
70 2 }
71 1 }
72
73 void displed(unint mm,zz)
74 {
75 1 unchar jj,send;
76 1 LED_STB=1;
77 1 LED_OE=0;
78 1 Led[2]=mm/100;
79 1 Led[1]=(mm-Led[2]*100)/10;
80 1 Led[0]=(mm-Led[2]*100)%10;
81 1 Led[5]=zz/100;
82 1 Led[4]=(zz-Led[5]*100)/10;
83 1 Led[3]=(zz-Led[5]*100)%10;
84 1 for(jj=0;jj<6;jj++)
85 1 {
86 2 send=ledbuf[Led[jj]];
87 2 SendLED_Byte(send);
88 2 }
89 1 LED_OE=1;
90 1 }
91
92 //*********
93 //发射函数
94 //功能:实现三位十进制数转换成发射需要的十六进制数
95 //**********
96 void fshs(unint m,z)
97 {
98 1 unint fs1,fs2,fs3,fs4,fs5,fs6,fsm,fsz;
99 1 fs1=m/100;
100 1 fs2=(m-fs1*100)/10;
101 1 fs3=(m-fs1*100)%10;
102 1 fs4=z/100;
103 1 fs5=(z-fs4*100)/10;
104 1 fs6=(z-fs4*100)%10;
105 1 fsm=fsbuf[fs2];
106 1 fsz=fsbuf[fs4];
107 1 fsm=fsm>>4;
108 1 fsz=fsz>>4;
109 1 fashe1=fsbuf[fs1]^fsm;
110 1 fashe2=fsbuf[fs3]^fsz;
111 1 fsz=fsbuf[fs6];
112 1 fsz=fsz>>4;
113 1 fashe3=fsbuf[fs5]^fsz;
114 1 }
115
116 //*********
117 //*定时中断0
C51 COMPILER V7.07 SHOUCHIJI2 09/16/2006 18:17:29 PAGE 3
118 //**********
119 void timer0() interrupt 1 using 2
120 {
121 1 dsjs++;
122 1 if(dsjs==20)
123 1 {
124 2 dsjs=0;
125 2 a=a+1;
126 2 TR0=0;
127 2 TH0=0X4c; //定时50ms
128 2 TL0=0X00;
129 2 }
130 1 else
131 1 {
132 2 TH0=0X4c; //定时50ms
133 2 TL0=0X00;
134 2 }
135 1 }
136
137 /***********************************************
138 延时函数 //xms
139 ************************************************/
140 void delayxms(unint x)
141 { //延时程序,延时x毫秒
142 1 unint j;
143 1 do
144 1 {
145 2 j=300;
146 2 while(--j);
147 2 } while(--x);
148 1 }
149
150 main()
151 {
152 1 SP=0x50;
153 1 PCON=0X00;
154 1 SCON = 0x51; // Serial port1 data Mode 1 and enable receiver
155 1 TMOD = 0x22; // 定时器1方式2,定时器0方式2
156 1 TH1 = 0xe8; //定时器初值
157 1 TL1 = 0xe8;
158 1 TH0=0X4c; //定时50ms
159 1 TL0=0X00;
160 1 ET0=1;//定时器0允许
161 1 TR1=1;
162 1 EA=1;
163 1 lamp=1;
164 1 lamphz=1;
165 1 lampdz=1;
166 1 a=0;
167 1 ming=0;
168 1 zidan=100;
169 1 qiehuan=0;
170 1 displed(ming,zidan);
171 1 delayxms(20);
172 1 while(1)
173 1 {
174 2 _nop_();
175 2 _nop_();
176 2 if(!qh)
177 2 {
178 3 if(qiehuan==0)
179 3 qiehuan=1;
C51 COMPILER V7.07 SHOUCHIJI2 09/16/2006 18:17:29 PAGE 4
180 3 else
181 3 qiehuan=0;
182 3 delayxms(200);
183 3 }
184 2 if(!jia||!jian)
185 2 TR0=1;
186 2 else
187 2 {
188 3 TR0=0;
189 3 a=0;
190 3 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -