⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hcs301.h

📁 这是本人自己编写的关于跳码芯片hcs301的烧写程序
💻 H
字号:
#include <reg52.h>
#include <string.h>
#include <absacc.h>
#include <math.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
/*******************************/
sfr port0=0x80;
sfr port1=0x90;
sfr port2=0xa0;
sfr port3=0xb0;
sfr tcon=0x88;
sfr scon=0x98;
sfr ie=0xa8;
sfr ip=0xb8;
sfr psw=0xd0;
sfr acc=0xe0;
sfr pcon=0x87;
sfr tmod=0x89;
sbit cy=psw^2;
/************/
sbit s3=P1^5;//1.5
sbit pwm=P1^2;//1.6
sbit eepower=P1^4;//1.7
sbit int0=P3^2;

sbit acc0=acc^0;//acc= 0xe0
sbit acc1=acc^1;
sbit acc2=acc^2;
sbit acc3=acc^3;
sbit acc4=acc^4;
sbit acc5=acc^5;
sbit acc6=acc^6;
sbit acc7=acc^7;

sbit wr_=P3^6;
sbit rd_=P3^7;
/***************************/
#define True 1
#define False 0
#define rxlength 19
unsigned char bdata status=0xe0;
sbit sdstart=status^0;//0
sbit rx_finish=status^1;//0
sbit pragrambit=status^2;//0
sbit baud0=status^3;//0
sbit baud1=status^4;//0
sbit lowbit_en=status^5;//1
sbit autooff_en=status^6;//1
sbit inc_en=status^7;//1
unsigned char cmc;
unsigned char cmd;
unsigned char *sendp;
unsigned char idata rxbuf[20];
unsigned char rp;
//unsigned char sdbuf[20];
/***************************/
//对于keil c51 编译器,转移符+小于等于3为数字可转换为1字节hex数,
//但转移符后面的数按8进制算,如\377=0x255;\15=0x0d
//unsigned char code all_command[]="\15code:key:serial:select hcs301\15ver\15auto inc\15auto shutoff\15stop auto shutoff\15";
//unsigned char code command_list[]={
unsigned char code ok_c[]="OK\15\12";
unsigned char code error_c[]="ERROR\15\12";
unsigned char code please[]="Please input command!\15\12";
unsigned char code prepare_c[]="Prepared!\15\12";
unsigned char code sucessful_c[]="SUCESSFUL!\15\12";
unsigned char code failed_c[]="FAILED!\15\12";
unsigned char code version[]="\15\12HCS301 programer V1.0 draw by DaiHeLong 2002.11.29\15\12";
unsigned char code limited_ver[]="This version is only support NORMAL LEARNING MODE\15\12";
unsigned char code length_err[]="Length error!\15\12";
unsigned char code format_err[]="Format error!\15\12";
unsigned char code the_s[]="The next serial is:\15\12";
unsigned char code the_mcode[]="The Manufacturer's Code:\15\12";
unsigned char code the_serial[]="The Serials:\15\12";
unsigned char code the_baud[]="Select Baud rate:\15\12";
unsigned char code bauds[]="'4'=400us\15\12'2'=200us\15\12'1'=100us\15\12";
unsigned char code low_power[]="Low power bit:\15\12";
unsigned char code select_lp[]="'1'=enable\15\12'0'=disable\15\12";
unsigned char code select_as[]="Auto shutdown:\15\12";
unsigned char code enabled[]="Enabled\15\12";
unsigned char code disabled[]="Disabled\15\12"; 

unsigned char code huiche[]={0x0d,0x0a,0};
unsigned char code backspace[]={0x08,0x20,0x08,0};
unsigned char code code1[]="INPUT\15";
unsigned char code code2[]="INFO\15";
unsigned char code code3[]="SERIAL:";
unsigned char code code4[]="SELECT HCS301\15";
unsigned char code code5[]="VER\15";
unsigned char code code6[]="AUTO INC\15";
unsigned char code code7[]="STOP AUTO INC\15";
unsigned char code code8[]="AUTO SHUTOFF\15";
unsigned char code code9[]="STOP AUTO SHUTOFF\15";
unsigned char code code10[]="EXIT\15";

