557

帖子

0

TA的资源

裸片初长成(初级)

41
 
原帖由 heningbo 于 2009-5-8 08:40 发表

  Start:mov sp,#60h;
  是:org 0060h;
    Start:·····的意思吗?...


可以肯定:不是一个意思。其汇编结果也会是不同的。
不过,这是个值得继续讨论的问题。


34楼的这个“问题”似乎是在引起(提醒)大家--特别是初学者--在汇编语言的某些更基础方面做更细致深入的关注和讨论。
此帖出自单片机论坛
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

42
 
原帖由 zhengzhoutie 于 2009-5-8 19:25 发表
我的问题是。。。发送与接收部分不能在其他程序模块中调用,我想的是主机能发送命令至从机,然后从机接受命令开始调节,之后从机定期返回从机状态。
     现在我能把主机命令传到从机,但之后就无法返回数据了。我的 ...


       计算机的通信是一个比较复杂的体系。对于多机通信问题,如果是基于51单片机的话,支持一主多从式通信,各从机之间不能直接通信,硬件连结方式要保证从机的RXD和TXD均互连,但是与主机的RXD和TXD要交叉连结但要求传输距离不得大于15m;如果距离较远,要采取其他措施,如增设485接口或调制解调器。
       软件方面是基于内部串行通信工作方式2或3的基础上,配合SM2、TB8、RB8(原笔误TX8、RX8)三个位的互相配合,你必需对SM2这个位对接收到怎样的信息才能引起串行接收标志位RI(原笔误TI)置位的情况予以充分了解,才能很好的控制多机通信。

       SM2简述:

              SM2=1时:
                     当接收到第9位数据(RB8)为1,则把接收到的前8位数据送入SBUF,且置位RI,也能申请接收中断;
                     若接收到第9位数据(RB8)为0,会将接受到的数据丢弃。
              SM2=0时:
                     不管第9位数据是0还是1,都将数据送入SBUF,并能申请接收中断。
              以上对SM2的简单描述要弄清楚,才能控制编程。


略说一下编程机制
1:首先各分机置SM2=1;表示处于接收地址帧状态;主机始终置SM2=0;
2:主机发送地址帧,前8位为地址号,第9位TB8=1;
3:各从机均接收到这个地址号,与自己的固有地址号比较,若相等,置SM2=0;该从机处于接收数据帧状态;
4:主机发送数据帧,第9位TB8=0;
5:则只有刚才寻呼到的置SM2=0的那个从机才能接收到这个数据;
6:分机发送,前8位为数据,第9位TB8=0;由于主机的SM2=0;所以能接收到该从机发送来的数据。

以下转一篇关于51单片机的串行口的文章(转自8951网),课本上都有


MCS-51的串行通信口

  MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。下面我们分别介绍。

    [1]. 基本概念

    数据通信的传输方式
    常用于数据通信的传输方式有单工、半双工、全双工和多工方式。

    单工方式:数据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。

    半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。

    全双工方式:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。

    多工方式:以上三种传输方式都是用同一线路传输一种频率信号,为了充分地利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分或码分复用技术,即可实现在同一线路上资源共享功能,我们盛之为多工传输方式。

串行数据通信两种形式
    异步通信
    在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位,图2是传输45H的数据格式。

    同步通信
    同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步通信中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送数据量较大的场合,速度就慢得多。同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。

    同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂。


串行数据通信的传输速率
    串行数据传输速率有两个概念,即每秒转送的位数bps(Bit per second)和每秒符号数—波特率(Band rate),在具有调制解调器的通信中,波特率与调制速率有关。

    [2]. MCS-51的串行口和控制寄存器

    串行口控制寄存器

  MCS-51单片机串行口寄存器结构如图3所示。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99H)。MCS-51的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据。而从接收缓冲器读出数据即可接收数据。

    此外,从图中可看出,接收缓冲器前还加上一级输入移位寄存器,MCS-51这种结构目的在于接收数据时避免发生数据帧重叠现象,以免出错,部分文献称这种结构为双缓冲器结构。而发送数据时就不需要这样设置,因为发送时,CPU是主动的,不可能出现这种现象。


    串行通信控制寄存器
    在上一节我们已经分析了SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下:

  表1  SCON寄存器结构
SCON
D7D6D5D4D3D2D1D0
SM0SM1SM2RENTB8RB8TIRI
位地址9FH9EH8DH9CH9BH9AH99H98H


   下面我们对各控制位功能介绍如下:
    (1).SM0、SM1:串行口工作方式控制位。
        SM0,SM1    工作方式
            00      方式0
            01      方式1
            10      方式2
            11      方式3


    (2).SM2:多机通信控制位。
    多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。
    工作于方式0时,SM2必须为0。


    (3).REN:允许接收位。
    REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。

    (4).TB8:发送接收数据位8。
    在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。

    (5).RB8:接收数据位8。
    在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。

    (6).TI:发送中断标志位。
    可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。

    (7).RI:接收中断标志位。
    可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。

  电源管理寄存器PCON
    PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:

  表2  PCON电源管理寄存器结构
PCOND7D6D5D4D3D2D1D0
位符号SMOD---GF1GF0PDIDL


   在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。



   中断允许寄存器IE
    中断允许寄存器在前一节中已阐述,这里重述一下对串行口有影响的位ES。ES为串行中断允许控制位,ES=1允许串行中断,ES=0,禁止串行中断。

  表3  IE中断允许控制寄存器结构
位符号EA--ESET1EX1ET0EX0
位地址AFHAEHADHACHABHAAHA9HA8H



[ 本帖最后由 xu__changhua 于 2009-5-11 05:20 编辑 ]
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

43
 
上文“配合SM2、TX8、RX8三个位的互相配合”有误,应改为:

TB8、RB8
此帖出自单片机论坛
 
 
 

回复

464

帖子

0

TA的资源

五彩晶圆(高级)

44
 
谢谢啊!挺详细的,我在看看,定将他拿下
此帖出自单片机论坛
 
个人签名气力
 
 

回复

2113

帖子

0

TA的资源

裸片初长成(初级)

45
 

问:内部数据存储器的一些问题

内部数据存储器有:工作寄存器 位寻址区 数据缓冲区
工作寄存器我还比较理解
位寻址区 书上是这么介绍的:其每一位都可以作为软件触发器,有程序直接进行处理。通常可以吧各种程序状态标志为控制变量存于为寻址区内

我想在了解一下它和数据缓冲区的区别。位寻址区可以解释的白话一点吗


谢谢哦
此帖出自单片机论坛
 
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

46
 
30H~7FH这80个字节是数据缓冲区,数据缓冲区是以字节为基本单位按字节进行整个字节(8位)存取(读写,或叫操作);

20H~2FH共16个字节是位寻址区,位寻址区除了可以按字节进行整个字节存取外(实际上也是数据缓冲区),还支持按位(一位一位的)存取,因此可以将每个字节里面的8个位独立存取(操作),共16*8=128个位。单片机系统并没有对这些位定义特别的含义,用户可以任意的定义这些位的含义,可根据程序运行的状况用于设定(置1或清0)其值,并可以测试其值,以决定程序的运行顺序。

与特殊功能寄存器(SFR)中的能被8整除的大多数寄存器中可按位读写的位有些区别,虽然他们的可操作性质是相同的,但是,这部分位大多数都已经被系统所定义了特别的含义,如C,就是反映两数相加的进位,P,就是随时指示累加器A中1的个数的奇偶性。
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复

2113

帖子

0

TA的资源

裸片初长成(初级)

47
 
谢谢哦
我知道了
会好好学习的
此帖出自单片机论坛
 
 
 

回复

51

帖子

0

TA的资源

纯净的硅(中级)

48
 
液晶LCD1602C需要硬件IC驱动吗  我用的是AT89S52单片机  大侠请给我个连接原理图
此帖出自单片机论坛
 
 
 

回复

111

帖子

0

TA的资源

五彩晶圆(初级)

49
 
第1脚:VSS为地电源
第2脚:VDD接5V正电源
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15~16脚:空脚
文章出处:http://www.diybl.com/course/3_pr ... /200876/130589.html
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复

59

帖子

0

TA的资源

纯净的硅(初级)

50
 
请帮忙看看这个ds18b20加液晶12864显示的程序,现在液晶可以显示自定义的字符,但是在显示温度的地方出现了个“U"的符号,按复位键后又变为"P",ds18b20是按时序写的,参考了很多程序,我怀疑是ds18b20转换成液晶字符显示那出错了,但是不太明白。。。望各位大侠看看,谢谢
#include
#include

#define uchar unsigned char
#define uint unsigned int
uchar temp_value,temp[];
sbit BIT7=ACC^7;
sbit   DQ = P1^7;
sbit rs=P2^4;
sbit rw=P2^5;
sbit en=P2^6;
sbit rst=P2^3;
sbit psb=P2^1;
//sfr16 DPTR=0x82;
uchar code table3[]={"现在的温度为:"};

/***********ds18b20延迟子函数(晶振12MHz )*******/
void delay15(uchar n)
{  
        do{_nop_();_nop_();_nop_();_nop_();
           _nop_();_nop_();_nop_();_nop_();
       _nop_();_nop_();_nop_();_nop_();
       _nop_();
           n--;
          }while(n);
}

/**********ds18b20初始化函数**********************/
void rst_18b20(void)
{        uchar E_ds18b20;
        DQ=0;
        delay15(36);
        DQ=1;
        delay15(6);
    E_ds18b20=DQ;
        delay15(18);
}

/***********ds18b20写一个字节*********************/  
void wr_18b20(uchar d)
{
        uchar i;
        ACC=d;
        for(i=8;i>0;i--)
        {       
                DQ=0;
                delay15(1);
                ACC=ACC>>1;
                DQ=CY;
                delay15(3);
                DQ=1;
        }

}

/***********ds18b20读一个字节********************/  
uchar rd_18b20(void)
{
        uchar i;
        ACC=0;
        for(i=8;i>0;i--)
        {
                ACC=ACC>>1;
                DQ=0;
                _nop_();
                DQ=1;
                delay15(1);
                BIT7=DQ;
        }
   return(ACC);
}

/**************读取ds18b20当前温度****************/
uchar readtemp(void)
{   uchar t;
        rst_18b20();
       
        wr_18b20(0xcc);   //跳过传感器识别
        wr_18b20(0x44);  //启动温度转换
    delay15(60);
        rst_18b20();
        wr_18b20(0xcc);
        wr_18b20(0xbe);
        DPL=rd_18b20();  //温度值低位
        DPH=rd_18b20();  //温度值高位
   // temp_value=((DPH*256)+DPL)*0.0625;
    temp_value=DPH;
        temp_value<<=8;
        temp_value|=DPL;
    t=temp_value*0.0625;
    temp_value= t*10+0.5;
    return(temp_value);

        delay15(100);
        return(temp_value);
}

   // DPH<<=4;
   // DPH+=(DPL&0xf0)>>4;
   


/**    void temp_str()
           {       
                   temp[0]=temp_value/10+'0';
                temp[1]=temp_value%10+'0';
                temp[2]=0xdf;
                temp[3]='c';
                temp[4]='\0';
                               
           }**/       

