单片机时钟程序编译出错,求大神指点为什么出错?

2019-07-15 15:10发布

本帖最后由 lettersprite 于 2016-1-12 16:50 编辑

//本程序只是不求精确的时钟程序,使用的是金沙滩工作室学习板
#include <reg52.h>sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;unsigned char code image[] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,                                                    0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};char ge,shi,bai,qian,wan,shiwan,sec;char fen=25;char xiaoshi=15;//static unsigned int shu=0;//static unsigned char i=0;void main(){    EA = 1;       //使能总中断    ENLED = 0;    //使能U4,选择LED点阵    ADDR3 = 1;    TMOD = 0x01;  //设置T0为模式1    TH0  = 0xFC;  //为T0赋初值0xFC67,定时1ms    TL0  = 0x67;    ET0  = 1;     //使能T0中断    TR0  = 1;     //启动T0        while (1)        {        ge=sec%10;        shi=sec/10%10;        bai=fen%10;        qian=fen/10%10;        wan=xiaoshi%10;        shiwan=xiaoshi/10%10;                }}/* 定时器0中断服务函数 */void InterruptTimer0() interrupt 1{    TH0  = 0xFC;  //为T0赋初值0xFC67,定时1ms    TL0  = 0x67;        static unsigned int shu=0;//定时计数        static unsigned char i=0;//数码管片选//这两个静态变量放在主程序前,程序能正常编译,但是放这里就出错,为什么?有什么问题吗?求大神指点。        if(shu==1000){shu=0;sec++;}        if(sec==60){sec=0;fen++;}        if(fen==60){fen=0;xiaoshi++;}        if(xiaoshi==24){xiaoshi=0;}        shu++;        switch (i)        {        case 0:ADDR0=0;ADDR1=0;ADDR2=0;P0=image[ge];i++;break;        case 1:ADDR0=1;ADDR1=0;ADDR2=0;P0=image[shi];i++;break;        case 2:ADDR0=0;ADDR1=1;ADDR2=0;P0=image[bai];i++;break;        case 3:ADDR0=1;ADDR1=1;ADDR2=0;P0=image[qian];i++;break;        case 4:ADDR0=0;ADDR1=0;ADDR2=1;P0=image[wan];i++;break;        case 5:ADDR0=1;ADDR1=0;ADDR2=1;P0=image[shiwan];i=0;break;        default:break;        }        }
错误提示:Build target 'Target 1'assembling STARTUP.A51...compiling lianxi.c...LIANXI.C(39): error C141: syntax error near 'static'LIANXI.C(39): error C202: 'shu': undefined identifierLIANXI.C(40): error C141: syntax error near 'static'LIANXI.C(40): error C202: 'i': undefined identifierLIANXI.C(41): error C202: 'shu': undefined identifierLIANXI.C(41): error C202: 'shu': undefined identifierLIANXI.C(45): error C202: 'shu': undefined identifierLIANXI.C(46): error C202: 'i': undefined identifierLIANXI.C(48): error C202: 'i': undefined identifierLIANXI.C(49): error C202: 'i': undefined identifierLIANXI.C(50): error C202: 'i': undefined identifierLIANXI.C(51): error C202: 'i': undefined identifierLIANXI.C(52): error C202: 'i': undefined identifierLIANXI.C(53): error C202: 'i': undefined identifierTarget not created
程序.txt 下载积分: 积分 -1 分
2.3 KB, 下载次数: 8, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
大笨蛋1990
1楼-- · 2019-07-16 13:28
搞得好高端的样子,一句话不就说完了
rszmyc
2楼-- · 2019-07-16 13:52
 精彩回答 2  元偷偷看……
lettersprite
3楼-- · 2019-07-16 15:58
mhx321 发表于 2016-1-12 20:12
语法错误啊,定义寄存器的位置不对啊,

十分感谢!验证通过,我从来都没有考虑过这个问题,以前都是在使用前定义就好了,请问下还有哪些情况是要有特殊位置的呢?是不是所有的的定义都应该在进入函数就马上定义呢?
lettersprite
4楼-- · 2019-07-16 17:02
jinyi7016 发表于 2016-1-12 17:23
语法错误啊,那个 i啊shu啊没定义啊

不是没有定义,是定义的位置不对,谢谢#6楼!
lettersprite
5楼-- · 2019-07-16 22:16
芯灵思FAE 发表于 2016-1-12 18:00
变量的位置若在所有函数之外的就是全局的,在函数之内的就是局部的

谢谢回答,谢谢#6楼!
lettersprite
6楼-- · 2019-07-17 01:41
本帖最后由 lettersprite 于 2016-1-14 11:38 编辑
大笨蛋1990 发表于 2016-1-13 18:07
搞得好高端的样子,一句话不就说完了

谢谢,可能他没仔细看问题。呵呵!

一周热门 更多>