完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位高手,菜鸟一枚在自学郭天祥的教程,编写每隔1秒钟自动计数,掉电数据保留的程序,写的跟书上的差不多,自认为这种也可以实现,但是就是报错。。。求各位帮忙看看错误~大谢!!!主要是display和main部分有一些区别,另外书上用的中断方式是interrupt1 我用的3.
#include #define uchar unsigned char #define uint unsigned int bit write=0; ***it dula=P2^6; ***it wela=P2^7; ***it sda=P2^0; ***it scl=P2^1; uchar num,num2,shi,ge,sec; void display(uchar,uchar); uchar code table[]= { 0x3f,0x06.3x5b,3x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay() { ;; } void delayms(uint x) { uint a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); } void start()//起始信号 { sda=1; delay(); scl=1; delay(); sda=0; delay(); } void stop()//终止信号 { sda=0; delay(); scl=1; delay(); sda=1; delay(); } void response()//应答信号 { uchar i; scl=1; delay(); i=1; while((sda==1)&&(i<255))i++;//一直没有收到应答信号一段时间 scl=0;//把第九个时钟拉低 delay(); } void initial()//初始化 { sda=1; delay(); scl=1; delay(); } void write_byte(uchar date) { uchar i,temp ; scl=0;//表示要写,低电平可以动SDA来写数据,到了SCL高电平就只运数据了 temp=date; delay(); for(i=0;i<8;i++)//一共8位数据 { temp=temp<<1;//左移有一位进入了PSW中的最高位CY sda=CY; delay(); scl=1;//高的时候稳定接受数据 delay(); scl=0;//低的时候稳定可变 delay(); } sda=1;//释放数据总线准备收低电平的应答信号 delay(); } uchar read_byte() { uchar i,j,k; scl=0; delay(); sda=1;//释放数据总线 delay(); for(i=0;i<8;i++) { scl=1;//在读第一位的过程中SDA没有动,可以开始接收 delay(); j=sda; k=k<<1|j;//这样一来J就放到了K的最低位上 scl=0;//方便下次读数据 delay(); } return k; } void write_add(uchar address,uchar date) { start(); write_byte(0xa0);//A表示器件的地址,(高四位固定为1010? 最后一位0表示要写 response(); write_byte(address);//往心片的第三个地址写 response(); write_byte(date); response(); stop(); } uchar read_add(uchar address) { uchar date; start(); write_byte(0xa0);//再写一次地址说明写到哪里去 response(); write_byte(address);//从着个地址开始读(256以内都可以) response(); start(); write_byte(0xa1);//1表示下一针数据要读 response(); date=read_byte(); stop(); return date; } void main() { initial(); num=read_add(25); shi=num/10; ge=num%10; if(num>100) num=0; TMOD=0x11; TH1=(65536-45872)/256;//beachtung!! TL1=(65536-45872)%256;//beachtung!! EA=1; ET1=1; TR1=1; while(1) { display(shi,ge); if(write==1) { write=0; write_add(25,num); } } } void T1_time() interrupt 3 { TH1=(65536-45872)/256; TL1=(65536-45872)/256; num2++; if(num2==20) { num2=0; num++; write=1; delay(); if(num==99) num=0; } } void display(uchar shi,uchar ge) { dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delayms(5); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delayms(5); } |
|
相关推荐
2个回答
|
|
哪报错了
|
|
|
|
SPERCHERN.C(14): error C141: syntax error near '.3' SPERCHERN.C(22): error C141: syntax error near '{' SPERCHERN.C(25): error C141: syntax error near '{' SPERCHERN.C(27): error C141: syntax error near 'for' SPERCHERN.C(27): error C141: syntax error near '=', expected ')' SPERCHERN.C(27): error C129: missing ';' before '>' 全是报些这样的错误,实在是觉得没有问题。 如能帮我找到,不胜感激!!!! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
690 浏览 0 评论
735 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
624 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1099 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1092 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11794 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 12:19 , Processed in 0.605666 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号