2

回答

STM8L051F3用什么软件做开发?KEIL可以吗?

周宝生 2021-02-24 阅读:22

4

回答

  就是发送到串口1的数据,会被串口3中断接收到   好奇怪。   串口3没有复用;把pb11的浮空输入改成上拉或下拉输入都不行,都能收到   修改优先级也不行   实在搞不懂。   上来请教各位大神,先谢谢了

mingming 2021-02-22 阅读:33

2

回答
FATFS在FreeRTOS中不能使用 单片机综合应用

FATFS在裸机运行没问题,在FreeRTOS中,用FS指针可以挂在,用FS变量就会进硬件错误中断,而且用指针却不能打开文件,错误是文件无效。前提都是裸机没问题,请问一下?!

大伟 2021-02-22 阅读:23

6

回答

单片机串口通信程序书写中,P端口要一一对应吗?

小葱拌豆腐 2021-02-20 阅读:49

5

回答

内部有2个APP。通过IAP跳转 想法是:做固件升级,内部放2个APP,一个是当前版本,一个是上一个版本。 2个APP互相轮询的烧录。 例如: APP1 keil编辑的起始地址0x8002000    向量表偏移0x2000。 APP2 keil编辑的起始地址0x8002000 。向量表偏移0x12000 ,APP2采用USB写入FLASH 0x8012000的地址。 IAP跳转 APP1 为0x8002000,跳转 APP2 为 0x8012000。 keil编辑的起始地址都是按照0x8002000,只是放到别的地址了,用IAP跳转到那个地址, 能运行吗? 我的思路能行吗?

周宝生 2021-02-19 阅读:46

3

回答

接收的数据存入33H ~ 3FH  需要显示前11位   怎么用最少的程序显示出来   下面的程序只显示第一位(接收的第一位是A)  后面显示的是BCDEFGHIJK  显示的不是接收的数据 怎样才能把里面的数据显示出来   还有为什么接收时用的是#33H  显示的时候可以直接用33H显示   MOV R3#11;   显示数量                 MOV R133H;   数据存放地址                      MOV R2#0C2H; 显示地址 DIPA:        MOV P1R2;          INC R2;          LCALL WR_CODE          MOV        AR1          INC R1             LCALL WR_DATA                                        DJNZ R3DIPA

周宝生 2021-02-19 阅读:49

2

回答

二极管是单向导通,那么反向恢复时间是什么,需要怎么测试

yhj416606438 2021-02-19 阅读:24

5

回答
逻辑分析仪测的波形是乱的 单片机综合应用

逻辑分析仪测的波形是乱的

莱克迷KW 2021-02-19 阅读:32

3

回答

这次一个无源蜂鸣器驱动算是遇到问题了 此程序并非本人所写也是借鉴于论坛大神帖子的! 程序如下: 定时器为八位自动重装模式 定时250us; void  timer()  interrupt   1 { static uint16  count=0; uint16   count; if(num>0) { count++; if(count<400) { beep=~beep; if(count>=400) beep=1; if(count>=800) { count=0; num--; } } } } 求问:三个if里面的的数值都决定了蜂鸣器的什么状态?

电子大拿 2021-02-18 阅读:34

6

回答

例如128KB空间。程序占用空间40K. 通过升级,固件缩小到30K.  覆盖30K以后,后面10K是之前的残留,需要判断并擦除吗?还是留着不管也可以的?

大伟 2021-02-18 阅读:157

3

回答

为什么正反接都能工作,如何区分正反

yhj416606438 2021-02-14 阅读:25

4

回答

一个非常简单的小程序,利用外部中断控制静态数码管和动态数码管轮流显示数字0~7,可是无论是实际下载到开发板还是用protues仿真都只有动态显示,无法切换到静态显示,代码也检查了许多遍,刚刚开始学51,不知道是不是算法的问题,恳求大佬帮忙指点一点,下面是代码。 #include <reg52.h> #define LED1 P1//静态数码管 #define LED2 P0//动态数码管 sbit c=P2^7; sbit b=P2^6; sbit a=P2^5; sbit k1=P3^2; sbit k2=P3^3; unsigned char code num[8]={0x3f0x060x5b0x4f0x660x6d0x7d0x07}; unsigned char M[8]; unsigned char k; void displayLED1(); void displayLED2(); void zhong_duan_kai_qi(); void delay(unsigned int time); void main() {         zhong_duan_kai_qi();//外部中断开启         while(1)         {                        unsigned char i;                 if(k)                 {                         LED2=0x00;                         while(k)                         {                                 displayLED1();                                }                                }                 else                 {                         for(i=0;i<8;i++)                         {                                 M[i]=num[i];                         }                         LED1=0x00;                                        while(~k)                         {                                 displayLED2();                         }                 }         }        } void delay(unsigned int time) {         unsigned char i;         unsigned int j;                        for(i=0;i<time;i++)         {                 for(j=0;j<125;j++);         } } void zhong_duan_kai_qi() {         //设置INT0         IT0=1;//跳变沿出发方式(下降沿)         EX0=1;//打开INT0的中断允许。         //设置INT1         IT1=1;         EX1=1;         //打开总中断         EA=1;        } void displayLED1() {         unsigned char i;         for(i=0;i<8;i++)         {                 LED1=num[i];                                        delay(500);         } } void displayLED2() {         unsigned char i;         unsigned int j;         for(i=0;i<8;i++)         {                 switch(i)                 {                         case 0:                                 c=0;b=0;a=0;break;                         case 1:                                 c=0;b=0;a=1;break;                         case 2:                                 c=0;b=1;a=0;break;                         case 3:                                 c=0;b=1;a=1;break;                         case 4:                                 c=1;b=0;a=0;break;                         case 5:                                 c=1;b=0;a=1;break;                         case 6:                                 c=1;b=1;a=0;break;                         case 7:                                 c=1;b=1;a=1;break;                 }                 LED2=M[i];                 j=500;                 while(j--);                 LED2=0x00;//消隐         } } void Int0()interrupt 0 {         delay(1);//延时消抖         if(k1==0)         {                 k=0;                } } void Int1()interrupt 2 {         delay(1);         if(k2==0)         {                 k=1;                } }

zzzqiu 2021-02-10 阅读:848

3

回答

#include <reg52.h> #include <stdio.h> #include "lcd1602.h" //ADC0809 sbit CLK=P3^4;         sbit ST=P3^5;         sbit EOC=P3^6;         sbit OE=P3^7; sbit RELAY = P3^3; unsigned int pass = 0; unsigned int ADCshow; unsigned char pressure = 50; unsigned char mode=0; unsigned char status = 0; void delay(unsigned int s)         {         while(s--); } void DelayMS(unsigned int ms) {          unsigned char i;         while(ms--)         {                  for(i=0;i<120;i++);         } } void Timer0_INT() interrupt 1 {         TH0=(65536-200)/256;         TL0=(65536-200)%256;         CLK=~CLK;          } void UART_init()    //设置串行通信 本晶振为11.0592MHZ,其他的就自己算一下应该设置多少 {       TMOD = 0x20;       TH1 = 0xfd;       TL1 = 0xfd;  //波特率9600       SM0 = 0;         SM1 = 1;   // 串口工作方式1 10位异步       REN = 1;  //串口允许接收       TR1 = 1;       EA = 1;       ES =1 ;  //串口中断 } void main(void) {                    RELAY=1;  //关灯           UART_init();       lcd_init(); //初始化1602                 TMOD=0x01; //设置定时器0                 TH0=(65536-200)/256; //初值重装                 TL0=(65536-200)%256;         EA=1;  //开总中断                 ET0=1;  //开定时器中断                 TR0=1;   //开定时器0                 while(1)                 {                                                  //adc0809读取数据                                                 ST=0;                                                 OE=0;                                                 ST=1;                                                 ST=0;                                                 while(EOC==0);                                                 OE=1;                                                 ADCshow=P1;                                                 OE=0;                      //lcd1602显示压力传感器值                                         LCD_ShowStr(00"Real:");                                         LCD_ShowChar(50ADCshow/100+'0');                                            LCD_ShowChar(60ADCshow%100/10 +'0');                                   LCD_ShowChar(70ADCshow%10 +'0');                                                                                                 if(ADCshow<pressure||pass==0x11)                                 {                                    RELAY=0;  //亮灯                                                                  }                                                          else                                 {  //否则                                          RELAY=1; //灭灯                                                                  }                                                           }                 } void UART_INTERRUPT() interrupt 4 {                       pass = SBUF;               RI = 0;                  SBUF = pass;  )               while(!TI);               TI = 0;   } 原理图

mingming 2021-02-10 阅读:76

3

回答
GD32F103CBT6 Systick定时器不准 单片机综合应用

我新建了GD32的工程,用GD标准库,在测试滴答定时器中断时,发现中断能进去,但是进一次中断大概是7ms左右。我只把原来主频108M改成72M,原来108M系统初始化不了,进不去Main函数。

lilei 2021-02-09 阅读:44

6

回答
无法改变单片机I/O输出电平 单片机综合应用

请问一下我在使用51最小系统板做流水灯的时候通过程序无法改变I/O输出电平是怎么回事,I/O持续输出5V高电平,但是把芯片换到另一个基座就可以改变,请问哪里可能出问题了

zzgege 2021-02-08 阅读:36

3

回答
裸机程序中关于printf的问题 单片机综合应用

自己在做裸机实验有时候在printf中加入“\n\r”换行符时会莫名跑死,哪怕都没执行printf也会跑死,程序本身确定没有问题而且只要去掉换行符就恢复正常,不限程序,有时候却不会出现问题,串口和格式化输出程序都是用的原子提供的,就很迷,有人遇到这种情况吗?

