点阵程序,关于c51取反的指令

2019-07-15 19:19发布


编译结果:Build target 'Target 1'compiling 1.c...1.C(32): error C193: '~': bad operand type
Target not created想问问为什么取反号在这里会是错误的?





#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//待显示图形编码
uchar code M[][8]=
{
{0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00},  //1
{0x00,0x38,0x44,0x54,0x44,0x38,0x00,0x00},  //2
{0x00,0x20,0x30,0x38,0x3c,0x3e,0x00,0x00}  //3
};
uchar i,j;
//主程序
void main()
{
P0=0xff;
P1=0xff;     
TMOD=0x01;    //T0 方式 1
TH0=(65536-2000)/256; //2ms 定时
TL0=(65536-2000)%256;
IT0=1;     //下降沿触发
IE=0x83;    //允许定时器0、外部0 中断
i=0xff;     //i 的初值设为 0xff,加1 后将从0 开始
while(1);
}
//T0 中断控制点阵屏显示
void Show_Dot_Matrix() interrupt 1
{
TH0=(65536-2000)/256; //恢复初值
TL0=(65536-2000)%256;
P0=0xff;    //输出位码和段码
P0=~M[j];
P1=_crol_(P1,1);   
j=(j+1)%8;
}
//INT0 中断(定时器由键盘中断启动)
void Key_Down() interrupt 0
{
P0=0xff;
P1=0x80;
j=0;
i=(i+1)%3;    //i012 中取值,因为只要 3 个图形
TR0=1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。