//unsigned char code code11[]="\15";
typedef struct
{
	unsigned int config;
	unsigned int en_key;
	unsigned int seed1;
	unsigned int seed0;
	unsigned long serials;
	unsigned int reserved;
	unsigned int sync;
	unsigned int key[4];
}hcs301code;

union code_key
{
	hcs301code kc;
	unsigned char buf[24];
	unsigned int ibuf[12];
}cd _at_ 0x25;
unsigned int mf_code[4];//存放厂商代码的移位寄存器
/**************************************/
unsigned char bdata d_ _at_ 0x20;
sbit d0=d_^0;
sbit d1=d_^1;
sbit d2=d_^2;
sbit d3=d_^3;
sbit d4=d_^4;
sbit d5=d_^5;
sbit d6=d_^6;
sbit d7=d_^7;
/*************************/
unsigned char bdata cs2_data;//IC101=0xff,1111,1111
sbit kl3=cs2_data^7;//"键盘行输出
sbit kl2=cs2_data^6;//"键盘行输出
sbit kl1=cs2_data^5;//"键盘行输出
sbit kl0=cs2_data^4;//"键盘行输出
sbit pwron=cs2_data^3;//"空
sbit iccs1=cs2_data^2;//"空
sbit icrst=cs2_data^1;//"空
sbit vpp=cs2_data^0;//"空
unsigned char bdata cs4_data;//IC6B=0xd2,1101,0010
sbit hz_a18=cs4_data^7;
sbit hz_a17=cs4_data^6;
sbit hz_a16=cs4_data^5;
sbit empty_4=cs4_data^4;//"空
sbit rsc1=cs4_data^3;//"串口切换
sbit rsc0=cs4_data^2;//"串口切换
sbit mcuoff=cs4_data^1;//"空
sbit rfdtr=cs4_data^0;//"遥控器数据应答
unsigned char bdata cs5_data;//IC6C=0x7f,0111,1111
sbit merst=cs5_data^7;//"gsm=1,复位
sbit auk0=cs5_data^6;//"音频开关=0有效
sbit green_led=cs5_data^5;//"设防灯,低有效
sbit red_led=cs5_data^4;//"报警灯,低有效
sbit rly2=cs5_data^3;//"继电器2,低有效
sbit rly1=cs5_data^2;//"继电器1,低有效
sbit lcdrst=cs5_data^1;//"低复位
sbit blight=cs5_data^0;//"低有效
#define LCD_COM XBYTE [0000]
#define LCD_DAT XBYTE [0001]
#define select_ram SC2=1;SC1=1;SC0=1//7

#define select_lcd SC2=1;SC1=1;SC0=0//6

#define select_cs5 SC2=1;SC1=0;SC0=1//5

#define select_cs4 SC2=1;SC1=0;SC0=0//4
#define select_hzhadd SC2=1;SC1=0;SC0=0//4

#define select_cs3 SC2=0;SC1=1;SC0=1//3

#define select_cs2 SC2=0;SC1=1;SC0=0//2

#define select_cs1 SC2=0;SC1=0;SC0=1//1
#define select_hzdata SC2=0;SC1=0;SC0=1//1

#define select_cs0 SC2=0;SC1=0;SC0=0//0

sbit bank0=P1^1;//p1.0
sbit bank1=P1^0;//p1.1
sbit SC0=P3^3;     //p3.3
sbit SC1=P3^4;     //p3.4
sbit SC2=P3^5;     //p3.5
/****************************************/
extern void keeloq(void);
void add_discrimination(void);
void send_format(void);
void send_length(void);
void display_serials(void);
void get_asc(unsigned char n,unsigned char idata *p1,unsigned char idata *p2);
void display_info(void);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -