完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include typedef unsigned int u16; typedef unsigned char u8; ***it w1=P2^0; ***it w2=P2^1; ***it w3=P2^2; ***it w4=P2^3; ***it start=P3^0; ***it eoc=P3^1; ***it oe=P3^2; ***it clk=P3^3; ***it in1=P2^4; ***it in2=P2^5; ***it in3=P2^6; ***it in4=P2^7; ***it valve1=P3^4; ***it valve2=P3^5; ***it valve3=P3^6; ***it valve4=P3^7; u8 getdata,table2[4]; u16 t; #define DATA1 P1 #define DATA P0 u8 code D_table[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; u8 code W_table[]={0x0e,0x0d,0x0b,0x07}; void init_interrupt() { TMOD=0x02; TH0=0xfb; TL0=0xfb; EA=1; ET0=1; TR0=1; } void delay(u16 num) { u16 x,y; for(x=num;x>0;x--) for(y=110;y>0;y--) { ; } } void display_led(u8 which_bit,u8 which_number) { P2=W_table[which_bit]; P0=D_table[which_number]; delay(1); } void shot() { if(in1==1) { valve1=1; delay(5000); valve1=0; } if(in2==1) { valve2=1; delay(5000); valve2=0; } if(in3==1) { valve3=1; delay(5000); valve3=0; } if(in4==1) { valve4=1; delay(5000); valve4=0; } } void adc0809() { oe=0; start=0; start=1; start=0; while(eoc==1); oe=1; getdata=P1; oe=0; t=getdata*(5000.0/256); table2[3]=t/1000; table2[2]=(t-table2[3]*1000)/100; table2[1]=(t-table2[3]*1000-table2[2]*100)/10; table2[0]=0; display_led(0,table2[3]); display_led(1,table2[2]); display_led(2,table2[1]); display_led(3,table2[0]); } void main(void) { P0=0xff; P2=0xff; in1=in2=in3=in4=0; valve1=valve2=valve3=valve4=0; init_interrupt(); while(1) { adc0809(); shot(); } } void timer_T0(void) interrupt 1 { clk=~clk; } |
|
相关推荐
6个回答
|
|
过于频繁的中断(5us)严重影响甚至破坏其它程序运行!
|
|
|
|
|
|
|
|
较长的延时都改为定时器方式,通过设置定时标志来判断延时是否完成,其他涉及到延时的部分都需要做更改,算是程序结构的更改
|
|
|
|
具体怎么改呢?新手不太会 |
|
|
|
不清楚你的程序功能?也不知道你在中断中的clk=~clk;是做什么用途,很难提出具体建议。 |
|
|
|
首先要确定两部分程序合并后要达到什么效果,其次程序的模块化需要继续细分,例如void shot()部分应该时检测四个按键,并执行动作,这部分应该拆分位按键检测和动作执行两个模块。
去除较长时间的延时程序,采用定时器来延时,以执行动作为例,执行动作部分的程序根据按键执行相应的动作,并设立对应的标志来区别当前动作的编号,并启动定时延时,在定时器中判断延时是否结束,并根据动作标志来停止对应的动作。 改动会比较大,主要时思路上的改动。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
494 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1050 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1151 浏览 0 评论
887 浏览 0 评论
928 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11846 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 17:16 , Processed in 0.682840 second(s), Total 51, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号