?? text1.c
字號(hào):
/*--------------------------------------
芯片 :STC12C5A60S2
晶振 :11.0592MHZ
開發(fā)平臺(tái):KEIL
功能 :串口一或者串口二都可以通過上位機(jī)控制30路繼電器
波特率 :9600BPS
日期 :11.5.19
注意 :下載完程序后請(qǐng)復(fù)位系統(tǒng)!!(切記!)
--------------------------------------*/
#include "STC12C5A60S2.h"
#include"jdq30.h"
#define uchar unsigned char
#define uint unsigned int
uchar dat;
void init ()
{
//串口2波特率
TMOD = 0x20; //定時(shí)器1產(chǎn)生波特率
SCON = 0x50; //方式1,8位數(shù)據(jù),波特率可變
TH1=TL1 = 0xfd; //波特率 9600
//串口1波特率
S2CON = 0x50; //方式1,八位數(shù)據(jù),可變波特率
BRT=0XFD; //設(shè)置波特率9600
TR1=1; //啟動(dòng)定時(shí)器產(chǎn)生串口2波特率
AUXR=0x10; //啟動(dòng)串口1波特率發(fā)生器
IP=0x00; //優(yōu)先級(jí)默認(rèn)
EA=1; //開總中斷
ES=1; //開串口1中斷
IE2=0x01; //開串口2中斷
}
/*
// 串口一 發(fā)送一個(gè)字符
void uart1_txd(uchar x)
{
SBUF = x;
}
// 串口二 發(fā)送一個(gè)字符
void uart2_txd(uchar x)
{
S2BUF = x;
}
*/
/*--------------------------------------
延時(shí)函數(shù)
--------------------------------------*/
void delay ( uint t )
{
uint i,j;
for( i=0; i<t; i++)
for( j=0; j<250; j++);
}
/*--------------------------------------
主函數(shù)
--------------------------------------*/
void main()
{
uchar k=10;
P4SW|=0x20; //配置P4.5為IO口
P4M0|=0x10; //配置P4.4為IO口
P4M1|=0x10;
P0=P1=P2=P3=0xff;
P4|=0x30;
init();//串口初始化
while(1)
{
/********************************************************************
接收數(shù)據(jù)判斷函數(shù)
*********************************************************************/
switch(dat) //接收數(shù)據(jù)判斷
{
case 'I':
P0=P2=0;
P1&=0x0c;
P3&=0x03;
P4&=0xcf;
delay(200);
init();
break; // 全開
case 'i':
P3=P1=P0=P2=0XFF;
P4|=0x30;
delay(k);
break; // 全關(guān)
case 'A': OUT1=0;delay(k);break; // 第一路開
case 'B': OUT2=0;delay(k);break; // 第二路開
case 'C': OUT3=0;delay(k);break; // 第三路開
case 'D': OUT4=0;delay(k);break; // 第四路開
case 'E': OUT5=0;delay(k);break; // 第五路開
case 'F': OUT6=0;delay(k);break; // 第六路開
case 'G': OUT7=0;delay(k);break; // 第七路開
case 'H': OUT8=0;delay(k);break; // 第八路開
case 'J': OUT9=0;delay(k);break; // 第九路開
case 'K': OUT10=0;delay(k);break; // 第十路開
case 'L': OUT11=0;delay(k);break; // 第十一路開
case 'M': OUT12=0;delay(k);break; // 第十二路開
case 'N': OUT13=0;delay(k);break; // 第十三路開 case 'O': OUT14=0;delay(k);break; // 第十四路開 case 'P': OUT15=0;delay(k);break; // 第十五路開 case 'Q': OUT16=0;delay(k);break; // 第十六路開
case 'R': OUT17=0;delay(k);break; // ...
case 'S': OUT18=0;delay(k);break; // ...
case 'T': OUT19=0;delay(k);break; // ...
case 'U': OUT20=0;delay(k);break; // ...
case 'V': OUT21=0;delay(k);break; // ...
case 'W': OUT22=0;delay(k);break; // ...
case 'X': OUT23=0;delay(k);break; // ...
case 'Y': OUT24=0;delay(k);break; // ...
case 'Z': OUT25=0;delay(k);break; // ...
case '1': OUT26=0;delay(k);break; // ...
case '2': OUT27=0;delay(k);break; // ...
case '3': OUT28=0;delay(k);break; // ...
case '4': OUT29=0;delay(k);break; // ...
case '5': OUT30=0;delay(k);break; // 第三十路開
case 'a': OUT1=1;delay(k);break; // 第一路關(guān)
case 'b': OUT2=1;delay(k);break; // 第二路關(guān)
case 'c': OUT3=1;delay(k);break; // 第三路關(guān)
case 'd': OUT4=1;delay(k);break; // 第四路關(guān)
case 'e': OUT5=1;delay(k);break; // 第五路關(guān)
case 'f': OUT6=1;delay(k);break; // 第六路關(guān)
case 'g': OUT7=1;delay(k);break; // 第七路關(guān)
case 'h': OUT8=1;delay(k);break; // 第八路關(guān)
case 'j': OUT9=1;delay(k);break; // ...
case 'k': OUT10=1;delay(k);break; // ...
case 'l': OUT11=1;delay(k);break; // ...
case 'm': OUT12=1;delay(k);break; // ...
case 'n': OUT13=1;delay(k);break; // ...
case 'o': OUT14=1;delay(k);break; // ...
case 'p': OUT15=1;delay(k);break; // ...
case 'q': OUT16=1;delay(k);break; // ...
case 'r': OUT17=1;delay(k);break; // ...
case 's': OUT18=1;delay(k);break; // ...
case 't': OUT19=1;delay(k);break; // ...
case 'u': OUT20=1;delay(k);break; // ...
case 'v': OUT21=1;delay(k);break; // ...
case 'w': OUT22=1;delay(k);break; // ...
case 'x': OUT23=1;delay(k);break; // ...
case 'y': OUT24=1;delay(k);break; // ...
case 'z': OUT25=1;delay(k);break; // ...
case '6': OUT26=1;delay(k);break; // ...
case '7': OUT27=1;delay(k);break; // ...
case '8': OUT28=1;delay(k);break; // ...
case '9': OUT29=1;delay(k);break; // ...
case '0': OUT30=1;delay(k);break; // 第三十路關(guān)
default:break; // 跳出
}
}
}
/*--------------------------------------
串口一 發(fā)送接收中斷函數(shù)
--------------------------------------*/
void uart_isr() interrupt 4
{
if( RI ) RI = 0;
dat = SBUF;
if( TI ) TI = 0;
}
/*--------------------------------------
串口二 發(fā)送接收中斷函數(shù)
--------------------------------------*/
void uart2_isr() interrupt 8
{
if( S2CON & 0x01 )
{
S2CON &= ~0x01;
dat= S2BUF;
}
if( S2CON & 0x02 )
{
S2CON &= ~0x02;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -