在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,開(kāi)啟波特率倍速
- {
- 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++) //開(kāi)始接收數(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,開(kāi)啟波特率倍速
- {
- 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++) //開(kāi)始接收數(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幣)
【必讀】版權(quán)免責(zé)聲明
1、本主題所有言論和內(nèi)容純屬會(huì)員個(gè)人意見(jiàn),與本論壇立場(chǎng)無(wú)關(guān)。2、本站對(duì)所發(fā)內(nèi)容真實(shí)性、客觀性、可用性不做任何保證也不負(fù)任何責(zé)任,網(wǎng)友之間僅出于學(xué)習(xí)目的進(jìn)行交流。3、對(duì)提供的數(shù)字內(nèi)容不擁有任何權(quán)利,其版權(quán)歸原著者擁有。請(qǐng)勿將該數(shù)字內(nèi)容進(jìn)行商業(yè)交易、轉(zhuǎn)載等行為,該內(nèi)容只為學(xué)習(xí)所提供,使用后發(fā)生的一切問(wèn)題與本站無(wú)關(guān)。 4、本網(wǎng)站不保證本站提供的下載資源的準(zhǔn)確性、安全性和完整性;同時(shí)本網(wǎng)站也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的損失或傷害。 5、本網(wǎng)站所有軟件和資料均為網(wǎng)友推薦收集整理而來(lái),僅供學(xué)習(xí)用途使用,請(qǐng)務(wù)必下載后兩小時(shí)內(nèi)刪除,禁止商用。6、如有侵犯你版權(quán)的,請(qǐng)及時(shí)聯(lián)系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|