标题: [求助] TR0未定义是怎么回事??求高手解答 [打印本页]

作者: lch0228    时间: 2010-12-14 16:36
标题: [求助] TR0未定义是怎么回事??求高手解答
//用数码管的前两位显示一个十进制数,变化范围为0到59,开始时显示00 //每按下key1键一次,数值加1;每按下key2键,数值减一,每按下key3键一次,数值归零; //每按下key4键一次,利用定时器功能使数值开始自动每秒加1,再次按下key4键,数值停止自动加1,保持显示原数 #include #include //定义8255A的绝对地址时用,必须包含此库函数 //-----宏声明----- #define D8255 XBYTE[0x7f03] //8255控制口地址 #define D8255A XBYTE[0x7f00] //8255 PA口地址 #define D8255B XBYTE[0x7f01] //8255 PB口地址 #define D8255C XBYTE[0x7f02] //8255 PC口地址 #define uint unsigned int #define uchar unsigned char sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar num0,num; void delay(uint z) {uint x,y; for(x=z;x>0;x--) for(y=123;y>0;y--); } void display(uchar numdis) { uchar shi,ge; shi=numdis/10; ge=numdis%10; D8255B=0xfe; //PB口送出位选字,初始选十位数码管; D8255A=table[shi] ; delay(5); D8255B=0xfd; //PB口送出位选字,初始选中个位数码管; D8255A=table[ge] ; delay(5); } void init() { TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; } void keyscan() { if(key1==0) { delay(10); if(key1==0) { num++; if(num==60) //到60时重新归0 num=0; while(!key1);//等待按键释放 } } if(key2==0) { delay(10); if(key2==0) { if(num==0) //到0时重新归60 num=60; num-- ; while(!key2); } } if(key3==0) { delay(10); if(key3==0) { num=0; // 清0 while(!key1); } } if(key4==0) { delay(10); if(key4==0) { while(!key4) TRO=!TR0; } } } void main() { init(); while(1) { keyscan(); display(num); } } void timer0() interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num0++; if(num0==20) //20次计满,表示1秒定时时间到 { num0=0; num++; if(num==60) num=0; } }
[此贴子已经被作者于2010-12-14 16:45:49编辑过]

作者: jjide    时间: 2010-12-14 17:40
肯定是 头文件不对啊 我估计你就是缺少头文件
作者: wgglps    时间: 2010-12-16 16:17
自己在头文件加上TR0的宏定义就行了
作者: lean.liang    时间: 2019-4-18 16:25
根据自己的单片机型号将头文件添加进去就OK了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1