📄 hdp.lst
字号:
C51 COMPILER V7.50 HDP 08/10/2007 11:20:48 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE HDP
OBJECT MODULE PLACED IN HDP.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE HDP.c OMF2 BROWSE DEBUG
line level source
1 //====================================================================================
2 // HDP.c 晃动屏程序
3 //====================================================================================
4 //
5 // 版权所有: Copyright (C) 2007 Wellsin Studio
6 // 编 写: 老 酷
7 // 版 本: V1.0
8 // 日 期: 2007-08-09
9 // 目标器件: C8051F330D
10 // 开发工具: KEIL 'c'
11 //
12 //====================================================================================
13 // 包含文件
14 //====================================================================================
15 #include <c8051f330.h>
16 #include <5x8_ascii_dot.c>
17 //====================================================================================
18 // 常数预定义
19 //====================================================================================
20 #define BYTE unsigned char
21 #define WORD unsigned int
22 //====================================================================================
23 // 端口定义
24 //====================================================================================
25 sbit KEY1 = P0^7;
26 sbit KEY2 = P1^7;
27 sbit KEY3 = P2^0;
28
29 #define G_Port P0
30 #define R_Port P1
31 //====================================================================================
32 // 全局变量
33 //====================================================================================
34 BYTE str1[8]={"LAO KU "};
35 BYTE color;
36 //====================================================================================
37 // 函数原形
38 //====================================================================================
39 void PORT_Init (void);
40 void Reset_Sources_Init();
41
42 Delay_ms(WORD ms);
43 //====================================================================================
44 // 主程序
45 //====================================================================================
46 void main (void)
47 {
48 1 OSCICN = 0x81; // 初始化系统时钟
49 1 PCA0MD &= ~0x40; // 禁止WDT
50 1 PORT_Init (); // 端口初始化
51 1 Reset_Sources_Init(); // 复位源初始化
52 1 TCON=0x01;
53 1 IE = 0x81;
54 1 IT01CF = 0x07;
55 1 color=1;
C51 COMPILER V7.50 HDP 08/10/2007 11:20:48 PAGE 2
56 1 while(1)
57 1 {
58 2 if(!KEY2) // 判断是否有键按下
59 2 {
60 3 Delay_ms(100); // 延时消抖动
61 3 if(!KEY2)
62 3 {
63 4 while(!KEY2){}; // 等待键放开
64 4 color++; // 改变颜色
65 4 if(color>3){color=1;}
66 4 R_Port=G_Port=0xFF;
67 4 switch(color) // 确定颜色
68 4 {
69 5 case 1: R_Port=0x80; break; // 红
70 5 case 2: G_Port=0x80; break; // 绿
71 5 case 3: R_Port=G_Port=0x80; break; // 红+绿=黄
72 5 default:break;
73 5 }
74 4 }
75 3 }
76 2 }
77 1 }
78 //====================================================================================
79 // 中断服务程序
80 //====================================================================================
81 //----------------------------
82 // 外部中断0程序
83 //----------------------------
84 void INT0_ISR (void) interrupt 0
85 {
86 1 BYTE i,j,outbuf;
87 1 WORD dot;
88 1 R_Port=0xFF;
89 1 G_Port=0xFF;
90 1 Delay_ms(450);
91 1 for(i=0;i<8;i++)
92 1 {
93 2 dot=(str1[i]-0x20)*5; // 计算字符在点阵中的首地址
94 2 for(j=0;j<5;j++)
95 2 { // 一个字符5列
96 3 outbuf=~(ASCII_Dot[dot+j]>>1);
97 3 switch(color) // 确定颜色
98 3 {
99 4 case 1: R_Port=outbuf; break; // 红
100 4 case 2: G_Port=outbuf; break; // 绿
101 4 case 3: R_Port=G_Port=outbuf; break; // 红+绿=黄
102 4 default:break;
103 4 }
104 3 Delay_ms(15);
105 3 R_Port=G_Port=0xFF;
106 3 Delay_ms(5);
107 3 }
108 2 Delay_ms(15);
109 2 }
110 1 IE0=0;
111 1 }
112 //====================================================================================
113 // 子程序
114 //====================================================================================
115
116 //----------------------------------------
117 // 延时子程序
C51 COMPILER V7.50 HDP 08/10/2007 11:20:48 PAGE 3
118 //----------------------------------------
119 //
120 Delay_ms(WORD ms)
121 {
122 1 WORD i;
123 1 while(ms!=0)
124 1 {
125 2 for(i=50;i>0;i--){}
126 2 ms--;
127 2 }
128 1 }
129 //----------------------------------------
130 // 端口初始化
131 //----------------------------------------
132 void PORT_Init (void)
133 {
134 1 XBR1 = 0x40; // 交叉开关打开
135 1 P0MDOUT = 0x7F;
136 1 P1MDOUT = 0x7F;
137 1
138 1 P0SKIP = 0x0B;
139 1 }
140 //----------------------------------------
141 // 复位源初始化
142 //----------------------------------------
143 void Reset_Sources_Init()
144 {
145 1 WORD i;
146 1 i = 0;
147 1 VDM0CN = 0x80; // 允许内部电压监视器
148 1 for (i = 0; i < 350; i++); // 延时等待电压监视器稳定
149 1 RSTSRC = 0x06; // 允许电压监视器复位、时钟丢失复位
150 1 }
151 //====================================================================================
152 // 结 束
153 //====================================================================================
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 349 ----
CONSTANT SIZE = 480 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -