跪求同济大学魏鸿磊单片机原理及应用(C语言编程)课后习题答案

跪求同济大学魏鸿磊单片机原理及应用(C语言编程)课后习题答案,第1张

#include<stdio.h>

#include<stdlib.h>

void swap(int*a,int*b)

{

int temp

temp=*a

*a=*b

*b=temp

}

void select_sort(int A[],int n)

{

register int i,j,min,m

for(i=0i<n-1i++)

{

min=i//查找最小值

for(j=i+1j<nj++)

{

if(A[min]>A[j])

{

min=j

}

}

if(min!=i)

{

swap(&A[min],&A[i])

printf("第%d趟排序结果为:\n",i+1)

for(m=0m<nm++)

{

if(m>0)

{

printf("")

}

printf("%d",A[m])

}

printf("\n")

}

}

}

int main(void)

{

int n

while(scanf("%d",&n)!=EOF)/* VS2013等版本中需使用scanf_s(),VC6.0中使用scanf() */

{

int i

int*A=(int*)malloc(sizeof(int)*n)

for(i=0i<ni++)

{

scanf("%d",&A[i])

}

select_sort(A,n)

printf("最终排序结果为:\n")

for(i=0i<ni++)

{

if(i>0){

printf("")

}

printf("%d",A[i])

}

printf("\n")

}

return 0

}

晚上随手写,也未调试,权当看看

程序有不严谨地方还得调试修改

#include <REGX51.H>

#define STATUS_1S 1

#define STATUS_2S 2

#define STATUS_3S 3

#define STATUS_4S 4

#define STATUS_5S 5

#define STATUS_15S 15

#define STATUS_28S 28

#define STATUS_29S 29

#define STATUS_30S 30

unsigned char flag,status,status_temp=1,status_temp_

sbit K1 = P0^0

sbit K2  = P0^1

sbit RLED = P0^2

sbit YLED = P0^3

sbit GLED = P0^4

void Init(void)

{

ET0=1

TR0=1

RLED=0  //亮

YLED=0

GLED=0

while(status_temp)

{

switch (status)

{

case STATUS_1S: //1S

{

RLED=1 //灭,闪一次

YLED=1

GLED=1

} break

case STATUS_2S: //1S

{

RLED=0 //亮,闪一次

YLED=0

GLED=0

} break

case STATUS_3S: //1S

{

RLED=1    //灭

YLED=1

GLED=1

status_temp=0

} break

}

}

status_temp=1

ET0=0

TR0=0

}

void Init_Timer0(void)

{

TMOD=0x01

// ET0=1

// TR0=1

EA=1

TH0=0X3C

TL0=0XB0    // 未计算,偷楼上的

}

void M_Start(void)

{

TH0=0X3C

TL0=0XB0

ET0=1

TR0=1

RLED=0  //红亮

while(status_temp)

{

switch (status)

{

case STATUS_1S:

{

if(status_temp_==1)

{

YLED=0

}

} break

case STATUS_2S:

{

if(status_temp_==1)

{

YLED=1

}

} break

case STATUS_3S:

{

if(status_temp_==1)

{

YLED=0

status_temp_=0

}

} break

case STATUS_15S: //15S灭,绿亮

{

RLED=1

GLED=0

} break

case STATUS_28S:

{

GLED=1

} break

case STATUS_29S:

{

GLED=0

} break

case STATUS_30S:

{

GLED=1

status=0

status_temp_=1

} break

}

}

ET0=0

TR0=0

status=0

status_temp=1

YLED=1

}

void M_End(void)

{

TH0=0X3C

TL0=0XB0

ET0=1

TR0=1

RLED=0  //亮 1次

YLED=0

GLED=0

while(status_temp)

{

switch (status)

{

case STATUS_1S: //1S

{

RLED=1 //灭一次

YLED=1

GLED=1

} break

case STATUS_2S: //1S

{

RLED=0 //亮二次

YLED=0

GLED=0

} break

case STATUS_3S: //1S

{

RLED=1    ////灭二次

YLED=1

GLED=1

} break

case STATUS_4S: //1S

{

RLED=0    ////亮三次

YLED=0

GLED=0

} break

case STATUS_5S: //1S

{

RLED=1    ////灭三次

YLED=1

GLED=1

status_temp=0

} break

}

}

status_temp=1

ET0=0

TR0=0

}

main()

{

Init()//单片机初始化

Init_Timer0()//定时器初始化

while(1)

{

if(K1==0)

M_Start()//模拟开始

if(K2==0)

M_End()//模拟结束

}

}

void interrupt_time0() interrupt 1   //核对头文件,一致就好

{

TH0=0X3C

TL0=0XB0

flag++

if(flag==20)

{

status++

flag=0

}

}

#include sbit pluse=P1^0void t0isr() interrupt 1 { TH1=(65536-10000)/256TL1=(65536-10000)%256pluse=~pluse} main() { TMOD=0x10TH1=(65536-10000)/256TL1=(65536-10000)%256TR1=1ET1=1EA=1while(1)}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11072968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存