完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
为什么把void write_add(uchar,uchar)的子涵数调用到中断函数里会有警告,请大神们跟小弟讲解讲解。感恩,感恩
#include #define uchar unsigned char #define uint unsigned int ***it wei=P2^0; ***it duan=P3^7; ***it scl=P1^5; ***it sda=P3^6; uchar temp,aa,ge,shi,bai; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(uint);//延时函数 void init();//初始化函数 void xianshi();//数码管显示函数 void delay1(); uchar read_byte();//读字节 void write_byte(uchar);//写数据 void respond();//应答信号 void stop();//停止信号 void start();//起始信号 void write_add(uchar,uchar); uchar read_add(uchar); void main() { init(); delay(5); write_add(1,3); while(1); { if(aa==20) { aa=0; temp++; bai=temp/100; shi=temp%100/10; ge=temp%10; } xianshi(); } } void delay(uint z)//1ms延时 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void init() { scl=1; delay(5); sda=1; delay(5); read_add(1); TMOD=0x01; TH0=(65536-46080)/256; TL0=(65536-46080)%256; EA=1; ET0=1; TR0=1; aa=0; } void time0() interrupt 1 { TH0=(65536-46080)/256; TL0=(65536-46080)%256; aa++; } void xianshi() { bai=temp/100; shi=temp%100/10; ge=temp%10; duan=1; P0=table[bai]; duan=0; P0=0xff; wei=1; P0=0xfb; wei=0; delay(5); duan=1; P0=table[shi]; duan=0; P0=0xff; wei=1; P0=0xfd; wei=0; delay(5); duan=1; P0=table[ge]; duan=0; P0=0xff; wei=1; P0=0xfe; wei=0; delay(5); } void start()//起始信号 { scl=1; delay1(); sda=1; delay1(); sda=0; delay1(); } void stop()//停止信号 { scl=1; delay1(); sda=0; delay1(); sda=1; delay1(); } void respond()//应答信号 { uchar i; scl=1; delay1(); while((sda==1)&&(i<250)) i++; scl=0; delay1(); } void write_byte(uchar date)//写数据 { uchar temp1,i; temp1=date; for(i=0;i<8;i++) { scl=0; temp1=temp1<<1; delay1(); sda=CY; delay1(); scl=1; delay1(); } sda=1; delay1(); } uchar read_byte()//读字节 { uchar i,j,k; for(i=0;i<8;i++) { scl=0; delay1(); if(sda==1) j=1; else j=0; k=(k<<1)|j; delay1(); scl=1; delay1(); } sda=1; delay1(); return k; } void write_add(uchar address,uchar date) { start(); write_byte(0xa0); respond(); write_byte(address); respond(); write_byte(date); respond(); stop(); } uchar read_add(uchar address) { uchar date; start(); write_byte(0xa0); respond(); write_byte(address); respond(); start(); write_byte(0xa1); respond(); date=read_byte(); stop(); return date; } void delay1() {;;} |
|
相关推荐
1个回答
|
|
错误信息呢
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
798 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
871 浏览 0 评论
2698 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2316 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1717 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5869 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-26 19:37 , Processed in 0.514301 second(s), Total 70, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号