新手上路
- 积分
- 41
- 金钱
- 41
- 注册时间
- 2013-10-20
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-7-27 15:17:29
|
显示全部楼层
回复【12楼】正点原子:
---------------------------------
原子哥,再问一个问题,
int main(void)
{
System_Init();
while(1)
{
for(i=1;i<20;i++)
{
output=1830220*i;
AD9854_OUTMODE_0(output, 500, 0);
POINT_COLOR=RED;
LCD_Show2Num(64,60,output/1000000,2,16,0);
LCD_Show2Num(88,60,output%1000000/1000,3,16,0);
LCD_Show2Num(120,60,output%1000,3,16,0);
POINT_COLOR=GREEN;
LCD_Show2Num(88,120,1234+i,4,16,0);
LCD_Show2Num(128,120,56+i,2,16,0);
delay_ms(1000);
if(PS2_Status>0x70)
{
PS2_Status &= 0x0f;
POINT_COLOR=BLACK;
LCD_Show2Num(80,240,PS2_DATA_BUF[(PS2_Status-1)&0x0f],3,16,0);
}
}
delay_ms(500);
}
}
上面是我的主函数。
if(PS2_Status>0x70)
{
PS2_Status &= 0x0f;
POINT_COLOR=BLACK;
LCD_Show2Num(80,240,PS2_DATA_BUF[(PS2_Status-1)&0x0f],3,16,0);
}这个是我的PS2小键盘显示按下的键值程序,
程序运行没有多大问题,可以看到for循环中有一个delay_ms(1000),所以i基本上1秒变化一次,
但是,不知到为什么,每次我按一个PS2键盘的键值后,i就马上增加了,如果一直按,i值的增加速度很快,
也就是说外部中断影响了主程序的执行速度,这是为什么? |
|