- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2025-01-03 02:01:29
注册会员
- 积分
- 93
|
本帖最后由 lqw517 于 2024-10-15 09:46 编辑
我用 Ai32G12K128 制作串口仿真芯片后(后续也制作过USB仿真片),串口仿真用不了,于是就用USB下载变回普通IC,
但是这个时候就出问题了,键值读取有问题。于是我又制作回USB仿真找问题,单步运行是正常的,但是仿真的时候,
全速运行的时候,又不行了。再次下载变回普通片,仍然程序跑的有问题。下载过官方的按键例程,是可以的。但是我的这个程序也没问题呀。
有没有大佬看看怎么回事,以下的代码。
现在跑程序很怪。
#include <STC32G.H>
#define FOSC 30000000UL
#define BRT (65536 - (FOSC / 9600+2) / 4)
unsigned char leddata[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
volatile unsigned char keynum=0;
void delay(unsigned int x)
{
while(x--);
}
void uart_init()
{
// CLKSEL = 0x0f;
// CLKDIV = 0; //SYSCLK 48M
SCON=0x50;
AUXR |= 0x05;
T2L = BRT;
T2H = BRT >> 8;
S1BRT=1;
T2R = 1;
// SBUF=0x57;
}
void main()
{
// IRC48MCR |=0x80;
// while(!(IRC48MCR&0x01));
P3M0 = 0x00;
P3M1 = 0x00;
P6M0 = 0x00;
P6M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P7M0 = 0x00;
P7M1 = 0x00;
P0M0 = 0x00;
P0M1 = 0x00;
P40=0;
P70=0;
P06 = 1;
P00 = 0;
P6=0xc0;
// uart_init();
while(1)
{
// SBUF = 0x57;
// delay(30000);
P0 = 0xc0;
keynum=(P0^0xc0)&0xc0;
P0 = 0x0f;
keynum|=(P0^0x0f)&0x0f;
switch (keynum&0xcf)
{
case 0x41:
{
P6=leddata[0];
}
break;
case 0x42:
{
P6=leddata[1];
}
break;
case 0x44:
{
P6=leddata[2];
}
break;
case 0x48:
{
P6=leddata[3];
}
break;
case 0x81:
{
P6=leddata[4];
}
break;
case 0x82:
{
P6=leddata[5];
}
break;
case 0x84:
{
P6=leddata[6];
}
break;
case 0x88:
{
P6=leddata[7];
}
break;
// default:
// break;
}
}
}
|
-
|