国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標(biāo)題:
DES加密在STC12C56單片機(jī)中實(shí)現(xiàn)程序
[打印本頁]
作者:
coolfire
時(shí)間:
2021-6-5 01:10
標(biāo)題:
DES加密在STC12C56單片機(jī)中實(shí)現(xiàn)程序
在STC12C56,直接下就可以使用
#include "STC12C56.h"
#include <stdio.h>
#include "TM1620.H"
#include "des.h"
#define FOSC 11059200L //System frequency
#define BAUD 57600 //UART baudrate
unsigned char code key_tab[]={0x05,0x51,0x80,0x01,0x05,0x51,0xFf,0xFF}; //密鑰
unsigned char code plain_tab[]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88}; //明文
uint times=0;
uchar RxdBuff[8];
uchar Uart_DES = 0;
uchar n;
void UartInit(void) //57600bps@11.0592MHz,開啟波特率倍速
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR &= 0xBF; //定時(shí)器1時(shí)鐘為Fosc/12,即12T
AUXR &= 0xFE; //串口1選擇定時(shí)器1為波特率發(fā)生器
TMOD &= 0x0F; //清除定時(shí)器1模式位
TMOD |= 0x20; //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
TL1 = 0xFF; //設(shè)定定時(shí)初值
TH1 = 0xFF; //設(shè)定定時(shí)器重裝值
ET1 = 0; //禁止定時(shí)器1中斷
TR1 = 1; //啟動(dòng)定時(shí)器1
ES = 1; //Enable UART interrupt
EA = 1; //Open master interrupt switch
}
void Delay200ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 9;
j = 104;
k = 139;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
unsigned char cipher1[8]; //密文緩存
UartInit();
Display_num(1,BAUD/10000%10,0);
Display_num(2,BAUD/1000%10,0);
Display_num(3,BAUD/100%10,0);
Display_num(4,BAUD/10%10,0);
Display_num(5,BAUD%10,0);
Delay200ms();
Delay200ms();
Init_TM1620();
des(plain_tab, key_tab, 1, cipher1);
ES = 0;
for(n=0;n<8;n++)
{
SBUF=cipher1[n]; //回應(yīng)發(fā)送者以成功接收
while(!TI);
TI = 0; //手動(dòng)清零發(fā)送中斷標(biāo)志位
}
ES = 1;
while(1)
{
times++;
if (times%10==0)
Display_Bit(1,0x80);
else
Display_Bit(1,0x00);
if(Uart_DES == 1)
{
Uart_DES = 0;
}
}
}
void Uart_Isr() interrupt 4
{
ES = 0;
if(SBUF==0xA5)
{
// uchar n;
RI=0;
// while(!RI);
// RI=0;
//Uart_len=SBUF; //接收數(shù)據(jù)長(zhǎng)度
Uart_DES = 1;
for(n=0;n<8;n++) //開始接收數(shù)據(jù)
{
while(!RI);
RI=0;
RxdBuff[n]=SBUF;
}
for(n=0;n<8;n++)
{
SBUF=RxdBuff[n]; //回應(yīng)發(fā)送者以成功接收
while(!TI);
TI = 0; //手動(dòng)清零發(fā)送中斷標(biāo)志位
}
}
else{
SBUF=0x0E; //回應(yīng)發(fā)送者接收失敗
while(!TI);
TI = 0;
RI=0;
}
ES=1;
}
#include "STC12C56.h"
#include <stdio.h>
#include "TM1620.H"
#include "des.h"
#define FOSC 11059200L //System frequency
#define BAUD 57600 //UART baudrate
unsigned char code key_tab[]={0x05,0x51,0x80,0x01,0x05,0x51,0xFf,0xFF}; //密鑰
unsigned char code plain_tab[]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88}; //明文
uint times=0;
uchar RxdBuff[8];
uchar Uart_DES = 0;
uchar n;
void UartInit(void) //57600bps@11.0592MHz,開啟波特率倍速
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR &= 0xBF; //定時(shí)器1時(shí)鐘為Fosc/12,即12T
AUXR &= 0xFE; //串口1選擇定時(shí)器1為波特率發(fā)生器
TMOD &= 0x0F; //清除定時(shí)器1模式位
TMOD |= 0x20; //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
TL1 = 0xFF; //設(shè)定定時(shí)初值
TH1 = 0xFF; //設(shè)定定時(shí)器重裝值
ET1 = 0; //禁止定時(shí)器1中斷
TR1 = 1; //啟動(dòng)定時(shí)器1
ES = 1; //Enable UART interrupt
EA = 1; //Open master interrupt switch
}
void Delay200ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 9;
j = 104;
k = 139;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
unsigned char cipher1[8]; //密文緩存
UartInit();
Display_num(1,BAUD/10000%10,0);
Display_num(2,BAUD/1000%10,0);
Display_num(3,BAUD/100%10,0);
Display_num(4,BAUD/10%10,0);
Display_num(5,BAUD%10,0);
Delay200ms();
Delay200ms();
Init_TM1620();
des(plain_tab, key_tab, 1, cipher1);
ES = 0;
for(n=0;n<8;n++)
{
SBUF=cipher1[n]; //回應(yīng)發(fā)送者以成功接收
while(!TI);
TI = 0; //手動(dòng)清零發(fā)送中斷標(biāo)志位
}
ES = 1;
while(1)
{
times++;
if (times%10==0)
Display_Bit(1,0x80);
else
Display_Bit(1,0x00);
if(Uart_DES == 1)
{
Uart_DES = 0;
}
}
}
void Uart_Isr() interrupt 4
{
ES = 0;
if(SBUF==0xA5)
{
// uchar n;
RI=0;
// while(!RI);
// RI=0;
//Uart_len=SBUF; //接收數(shù)據(jù)長(zhǎng)度
Uart_DES = 1;
for(n=0;n<8;n++) //開始接收數(shù)據(jù)
{
while(!RI);
RI=0;
RxdBuff[n]=SBUF;
}
for(n=0;n<8;n++)
{
SBUF=RxdBuff[n]; //回應(yīng)發(fā)送者以成功接收
while(!TI);
TI = 0; //手動(dòng)清零發(fā)送中斷標(biāo)志位
}
}
else{
SBUF=0x0E; //回應(yīng)發(fā)送者接收失敗
while(!TI);
TI = 0;
RI=0;
}
ES=1;
}
復(fù)制代碼
1.png
(41.1 KB)
下載附件
2021-6-5 01:10 上傳
2.png
(20.25 KB)
下載附件
2021-6-5 01:10 上傳
完整源碼下載:
des_code.zip
(120.43 KB, 售價(jià): 2 E幣)
2021-6-5 01:11 上傳
點(diǎn)擊文件名下載附件
售價(jià): 2 E幣
[記錄]
[
購買
]
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0