EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机C语言基础编程源码八则# s! }& q- z% _4 h* N
* [6 J4 X9 X T& A7 Y/ u! x
3 p9 E5 w% I" u! b" c1.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开始逐渐增大,到某一最大值后逐渐减小,直到0,然后再从0逐渐增大,一直这样输出。试编写一函数,使从P2口输出的值产生三角波,并且使三角波的周期和最大值通过入口参数能够改变。 #include<absacc.h>
8 q* P$ s! r# r U H+ ~#define DAC0832 XBYTE[0x7FFF]
% Y+ ?1 Y+ a( X; @: w% R1 a$ o& Tvoid san(unsigned char max1,unsigned char zhou1)* k: ?) |& ` e( P7 {- x
{
8 X, v% ^( }/ a) A& x" Z unsigned char i,j,max,zhou;
$ P/ G. k& o& n* f$ C: Z8 x: a max=max1;: H0 x0 d% v y+ z n8 \
zhou=zhou1;
- _* a6 H, E0 l Twhile(1)$ Z( S) C$ [ ^( h+ N! F! ^
{
# M# {1 Z. M9 }( T$ y for(i=0;i<=max,i++)
4 S: n5 [6 `# [) \1 Q8 ^; z {
w2 f+ z" h4 { DAC0832=i;7 z1 Z+ k$ N6 r$ L; @
for(j=0;j<zhou/max;j++)
5 z8 j( C S+ q1 P delay();# B; D5 K- Y j
}
$ I2 F. j9 n+ Q( |2 Z$ h6 s for(i=max-1;i>0,i--)
6 u6 q- W# s. A+ ^" x {+ r7 B) w* S% m: O* x
DAC0832=i;; p7 z0 l; f: C& C& m3 x/ b
for(j=0;j<zhou/max;j++)
& D4 J" {* g, Q; q2 \ delay();
6 s) l8 r7 U7 D! U- Q: }}
- c, D; \+ L2 N}
! C$ n. _6 f) M3 a z
- X/ d+ P) I' V4 V' z0 Y/ c; s/ j S# q
. P* g ^7 ~% g [ |