AT89C51如何下载程序 用什么软件

atmel公司的AT89C51,注意是AT89C51 老版单片机 如何下载程序 串口的还有usbisp的就不用说了 下载不了 请行家指教

5个回答

用Keil就可以的,IAR,Studio...

老版的AT89C51,需要用专用烧写器下载。

在烧写之前,当然需要借助软件辅助编译工具(如keil)先生成 .hex 文件用于下载。

AT89S51是可以通过串口下载的,不用那种烧写器了。

AT89C51和AT89C52这两个只能用烧录器。AT89S51和AT89S52可以用ISP下载,STC系列单片机可以串口下载。

老版的51单片机,需要先通过keil等编译软件生成hex文件。然后借助专用烧写器下载,如TOP100等。不同的烧写器的下载软件不同,自带的。

谢谢,各位的指教,明白了,不一一发回复了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
AT89S52型号的C51单片机是否支持多线程
AT89S52型号的C51单片机是否支持多线程,怎样在函数或者程序中调用?
求一基于AT89C52的数字钟设计的C语言程序代码,图已做好,有流程图和项目要求,跪求大神帮忙!!!
麻烦大神最好能把程序与图匹配符合要求就好了 一会把图和要求发在下面
用AT89C51单片机控制MAX7456实现字符叠加的C程序,怎么开始写?
单通道、单色随屏显示(OSD)发生器MAX7456,想用单片机控制实现字符叠加,用C来写程序,该怎么着手?
关于AT89C51单片机数字时钟的设计C语言程序warning问题
本人新手,还希望各位大大帮忙看下怎么解决 Build target 'Target 1' assembling STARTUP.A51... linking... *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START MODULE: STARTUP.obj (?C_STARTUP) *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: ?C_START MODULE: STARTUP.obj (?C_STARTUP) ADDRESS: 080AH Program Size: data=9.0 xdata=0 code=15 "t" - 0 Error(s), 2 Warning(s). 源程序如下: #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit QB1=P1^0; sbit QB2=P1^1; //数码管段选 sbit QB3=P1^2; sbit QB4=P1^3; sbit QB5=P1^4; sbit QB6=P1^5; sbit fm=P1^6; //蜂鸣器 sbit s1=P2^4; //s5按键,切换显示 sbit s2=P2^3; //s2按键,设置调时 sbit s3=P2^2; //s3按键,加1 sbit s4=P2^1; //s4按键,减1 sbit led1=P0^0; sbit led2=P0^1; sbit led3=P0^2; uchar count; uchar sec,minu,hour,day,week,mon; uchar n_sec,n_minu,n_hour; uint year; uchar set_2=1,set_1=1; uchar hs,hg,mis,mig,ss,sg; uchar nhs,nhg,nms,nmg,nss=0,nsg=0; uchar ms,mg,ds,dg,w; uchar code table[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80, 0X90,0X88,0X83,0XC6,0XA1,0X8E,0X86,0xbf}; //0~F,-,共阳 //uchar code tableyi[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//0-F,-,共阴 uchar code table_d[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef}; //0~9数组,带小数点 uchar table1[]={31,31,29,31,30,31,30,31,31,30,31,30,31}; //闰年 uchar table2[]={31,31,28,31,30,31,30,31,31,30,31,30,31}; //非闰年 void delay(uint); //延时函数 void timer0(); //走时中断函数 void jishi(); //计时函数 void key_change(); //切换显示按键函数 void key_set(); //设置时间按键函数 void disp(uchar,uchar,uchar,uchar,uchar,uchar); //显示函数 void zd_clock(); //整点报时函数 void nz_clock(); //闹钟函数 uchar incone(uchar); //加1函数 uchar decone(uchar); //减1函数 void set_time(); //设置时间函数 void set_clock(); //设置闹钟函数 void set_mdw(); //设置月日星期函数 void main() //主函数 { EA=1; ET0=1; TR0=1; TMOD=0x01; TH0=0x4c; //50ms初值 晶振11.0592 TL0=0x00; hour=23;minu=59;sec=49; //赋初值:11点59分0秒 n_hour=12;n_minu=56;n_sec=0; //闹钟赋初值12点1分0秒 year=2008;mon=5;day=14;week=3;//年月日星期赋初值2008年5月11日星期天;祝天下所有母亲节日快乐 while(1) { hs=hour/10; //时分秒HH.MM.SS hg=hour%10; mis=minu/10; mig=minu%10; ss=sec/10; sg=sec%10; ms=mon/10; //月日-星期MM.DD.-W mg=mon%10; ds=day/10; dg=day%10; w=week; nhs=n_hour/10; //闹钟定时HH.MM.SS nhg=n_hour%10; nms=n_minu/10; nmg=n_minu%10; nss=n_sec/10; nsg=n_sec%10; key_change(); //s4按键扫描 key_set(); //s2按键扫描 set_time(); //设置时间 set_mdw(); //设置月日星期 set_clock(); //设置闹钟 if(set_1==1) //正常走时显示 { disp(hs,hg,mis,mig,ss,sg); } if(set_1==2) //设置时间,LED1闪亮 { disp(hs,hg,mis,mig,ss,sg); if(sec%2==0) {led2=1;led3=1;led1=~led1;} // else // {led1=1;} } if(set_1==3) //正常显示月日-星期 { disp(ms,mg,ds,dg,16,w); } if(set_1==4) //设置月日-星期,LED2闪亮 { disp(ms,mg,ds,dg,16,w); if(sec%2==0) {led1=1;led3=1;led2=~led2;} // else // {led2=1;} } if(set_1==5) //正常显示定时 { disp(nhs,nhg,nms,nmg,nss,nsg); } if(set_1==6) //设置闹钟定时,LED3闪亮 { disp(nhs,nhg,nms,nmg,nss,nsg); if(sec%2==0) {led1=1;led2=1;led3=~led3;} // else // {led3=1;} } zd_clock(); //整点报时 nz_clock(); //闹钟 } } void timer0() interrupt 1 //50ms中断函数 { TMOD=0x01; TH0=0x4c; //50ms初值 晶振11.0592 TL0=0x00; count++; if(count==20) { count=0; sec++; jishi(); //调计时函数 } } void jishi() //计时函数 { if(sec==60) { sec=0; minu++; if(minu==60) { minu=0; hour++; if(hour==24) { hour=0; day++; week++; if(week==8) {week=0;} if(year%4==0&&year%100!=0||year%400==0) //闰年 { if(day==table1[mon]+1) { day=0; mon++; if(mon==13) {mon=0;year++;} } } else //非闰年 { if(day==table2[mon]+1) { day=0; mon++; if(mon==13) {mon=0;year++;} } } } } } } void key_change() //s1按键扫描 { if(s1==0) { delay(200); if(s1==0) { set_1++; while(!s1); if(set_1==7) {set_1=1;} } } } void key_set() //s2按键扫描 { if(s2==0) { delay(10); if(s2==0) { set_2++; while(!s2); if(set_2==4) {set_2=1;} } } } void disp(uchar a1,uchar a2,uchar a3,uchar a4,uchar a5,uchar a6) //显示函数 { QB1=1; QB2=0; QB3=0; QB4=0; QB5=0; QB6=0; P3=table[a1]; //段码送P0口 delay(10); //延时一小会 QB1=0; QB2=1; QB3=0; QB4=0; QB5=0; QB6=0; P3=table[a2]; //第2个数码管显示,带小数点 delay(10); QB1=0; QB2=0; QB3=1; QB4=0; QB5=0; QB6=0; P3=table[a3]; //第3个数码管显示 delay(10); QB1=0; QB2=0; QB3=0; QB4=1; QB5=0; QB6=0; P3=table[a4]; //第4个数码管显示,带小数点 delay(10); QB1=0; QB2=0; QB3=0; QB4=0; QB5=1; QB6=0; //第5个数码管显示 P3=table[a5]; delay(10); QB1=0; QB2=0; QB3=0; QB4=0; QB5=0; QB6=1; P3=table[a6]; //第6个数码管显示 delay(10); QB1=0; QB2=0; QB3=0; QB4=0; QB5=0; QB6=0; } void zd_clock() //整点报时函数 { if(minu==59&&(sec==53||sec==55||sec==57)) { fm=0; delay(5); fm=1; delay(5); } fm=0; if(minu==59&&sec==59) { fm=0; delay(5); fm=1; delay(5); fm=0; } } void nz_clock() //闹钟函数 { if(hour==n_hour&&minu==n_minu&&sec==n_sec) //if((sec%2==0)&&sec<30) { fm=0; delay(1); fm=1; delay(1); } } void set_time() //设置时间函数 { if(set_1==2) { if(set_2==1) { hour=incone(hour); if(hour==24) {hour=0;} // if(hour<0) // {hour=23;} hour=decone(hour); } if(set_2==2) { minu=incone(minu); if(minu==60) {minu=0;} // if(minu<0) // {minu=59;} minu=decone(minu); } } } void set_mdw() //设置月日星期函数 { if(set_1==4) { if(set_2==1) { mon=incone(mon); if(mon==13) {mon=1;} mon=decone(mon); // if(mon==0) // {mon=12;} } if(set_2==2) { day=incone(day); if(day==32) {day=0;} day=decone(day); // if(day==0) // {day=0;} } if(set_2==3) { week=incone(week); if(week==8) {week=0;} week=decone(week); // if(week==0) // {week=7;} } } } void set_clock() //设置闹钟函数 { if(set_1==6) { if(set_2==1) { n_hour=incone(n_hour); if(n_hour==24) {n_hour=0;} n_hour=decone(n_hour); if(n_hour==0) {n_hour=0;} } if(set_2==2) { n_minu=incone(n_minu); if(n_minu==60) {n_minu=0;} n_minu=decone(n_minu); if(n_minu==0) {n_minu=0;} } } } uchar incone(uchar n) //加1函数 { if(s3==0) { delay(200); if(s3==0) { n++; while(!s3); } } return(n); } uchar decone(uchar m) //减1函数 { if(s4==0) { delay(200); if(s4==0) { m--; while(!s4); if(m<0) {m=0;} } } return(m); } void delay(uint k) //延时函数 { uint i,j; for(i=k;i>0;i--) for(j=80;j>0;j--); }
关于at24c04的驱动程序
是用51单片机c语言编写的。可以在ptotou上面进行仿真。输入一个字节马上把他读出来
有段程序求大神帮忙找找哪里有问题
是有关AT89c51单片机的c语言程序的,程序主要内容是测温显示以及键盘输入显示,使用keil编程,在protues软件上仿真。。仿真结果与预想的有很大差别。。希望大神能帮帮忙寻找错误。。。。由于程序偏长,热心的大神可以留下QQ等,我会将程序发到你邮箱里面去的
关于51单片机的1602液晶结合AT24C02显示时钟程序的相关问题
我在郭天祥的单片机书上看到关于1602液晶显示时钟的程序,然后我把对照这个模板写, 发现程序出现一个警告, 板子无法正常在1602上显示。 求各位大佬讲解。 //main.c// #include<reg52.h> #include"IIC.H" #include<intrins.h> #define uchar unsigned char uchar count,keynum; char sec,min,hour; sbit lcden=P1^2; //液晶使能端 sbit lcdrs=P2^0; sbit buzz=P0^6; sbit key1=P3^0; sbit key2=P3^1; sbit key3=P3^2; uchar code table[]="2017-06-07"; void Delay5ms() //@11.0592MHz { unsigned char i, j; i = 54; j = 199; do { while (--j); } while (--i); } void di() { P2=0XA0; buzz=1; Delay5ms(); P2=0x00; } void write_com(unsigned char date) { lcdrs=0; lcden=1; P0=date; Delay5ms(); lcden=0; } void write_data(unsigned char date) { lcdrs=1; lcden=1; P0=date; Delay5ms(); lcden=0; } void write_sfm(uchar add, uchar date) { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_data(0x30+ge); write_data(0x30+shi); } void init1() { uchar num; sec=0; min=0; hour=0; keynum=0; count=0; init_24c02(); write_com(0x38); //模式 write_com(0x0c); //开显示,显示光标,不闪烁 write_com(0x06); //指针加1 write_com(0x01); //清屏 for(num=0;num<12;num++) { write_data(table[num]); } sec=read_add(1); min=read_add(2); hour=read_add(3); TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; write_com(0x80+0x40+6); write_data(':'); Delay5ms(); write_com(0x80+0x40+9); write_data(':'); Delay5ms(); } void key_scan() { if(key1) { TR0=0; Delay5ms(); if(key1) { while(!key1); di(); keynum++; if(keynum==1) { write_com(0x80+0x40+10); write_data(0x0f); } if(keynum==2) { write_com(0x80+0x40+7); } if(keynum==3) { write_com(0x80+0x40+4); } if(keynum==4) { keynum=0; write_com(0x0c); TR0=1; } } if(!keynum) { if(key2) { Delay5ms(); if(key2) { while(!key3); di(); if(keynum==1) { sec++; if(sec==60) { sec=0; } write_sfm(10,sec); write_com(0x80+0x40+10); write_add(1,sec); } if(keynum==2) { min++; if(min==60) { min=0; } write_sfm(7,min); write_com(0x80+0x40+7); write_add(2,min); } if(keynum==3) { hour++; if(hour==60) { hour=0; } write_sfm(4,hour); write_com(0x80+0x40+4); write_add(3,hour); } } } if(key3) { Delay5ms(); if(key3) { while(!key3); di(); if(keynum==1) { sec--; if(sec==-1) { sec=60; } write_sfm(10,sec); write_com(0x80+0x40+10); write_add(1,sec); } if(keynum==2) { min--; if(min==0) { min=60; } write_sfm(7,min); write_com(0x80+0x40+7); write_add(2,min); } if(keynum==3) { hour--; if(hour==0) { hour=60; } write_sfm(4,hour); write_com(0x80+0x40+4); write_add(3,hour); } } } } } } void main() { init1(); while(1) { key_scan(); } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==20) { count=0; sec++; if(sec==60) { sec=0; min++; if(min==60) { min=0; hour++; if(hour==60) { hour=0; } write_sfm(4,hour); write_add(3,hour); } write_sfm(7,min); write_add(2,min); } write_sfm(10,sec); write_add(1,sec); } } //IIC.c// #include <reg52.h> #include "IIC.H" #include<intrins.h> void delay0() { ;;} void Delay5us() { unsigned char i; _nop_(); _nop_(); i = 12; while (--i); } //开始信号 void start() { SDA=1; Delay5us(); SCL=1; Delay5us(); SDA=0; Delay5us(); SCL=0; Delay5us(); } //停止信号 void stop() { SDA=0; Delay5us(); SCL=1; Delay5us(); SDA=1; Delay5us(); } //主机应答反映 void send_renspons(bit date) { SDA=date; SCL=1; Delay5us(); SCL=0; Delay5us(); } //从机应答信号 bit re_renspons() { bit temp; SDA=1; Delay5us(); SCL=1; Delay5us(); if(SDA==1) temp=0; else temp=1; SCL=0; Delay5us(); return temp; } void init_24c02() { SDA=1; delay0(); SCL=1; delay0(); } //写数据_字节 void write_date(unsigned char date) { unsigned char i; for (i=0;i<8;i++) { if ((date<<i)&0x80) SDA=1; else SDA=0; SCL=1; Delay5us(); SCL=0; Delay5us(); } re_renspons(); } //读数据——字节 unsigned char read_date() { unsigned char i,temp; SDA=1; Delay5us(); for (i=0;i<8;i++) { temp<<=1; SCL=1; Delay5us(); if(SDA==1) temp=temp+1; SCL=0; Delay5us(); } return temp; } //写一个字节 void write_add(unsigned char addr,unsigned char date) { start(); write_date(0xa0); write_date(addr); write_date(date); stop(); } //读一个字节 unsigned char read_add(unsigned char addr) { unsigned char temp; start(); write_date(0xa0); write_date(addr); start(); write_date(0xa1); temp=read_date(); send_renspons(1); stop(); return temp; } //IIC.H// #ifndef _IIC_H_ #define _IIC_H_ sbit SCL=P2^0; sbit SDA=P2^1; void write_add(unsigned char addr,unsigned char date); unsigned char read_add(unsigned char addr); void init_24c02(); #endif ![图片说明](https://img-ask.csdn.net/upload/201706/08/1496855360_216038.png)
单片机汇编用的ATMEL AT89S51 12M晶振 奇奇怪怪的错误 很短的一个小程序
ORG 0000H LJMP MAIN ORG 0003H LJMP INT0 ORG 0060H MAIN: MOV R7,#19H MOV R3,#07H SETB EA SETB EX0 SETB IT0 MOV DPTR,#TAB1 LOOP: MOV A,R3 ADD A,#0AH MOV P0,#01H MOVC A,@A+DPTR MOV P2,A MOV R4,#4FH DJNZ R4,$ MOV P2,#0FFH AJMP LOOP INT0: INC R3 MOV R3,#00H RETI TAB1: DB 0C0H,0F9H,0A4H,0B0H,099H,92H,82H,0F8H,80H,90H ; 数码管数字有点 DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H ; 数字 无点 end waizhongduan.asm(4): error A46: CODE-ADDRESS EXPECTED LJMP INT0 那一行 waizhongduan.asm(26): error A8: ATTEMPT TO DEFINE AN ALREADY DEFINED LABEL INT0: INC R3 那一行
单片机题目大婶们来帮帮我看看我的程序问题在哪
![图片说明](https://img-ask.csdn.net/upload/202003/16/1584371575_115744.png)![图片说明](https://img-ask.csdn.net/upload/202003/16/1584371583_990416.png) C51单片机AT89S51我想问的是我的程序为什不能在中断0请求不超过七次的情况下往回移位
(基于液晶显示的频率计的设计)的程序与仿真图是怎样的?
要求是:以单片机(AT89C51)为核心,对外部信号源的输入频率进行测量.并将该信号频率在液晶上进行显示.当切换开关连接至不同频率的信号源时,液晶上显示的频率应相应发生改变.程序与仿真图最好不同于网上能找到的.
单片机编写EEPROM时,该程序中为什么只能用<reg52.h>作头文件,而换成<regx52.h>就是错误的呢?
只有用<reg52.h>作头文件时调试正确,而换成<regx52.h>就报错很多。我知道两个头文件中位定义的格式不一样,但把^改成_之后依旧报错。 ``` #include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器 #include "i2c.h" #include "nixie.h" #include "Delay.h" #include "at24c02.h" typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; sbit k1=P3^1; sbit k2=P3^0; sbit k3=P3^2; sbit k4=P3^3; //定义按键端口 char num=0; u8 disp[4]; /******************************************************************************* * 函数名 :Keypros() * 函数功能 :按键处理函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Keypros() { if(k1==0) { Delay(10); //消抖处理 if(k1==0) { At24c02Write(1,num); //在地址1内写入数据num } while(!k1); } if(k2==0) { Delay(10); //消抖处理 if(k2==0) { num=At24c02Read(1); //读取EEPROM地址1内的数据保存在num中 } while(!k2); } if(k3==0) { Delay(1); //消抖处理 if(k3==0) { num++; //数据加1 if(num>255)num=0; } while(!k3); } if(k4==0) { Delay(10); //消抖处理 if(k4==0) { num=0; //数据清零 } while(!k4); } } /******************************************************************************* * 函数名 :datapros() * 函数功能 :数据处理函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void datapros() { disp[0]=num/1000;//千位 disp[1]=num%1000/100;//百位 disp[2]=num%1000%100/10;//十位 disp[3]=num%1000%100%10; //个位 } /******************************************************************************* * 函数名 :DigDisplay() * 函数功能 :数码管显示函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void DigDisplay() { u8 i; for(i=0;i<4;i++) { Nixie(i,disp[3-i]); } } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { while(1) { Keypros(); //按键处理函数 datapros(); //数据处理函数 DigDisplay();//数码管显示函数 } } ``` 报错如下: F:\单片机\Keil 4\C51\Inc\reg52.h(13): error C231: 'P0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(14): error C231: 'P1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(15): error C231: 'P2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(16): error C231: 'P3': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(17): error C231: 'PSW': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(18): error C231: 'ACC': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(19): error C231: 'B': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(20): error C231: 'SP': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(21): error C231: 'DPL': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(22): error C231: 'DPH': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(23): error C231: 'PCON': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(24): error C231: 'TCON': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(25): error C231: 'TMOD': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(26): error C231: 'TL0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(27): error C231: 'TL1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(28): error C231: 'TH0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(29): error C231: 'TH1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(30): error C231: 'IE': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(31): error C231: 'IP': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(32): error C231: 'SCON': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(33): error C231: 'SBUF': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(36): error C231: 'T2CON': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(37): error C231: 'RCAP2L': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(38): error C231: 'RCAP2H': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(39): error C231: 'TL2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(40): error C231: 'TH2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(45): error C231: 'CY': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(46): error C231: 'AC': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(47): error C231: 'F0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(48): error C231: 'RS1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(49): error C231: 'RS0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(50): error C231: 'OV': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(51): error C231: 'P': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(54): error C231: 'TF1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(55): error C231: 'TR1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(56): error C231: 'TF0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(57): error C231: 'TR0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(58): error C231: 'IE1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(59): error C231: 'IT1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(60): error C231: 'IE0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(61): error C231: 'IT0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(64): error C231: 'EA': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(65): error C231: 'ET2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(66): error C231: 'ES': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(67): error C231: 'ET1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(68): error C231: 'EX1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(69): error C231: 'ET0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(70): error C231: 'EX0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(73): error C231: 'PT2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(74): error C231: 'PS': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(75): error C231: 'PT1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(76): error C231: 'PX1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(77): error C231: 'PT0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(78): error C231: 'PX0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(81): error C231: 'RD': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(82): error C231: 'WR': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(83): error C231: 'T1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(84): error C231: 'T0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(85): error C231: 'INT1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(86): error C231: 'INT0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(87): error C231: 'TXD': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(88): error C231: 'RXD': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(91): error C231: 'SM0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(92): error C231: 'SM1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(93): error C231: 'SM2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(94): error C231: 'REN': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(95): error C231: 'TB8': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(96): error C231: 'RB8': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(97): error C231: 'TI': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(98): error C231: 'RI': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(101): error C231: 'T2EX': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(102): error C231: 'T2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(105): error C231: 'TF2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(106): error C231: 'EXF2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(107): error C231: 'RCLK': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(108): error C231: 'TCLK': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(109): error C231: 'EXEN2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(110): error C231: 'TR2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(111): error C231: 'C_T2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(112): error C231: 'CP_RL2': redefinition compiling i2c.c... compiling Delay10us.c... compiling Nixie.c... compiling Delay.c... compiling At24c02.c... Target not created
编写一个单片机程序,通过一个钮子开关K1控制八只发光二极管的两种不同状态。
用AT89C51来完成实验。要求:1.使用P3口作为信号输入口,P1口作为信号输出口。2.若开关节K1接高电平时,八只二极管均处于点亮状态,并持续10秒,开关接低电平时,八只二极管处于交叉两灭状态,并持续5秒3.编写程序的首地址设为4000H。
单片机中AT24C02问题,初学者,希望大家帮帮我
#include "reg52.h"#include "intrins.h"sbit SDA=P2^1;//总线连接口定义sbit SCL=P2^0;//总线连接口定义sbit duan=P2^2;sbit wei=P2^3;typedef unsigned char uchar;uchar duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar t[8];void delay(uchar m)//us延时作用{ while(--m);}void delays(uchar t)//ms延时作用{ while(t--) { delay(245); delay(245); }}/*void display(uchar firstbit,uchar weishu){ static unsigned char i; P0=0; duan=1; duan=0; P0=weima[firstbit+i]; wei=1; wei=0; P0=t[i]; duan=1; duan=0; i++; if(i==weishu) i=0;}*//*void time_0()interrupt 1{ TH0=(65536-2000)/256; TL0=(65536-2000)%256; display(0,8);}*/void iic_start()//开始通知芯片读写开始。{ SDA=1;//上来先让数据线置高电平 SCL=1;//接着让时钟线置高电平 delay(5);//SDA和SCL同时为高电平保持4.7us以上 _nop_();//1.805us,共5.78us,下面SDA=0;是下降沿,不能计算在延时时间中 SDA=0;//在时钟线为高电平,而数据线由高电平到低电平的过程读写芯片开始进行.//下降沿 delay(5);//SDA低电平保持4us以上,这里是4.34us满足要求。 //注意开始后SCL为1,SDA为0; }void iic_inti()//总线初始化{ SCL=1;//=-----————————————————————>>>>>>>>>>>>>让时钟线和数据线都为高电平 SDA=1;//------——————————————————>>>>>>>>>>>>让时钟线和数据线都为高电平 delay(5);}void iic_stop(){ SDA=0; _nop_();//准备状态 SCL=1; //————————————————————————>>>>>>>>结束信号是时钟线为高电平,而数据线由低电平到高电平的过程 delay(5);//该稳态需要保持时间为4us以上。 SDA=1;//SCL高电平期间,SDA来一个上升沿, delay(5);//SDA保持4US以上,4.34加上函数返回时间大于4.7us; //注意结束时SCL和SDA都为1;}void iic_sendbyte(uchar bytedate)//发送一个字节{ uchar i,temp; temp=bytedate; for(i=0;i<8;i++) { temp=temp<<1;//移动后最高位到了PSW寄存器的CY位中。 SCL=0;//准备发送阶段 _nop_();//稳定一下 SDA=CY;//将发送的数据一位位的发送到CY位的SDA上 _nop_();//稳定一下 SCL=1;//每一个高电平期间,IC器件都会将数据取走 _nop_();//稳定一下 } SCL=0;//如果写成SCL=1,SDA=1;就是停止信号了,所以不能那样写 _nop_(); SDA=1;//释放总线,数据总线不用时要释放 _nop_();}uchar iic_readbyte(){ uchar i,temp; SCL=0;//准备读数据 _nop_(); SDA=1;//释放总线 _nop_(); for(i=0;i<8;i++) { SCL=1;//MCU开始取数据 delay(5);//SCL为高电平后,IC器件就会将一位数据送到SDA上, //总共用时不会大于4.34us的,然后就可以让MCU度SDA了 temp=(temp<<1)|SDA;//读一位,保存到temp中。 SCL=0; delay(5); } return temp;}bit iic_checkACK()//处理信号{ uchar errcount=255;//定义超时量为255次 SCL=1; _nop_(); while(SDA) { //在一段时间内检测到SDA=0的话认为是应答信号 if(0==errcount) { SCL=0;//钳住总线 _nop_(); return 0;//没有应答信号 } errcount--; } SCL=0;//钳住总线,为下一次通信做准备 _nop_(); return 1;//成功处理应答信号}void iic_sendACK(bit b_ACK)//发送应答或非应答信号{ SCL=0;//准备 _nop_(); if(b_ACK)//ACK { SDA=0; } else //UACK { SDA=1; } _nop_(); SCL=1; delay(5);//大于4us的延时 SCL=0;// 钳住SCL,以便接受数据. _nop_();}void AT24c02_writebyte(unsigned char addr,unsigned char byte)//向24c02写一个字节数据{ iic_start(); iic_sendbyte(0xa0);//MCU写控制字,前四位固定1010,后三位地址0,末位0是写数据的模式 iic_checkACK();//MCU 处理应答信号 iic_sendbyte(addr);// 准备在指定的地址写入 iic_checkACK(); iic_sendbyte(byte);//写数据 iic_checkACK(); iic_stop(); delays(2);//按字节写入时,24c02在接收到停止信号后,将数据擦写到内部,这需要时间 //并且在这段时间内不会响应总线上的任何请求,固让MCU有2毫秒以上的等待 } void AT24c02_writeData(unsigned char address,unsigned char numbytes,unsigned char *buf)//写入任意长度数据 { while(numbytes--) { AT24c02_writebyte(address++,*buf++); }} void AT24c02_readData(unsigned char beignAddr,unsigned char dataSize,unsigned char *buf)//读取任意长度字节 { iic_start();//起始信号 iic_sendbyte(0xa0);//控制字,写的模式//控制字,读的模式//1010(固定模式)000,地址;最后一位是控制读或写的模式,1为读,0为写 iic_checkACK();//处理应答信号 iic_sendbyte(beignAddr);//发送地址 iic_checkACK();//处理应答信号 iic_start();//发送起始信号 iic_sendbyte(0xa1);//控制字,读的模式//1010(固定模式)000,地址;最后一位是控制读或写的模式,1为读,0为写 iic_checkACK();//处理应答信号 while(dataSize--) { *buf++=iic_readbyte();//读取一个个字节并保存到缓冲区buf中, iic_sendACK(dataSize);//发送应答,当dataSize为0时发送非应答 } iic_stop();//发送停止信号}unsigned char dat[]={0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0xff,0xff,0x00,0x00, 0x55,0x55,0xaa,0xaa };//ram允许情况可以无限添加i;void main(){ uchar i; iic_inti(); AT24c02_writeData(0xae,16,dat); //写入24c02 //第一个数据0xae,代表大地址,第二个1,代表小弟指,一个24c02的小地址的范围是0--250, //第三个是代表数据的地址 delays(1); for(i=0;i<16;i++) dat[i]=0; AT24c02_readData(0xae,16,dat); //从24c02读数据 //第一个数据0xae,代表大地址,第二个1,代表小弟指,一个24c02的小地址的范围是0--250, //第三个是代表数据的地址 while(1) { for(i=0;i<16;i++) //查表 { delays(200); P1=dat[i]; } }} 这个程序为什么只有插上数据线和时钟线才能出现跑马灯效果,不插为什么led灯不亮呢。
lcd设计电子时钟protues ,keil编程
以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用4个功能键操作来设置当前时间。功能键K1~K4功能如下。 K1—进入设置现在的时间。 K2—设置小时。 K3—设置分钟。 K4—确认完成设置。 程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。c语言编程
reactjs页面无法引入umi/link umi框架
启动不了一直报错 ``` E:\demo\react-demo>umi dev Starting the development server... × Webpack Compiled with some errors in 9.77s ERROR Failed to compile with 1 errors 0:21:26 This dependency was not found: * umi/link in ./src/layouts/index.js To install it, you can run: npm install --save umi/link ``` react项目页面引入umi/link 导入不了 下载一直报错 ``` import Link from 'umi/link'; ``` 根据提示执行cnpm install --save umi/link 但是一直报错 ``` E:\demo\react-demo>cnpm install --save umi/link - [@umi/link] install from git github:umi/link, may be very slow, please keep patience / [0/1] Installing @umi/linkdownload tarball failed: GET https://github.com/umi/link/tarball/master response 404 status, try to clone repository now. git clone https://github.com/umi/link.git E:\demo\react-demo\node_modules\.tmp\b88c22e2-467d-4a93-83b5-12c63c098840 - [0/1] Installing @umi/link'git' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 × Install fail! Error: [@umi/link] Run "C:\WINDOWS\system32\cmd.exe /d /s /c git clone https://github.com/umi/link.git E:\demo\react-demo\node_modules\.tmp\b88c22e2-467d-4a93-83b5-12c63c098840" error, exit code 1 Error: [@umi/link] Run "C:\WINDOWS\system32\cmd.exe /d /s /c git clone https://github.com/umi/link.git E:\demo\react-demo\node_modules\.tmp\b88c22e2-467d-4a93-83b5-12c63c098840" error, exit code 1 at module.exports (C:\Users\chenlijun\AppData\Roaming\npm\node_modules\cnpm\node_modules\npminstall\lib\download\git.js:51:11) at module.exports.throw (<anonymous>) at onRejected (C:\Users\chenlijun\AppData\Roaming\npm\node_modules\cnpm\node_modules\co\index.js:81:24) at processTicksAndRejections (internal/process/task_queues.js:97:5) npminstall version: 3.27.0 npminstall args: D:\node\node.exe C:\Users\chenlijun\AppData\Roaming\npm\node_modules\cnpm\node_modules\npminstall\bin\install.js --fix-bug-versions --china --userconfig=C:\Users\chenlijun\.cnpmrc --disturl=https://npm.taobao.org/ mirrors/node --registry=https://r.npm.taobao.org --save umi/link ```
mysql 5.6 版本的程序跑mysql 8.0 报错如下 ,数据库可以正常连接,连接数据库的驱动等相关jar 也换成了mysql8.0对应版本还是报如下错误
[http-nio-8085-exec-3] INFO com.gdk.jdbc.connection.ConnectionPoolManager - ***** Add ConnectionPoolShutdownHook to JVM hook ***** [MLog-Init-Reporter] INFO com.mchange.v2.log.MLog - MLog clients using slf4j logging. [http-nio-8085-exec-3] INFO com.mchange.v2.c3p0.C3P0Registry - Initializing c3p0-0.9.5 [built 02-January-2015 13:25:04 -0500; debug? true; trace: 10] [http-nio-8085-exec-3] WARN com.mchange.v2.c3p0.cfg.C3P0Config - named-config with name 'mysql' does not exist. Using default-config. [http-nio-8085-exec-3] WARN com.mchange.v2.c3p0.cfg.C3P0Config - named-config with name 'mysql' does not exist. Using default-config extensions. [http-nio-8085-exec-3] INFO com.gdk.jdbc.connection.c3p0.C3P0ConnectionProvider - >>>>>> C3P0ConnectionProvider startup initing with configuration: {"file":"/E:/tomcat/webapps/huajiu/WEB-INF/classes/datasource.xml","id":"mysql.1509899288","name":"mysql","driverClass":"com.mysql.cj.jdbc.Driver","driverUrl":"jdbc:mysql://47.XXX.XXX.229:3306/huajiu?useSSL=true","user":"root","password":"******","connectionProvider":"com.gdk.jdbc.connection.c3p0.C3P0ConnectionProvider","dialect":"com.gdk.jdbc.dialect.MySQLDialect","maxConnectionSize":10,"minConnectionSize":1,"initConnectionSize":1,"availableConnectionSize":1,"acquireIncrementSize":1,"maxConnectionIdletime":3600,"maxConnectionLifetime":14400,"acquireRetryAttempts":30,"acquireRetryDelay":2000,"idleConnectionTestPeriod":3600,"testConnectionCheckout":false,"testConnectionCheckin":false,"connectionTimeout":5000,"showSQL":false,"loadOnStartup":true,"monitorEnable":false,"weight":1,"_xaDataSourceClass":"com.mysql.jdbc.jdbc2.optional.MysqlXADataSource","customize":{}} [http-nio-8085-exec-3] INFO com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource - Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDelay -> 2000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 5000, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> mysql.1509899288, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.cj.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceUseNamedDriverClass -> false, identityToken -> 1hgf2m9a61o8yo2f6gh111|79cc61a8, idleConnectionTestPeriod -> 3600, initialPoolSize -> 1, jdbcUrl -> jdbc:mysql://47.XXX.XXX.229:3306/huajiu?useSSL=true, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 14400, maxIdleTime -> 3600, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 10, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 1, numHelperThreads -> 1, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ] com.gdk.jdbc.connection.ConnectFailedException: Can not get a Master Connection from datasource<mysql>! at com.gdk.jdbc.connection.ConnectionPoolManager.getMasterConnection(ConnectionPoolManager.java:188) at com.gdk.jdbc.JdbcHandlerImpl.getMasterConnection(JdbcHandlerImpl.java:1780) at com.gdk.jdbc.JdbcHandlerImpl.getConnection(JdbcHandlerImpl.java:1767) at com.gdk.jdbc.JdbcHandlerImpl.queryForList(JdbcHandlerImpl.java:1156) at com.gdk.jdbc.JdbcHandlerImpl.queryForList(JdbcHandlerImpl.java:1138) at com.qshl.aqb.sys.dao.PlatformDao.getUserByUname(PlatformDao.java:21) at com.qshl.aqb.sys.service.impl.PlatformServiceImpl.login(PlatformServiceImpl.java:26) at com.qshl.aqb.sys.controller.PlatformController.unameLogin(PlatformController.java:51) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1156) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@1c2032db -- timeout at awaitAvailable() at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1461) at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:639) at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:549) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:756) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:683) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140) at com.gdk.jdbc.connection.c3p0.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:230) at com.gdk.jdbc.connection.ConnectionPoolManager.getMasterConnection(ConnectionPoolManager.java:177) ... 49 more
FPGA以I2C读取at24c128,接收不到应答信号
程序如下,程序一直停留在状态“1010”,也就是接收不到ACK,求各位大神帮忙 -------------------div 50M change to 1M----------- process(clk1,reset) variable Count:integer range 0 to 51; begin if reset = '0' then--异步清零信号 Count:=0; elsif(clk1='1' and clk1'event) then if Count=25 then i2cclk<='0'; Count:=Count+1; elsif Count=50 then Count:=0; i2cclk<= '1'; else Count := Count+1; end if; end if; end process; ------------------------------------------------------- -------------------I2C write--------------------------- process(i2cclk,reset) variable i_cnt :integer range 8 downto 0:=8 ; variable ack_cnt :integer range 0 to 8:=0 ; variable ack_time :integer range 0 to 100:=0 ; variable d_cnt :integer range 0 to 80:=0 ; variable machine_addr:std_logic_vector(7 downto 0):="10100000"; variable i2caddrh:std_logic_vector(7 downto 0):="00000000"; variable i2caddrl:std_logic_vector(7 downto 0):="10100000"; variable i2cdata:std_logic_vector(7 downto 0):="01010101"; variable i2cwr_one :std_logic:='0';-- variable i2cdata_temp :std_logic:='0';-- begin if reset = '0' then i2cstatewr<="0000"; machine_addr:="10100000"; i2cdata:="01010101"; i2caddrh:="00000000"; i2cdata:="01010101"; i_cnt:=8; d_cnt:=0; i2cwr_one:='0'; ack_cnt:=0; led<='1'; elsif(i2cclk='1' and i2cclk'event) then case i2cstatewr is when "0000"=>--init d_cnt:=d_cnt+1; if d_cnt=1 then i2cda<='1'; i2cclk_s<='1'; i2cstatewr<="0000"; elsif d_cnt=delay_cnt then d_cnt:=0; -- if i2cwr_one='0' then i2cstatewr<="0001"; -- else -- i2cstatewr<="0000"; -- end if; else i2cstatewr<="0000"; end if; when "0001"=>--i2c start d_cnt:=d_cnt+1; if d_cnt=1 then i2cda<='0'; i2cstatewr<="0001"; elsif d_cnt=delay_cnt then d_cnt:=0; i2cstatewr<="0011"; else i2cstatewr<="0001"; end if; -- when "0010"=> -- i2cclk_s<='0'; -- i2cstatewr<="0011"; when "0011"=>--i2c send machineaddr ,addrh,addrl,data d_cnt:=d_cnt+1; if d_cnt=1 then i2cclk_s<='0'; i2cstatewr<="0011"; elsif d_cnt=delay_cnt then d_cnt:=0; i_cnt:=i_cnt-1; i2cstatewr<="0100"; else i2cstatewr<="0011"; end if; when "0100"=> d_cnt:=d_cnt+1; if d_cnt=1 then if ack_cnt=0 then i2cda<=machine_addr(i_cnt); elsif ack_cnt=1 then i2cda<=i2caddrh(i_cnt); elsif ack_cnt=2 then i2cda<=i2caddrl(i_cnt); elsif ack_cnt=3 then i2cda<=i2cdata(i_cnt); end if; i2cstatewr<="0100"; elsif d_cnt=delay_cnt then d_cnt:=0; i2cstatewr<="0101"; else i2cstatewr<="0100"; end if; when "0101"=> d_cnt:=d_cnt+1; if d_cnt=1 then i2cclk_s<='1'; i2cstatewr<="0101"; elsif d_cnt=delay_cnt then d_cnt:=0; if i_cnt=0 then i_cnt:=8; i2cstatewr<="0110"; else i2cstatewr<="0011"; end if; else i2cstatewr<="0101"; end if; when "0110" => --ninth clock d_cnt:=d_cnt+1; if d_cnt=1 then i2cclk_s<='0'; i2cstatewr<="0110"; elsif d_cnt=delay_cnt then --delay_cnt then d_cnt:=0; i2cstatewr<="0111"; else i2cstatewr<="0110"; end if; when "0111"=> d_cnt:=d_cnt+1; if d_cnt=1 then i2cda<='1'; i2cstatewr<="0111"; elsif d_cnt=delay_cnt then d_cnt:=0; i2cstatewr<="1000"; else i2cstatewr<="0111"; end if; when "1000"=>--wait ack d_cnt:=d_cnt+1; if d_cnt=1 then i2cclk_s<='1'; i2cstatewr<="1000"; elsif d_cnt=delay_cnt then d_cnt:=0; i2cstatewr<="1001"; else i2cstatewr<="1000"; end if; when "1001"=> i2cdata_temp:=i2cda; if i2cdata_temp='1' then i2cstatewr<="1001"; else i2cstatewr<="1010"; end if; when "1010"=> d_cnt:=d_cnt+1; if d_cnt=1 then i2cclk_s<='0'; i2cstatewr<="1010"; elsif d_cnt=delay_cnt then d_cnt:=0; ack_cnt:=ack_cnt+1; if ack_cnt =3 then led<='0'; ack_cnt:=0; i2cstatewr<="0000"; else i_cnt:=8; i2cstatewr<="0011"; end if; else i2cstatewr<="1010"; end if; -- when "1000"=>--i2c stop -- i2cclk_s<='0'; -- i2cda<='0'; -- i2cstatewr<="1001"; -- when "1001"=>-- -- i2cclk_s<='1'; -- i2cstatewr<="1010"; -- when "1010"=> -- i2cda<='1'; -- i2cwr_one:='1'; -- i2cstatewr<="0000"; when others=> i2cstatewr<="0000"; end case; end if; end process;
买了esp8266的模块,想用手机来控制51单片机,程序不知道哪里出错,没反应。求大神帮忙啊。。
#include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit p1=P1^0; uchar uart_data[100],shuju,c,d=0; void yanshi(uint a) { uint b; for(a;a>0;a--) for(b=0;a<100;b++); } /*************************************************************/ void printf(char *str) { while(*str!='\0') { c=1; SBUF=*str; while(c); str++; } } /**************************************************************/ void uart_init() { TMOD= 0x20; SCON= 0x50; TH1 = 0xFD; TL1 = TH1; PCON= 0x00; EA = 1; ES = 1; TR1 = 1; } /************************************************************************/ void main() { uart_init(); do { printf("AT+CIPMUX=1\r\n"); yanshi(100); if(shuju=="ok") { break; } } while(1); do { printf("AT+CIPSERVER=1,5000\r\n"); yanshi(100); TI=0; if(shuju=="ok") { break; } } while(1); while(1); } /*******************************************************************/ void uart() interrupt 4 { if(RI) { do { if(RI) { uart_data[d]=SBUF; d++; RI=0; } d++; } while(d<100); shuju=uart_data; } if(TI) { TI=0; c=0; } }
Catch the Bus!用的C程序设计语言
Problem Description ACM needs to deliver marketing materials to one of their clients. Both ACM and the client employ students to make such deliveries. And these students use public buses to move throughout the city. Sometimes, it is necessary to pass the materials as fast as possible. You are given bus timetables and your task is to find the fastest way for two students to meet at some stop. The place of the meeting is not important, they only need to meet as early as possible. Students may change between any two bus routes at stops that are common for both routes. At least two minutes are needed for every such change. No additional time is necessary to get on the first bus or to meet the other student in the target stop. Input The input contains a sequence of several scenarios, the sequence is terminated by a line containing negative number. Each scenario begins with a non-negative integer L, the number of bus routes that operate in the city (L ≤ 1000). Every route is then described by two lines. The first line contains names of stops that the bus runs through. Between each consecutive stops, there is a non-negative integer specifying the number of minutes required to travel between these stops with the given bus. The last stop is followed by a negative number. The second line of each bus route contains non-negative integers separated with spaces. The first integer H gives the number of buses that depart the initial stop in every hour (H ≤ 60). The remaining H integers are always distinct and sorted ascendingly, they list the minutes of departure (between 0 and 59). The timetable repeats every hour. For example, if the second line says “2 00 30”, the buses leave the initial stop at 12:00, 12:30, 13:00, 13:30, 14:00, etc. After the description of routes, there are two lines that specify the initial position of students. Each of them will contain time in a standard 24-hour format (one or two digits for hours, colon, and two digits for minutes) and a stop name. All numbers, times, and stop names will be separated with a single space. Stop names are case-sensitive and may be composed only from lower-case and upper-case letters, their length will not exceed 30 characters. The total number of stops will be at most 1000, the number of stops on a single route will not exceed 100. The time between any two consecutive stops will be at most one hour. The routes are considered one-way, if they operate in both directions, they will be given as two separate routes. A route may run through the same stop several times. Output For each test scenario, output a single line containing the earliest possible time the students can meet at any of the stops. The time must appear in the standard 24-hour format, hours given as a number between 0 and 23, then colon and minutes between 0 and 59. For hour values less than 10, only one digit must be used. Be aware of the fact that both students start their trip on the same day but may meet on another day, if the required time exceeds midnight. If the students are not able to meet in some scenario, output the words “No connection” instead of the time. Sample Input 4 Hradcanska 2 Malostranska 2 Staromestska 2 Mustek 1 Muzeum -1 10 00 06 12 18 24 30 36 42 48 54 Muzeum 1 Mustek 2 Staromestska 2 Malostranska 2 Hradcanska -1 10 03 09 15 21 27 33 39 45 51 57 Andel 2 Karlovo 1 Narodni 2 Mustek 2 Florenc -1 6 00 10 20 30 40 50 Florenc 2 Mustek 2 Narodni 3 Karlovo 1 Andel -1 6 02 12 22 32 42 52 12:00 Hradcanska 12:11 Andel 1 Hradcanska 2 Malostranska 2 Staromestska 2 Mustek 1 Muzeum 2 Hradcanska -1 10 00 06 12 18 24 30 36 42 48 54 12:00 Mustek 12:00 Andel -1 Sample Output 12:20 No connection
推荐 130 个令你眼前一亮的网站,总有一个用得着
总结了大学生活两年来,发现的 130 余个黑科技网站,总有一个会让你眼前一亮,赶紧收藏!
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
我在支付宝花了1分钟,查到了女朋友的开房记录!
在大数据时代下,不管你做什么都会留下蛛丝马迹,只要学会把各种软件运用到极致,捉奸简直轻而易举。今天就来给大家分享一下,什么叫大数据抓出轨。据史料证明,马爸爸年轻时曾被...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Flutter 会不会被苹果限制其发展?
这个可能性是存在的,而且不止是 flutter、react-native 、weex 、uni-app 、taro 、Hippy等都存在这个风险,虽然有些框架对比起 flutter 其他框架存在时间稍长,但是这不可否认它们一直都存在这个风向。 只要不是平台自己的亲儿子,那么肯定存在被限制发展的风险,所以这件事上是风险和收益之间的博弈,这是一个“后妈和前任之间的太极。” 先说现状 如今各大平台,如:...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
Linux必懂知识大总结(补)
关机 1. 数据同步写入磁盘 sync 为了加快对磁盘上文件的读写速度,位于内存中的文件数据不会立即同步到磁盘上,因此关机之前需要先进行 sync 同步操作。 2. shutdown # /sbin/shutdown [-krhc] [时间] [警告讯息] -k : 不会关机,只是发送警告讯息,通知所有在线的用户 -r : 将系统的服务停掉后就重新启动 -h : 将系统的服务停掉后就...
立即提问