📄 dec.c
字号:
#include "reg51.h"
typedef unsigned char u8;
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
sbit P0_3 = P0^3;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit P1_5 = P1^5;
sbit P1_6 = P1^6;
sbit P1_7 = P0^7;
/*------------------------------------------------
P2 Bit Registers
------------------------------------------------*/
sbit P2_0 = 0xA0;
sbit P2_1 = 0xA1;
sbit P2_2 = 0xA2;
sbit P2_3 = 0xA3;
sbit P2_4 = 0xA4;
sbit P2_5 = 0xA5;
sbit P2_6 = 0xA6;
sbit P2_7 = 0xA7;
/*------------------------------------------------
P3 Bit Registers (Mnemonics & Ports)
------------------------------------------------*/
sbit P3_0 = 0xB0;
sbit P3_1 = 0xB1;
sbit P3_2 = 0xB2;
sbit P3_3 = 0xB3;
sbit P3_4 = 0xB4;
sbit P3_5 = 0xB5;
sbit P3_6 = 0xB6;
sbit P3_7 = 0xB7;
void SCI_INI(void); //sci_a init
void output(void);
void delay(int);
void com_isr(void);
u8 rec_flag=1;
int time_flag;
u8 buf1=0xeb;
u8 buf2=0x20;
u8 buf3; //address
u8 buf4=0xaa;
u8 buf5; //control code
u8 buf6=0x55;
void main(void)
{
P3_3=0;
delay(500);
P3_3=1;
delay(200);
P3_3=0;
delay(500);
P3_3=1;
SCI_INI();
while(1)
{
delay(1);
while (time_flag)
{
output();
delay(10);
time_flag-=1;
}
//output off
P1=P1 | 0x3c; // **1111**
P2=0;
P3_3=0;
}
}
void SCI_INI(void)
{
P0=0XFF;
P1=0Xff;
P2=0X0;
P3=0X0;
P3_0=1;
TMOD=0x20; //timer1 use as sci bord ,timer0 use as 16bit counter
TL1=0XFd;
TH1=0xfd; //sci bord speed=2400 when 11.052Mhz.
TR1=1; //timer1 enable
PCON=0X0;
SCON=0X50; //工作方式 1,接收允许
EA=1;
ES=1;
}
void com_isr(void) interrupt 4 using 1
{
u8 temp;
if (RI)
{
temp=SBUF;
if (temp==buf1) rec_flag=1;
switch (rec_flag)
{
case 1:
if(temp==0xeb) rec_flag+=1;
break;
case 2:
if(temp==0x20) rec_flag+=1;
else rec_flag=1;
break;
case 3:
buf3=temp; //recieve address
rec_flag+=1;
break;
case 4:
if(temp==0xaa) rec_flag+=1;
else rec_flag=1;
break;
case 5:
buf5=temp; //recieve contro code
rec_flag+=1;
break;
case 6:
if(temp==0x55)
{
if(buf3==P0) //address ok
{
//set output
P3_3=1;
time_flag=10;
}
}
rec_flag=1;
break;
default:
break;
}
RI=0;
}
}
void output(void)
{
switch (buf5)
{
case 0:
P1_2=0;
break;
case 1:
P1_3=0;
break;
case 2:
P1_4=0;
break;
case 3:
P1_5=0;
break;
/*
Up 5 00H p1.2
Down 4 01H p1.3
Left 3 02H p1.4
Right 2 03H p1.5
*/
case 4:
P2_3=1;
break;
case 5:
P2_2=1;
break;
case 6:
P2_5=1;
break;
case 7:
P2_4=1;
break;
case 8:
P2_1=1;
break;
case 9:
P2_0=1;
break;
/*
Near 8 04H p2.3 f+
Far 13 05H p2.2 f-
Iriso 7 06H p2.5 i+
Irisc 12 07H p2.4 i-
Zoom_out 14 08H p2.1 z+
Zoom_in 9 09H p2.0 z-
*/
case 0x31: //Light on 11 031H p1.0
P1_0=0;
break;
case 0x32: //Light off 11 032Hs p1.0
P1_0=1;
break;
case 0xb: //Wiper 6 0BH/02BH(关/开) p1.1
P1_1=1;
break;
case 0x2b:
P1_1=0;
break;
case 0xe: //Auto pan 1 0EH/0FH(关/开) p1.6
P1_6=1; //关
break;
case 0xf:
P1_6=0; //开
break;
case 0xc: //Camera Power 0C/0D(关/开) p1.7
P1_7=0;
break;
case 0xd:
P1_7=1;
break;
case 0x15: //Left up 15H --
break;
case 0x23: //Left down 23H --
break;
case 0x1a: //Right up 1AH --
break;
case 0x2a: //Right down 2AH --
break;
case 0xff: //所有动作停止(带开关的除外) OFFH
break;
default:
break;
}
}
void delay(int ms)
{
int i,j;
for (i=0;i<ms;i++)
for(j=0;j<255;j++);
}
/*============================================
p1.0~p1.6:1=OFF,p1.7:1=ON
p2.0~p2.5:1=ON
Up 5 00H p1.2
Down 4 01H p1.3
Left 3 02H p1.4
Right 2 03H p1.5
Near 8 04H p2.3 f+
Far 13 05H p2.2 f-
Iriso 7 06H p2.5 i+
Irisc 12 07H p2.4 i-
Zoom_out 14 08H p2.1 z+
Zoom_in 9 09H p2.0 z-
Wiper 6 0BH/02BH(关/开) p1.1
Camera Power 0C/0D(关/开) p1.7
Auto pan 1 0EH/0FH(关/开) p1.6
Left up 15H --
Left down 23H --
Light on 11 031H p1.0
Light off 11 032Hs p1.0
Right up 1AH --
Right down 2AH --
所有动作停止(带开关的除外) OFFH
============================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -