永发信息网

单片机不计时了,是不是ds1302d坏了

答案:3  悬赏:70  手机版
解决时间 2021-02-16 07:51
单片机不计时了,是不是ds1302d坏了
最佳答案
ds1302d不会无缘无故就坏了。这要看原来是什么情况,是新做的板子,新写的程序啊,就不计时呢?
还是原来一直在正常使用计时,突然间就坏了,得有点什么原因吧。
不计时,显示电路还能正常显示不?
不计时的原因不只是ds1302d坏了一个原因。
全部回答
具体点啊,这样一个题目不知所以啊
#include #define uchar unsigned char #define uint unsigned int #define keyboard p2 #define locationcs p1 #define dispseg p0 unsigned char code segcode[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40}; // 共阴段码 unsigned char code location[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; // 共阴位选码 uchar index = 0; // 显示缓冲区指针 uchar hour = 0; // 小时变量 uchar min = 0; // 分钟变量 uchar sec = 0; // 秒钟变量 uint timer = 0; // 中断次数计数变量 uchar dispbuf[] = {0, 0, 0x40, 0, 0, 0x40, 0, 0}; // 8个数码管对应的显示缓冲区,显示格式:时-分-秒 uchar keycode; // 按键码高位 uint delaykey; // 按键延时变量 void init(); void dispbufupdate(); void disposekeys(); void main(void) { init(); // 初始化 while(1) { if(keycode != 0) // 如果有按键码就处理按键 { disposekeys(); keycode = 0; // 处理完按键码清零 } } } void dispbufupdate() { dispbuf[0] = segcode[sec % 10]; // 秒个位 dispbuf[1] = segcode[sec / 10]; // 秒十位 dispbuf[3] = segcode[min % 10]; dispbuf[4] = segcode[min / 10]; dispbuf[6] = segcode[hour % 10]; dispbuf[7] = segcode[hour / 10]; } void disposekeys() { switch(keycode) { case 0x77: hour++; if(hour == 24)hour = 0; break; case 0x7b: if(hour == 0) hour = 24; hour--; break; case 0xb7: min++; if(min == 60) min = 0; break; case 0xbb: if(min == 0) min = 60; min--; break; default: break; } delaykey = 300; // 延时变量赋值,300次定时中断后(300/1200 = 0.25秒)如果不松键则会连续产生键值,时间变量会连续加或连续减,直到松键 } void init() { tmod = 0x01; // 定义定时器0为16位定时器 th0 = -3; // 11059200 = 12*256*3*1200,晶振12分频后是:921600机器周期/秒, // 设置定时器每3*256个机器周期中断1次,中断1200次就是一秒钟。 // tl0因初值为0,加到256=0,相当于自动重装了,所以不用定义了,既节约了时间又走时准确。 et0 = 1; // 允许t0中断 ea = 1; // 开总中断 tr0 = 1; // 启动t0 dispbufupdate(); // 显示初始值 } void intt0() interrupt 1 { th0 = -3; // 重装定时器初值 locationcs = 0xff; // 清位选消隐 dispseg = dispbuf[index]; // 输出显示内容 locationcs = location[index++]; // 选择显示位置 index &= 7; // 等效于if(index == 8)index = 0; 循环指向8个显示位置 if(delaykey == 0) // 上次中断没检测到按键则需扫描按键 { keyboard = 0x0f; if(keyboard != 0x0f) // 若有按键发生,则 keyboard 低4位不全为1 { delaykey = 6; // 设置按键消颤延时时间,6/1200 = 5毫秒 } } else { delaykey--; // 延时时间未到,延时变量减一 if(delaykey == 0) // 按键延时时间到,可以取键值了 { keyboard = 0x0f; if(keyboard != 0x0f) // 若延时后仍检测到按键,则为有效按键 { keycode = keyboard; // 取按键“行”地址 keyboard = 0xf0; // 取按键“列”地址 keycode |= keyboard;// 按键“行”“列”地址相或 = 有效键值 } } } timer++; // 中断次数计数 if(timer == 1200) // 1200次为1秒 { timer = 0; sec++; if(sec == 60) // 时间进位处理 { min++; sec = 0; if(min == 60) { hour++; min = 0; if(hour == 24) { hour = 0; } } } dispbufupdate(); } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
嵩县洛阳康佳冷饮地址在哪里啊
兴平路前街地址有知道的么?有点事想过去
怎么用excel画工厂平面图
同福会网吧地址好找么,我有些事要过去,
单选题周杰伦在他的歌曲《上海1943》中唱道:
求“玖暖若相惜”的情侣网名,我很需要d,谢
我是火神奇迹玩家,求战士PK点怎么加,总6555
太原V8酒吧费用
双清区邵阳健康宝宝婴幼儿服饰用品批发地址在
蚂蚁部落时尚精品地址在哪,我要去那里办事
重庆沙坪坝有没有韩国品牌化妆品专卖店阿?
gta4图像缺失
无胎压传感器的车怎么检测
长安悦翔前雾灯老是坏怎么回事呀
佛山市富纳广告装饰有限公司怎么去啊,有知道
推荐资讯
东中路地址有知道的么?有点事想过去
中国移动卡过户需要什么? 卡是原来的买的现
什么狼什么虎的成语
自驾车从昆山到杭州哪条高速路最快?
14款POLO 大灯不怎么亮,想换个灯泡。不改灯
飞机平飞航程的长短()
别人无论跟我说什么我都不知道该回复别人,是
嘉定镇哪里有买二手家具的
大森林竹炭 吸收甲醛等装修废气效果怎么样?知
确山县驻马店西城烧烤(007乡道)地址有谁知道
QQ密码改了为什么用手机登陆不上?那以后我的
土木工程专业,可以考教师编制吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?