/*************************12864液晶子程序************/
void delay(uint k)
{
        uint i,j;       
        for(i=0;i         for(j=0;j<121;j++);
}

void wcode(uchar cmd)
{
   
        rs=0;
        rw=0;
        en=0;
        P0=cmd;
        delay(5);
        en=1;
       
        delay(5);
       
        en=0;

}
void wdata(uchar dat)
{

        rs=1;
        rw=0;
        en=0;
        P0=dat;
        delay(5);
        en=1;
        delay(5);
        en=0;

}

void init()
{
        psb=1;
        wcode(0x30);
        delay(5);
        wcode(0x0c);
        delay(5);
        wcode(0x01);
        delay(5);
       
}
void lcd_pos(uchar x,uchar y)
{
        uchar pos;
        if(x==0)
                {x=0x80;}
        else if(x==1)
                {x=0x90;}
        else if(x==2)
                {x=0x88;}
        else if(x==3)
                {x=0x98;}
        pos=x+y;
        wcode(pos);
}
void main()
{
        uchar i;
        init();
    readtemp();
    //temp_str();
   
        lcd_pos(2,3);
    wdata(temp_value);
/*   i=0;
        while(temp!='\0')
        {
                wdata(temp);
                i++;
        }   **/

        lcd_pos(0,0);
        i=0;
        while(table3!='\0')
        {
                wdata(table3);
                i++;
        }
   while(1);       

}
此帖出自单片机论坛
 
 
 

回复

1014

帖子

0

TA的资源

裸片初长成(初级)

51
 
我想学习linux,版主能讲讲嵌入式开发在LINUX里怎么配置吗
此帖出自单片机论坛
 
 
 

回复

59

帖子

0

TA的资源

纯净的硅(初级)

52
 
温度无法正常显示,总是显示"22",麻烦哪位高手给看看,不胜感激!
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit   DQ = P1^7;
uchar i,a,b;
bit x=0;
uchar code table3[]={"现在的温度为:"};
uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
unsigned char temp_value,display[];

/***********ds18b20延迟子函数(晶振12MHz )*******/
void delay_18B20(unsigned int i)
{
while(--i);
}
/**********ds18b20初始化函数**********************/
Init_DS18B20(void)
{
  
  DQ = 1;          //DQ复位
  delay_18B20(8);  //稍做延时
  DQ = 0;          //单片机将DQ拉低
  delay_18B20(90); //精确延时 大于 480us
  DQ = 1;          //拉高总线
  delay_18B20(8);
  x=DQ;            //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
  delay_18B20(100);
  return( x);
}
/***********ds18b20读一个字节**************/  
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
  {
    DQ = 0;      // 给脉冲信号
    dat>>=1;     //数据右移一位
    DQ = 1;      // 给脉冲信号
    if(DQ)
    dat|=0x80;   //按位或,取最高位
    delay_18B20(4);
  }
  return(dat);
}
/*************ds18b20写一个字节****************/  
void WriteOneChar(unsigned char dat)
{
  unsigned char i=0;
  for (i=8; i>0; i--)
  {
    DQ = 0;
   DQ = dat&0x01;     //取最低位
     delay_18B20(5);
   DQ = 1;            //上升沿将数据送入
     dat>>=1;
}
}
/**************读取ds18b20当前温度************/
uchar ReadTemp(void)
{
      
      //long temp_value=0;
   Init_DS18B20();
   
   WriteOneChar(0xCC);     // 跳过读序号列号的操作
   WriteOneChar(0x44);     // 启动温度转换
//   delay_18B20(100);       // It is quite important !!
   Init_DS18B20();
  
   WriteOneChar(0xCC);  //跳过读序号列号的操作
   WriteOneChar(0xBE);  //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
//   delay_18B20(100);
   a=ReadOneChar();     //读取温度值低位
   b=ReadOneChar();     //读取温度值高位
  
      
}
    uchar display_temp()
{
  display[4]=a&0x0f;  //取小数部分
  display[0]=ditab[display[4]]+0x30;  // 查表取小数
  display[4]=((a&0xf0)>>4)|((b&0x0f)<<4);  //取整数
  display[3]=display[4]/100+0x30 ; //百位数
  display[1]=display[4]%100;
  display[2]=display[1]/10+0x30 ;  //十位数
  display[1]=display[1]%10+0x30  ;//个位数
}

/*************************12864液晶子程序*************************/

