完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #include #define uchar unsigned char #define uint unsigned int ***it sda=P3^2; ***it scl=P3^3; ***it dula=P1^0; ***it wela=P1^1; uchar flag_uart,flag_on,flag_time,a,t0_num,ad_val; float ad_vo; void init() //中断程序初始化 { TMOD=0x21; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=0xfd; TL1=0xfd; TR1=1; ET0=1; SM0=0; SM1=1; REN=1; EA=1; ES=1; } void start() //I2C起始程序 { sda=1; _nop_(); scl=1; _nop_(); sda=0; _nop_(); } void stop() //I2C终止程序 { sda=0; _nop_(); scl=1; _nop_(); sda=1; _nop_(); } void ack() //I2C响应程序 { uchar i=0; scl=1; _nop_(); while((sda==1)&&(i<256)) i++; scl=0; _nop_(); } void write(uchar date) //I2C输入程序 { uchar i,temp; temp=date; for(i=0;i<8;i++) { temp=temp<<1; scl=1; _nop_(); sda=CY; _nop_(); scl=0; _nop_(); } scl=0; _nop_(); sda=1; _nop_(); } uchar read() //I2C读取程序 { uchar i,k; scl=0; _nop_(); sda=1; for(i=0;i<8;i++) { scl=1; _nop_(); k=(k<<1)|sda; scl=0; _nop_(); } _nop_(); return k; } uchar get_ad() { uchar adval; sda=1; _nop_(); scl=1; _nop_(); start(); write(0x90); ack(); write(0x40); ack(); _nop_(); start(); write(0x91); ack(); adval=read(); stop(); return adval; } void main() { init(); while(1) { if(flag_uart==1) { flag_uart=0; ES=0; TI=1; switch(flag_on) { case 0: puts("Turn on ad!n"); TR0=1; break; case 1: puts("Turn off ad!n"); TR0=0; break; case 2: puts("Error"); break; } while(!TI); TI=0; ES=1; } if(flag_time==1) { flag_time=0; ad_val=get_ad(); ad_vo=(float)ad_val*5.0/256.0; ES=0; TI=1; printf("The voltage is %fVn",ad_vo); while(!TI); TI=0; ES=1; } } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t0_num++; if(t0_num==20) { t0_num=0; flag_time=1; } } void ser() interrupt 4 { RI=0; a=SBUF; flag_uart=1; if(a==1) flag_on=0; else if(a==2) flag_on=1; else flag_on=2; } 这是一个串口通信的问题,通过串口来显示pcf8591的模电电压值,但是无论向单片机输入什么数字,它都是显示Error. 本来设计的时候是输入1,显示Turn on ad!然后过1秒显示电压值,输入2,显示Turn off ad!.输入其他数字的时候才是 显示Error.还有调试的时候总是出现*** error 65: access violation at C:0x0000 : no 'execute/read' permission。。。 求各位大神帮忙解决一下,小弟实在是找不出问题在哪啊? |
|
相关推荐
2个回答
|
|
用16进制发送01,02~
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
492 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
638 浏览 0 评论
742 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1263 浏览 0 评论
1133 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12055 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 08:17 , Processed in 1.212860 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号