led_hardware2.lst
来自「自己的平时一些制作 现在整理一下 与大家一起分享」· LST 代码 · 共 111 行
LST
111 行
C51 COMPILER V7.20 LED_HARDWARE2 03/04/2007 15:19:57 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LED_HARDWARE2
OBJECT MODULE PLACED IN led_hardware2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE led_hardware2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2
3 /******led 接口描述******/
4 //P0--->(a-g,dot) 显示
5 //选择使能控制段
6 //P2^3--->使能左第一个数码管 P2^2--->左第二个数码管
7 //P2^1--->左第三个数码管 P2^0--->左第四个数码管
8
9
10 /*********显示数据表************/
11 //前16个对应0-9 ,a-f,后面三个0x73 0x40,0x00分别对应字符P,-,空
12
13 unsigned char code table[19]={0x3f,6,0x5b,0x4f,
14 0x66,0x6d,0x7d,7,0x7f,0x6f,0x77,
15 0x7c,0x58,0x5e,0x79,0x71,0x73,0x40,0x00};
16 /**********显示选择表***********************/
17 unsigned char code digit[4]={0xf8,0xf4,0xf2,0xf1};
18
19 /*****定义一个数组用于存放将要显示的值*******/
20 unsigned char d[4]={16,17,17,17};
21 /*****定义一个全局变量 number******/
22 unsigned char number; //number 表示第几个显示 0-3
23 /******定义一个全局变量 flag*******/
24 unsigned char flag; //指示当前状态的变量 <100 显示 >100 灭.用于闪烁
25 /****软件延时 DELAY ms****/
26 void Software_Delay(const unsigned int DELAY)
27 {
28 1 unsigned int x, y;
29 1
30 1 for (x = 0; x <= DELAY; x++)
31 1 {
32 2 for (y = 0; y <= 120; y++);
33 2 }
34 1 }
35
36 /********定时器0中断服务程序***************/
37 void timer0(void) interrupt 1
38 {
39 1 TR0=0; //停止定时器0
40 1 TH0=(65536-1000)/256; //通过定时器定时延时大约1ms左右
41 1 TL0=(65536-1000)%256;
42 1 if (flag<100)
43 1 {
44 2 for(number=0;number<=3;number++)
45 2 {//number=(number+1)%4;
46 3 P2=digit[number]; //选择第number个数码管显示
47 3 P0=table[d[number]]; //查表显示要显示的值
48 3 Software_Delay(1);
49 3 }
50 2 }
51 1 else
52 1 {
53 2 for(number=0;number<=3;number++)
54 2 {//number=(number+1)%4;
55 3 P2=digit[number]; //选择第number个数码管显示
C51 COMPILER V7.20 LED_HARDWARE2 03/04/2007 15:19:57 PAGE 2
56 3 P0=0x00; //查表显示要显示的值
57 3 Software_Delay(1);
58 3 }
59 2
60 2 }
61 1 flag=(flag+1)%200;
62 1 TR0=1; //启动定时器0
63 1
64 1 }
65
66 /******定时器初始化函数**********/
67 void Init_Timer (void)
68 {
69 1 TMOD=0x01; //
70 1 TH0=(65536-1000)/256; //通过定时器定时延时大约1ms左右
71 1 TL0=(65536-1000)%256;
72 1 EA=1;
73 1 ET0=1;
74 1 TR0=1;
75 1 }
76
77
78 /********主函数************/
79 //效果就是用定时器服务程序的实现数码管动态显示P---且有闪烁
80 /*************************/
81 void main (void)
82 {
83 1 Init_Timer();
84 1 while(1);
85 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 203 ----
CONSTANT SIZE = 23 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?