-
不能用呀
-
正好找这个
-
你们还招兼职的吗?
我人在武汉,C8051的单片机没玩过,但是用过51的和Freescale的单片机(8,16,32位都用过),软件编程有4年经验,也只能说对嵌入式操作系统有一定的了解,项目大大小小做了几十个。
-
重复执行一段代码就让它循坏就可以了。
-
时钟
-
你定义一个32位的全局变量,在中断服务函数里面让它自增,在调试界面就可以看到是不是进了中断。希望对你有帮助。
-
你仿真对只能说明大部分功能你写对了,但不是全部,仿真和实战是有区别的。
首先,你要弄通相关硬件部分,比如你弄个能点亮LCD的代码进去,可以亮说明硬件没有问题,如果你没有程序,那只有双方面找了。
别心急,慢慢来,你先把判忙函数弄好,写数据,写命令,然后弄个清屏程序(里面不一定要写0哦,可以显示一些能够看得见得比如 0x0f等等)。
-
汇编呀,有点难沟通。
-
1602的程序网上很多可以直接用的实例,你只要保证单片机那几部分电路正确,1602的电路很少的。我也有可以直接下载的代码
-
还可以
-
在嵌入式软件里面,尽量不要用那种减呀,加呀,空操作的延时,处理器的效率低了。是简单任务单片机还可以,多任务这样就不行了。
以上延时是与晶振有关的,你换个晶振没,你的各个模块时钟改变没?
-
计算方法是这样的:
比如你是用的10位ADC,ADC参考电压是5V。 那么就是5v平均分成1023份(2的10次幂),就是你ADC的精度或者叫分辨率,然后把你读出的ADC值乘以它就的到了你想要的电压,这还没完,你要把个位,十分位都取出来才可以显示的哦。
-
void EnAnswer(void)
{
uchar KeyValue =0xff;
KeyValue & = P1;
if(EnAns == 1)
{
switch(KeyValue)
{
case 0xfe:
{ LEDDATA = 0x01;
SMGDATA = SMGTable[1];
} break;
case 0xfd:
{ LEDDATA = 0x02;
SMGDATA = SMGTable[2];
} break;
case 0xfb:
{ LEDDATA = 0x04;
SMGDATA = SMGTable[3];
} break;
case 0xf7:
{ LEDDATA = 0x08;
SMGDATA = SMGTable[4];
} break;
case 0xef:
{ LEDDATA = 0x10;
SMGDATA = SMGTable[5];
} break;
case 0xdf:
{ LEDDATA = 0x20;
SMGDATA = SMGTable[6];
} break;
case 0xbf:
{ LEDDATA = 0x40;
SMGDATA = SMGTable[7];
} break;
case 0x7f:
{ LEDDATA = 0x80;
SMGDATA = SMGTable[8];
} break;
default :break;
}
}
}
[ 本帖最后由 zhujialiang 于 2012-12-11 10:13 编辑 ]
-
下班了,先回家了。
-
#include
typedef unsigned char uchar;
typedef unsigned int uint ;
#define SMGDATA P0
#define LEDDATA P2
uchar EnAns = 0;
code uchar SMGTable[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void Answer(void)
{
P3 = 0xff;
if( P3 &0x80 == 0)
{
SMGDATA = SMGTable[0];
}
if( P3 &0x80 == 1)
{
SMGDATA = SMGTable[p];
EnAns = 1;
}
}
[ 本帖最后由 zhujialiang 于 2012-12-11 10:16 编辑 ]
-
如果你要用作GPIO,就把它初始化为GPIO;如果要用作PWM,就一定要把GPIO功能取消掉,在来使能PWM
-
把常用的数据放在data
把常量及数据表格放在code
把不是经常用的变量放在xdata
-
void alarm(void)
{
if(Alarm == 1)
{
if(carry_count*250+pulse_count>=alarm_l)
Alarm=0;
}
else
{
if(carry_count*250+pulse_count
-
void In_Output(void)
{
if((shurua == 0)&&(shurub == 0))
{
shuchu = 0;
}
if(shurua = 1)
{
shuchu = 1;
Dly3ms();
if(shurub !=1)
{
shuchu = 0;
}
}
if((shurua == 1)&&(shurub == 1))
{
Dly3ms();
shuchu = 1;
}
}
-
这是个数组(常量),所以放在了code里面了,它的作用是依次选通P0口,从高至低。