📄 ir.lst
字号:
C51 COMPILER V7.05 IR 02/16/2006 21:27:56 PAGE 1
C51 COMPILER V7.05, COMPILATION OF MODULE IR
OBJECT MODULE PLACED IN IR.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe IR.C DB OE
stmt level source
1 //参考程序B: C程序 //IR.C
2 //程序说明:此程序接收红外发射过来的数据解码后由CPU读取并显示在LED数码管上.
3 #include <c8051f020.h> /*SFR定义*/
4 #include <intrins.h>
5 #define PORTA 0x8000 /*8255的A口*/
6 #define PORTB 0x8001 /*8255的B口*/
7 #define PORTC 0x8002 /*8255的C口*/
8 #define PORTCON 0x8003 /*8255的控制口*/
9 #define DataPort 0x8400 /*红外数据接收口*/
10 void PORT_Init (void); //端口初始化
11 void displayled(void) ;//显示1位数据
12 sbit BUZ = P3^5;
13 unsigned char ReadFlag; /*读红外数据标志*/
14 unsigned char ReadData,IRData;
15 unsigned char WE[6]={1,2,4,8,0x10,0x20}; //位选
16 void sleep_ms(unsigned int count)//延时
17 {
18 1 unsigned char ii,jj;
19 1 for(ii=0;ii<count;ii++)
20 1 {
21 2 for(jj=0;jj<250;jj++)
22 2 _nop_();
23 2 }
24 1 }
25 void INITEXINT67(void)
26 {
27 1 EIE2 |= 0x10; /*允许外部中断6*/
28 1 }
29 void INT6_ISR(void) interrupt 18
30 {
31 1 P3IF &= ~0x40; /*清外部中断6标志*/
32 1 ReadFlag = 0x01; /*置允许读标志*/
33 1 }
34 void main (void) {
35 1 unsigned char xdata *idata Pointir;
36 1 WDTCN = 0xde; /*无效看门狗*/
37 1 WDTCN = 0xad;
38 1 PORT_Init(); /*输入/输出口初始化*/
39 1 INITEXINT67(); /*初始化外部中断6*/
40 1 EA=1; /*开总中断*/
41 1 ReadFlag=0;
42 1 while(1){
43 2 while(ReadFlag==0x00); /*是否允许读红外数据*/
44 2 Pointir=DataPort;
45 2 ReadData=*Pointir; /*读红外数据*/
46 2 if((ReadData&0x80)==0x00) continue; /*是否接到红外数据*/
47 2 IRData = (~ReadData )&0x0f; /*保存收到的红外数据*/
48 2 BUZ = 0; /*蜂鸣器响*/
49 2 sleep_ms(250);
50 2 BUZ = 1; /*蜂鸣器灭*/
51 2 displayled() ;//显示1位数据
52 2 do{
53 3 ReadData = *Pointir;
54 3 }while((ReadData&0x80)==0x80); /*上次红外中断是否结束*/
55 2 _nop_();
C51 COMPILER V7.05 IR 02/16/2006 21:27:56 PAGE 2
56 2 }
57 1 _nop_();
58 1 }
59 void PORT_Init (void)
60 {
61 1 EMI0CF |= 0x2c; /*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高*/
62 1 /*低脉宽占1个SYSCLK周期*/
63 1 EMI0TC |= 0x6d; /*地址建立/保持时间占1个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/
64 1 P74OUT=0x3f; /*P7为漏极开路,P4,P5,P6为推拉方式*/
65 1 }
66 void displayled(void)
67 {unsigned int i;
68 1 unsigned char k;
69 1 char j;
70 1 unsigned char xdata * Pointm;
71 1 unsigned char code F7SEG[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
72 1 0x39,0x5e,0x79,0x71};
73 1 Pointm=PORTCON;
74 1 *Pointm=0x80; //8255初始化,设定B口输出,C口输出,A口不用
75 1 while(1) //循环显示
76 1 {
77 2 k=F7SEG[IRData]; // 查表,得到字形码数值存放在变量K中
78 2 Pointm=PORTB; // B口存放字位码
79 2 *Pointm=0x01; //从左边第一位数码管开始显示数字
80 2 Pointm=PORTC; //C口存放字形码
81 2 *Pointm=k; //显示K中存放的字形码
82 2 }
83 1 }
*** WARNING C280 IN LINE 67 OF IR.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 69 OF IR.C: 'j': unreferenced local variable
84
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 150 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 3
IDATA SIZE = ---- 2
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -