在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位数据,可变波特率
- AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
- AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
- TMOD &= 0x0F; //清除定时器1模式位
- TMOD |= 0x20; //设定定时器1为8位自动重装方式
- TL1 = 0xFF; //设定定时初值
- TH1 = 0xFF; //设定定时器重装值
- ET1 = 0; //禁止定时器1中断
- TR1 = 1; //启动定时器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]; //回应发送者以成功接收
- while(!TI);
- TI = 0; //手动清零发送中断标志位
- }
-
- 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; //接收数据长度
- Uart_DES = 1;
- for(n=0;n<8;n++) //开始接收数据
- {
- while(!RI);
- RI=0;
- RxdBuff[n]=SBUF;
- }
- for(n=0;n<8;n++)
- {
- SBUF=RxdBuff[n]; //回应发送者以成功接收
- while(!TI);
- TI = 0; //手动清零发送中断标志位
- }
- }
- else{
- SBUF=0x0E; //回应发送者接收失败
- 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位数据,可变波特率
- AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
- AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
- TMOD &= 0x0F; //清除定时器1模式位
- TMOD |= 0x20; //设定定时器1为8位自动重装方式
- TL1 = 0xFF; //设定定时初值
- TH1 = 0xFF; //设定定时器重装值
- ET1 = 0; //禁止定时器1中断
- TR1 = 1; //启动定时器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]; //回应发送者以成功接收
- while(!TI);
- TI = 0; //手动清零发送中断标志位
- }
-
- 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; //接收数据长度
- Uart_DES = 1;
- for(n=0;n<8;n++) //开始接收数据
- {
- while(!RI);
- RI=0;
- RxdBuff[n]=SBUF;
- }
- for(n=0;n<8;n++)
- {
- SBUF=RxdBuff[n]; //回应发送者以成功接收
- while(!TI);
- TI = 0; //手动清零发送中断标志位
- }
- }
- else{
- SBUF=0x0E; //回应发送者接收失败
- while(!TI);
- TI = 0;
- RI=0;
- }
- ES=1;
- }
复制代码
完整源码下载:
des_code.zip
(120.43 KB, 售价: 2 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|
|