sbit rs=P2^4;
sbit rw=P2^5;
sbit en=P2^6;
sbit rst=P2^3;
sbit psb=P2^1;
void delay(uint k)
{
uint i,j;
for(i=0;i for(j=0;j<121;j++);
}
void wcode(uchar cmd)
{
   
rs=0;
rw=0;
en=0;
P0=cmd;
delay(5);
en=1;

delay(5);

en=0;
}
void wdata(uchar dat)
{
rs=1;
rw=0;
en=0;
P0=dat;
delay(5);
en=1;
delay(5);
en=0;
}
void init()
{
psb=1;
wcode(0x30);
delay(5);
wcode(0x0c);
delay(5);
wcode(0x01);
delay(5);

}
void lcd_pos(uchar x,uchar y)
{
uchar pos;
if(x==0)
  {x=0x80;}
else if(x==1)
  {x=0x90;}
else if(x==2)
  {x=0x88;}
else if(x==3)
  {x=0x98;}
pos=x+y;
wcode(pos);
}
void main()
{
uchar i;
init();

lcd_pos(0,0);
i=0;
while(table3!='\0')
{
  wdata(table3);
  i++;
}
  while(1)
  { ReadTemp();
    display_temp();
lcd_pos(2,3);
    wdata(display[3]);  
    lcd_pos(2,4);
    wdata(display[2]);      
  }
   
}
此帖出自单片机论坛
 
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

53
 
回复50楼和52楼

对这么长篇大论的程序查错,那要多大的工作量?况且别人没有没有你现场的硬件资源,因相同器件内涵并不相同。例如,128*64的点阵液晶,有的控制芯片不一样(据我所知,有KS0107和ST7920的等)。即使控制芯片相同,其模块包含的周边元件也不相同,左右片选有的高电平有的低电平,负压发生器有的有有的无,所以提问问题最好不要出现长篇大论的程序段。
此帖出自单片机论坛
 
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

54
 
欢迎懂linux操作系统的网友给予52楼网友问题的答复
此帖出自单片机论坛
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(高级)

55
 

请教中断的问题?

R9 EQU  23H
R10 EQU  24H
ORG 00H
AJMP START
ORG 001BH
AJMP TLINT1
START:
......
  MOV TMOD,#10H
   MOV TH1,#63H
   MOV TL1,#0C0H
   SETB EA
   SETB ET1
   SETB TR1
ACALL RTLK
AA:
检测做出相应的动作
AJMP AA
TLINT1:
   MOV TH1,#63H
   MOV TL1,#0C0H;  "4S"
   INC R9
   MOV A,R9
   CJNE A,#100,TIAOCHU
   ACALL LKRK      ;
   AJMP KK  
TIAOCHU:
   CJNE A,#250,KK     ;"10S"
   MOV R9,#0
   INC R10
   ACALL RTLK
   MOV A,R10
   CJNE A,#2,KK;
   MOV R10,#0
   ACALL STOP
   CLR EA
KK:RETI
RTLK:
     MOV P2,#0
     CLR P2.0;右转
     SETB P2.1
     SETB P2.4
     CLR P2.5
RET
STOP:
     MOV P2,#0
     RET
LKRK:
     MOV P2,#0 ;前进
     SETB P2.0
     SETB P2.2
     CLR P2.3
     SETB P2.1
     SETB P2.4
     CLR P2.5
     RET
说明: RTLK   LKRK 都为子程序。。对程序本身没影响。如果进中断的话,会小车先左转4s,然后前进6s,然后右转4s,再前进6s,然后关闭中断停止。。
问题:一直左转也就是说没有进去中断

[ 本帖最后由 fcb610 于 2009-5-30 18:25 编辑 ]
此帖出自单片机论坛
 
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

56
 
原帖由 fcb610 于 2009-5-30 18:21 发表
R9 EQU  23H
R10 EQU  24H
ORG 00H
AJMP START
ORG 001BH
AJMP TLINT1
START:
......
  MOV TMOD,#10H
   MOV TH1,#63H
   MOV TL1,#0C0H
   SETB EA
   SETB ET1
   SETB TR1
ACALL RTLK
AA:
检 ...


中断肯定是能进入的,也能执行到RTLK和LKRK及STOP三个子程序。
建议着重检查P2口的控制逻辑是否正确,或者硬件是不是有故障,例如两个电机是否能控制自如。
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复

118

帖子

0

TA的资源

纯净的硅(高级)

57
 

回复 楼主 EEW 的帖子

我用的是笔记本 没有串口 也没有并口 做试验很不方便 总要用同学的电脑
各位高手帮帮忙吧 给做个图吧
我用的单片机是stc89c52
此帖出自单片机论坛
 
 
 

回复

169

帖子

0

TA的资源

纯净的硅(高级)

58
 

单片机最长定时时间是多少

新手问:单片机最长定时时间是多少?能不能达到1小时以上?可靠性和经济性如何?
此帖出自单片机论坛
 
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

59
 
原帖由 zengpeipei 于 2009-6-5 23:56 发表
我用的是笔记本 没有串口 也没有并口 做试验很不方便 总要用同学的电脑
各位高手帮帮忙吧 给做个图吧
我用的单片机是stc89c52


那个STC的说明书已然说的很清楚,用USB转232的可能会出现不稳定的现象。我在别的项目上用过可靠的USB-232装置,到了STC上还真不可靠(压根就不通信,啥热启动冷启动的都不行)。

如果可能的话,用AT89S51或52的芯片,从https://bbs.eeworld.com.cn/thread-73572-1-1.html网址上总能找到一款符合你要求的,如第四款。此外,本站有ASPUSB的下载器开源项目,也支持AT89S,可以试试看。
此帖出自单片机论坛
 
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

60
 
原帖由 liweiliang 于 2009-6-6 09:16 发表
新手问:单片机最长定时时间是多少?能不能达到1小时以上?可靠性和经济性如何?



这个问题令人费解。

什么型号的单片机?
是单个计数周期的时间吗?
很少用单个计数周期定时1小时的。
如果采用重复计数的话几年时间都是可以的。
可靠性经济性?条件不齐无法定论,单从可靠性方面考虑的话应该是时钟专用芯片可靠。
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表