雪狼 2021-02-08 阅读:41

2

回答

DM9000的CMD与读写操作有什么关系

莱克迷KW 2021-02-08 阅读:33

2

回答

GD32会不会出cubemx类的软件来丰富生态

莱克迷KW 2021-02-07 阅读:40

2

回答

串口中的停止位,为什么可以有1.5位

莱克迷KW 2021-02-05 阅读:53

5

回答
关于数码管闪烁的问题 单片机综合应用

用数码管做了数字钟,运行没有什么问题,但是加了流水灯之后,数码管会闪烁,这是怎么回事?应该怎么解决?求大佬指教! 代码如下:#include<regx51.h> #define uint unsigned int #define uchar unsigned char sbit s1 = P3^2;//闹钟开关 sbit s2 = P3^3;//设置 sbit s3 = P3^4;//小时键 sbit s4 = P3^5;//分 sbit s5 = P3^6;//退出键 sbit fs = P3^0;//蜂鸣器 sbit d = P3^1;//小灯 unsigned char mfsw;//秒,分,时,计数器 uchar f_naos_nao;//闹钟分,时 bit flag_nao;//闹钟标志 void zuo(); void you(); void delay(uint i); //void ledscan(uchar huchar muchar s); void alarm(); void tiaojie(); void delay(uint i) {         while(i--);                 } void zuo() {unsigned char d;         unsigned char a = 0x01;         for(d = 0;d<8;d++)                 {                 P0 = ~a;                 delay(1);           a = a<<1;     }                 if(a == 0)                 {                         a = 0x01;                 } } void ledscan(uchar huchar muchar s) reentrant {         uchar LED[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f}; uint j; P1 = LED[s%10]; P2 = 0x7f; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[s/10]; P2 = 0xbf; for(j = 0;j<100;j++); P2 = 0xff; P1 = 0x40; P2 = 0Xdf; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[m%10]; P2 = 0xef; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[m/10]; P2 = 0xf7; for(j = 0;j<100;j++); P2 = 0xff; P1 = 0x40; P2 = 0xfb; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[h%10]; P2 = 0xfd; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[h/10]; P2 = 0xfe; for(j = 0;j<100;j++); P2 = 0xff; } void tiaojie() {         if(s3 == 0)         {                 ledscan(sfm);                 if(s3 == 0)                 {                         if(s == 23)                                 s = 0;                                 else                                         s++;                                         while(!s3)ledscan(sfm);                         }         }         else if(s4 == 0)         {                 ledscan(sfm);                 if(s4 == 0)                 {                         if(f == 59)                                 f = 0;                                 else                                         f++;                                         while(!s4)ledscan(sfm);                         }         } }void alarm() {         //uchar a;         if(flag_nao)         {                 if(f==f_nao&&s==s_nao)                 {                         while(m<=5&&flag_nao)       {                                 fs = ~fs;                                 ledscan(sfm);}                 }         } } void t0() interrupt 1 {         TH0 = (65536-50000)/256;         TL0 = (65536-50000)%256;         w++;         if(w == 20)         {                 w = 0;                 m++;                 if(m == 60)                 {                         f++;                         m = 0;                         if(f == 60)                         {s++;                                 f = 0;                                 if(s == 24)                                         s = 0;}                 }         }zuo(); } void guan_naozhong() interrupt 0 {         flag_nao = ~flag_nao;         d = ~d;         while(!s1)ledscan(sfm); } void naozhong()interrupt 2 {         f_nao = f;         s_nao = s;         while(s5)         {                 ledscan(s_naof_nao0);                 if(s3 == 0)                 {                         ledscan(s_naof_nao0);                         if(s3 == 0)                         {                                 if(s_nao == 24)s_nao =0;                                 else s_nao++;                                 }                         while(!s3) ledscan(s_naof_nao0);                 }                 else if(s4 == 0)                 {                         ledscan(s_naof_nao0);                         if(s4 == 0)                         {                                 if(f_nao == 59)f_nao =0;                                         else f_nao++;                                 }                         while(!s4)                                 ledscan(s_naof_nao0);                 }         } } void main() {         TMOD = 0X01;         TH0 =(65536 - 50000)/256;         TL0 =(65536 - 50000)%256;         TR0 = 1;         ET0 = 1;         IT1 = 1;         IT0 = 0;         EX1 = 1;         EX0 = 1;         PT0 = 1;         EA = 1;         f = 0;         m = 0;         fs = 0;         flag_nao = 0;         while(1)         {                 ledscan(sfm);                 tiaojie();                 alarm();                 //zuo();         } }

韩梅梅 2021-02-05 阅读:44
  • 帮助人数
  • 0
  • 获得赞数
  • 0
  • 一周积分
  • 0

问题达人换一批

本月问答

排名
用户名
问答积分
2
1370
3
1262
5
896
6
720
7
512
9
142
10
64
< 123 >