sunylqh

    1.                                  那全新的1K价格大概多少?40-50?还是50-60?
    2. 晕。编译工具被360删了怎么办 4/3270 stm32/stm8 2010-07-14
                                       
    3. 标准C用一章节对Usualarithmetic conversions说明: Image0047.JPG (68.51 KB) 下载次数:3 2010-6-23 10:06 Image0048.JPG (83.18 KB) 下载次数:0 2010-6-23 10:06 Image0049.JPG (46.94 KB) 下载次数:0 2010-6-23 10:06
    4. 请高手帮忙看看这个程序,有一个小BUG 2/2758 嵌入式系统 2010-05-03
      引用 1 楼 ouyangjinlin 的回复: 有原理图么?程序太多,我写程序是按原理图写的。
      有原理图,好像前面程序发错了,现在重新发,原理图在最下面 #include #define uchar unsigned char #define uint unsigned int uchar num;                                //定义中断变量,num计满20表示1秒时间到 uchar num1;                                //十秒倒计时显示初始值 uchar flag1,flag2;                //清零键及开始键按下标志位 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f};                                //数码管编码 sbit dula=P1^6;                        //定义段选端口 sbit wela=P1^7;                        //定义位选端口 sbit sp=P3^0;                        //定义蜂鸣器端口 sbit clear=P1^0;                //定义清零键 sbit start=P1^1;                //开始键 sbit key1=P1^2;                                sbit key2=P1^3; sbit key3=P1^4; sbit key4=P1^5;                        //key1到key4为选手按键                                void delay(uint z)                                //延时函数 {         uint i,j;         for(i=z;i>0;i--)                 for(j=110;j>0;j--); } void beep()                                                //定义蜂鸣器函数 {         sp=0;         delay(500);         sp=1; } void display(uint a)              //选手编号显示函数 {         wela=1;         P2=0xff;                                                //防止锁存干扰         wela=0;         dula=1;         P2=table[a];         dula=0;         P2=0xff;         wela=1;         P2=0xfd;         wela=0;         delay(5); } void clr()                                                //清零函数(主持人按下清零键后数码管显示0) {         dula=1;         P2=table[0];         dula=0;         P2=0xff;         wela=1;         P2=0xfc;         wela=0;         delay(5); } void dis10s()                        //十秒倒计时显示函数 {         uchar shi,ge;         shi=num1/10;         ge=num1%10;         wela=1;         P2=0xff;         wela=0;         dula=1;         P2=table[shi];         dula=0;         P2=0xff;         wela=1;                P2=0xfe;         wela=0;         delay(5);                 wela=1;         P2=0xff;         wela=0;         dula=1;         P2=table[ge];         dula=0;                P2=0xff;         wela=1;         P2=0xfd;         wela=0;         delay(5); } void player()                                //选手按键检测函数 {         if(key1==0)         {                 delay(10);                 if(key1==0)                 {                         TR0=0;                         display(1);                         flag1=flag2=0;                         beep();                 }         }         if(key2==0)         {                 delay(10);                 if(key2==0)                 {                         TR0=0;                         display(2);                         flag1=flag2=0;                         beep();                 }         }         if(key3==0)         {                 delay(10);                 if(key3==0)                 {                         TR0=0;                         display(3);                         flag1=flag2=0;                         beep();                 }         }         if(key4==0)         {                 delay(10);                 if(key4==0)                 {                                TR0=0;                         display(4);                         flag1=flag2=0;                         beep();                 }         } } void keyscan()                                        //检测按键 {         if(clear==0&&flag2!=1)                                        //判断清零键         {                 delay(10);                 if(clear==0&&flag2!=1)                 {                                flag1=0;                         flag2=0;                         num=0;                         num1=10;                         clr();                                //清零                         flag1=1;                                //按下清零键标志位                 }         }                if(flag1==1)                                                //如果按下清零键         {                        if(start==0)                                                //判断开始键                 {                         delay(10);                         if(start==0)                         {                                 flag2=1;                         }                 }         }         if(flag2==1)                                                //按下开始键         {                 TR0=1;                         //启动定时器0                 dis10s();                 player();         } } void main() {         TMOD=0x01;                                        //设置定时器0工作方式1         TH0=(65536-50000)/256;         TL0=(65536-50000)%256;         EA=1;                                                //开总中断         ET0=1;                                                //开定时器0中断         while(1)                                        //一直检测按键         {                 keyscan();         } } void T0_ser() interrupt 1 {         TH0=(65536-50000)/256;         TL0=(65536-50000)%256;         num++;         if(num==20)         {                 num=0;                 num1--;         }         if(num1==0)         {                        TR0=0;                 flag1=0;                 flag2=0;                 num=0;                 num1=10;                 clr();                 beep();         } }
    5. 敢和st官方资料链接叫板的帖子 39/11043 stm32/stm8 2010-04-20
                                       资料确实很全
    6. 引用 8 楼 soft923 的回复: 电动棒 ......
      OMG...智能化电动棒
    7. 外包项目~顶~
    8. 这种协议大都是自定协议,很简单 8个字节通常用固定的特殊头字节和特殊尾字节作为通讯开始和结束的标志,以防范通讯错位(头字节和尾字节不要用相同的数值,以免错位) 剩余的六个字节,根据协议需求内容的多少,一般要有该帧的数据类型(是命令帧还是数据帧),该帧所传输的数据(即通讯的是什么命令或数据,此处的命令或数据也是用数值指代,通讯双方约定好命令意义,如约定0x01为正转,约定0x02为反转,那么直接通讯0x01或0x02即可代表相应命令,接收端根据约定执行相应命令),如为数据帧的话,则还有相应的数据值(例如在之前的字节里分别却认为数据帧格式,转角数据值,则后续的字节里应有转角的数据量,此处需要注意的是,一个字节最大值为255,如超过,则需要用两个字节来表示该数据量,可表示65535的范围) 如果你即将编写的协议,比较简单,可以把命令动作集中在一个帧内解决,这样可以减少通讯的开销 下位机的回应,也是上述的方法相同的 你的疑惑,我在最初接触通讯的时候也有的,其实只要记住一点就能明白了,通讯的精髓,是双方约定好各个命令和数据的含义,利用已明了其指代的数值进行通讯工作。不明意义的数值,是不应该出现的,若出现,硬件问题造成的不明意义数值,应尽力加以解决以降低其出现概率达到可以接受的程度,在操作中对其不予作用或回复出错提示帧。软件问题造成的不明意义数值,应完全解决。这也是整个系统的容错能力的表现,在设计时应该预先考虑到
    9. 改进了DNW两个问题 8/3390 嵌入式系统 2010-03-21
      楼主不错,厉害啊,嘿嘿。支持这种精神。
    10.                                  
      这是一段fsmc外扩,16位写外部SRAM的地址信号波形,大家分析一下,有没有可以改进的地方。 这个外部控制器可以正确访问,但是看波形中的地址信号,总是出现一个“多余”的偶地址信号??为什么? ...
      看了一下图,你的写信号很慢,1us才1个写脉冲,我想完全可以1us发10个写脉冲。
    11. 大家在6410平台上加过背光的驱动吗? 14/4985 嵌入式系统 2010-03-01
      好了,终于好了,看来是6410和2440拷贝驱动的语句是有区别的。谢谢大家的帮助!
    12. 在串口通讯中怎样传送英文字母啊? 19/7039 嵌入式系统 2009-12-28
      奇怪,这样的算法没有问题啊 你确定 你的keyval 是0----15?? if(0
    13. C语言动态调用方法 29/8930 编程基础 2009-12-13
      长见识了!
    14. 关于wince中断处理的问题 28/10376 嵌入式系统 2009-11-24
      没有啊,前段时间出差了,这个事都忘掉了。。。。汗
    15. 版主这是什么问题25%的产品挂掉了 46/11853 stm32/stm8 2009-11-20
                                       楼主最还把原理图贴出来,不然神仙都找不到问题出在什么地方
    16. 有了线revfrom()后线程程序跑飞 4/3351 嵌入式系统 2009-11-16
      X86是不支持有些MFC库的
    17. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\Timeouts]     "ACUserIdle"=dword:0                ; in seconds     "ACSystemIdle"=dword:0         ; in seconds     "ACSuspend"=dword:0                 ; in seconds     "BattUserIdle"=dword:0                ; in seconds     "BattSystemIdle"=dword:0        ; in seconds     "BattSuspend"=dword:0                ; in seconds 试试
    18. 中断处理程序中变量无法累加??? 13/6857 stm32/stm8 2009-10-18
                                       有没有return都一样,编译通过,在仿真下查看的变量值。变量是全局变量,只是在中断里处理一下,
    19. up
    20. 一直用TCPMP,没有用过WMplayer WMplayer效果不好,应该是解码的问题。没有相应的解码时,WMplayer会有类似的解码,所以效率会低很多的。

最近访客

< 1/1 >

统计信息

已有94人来访过

  • 芯积分:--
  • 好友:--
  • 主题:7
  • 回复:56

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言