找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6169|回复: 3
收起左侧

[求助] TR0未定义是怎么回事??求高手解答

[复制链接]
ID:27342 发表于 2010-12-14 16:36 | 显示全部楼层 |阅读模式
//用数码管的前两位显示一个十进制数,变化范围为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编辑过]
回复

使用道具 举报

ID:22246 发表于 2010-12-14 17:40 | 显示全部楼层
肯定是 头文件不对啊 我估计你就是缺少头文件
回复

使用道具 举报

ID:26540 发表于 2010-12-16 16:17 | 显示全部楼层
自己在头文件加上TR0的宏定义就行了
回复

使用道具 举报

ID:484732 发表于 2019-4-18 16:25 | 显示全部楼层
根据自己的单片机型号将头文件添加进去就OK了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表