📄 main.lst
字号:
C51 COMPILER V8.05a MAIN 07/26/2007 10:43:26 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\main.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\main.lst
-) OBJECT(main.obj)
line level source
1 //********************************************************************************************************
-*
2 //********************************************************************************************************
-*
3 //***<程序名>:跑马灯 ***
4 //*** ***
5 //***<功能>:通过2个按钮实现8个LED灯以5种不同闪烁模式和4种速度的切换。 ***
6 //***<芯片>:AT89C51 ***
7 //***<作者>:程沛 ***
8 //***<完成时间>:2007年7月25日。 ***
9 //********************************************************************************************************
-*
10 //********************************************************************************************************
-*
11
12
13 //********************************************************************************************************
-*
14 //* *
15 //* ************************************头文件以及宏定义************************************ *
16 //* *
17 //********************************************************************************************************
-*
18
19 #include<reg51.h>
20
21 #define LEDPort P1
22
23 //********************************************************************************************************
-*
24 //* *
25 //* ************************************全局变量定义************************************ *
26 //* *
27 //********************************************************************************************************
-*
28 unsigned char aucLED_SELECT_01[9]=
29 {0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,};
30 //方式0,方式1灯开关数组。
31 unsigned char aucLED_SELECT_23[5]=
32 {0xFF,0x7E,0xBD,0xDB,0xE7};
33 //方式2,方式3灯开关数组。
34
35 unsigned char _i=0; //数据选择计数。
36
37 unsigned char uc_Mode=0; //模式选择,默认为模式0。
38
39 unsigned char uc_Count=1; //定时器中断计数。
40
41 unsigned char uc_Delay=1; //延迟计数,通过改变改数值改变灯状态延迟时间。
42 //灯延迟时间=uc_Dalay*定时器溢出时间。
43
44
45
46 //********************************************************************************************************
C51 COMPILER V8.05a MAIN 07/26/2007 10:43:26 PAGE 2
-*
47 //* *
48 //* ************************************主函数************************************ *
49 //* *
50 //********************************************************************************************************
-*
51 void main()
52 {
53 1 TMOD=0x01; //定时器0模式一。
54 1 TH0=0x3C;
55 1 TL0=0xB0; //溢出时间:50ms。
56 1 TR0=1; //定时器0开启。
57 1
58 1 IT0=1; //外部中断0下降沿触发。
59 1 IT1=1; //外部中断1下降沿触发。
60 1
61 1 EX0=1; //外部中断0开。
62 1 EX1=1; //外部中断1开。
63 1 ET0=1; //定时器0中断开。
64 1 EA=1; //总中断开。
65 1
66 1 while(1);
67 1 }
68
69
70 //********************************************************************************************************
-*
71 //* *
72 //* ************************************定时器0中断函数************************************ *
73 //* *
74 //*<函数功能>:当定时器0溢出时执行此函数,首先执行2个判断: *
75 //* (1)if判断是否改变灯的状态,可用于改变延时时间; *
76 //* (2)switch判断闪烁模式,根据不同模式对灯进行不同的通断。 *
77 //* 最后对定时器TH0,TL0重新赋值,溢出时间为50ms。 *
78 //* *
79 //********************************************************************************************************
-*
80
81 void vTimer0(void) interrupt 1
82 {
83 1
84 1 if(uc_Count%uc_Delay==0) //通过此判断语句来改变延时。,例如:当uc_Delay=6时,定时器
85 1 { //溢出5次时灯状态改变1次。同时uc_Count重新赋值1.否则,uc_Count++
86 2 uc_Count=1; //等待下一次溢出。因此可以改变延时。
87 2 switch(uc_Mode)
88 2 {
89 3 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<模式0,灯从上往下依次点亮,不断循环。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
->
90 3 case 0:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -