mc9s12xs128程序教程

mc9s12xs128程序教程
mc9s12xs128程序教程

第一讲:HCS12原理及应用--PWM模块介绍

时间:2009-11-25 22:51来源:电子设计吧作者:dzsj8 点击:1115次该教程以MC9S12DG128单片机为核心进行讲解,全面阐释该16位单片机资源。本文为第一讲,开始介绍该MCU的PWM模块。

PWM 调制波有8个输出通道,每一个输出通道都可以独立的进行输出。

,一个周期控制寄每一个输出通道都有一个精确的计数器(计算脉冲的个数)

存器和两个可供选择的时钟源。每一个P WM 输出通道都能调制出占空比从0—100% 变化的波形。

PWM 的主要特点有:

1、它有8个独立的输出通道,并且通过编程可控制其输出波形的周期。

2、每一个输出通道都有一个精确的计数器。

3、每一个通道的P WM 输出使能都可以由编程来控制。

4、PWM 输出波形的翻转控制可以通过编程来实现。

5、周期和脉宽可以被双缓冲。当通道关闭或PWM 计数器为0 时,改变周期和脉宽才起作用。

6、8 字节或16 字节的通道协议。

7、有4个时钟源可供选择(A、SA、B、SB)

,他们提供了一个宽范围的时钟频率。

8、通过编程可以实现希望的时钟周期。

9、具有遇到紧急情况关闭程序的功能。

10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。(责任编辑:dzsj8)

第2讲:HCS12原理及应用--PWM寄存器说明1

时间:2009-11-25 22:56来源:电子设计吧作者:dzsj8 点击:902次

1、PWM启动寄存器PWME

PWME 寄存器每一位如图1所示:

复位默认值:0000 0000B

图1 PWME 寄存器

每一个PWM 的输出通道都有一个使能位P WMEx 。它相当于一个开关,用来启动和关闭相应通道的PWM 波形输出。当任意的P WMEx 位

置1,则相关的P WM 输出通道就立刻可用。

用法:PWME7=1 --- 通道7 可对外输出波形

PWME7=0 --- 通道7 不能对外输出波形

注意:在通道使能后所输出的第一个波形可能是不规则的。当输出通道

工作在串联模式时(PWMCTL 寄存器中的CONxx置1),那么)使能相应

的16位PWM 输出通道是由PWMEx 的高位控制的,例如:设置PWMCTL_CON01 = 1,通道0、1级联,形成一个16位PWM 通道,由通道 1 的使

能位控制PWM 的输出。

2、PWM时钟选择寄存器PWMCLK

PWMCLK 寄存器每一位如图3所示:

复位默认值:0000 0000B

图2 PWMCLK 寄存器

S12的PWM 共有四个时钟源,每一个P WM 输出通道都有两个时钟可供选择(Clock A、Clock SA 或Clock B Clock SB))。其中0、1、4、5 通道可选用Clock A和ClockSA,2、3、6、7 通道可选用ClockB、ClockSB 通道。该寄存器用来实现几个通道时钟源的选择。

用法:PCLK0 =1 --- 通道0(PTP0)的时钟源设为ClockSA

PCLK2 =0 --- 通道2(PTP2)的时钟源设为ClockB

(责任编辑:dzsj8)

第3讲:HCS12原理及应用--PWM寄存器说明2

时间:2009-11-25 22:58来源:电子设计吧作者:dzsj8 点击:813次

1、PWM预分频寄存器PWMPRCLK

PWMPRCLK 寄存器每一位如图3所示:

复位默认值:0000 0000B

图3PWMPRCLK 寄存器

PWMPRCLK 寄存器包括ClockA预分频和ClockB预分频的控制位。ClockA、ClockB的值为总线时钟的1/2n (0≤n≤7),具体设置参照图4和图5

图4Clock A 预分频设置

图5Clock B预分频设置

PCKB0~PCKB2是对ClockB进行预分频。

PCKA0~PCKA2是对ClockA进行预分频。

2、PWM分频寄存器PWMSCLA、PWMSCLB

PWMSCLA 寄存器每一位如图6所示:

图6 PWMSCLA寄存器

Clock SA 是通过对P WMSCLA 寄存器的设置来对ClockA 进行分频而产生的。其计算公式为:

Clock SA=Clock A /(2*PWMSCLA)

PWMSCLB 寄存器与PWMSCLA 寄存器相似,Clock S B 就是通过

对PWMSCLB 寄存器的设置来对C lockB 进行分频而产生的。其计算公式为:

Clock SB=Clock B /(2*PWMSCLB)

(责任编辑:dzsj8)

手把手教你写S12XS128程序(4)--PWM寄存器说明3

时间:2009-11-26 07:09来源:电子设计吧作者:dzsj8 点击:711次

1、PWM极性选择寄存器PWMPOL

PWMPOL 寄存器每一位如图7所示:

该寄存器是0~7通道PWM输出起始极性控制位,用来设置PWM输出的起始

电平。

用法:PWMPOL_PPOL0=1--- 通道0 在周期开始时输出为高电平,当计数

器等于占空比寄存器的值时,输出为低电平。对外输出波形先是高电平然后再变

为低电平。

2、PWM波形对齐寄存器PWMCAE

PWMCAE 寄存器每一位如图8所示:

图8PWMCAE 寄存器

PWMCAE 寄存器包含8个控制位来对每个P WM 通道设置左对齐输出或中心

对齐输出。

用法: PWMCAE_CAE0 = 1 --- 通道0 中心对齐输出

PWMCAE_CAE7= 0 --- 通道7 左对齐输出

注意:只有输出通道被关闭后才能对其进行设置,即通道被激活后不能对其进行设置。

图7PWMPOL 寄存器

(责任编辑:dzsj8)

手把手教你写S12XS128程序(5)--PWM寄存器说明4

时间:2009-11-26 07:22来源:电子设计吧作者:dzsj8 点击:696次

1、PWM控制寄存器PWMCTL

PWMCTL 寄存器每一位如图9所示:

图9PWMCTL 寄存器

该控制寄存器设定通道的级联和两种工作模式:等待模式和冻结模式。这

两种模式如图10和图11所示。

图10 等待模式

图11 冻结模式

只有当相应的通道关闭后,才能改变这些控制字。

用法:

PWMCTL_CON67=1 --- 通道6、7 级联成一个16位的PWM通道。此时只有7通道的控制字起作用,原通道7的使能位、PWM输出极性选择位、时钟选择控制位以及对齐方式选择位用来设置级联后的PWM输出特性PWMCTL_CON67=0 --- 通道6,7 通道不级联

CON45、CON23、CON01 的用法同CON67 相似。设置此控制字的意义在于扩大了P WM 对外输出脉冲的频率范围。

PSW AI=1--- M CU 一旦处于等待状态,就会停止时钟的输入。这样就不会因时钟在空操作而费电;当它置为0,则M CU 就是处于等待状态,也允许时钟的输入。

P FRZ=1 --- M CU 一旦处于冻结状态,就会停止计数器工作。

(责任编辑:dzsj8)

手把手教你写S12XS128程序(6)--PWM寄存器说明5

时间:2009-11-26 07:30来源:电子设计吧作者:dzsj8 点击:771次

1、PWM通道计数寄存器PWMCNTx

PWMCNTx 寄存器共有8个,每一个通道都有一个8位PWM加/减双向计数器,通道级联后可变成16位PWM加/减双向计数器。下面以PWMCNT0为例对P WMCNTx 寄存器进行介绍。

PWMCNT0寄存器如图12所示:

图12 PWMCNT0 寄存器

计数器以所选时钟源的频率运行。计数器在任何时候都可以被读,而不影响计数,也不影响对P WM 通道的操作。

任何值写入PWMCNT0 寄存器都会导致计数器复位置0,且其计数方向会被设置为向上计数,并且会立刻从缓冲器载入任务和周期值,并会根据翻转极性的设置来改变输出。当计数器达到计数值后,会自动清零。只有当通道使能后,计数器才开始计数。

2、PWM通道周期寄存器PWMPERx

PWMPERx 寄存器共有8个,每一个通道都有一个这样的周期寄存器。这个寄存器的值就决定了相关P WM 通道的周期。每一个通道的周期寄存器都是双缓冲的,因此如果当通道使能后,改变他们的值,将不会发生任何作用,除非当下列情况之一发生:

*有效的周期结束。

*对计数器进行写操作(计数器复位)

*通道不可用(PWME x = 0)

这样就会使P WM 输出波形要么是新波形要么是旧波形,并不会在两者之间进行交替变换。如果通道不可用,那么对周期寄存器进行写操作,将会直接导致周期寄存器同缓冲器一起闭锁。图13所示的是P WMPER0 寄存器:

图13 PWMPER0 寄存器

3、PWM通道占空比寄存器PWMDTYx

PWMDTYx 寄存器也有8 个,每一个通道都有一个这样的占空比常数

寄存器。这个寄存器的值就决定了相关P WM 通道输出波形的占空比。每一个

通道的占空比寄存器都是双缓冲的,因此如果当通道被激活后,改变他们的

值将不会发生任何作用,除非当下列情况之一发生:

*有效的周期结束。

*对计数器进行写操作(计数器复位)

*通道不可用(PWME x = 0)

这样就会使P WM 输出波形要么是新波形要么是旧波形,并不会在两者之

间进行交替变换。如果通道没有被激活,那么对占空比常数寄存器进行写操

作,将会直接导致周期寄存器同缓冲器一起闭锁。

当计数值与占空比常数P WMDTY 相等时,则比较输出器有效,这时就会将

触发器置位,然后P WMCNT 继续计数,当计数值与周期常数P WMPER 相等时,

比较器输出有效,将触发器复位,同时也使P WMCNT 复位,结束一个输出周期。(责任编辑:dzsj8)

手把手教你写S12XS128程序(7)--PWM工作原理

时间:2009-11-27 15:44来源:电子设计吧作者:dzsj8 点击:826次

S12微控制器PWM模块是由独立运行的8位脉冲计数器PWMCNT、两个比较寄存器PWMPER和PWMDTY组成。

1、左对齐方式

在该方式下,脉冲计数器为循环递增计数,计数初值为0 。

当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始一个输出周期。当计数值与占空比常数寄存器PWMDTY相等时,比较器1输出有效,将触发器置位(变为高电平),而PWMCNT继续计数;当计数值与周期常数寄存器PWMPER 相等时,比较器2输出有效,将触发器复位(变为低电平),同时PWMCNT也复位,结束一个输出周期。原理参照图14:

/********************************************************************/

玉良理解的就是,计数器的值一直增加,当先与PWMDTY的值相等后,置位,而计数器继续计数,当计数器的值与PWMPER的值相等后,变为低电平,从而完成一个输出周期。

/*******************************************************************/

图14 PWM左对齐方式

2、中心对齐方式

在该方式下,脉冲计数器为双向计数,计数初值为0 。

当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始输出一个周期。当计数器与占空比常数寄存器PWMDTY相等时,比较器1输出有效,触发器翻转,而PWMCNT继续计数,当计数值与周期常数PWMPER相等时,比较器2输出有效,此时改变PWMCNT的计数方向,使其递解计数;当PWMCNT再次与PWMDTY相等时,比较器1再一次输出有效,使触发器再次翻转,而PWMCNT继续递减计数,等待PWMCNT减回至0,完成一个输出周期。原理参照图15:

/********************************************************************/ 玉良理解的就是计数器的值先增加到与PWMDTY相等后,比较器1置位,而计数器继续计数,当数值与PWMPER中的值相等后,改变其计数方向,改为递减计数,当再一次与PWMDTY中的值相等后,比较器再一次输出有效,使触发器反转,而计数器继续递减计数直到计数器的值为0,从而完成一个输出周期。

/*********************************************************************/

图15 中心对齐方式

3、周期计算方法

左对齐方式:

输出周期 = 通道周期× PWMPERx

中心对齐方式:

输出周期 = 通道周期× PWMPERx × 2

4、脉宽计算方法

左对齐方式:

占空比 = [ (PWMPERx - PWMDTYx) / PWMPERx ] × 100%

中心对齐方式:

占空比 = [ PWMDTYx / PWMPERx ] × 100%

(责任编辑:dzsj8)

手把手教你写S12XS128程序(8)--PWM 应用实例

时间:2009-11-28 21:49来源:电子设计吧作者:dzsj8 点击:762次

PWM 初始化步骤总结

1、禁止PWM PWME = 0

2、选择时钟PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK

3、选择极性PWMPOL

4、选择对齐方式PWMCAE

5、选择占空比和周期PWMDTYx,PWMPERx

6、使能PWM PWME = 1

【例程1】

//---------------------------------------------------------------------------//功能说明:MC9S12XS128--PWM例程

//使用说明:实现通道3(PTP3)输出频率为1KHz,占空比为50%的方波,用示波器观察

//程序设计:电子设计吧【https://www.360docs.net/doc/a415062617.html,】

//设计时间:2010.01.21

//---------------------------------------------------------------------------#include /* common defines and macros */

#include "derivative.h" /* derivative-specific definitions */

//--------------初始化函数----------------//

//-----时钟初始化程序--------//

void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)

{ //锁相环时钟=2*16*(2+1)/(1+1)=48MHz

REFDV=1; //总线时钟=48/2=24MHz

SYNR=2;

while(!(CRGFLG&0x08));

CLKSEL=0x80; //选定锁相环时钟

}

//-----PWM初始化程序------//

void PWM_Init(void)

{

PWME_PWME3=0x00; // Disable PWM 禁止

PWMPRCLK=0x33; // 0011 0011 A=B=24M/8=3M 时钟预分频寄存器设置

PWMSCLA=150; // SA=A/2/150=10k 时钟设置

PWMSCLB=15; // SB=B/2/15 =100k 时钟设置

PWMCLK_PCLK3=1; // PWM3-----SB 时钟源的选择

PWMPOL_PPOL3=1; // Duty=High Time 对外输出电平先是高电平后是低电平 PWMCAE_CAE3=0; //对齐方式设置为1表示居中对齐,为0表示左对齐

PWMCTL=0x00; //详见P4,控制寄存器设置

PWMPER3=100; // Frequency=SB/100=1K 周期寄存器设置

PWMDTY3=50; // 因为PPOL=1,所以占空比为(PWMDTY/PWMPER)*100%占空比寄 PWME_PWME3=1; // Enable PWM 使能

}

//-----------------主函数--------------------//

void main(void)

{

/* put your own code here */

PLL_Init();

PWM_Init();

EnableInterrupts;

for(;;)

{

_FEED_COP(); /* feeds the dog */

} /* loop forever */

/* please make sure that you never leave main */

}

(责任编辑:dzsj8)

手把手教你写S12XS128程序(9)--A/D转换模块介绍1

时间:2009-11-30 22:10来源:电子设计吧作者:dzsj8 点击:650次

1、A/D转换原理

A/D转换的过程是模拟信号依次通过取样、保持和量化、编码几个过程后转换为数字格式。

a)取样与保持

一般取样与保持过程是同时完成的,取样-保持电路的原理图如图16所示,由输入放大器A1、输出放大器A2、保持电容C H和电子开关S组成,要求 A V1 * A V2 = 1。原理是:当开关S闭合时,电路处于取样阶段,电容器充电,由于 A V1 * A V2 = 1,所以输出等于输入;当开关S断开时,由于A2输入阻抗较大而且开关理想,可认为C H没有放电回路,输出电压保持不变。

图16 取样-保持电路

取样-保持以均匀间隔对模拟信号进行抽样,并且在每个抽样运算后在足够的时间内保持抽样值恒定,以保证输出值可以被A/D 转换器精确转换。

b)量化与编码

量化的方法,一般有舍尾取整法和四舍五入法,过程是先取顶量化单位Δ,量化单位取值越小,量化误差的绝对值就越小,具体过程在这里就不做介绍了。将量化后的结果用二进制码表示叫做编码。

2、A/D转换器的技术指标

a)分辨率

分辨率说明A/D转换器对输入信号的分辨能力,理论上,n位A/D转换器能区分的输入电压的最小值为满量程的1/2n 。也就是说,在参考电压一定时,输出位数越多,量化单位就越小,分辨率就越高。S12的ATD模块中,若输出设置为8位的话,那么转换器能区分的输入信号最小电压为19.53mV。

b)转换时间

A/D转换器按其工作原理可以分为并联比较型(转换速度快ns级)、逐次逼近型(转换速度适中us级)、双积分型(速度慢抗干扰能力强)。

不同类型的转化的A/D转换器转换时间不尽相同,S12的ATD模块中,8位数字量转换时间仅有6us,10位数字量转换时间仅有7us。

(责任编辑:dzsj8)

手把手教你写S12XS128程序(10)--A/D转换模块介绍2

时间:2009-12-09 21:32来源:电子设计吧作者:dzsj8 点击:640次S12内置了2组10位/8位的A/D模块:ATD0和ATD1,共有16个模拟量输入通道,属于逐次逼近型A/D转换器(这个转换过程与用天平称物的原理相似)。

1、功能结构图

图17 A/D 模块功能结构图

图17所示的是A/D 模块的功能结构,这个功能模块被虚线划分成为图示所示的虚线所隔离的三个部分:IP 总线接口、转换模式控制/寄存器列表,自定义模拟量。

IP 总线接口负责该模块与总线的连接,实现A/D 模块和通用I/O 的目的,还起到分频的作用;

转换模式控制寄存器列表中有控制该模块的所有的寄存器,执行左右对齐运行和连续扫描。

自定义模拟量负责实现模拟量到数字量的转换。包括了执行一次简单转换所需的模拟量和数字量。

2、HCS12中A/D转化模块特点

8/10 位精度;7 us, 10-位单次转换时间.;采样缓冲放大器;可编程采样时间;左/右对齐, 有符号/无符号结果数据;外部触发控制;转换完成中断;模拟输入8 通道复用;模拟/数字输入引脚复用;1 到8转换序列长度;连续转换模式;多通道扫描方式。

A TD 模块有模拟量前端、模拟量转换、控制部分及结果存储等四部分组成。其中模拟前端包括多路转换开关、采样缓冲器、放大器等,结果存储部分主要有8个16 位的存储器和反映工作状态的若干标志位。

(责任编辑:dzsj8)

手把手教你写S12XS128程序(11)--A/D寄存器说明1

时间:2009-12-11 12:26来源:电子设计吧作者:dzsj8 点击:654次

1、ATD0控制寄存器2---ATD0CTL2

ATD0CTL2主要控制ATD0的启动、状态标志以及上电模式,对寄存器进行写操作时,将中断当前的转化过程。寄存器ATD0CTL2如图18所示:

图18ATD0CTL2寄存器

ADPU:A/D 使能控制位,相当于一个开关,用来启动/禁止A/D转换

1 = A/D 模块上电

0 = 禁止A/D,以减少功耗

AFFC:A/D 快速转换完成标志位清零

1 = 快速标志位清零顺序,每次读取结果寄存器自动清零

0 = 正常标志位清零顺序,需要软件方式对状态标志位清零

AW AI:A/D 等待模式

1 = 等待模式下,ATD继续运行

0 = 等待模式下,ATD停止运行,以降低功耗

接收到外部触发时,启动A/D转换,否则不进行转换。0--忽略外部触发;1--有外部触发时开始转换,此时AN7不能用于A/D转换。

ASCIE:A/D 转化序列转换结束中断使能控制位

1 = 允许ATD转换序列转换结束后发生中断

0 = 禁止ATD 中断

ASCIF:A/D转换序列转换结束中断标志,只用于读。

1 = 发生中断

0 = 为发生中断

(责任编辑:dzsj8)

手把手教你写S12XS128程序(12)--A/D寄存器说明2

时间:2009-12-12 12:06来源:电子设计吧作者:dzsj8 点击:612次

2、ATD0控制寄存器3---ATD0CTL3

ATD0CTL3主要控制结果寄存器的映射,设置转换序列的长度,还可以暂时冻结ATD0模块,尤其确定ATD0在BDM状态下的行为。寄存器ATD0CTL3如图19所示:

图19ATD0CTL3寄存器

S1C、S2C、S4C、S8C:转换序列长度选择位控制位

【注意】ATD的每次启动要进行若干次扫描循环,每次扫描循环称为一个转换序列。

FIFO:结果寄存器FIFO模式控制位,

1 = 结果寄存器映射到转换序列

0 = 结果寄存器没有映射到转换序列

手把手教你写S12XS128程序(13)--A/D寄存器说明3

时间:2009-12-14 11:50来源:电子设计吧作者:dzsj8 点击:559次

3、ATD0控制寄存器4---ATD0CTL4

ATD0CTL4用于选择时钟,选择采样转换时间以及选择8位/10位转换方式。寄存器ATD0CTL4如图20所示:

图20ATD0CTL4寄存器

SRES8 :A/D精度选择控制位

1 =将采集到的模拟量以8位二进制数表示

0 = 将采集到的模拟量以10位二进制数表示

SMP0、

- 分频系数从2到64

- A/D时钟计算公式:ATDClock = BusClock/(PRS + 1) × 0.5

- A/D时钟频率应满足:

【注意】对于AD转换来说,它的转换周期包括采样时间和运算时间。如果频率太高,则采样时间过短。这对于输出阻抗比较大或信号频率比较高的信号来说,就会产生较大的采样误差,那么AD转换的精度就会受较大的影响。

(责任编辑:dzsj8)

手把手教你写S12XS128程序(14)--A/D寄存器说明4

时间:2009-12-17 19:39来源:电子设计吧作者:dzsj8 点击:574次

4、ATD0控制寄存器4---ATD0CTL5

ATD0CTL5用于选择转换方式,选择转换通道,设置单/多通道转换和单次/连续转换模式以及对齐方式。寄存器ATD0CTL5如图20所示:

图20 寄存器ATD0CTL5

【注意】ATDCTRL5设置成多通道转换后,ATDCTRL3设置采集的通道数,此外ATDCTRL5中还需要设置多通道采集的起始通道。比如采集7个通道,起始通道是1,那么就采集从1-7通道,如果起始通道是2,就采集2-7,还有0通道。

【注意】在S12系列中,当转换序列长度设置为1(S8C:S1C=0001),MULT=0时,只对一个通道进行一次转换。

(责任编辑:dzsj8)

手把手教你写S12XS128程序(15)--A/D寄存器说明5

时间:2009-12-27 00:47来源:电子设计吧作者:dzsj8 点击:542次

5、ATD0状态寄存器5---ATD0START0、ATD0START0

ATD0START0反映当前的转换通道、A/D转换是否结束、是否有外部触发等;

ATD0START1反映转换序列中相应的转换是否完成。寄存器ATD0START0、

ATD0START1如图21所示:

SCF ---转换序列完成标志

在单次转换模式时,当转换完成后置位(SCAN = 0)

在连续转换模式时,当第一次转换完成后置位(SCAN = 1),当AFFC = 0,写1清零。

ETORF ---外部触发覆盖标志

如果在转换过程中高/低电平出现,置位F IFOR

当结果寄存器在读出之前已经被写入时,置位( CCF 没有清零)

CC[2:0]转换计数器---3位计数器指向下一个将要转换的通道

CCF7 -CCF0 ---独立通道转换完成标志位每个相应的通道转换结束后置位,当相

清零,注意当A FFC 位不同时的情况

应的A/D 结果寄存器被读出时,

(责任编辑:dzsj8)

手把手教你写S12XS128程序(16)--A/D转换应用实例

时间:2009-12-27 00:51来源:电子设计吧作者:dzsj8 点击:716次

第十六讲:A/D转换应用实例

要让ATD 开始转换工作,必须经过以下三个步骤:

1.将ADPU 置1,使ATD 启动;

2.按照要求对转换为数、扫描方式、采样时间、时钟频率及标志检查等方式进行设置;

3.发出启动命令;

如果上电默认状态即能满足工作要求,那么只要将ADPU 置1,然后通过控制寄存器发出转换命令,即可实现转换。

【例程2】

程序描述:由通道ATD0进行单通道A/D转换,转换值在B口显示

程序如下:

#include /* common defines and macros */

#include /* derivative information */

#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

/******定义变量********/

word AD_wValue;//AD转换结果

/*时钟初始化*/

void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)

{ //锁相环时钟=2*16*(2+1)/(1+1)=48MHz

REFDV=1; //总线时钟=48/2=24MHz

SYNR=2;

while(!(CRGFLG&0x08));

CLKSEL=0x80;

}

/*AD初始化*/

void AD_Init(void)

{

ATD0CTL2=0xC0; //1100 0000 启动A/D, 快速清零, 无等待模式, 禁止外部触发, 中断禁止

ATD0CTL3=0x20; // 转换序列长度为4, No FIFO, Freeze模式下继续转换ATD0CTL4=0x85; // 8位精度, 2个时钟,分频系数为32,

ATDClock=[BusClock*0.5]/[PRS+1]=2MHz;PRS=5,divider=12

ATD0CTL5=0xA0; //1010 0000 右对齐方式,有符号,单通道转换,通道0 ATD0DIEN=0x00; // 禁止数字输入

}

/*读取AD转换结果*/

void AD_GetValue(word *AD_wValue)

{

*AD_wValue=ATD0DR0; //ATDDR0~~ATDDR7为8个结果寄存器,此处为读取结果寄存器的值

}

/**********主函数**************/

void main(void)

{

PLL_Init();

AD_Init();

DDRB=0xFF;

PORTB=0x00;

EnableInterrupts;

for(;;)

{

while(!ATD0STAT1_CCF0); // 独立通道转换完成标志位,每个通道转换结束后置位,

while(ATDOSTAT1_CCF0==1)

AD_GetValue(&AD_wValue); // 读取转换结果

PORTB = (byte)AD_wValue; // 在B口显示转换值

}

}

(责任编辑:dzsj8)

手把手教你写S12XS128程序(17)--Timer模块介绍1

时间:2009-12-29 11:51来源:电子设计吧作者:dzsj8 点击:747次

1、简述

MC9S12XS128定时器模块与MC9S12DG128 ECT部分功能完全类似,以下均以ECT模块介绍xs128定时器模块。

HC12 增强型捕捉计时器模块在HCS12标准定时器的基础上增加了一些特点,用以扩展它的应用范围,特别是在汽车ABS 方面。

基准计时器的核心仍然是一个16 位的可编程计数器,其时钟源来自一个预分频器。该计时器可以被应用于多个方面,包括在对输入波形进行测量的同时产生一个输出波形。波形的脉宽可以在几微秒到数秒的范围内变化。

增强型定时器模块(ECT)的结构框图如下,ECT功能相当于高速的I/O口,由一个4位预分频器、一个16位自由运行计数器,8个16位IC/OC通道,2个16位脉冲累加器以及一个16位模数递减计数器组成。

C语言程序设计实验指导(课后习题)参考答案

《实验指导》课后练习题参考答案实验1: 1.主函数 2-4:DDC 5.stdio.h 6-9:CCCC 实验2: 1.double 2-4:ABB 5.2 6-12:CDDDADC 13.! 14.8 15-17:ACC 18.G 19-20:CA 21.5 4 22.x=6c 23-25:DCA 26.0x 27.2.000000 28-29:AB 30.a=3 31.D 32.3.15 33.B 34.double 实验3: 1-3:CCD 4.B 5.2,0 6-8:CAC 9. (1)pass, (2)中 及格 不及格 10-12:ADD 13.2 14.B 15.10 16.6 17.x>=1 && x<=sqrt(10)

实验4: 1.B 2.1 3.A 4.3/5,5/8 5.30 实验5: 1.D 2.(1)9 (2)1 3-5:CDB 6.(1)10 (2)7 7.C 8.(1)x=16 (2)y=8 9.return 实验6: 1-5:CCADA 6.10,20 7.13 11 12 8.7 9.2 10.B 11.(1)3 (2) 1 12-13:CB 14.-31 15.221 16.main函数 17.22 18.(1)return (2)void 实验7: 1.C 2.auto 3.9 4.(1) 4 (2) 0 5.10 6.(1)5 (2) 7 (3) 8 7.C 8.110 9-12:DDBC 13.(1) 1 (2) 3

15.6 720 16.auto 17.48 18.(1)1 (2)2 19.D 20.D 21.5,25 22.6 实验8: 1-2. DD 3. 16 4. (1)0 2 3 (2)2 3 5 (3)7 11 13 5. (1)i<9 (2)j<9-i (3)a[j]=a[j+1] (4)a[j+1]=temp 实验9: 1. D 2. (1)-1 (2)2 3. (1)1 (2)a[i-1][j-1]+a[i-1][j] (3)j<=i 4. (1)1 3 4 5 6 7 (2)3 4 5 6 (3)End of main()! 实验10: 1. 0或NULL 2-5. CACA 6. (1)10 (2)15 (3)19 7. (1)ia[j] (3)”%d”,p+i (4)”%d”, *(p+i) 8. (1)2 6 (2)2 2 (3)4 6 实验11: 1. A 2. C 3. 7 4. (1)strlen(s) (2)s[i]>=’a’ && s[i]<=’z’(3)s[i]+32 (4)’\0’(5)s2[j]!=s2[n2-j-1] (6)j

计算机程序设计(C)综合实践

计算机程序设计(C)综合 实践 设计报告 学院:电子通信与物理学院 设计名称:职工信息管理系统 专业班级:电子信息科学与技术14-2 学生:本良 学号: 201401100211 组号: 140203 指导教师:宋戈 完成时间: 2015年 7月23日

目录 第1部分实训题目与要求 (2) 1. 问题提出 (2) 2. 功能要求 (2) 3. 任务分工 (2) 第2部分设计实训题目功能......................................................................... . (3) 1. 总体设 计...................................................................... (3) 2. 数据结 构...................................................................... (4) 3. 程序设 计...................................................................... (5) 4. 测试与调 试......................................................................

(8) 第3部分实训总结......................................................................... . (12) 1. 个人总 结...................................................................... (12) 2. 结束 语...................................................................... (12) 第4部分参考文献......................................................................... . (13) 《C程序设计综合实践》评分表......................................................................... (14)

C++程序设计实践教程思考题答案

实验1 C++基础 6.编写程序,输入某大写字母的ASCII码值,输出该字母的对应小写字母。 #include using namespace std; int main() { int i; cin>>i; if(i>=65 && 1<=90 ) cout< #include using namespace std; int main()

{ float a,b,c; 潣瑵?请输入直角三角形的两条边长:; cin>>a>>b; c=sqrt(a*a+b*b); 潣瑵?直角三角形的斜边=< using namespace std; int main() { char c; 1 潣瑵?请输入一个字符:; cin>>c; if(c>='A'&& c<='Z') c+='a'-'A'; cout<

3.输入一个学生的成绩,如高于60分,则输出“pass”;否则,输出“failed”。 #include using namespace std; int main() { float grade; 潣瑵?请输入成绩:; cin>>grade; if(grade>=60) cout<

c语言程序设计实践教程答案完整版

4.2练习题 一、选择题 1.D 2.B 3.A 4.B和D 5.C 6.A 7.B 二、填空题 1.//或/* */ 2.主或main 3.函数首部和函数体4.编译和连接 5.分号 5.2练习题 一、选择题 1.A 2.D 3.B 4.B 5.C 6.C 7.D 8.A 9.B 10.B 11.D 12.B 13.A或B 14.C 15.B

17.D 18.D 19.C 20.D 21.B 22.A 23.D 24.C 25.C 26.B 27.C 28.D 29.A 30.B 二、填空题 1.102,10 2.#define 宏名字符串 3.1 4.n=1 5.-4 6.a=1,b= ,c=2 7.c=A 8.n1=%d\nn2=%d 9.a+b>c&&a+c>b&&b+c>a 10.ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’11.7 12.0 13.8,4 6.2练习题 一、选择题 1.A 2.C 3.D 4.C 5.A 6.B

8.D 9.B 10.C 11.A 12.A 13.C 14.B 15.正确答案为: 二、填空题 1.10 2.y=1 x%i==0 3.屏幕中间输出一个由星号组成的菱形4.1 5.13 6.(cx=getchar())!=-1 front=cx; 7.m%n 8.4 9.*p px=&x py=&y 三、读程序,写结果 1.-1 2.3,1,-1, 3.a=16,y=60 4.x=12,y=4 5.59 7.2练习题 一、选择题 1.B 2.C 3.C 4.A 5.D 6.C 7.D

D2_《C/C 语言程序设计》计算机实践_题目列表

要求:所有程序至少由二个函数完成 A类-简单题 A1:设计一个菜单程序,选择数字键1~3分别在屏幕中间输出正三角形、菱形和空心的平行四边形,选择数字4结束操作并回到操作系统状态。 A3:从键盘上输入三个矩阵,输出三个矩阵主对角线的和及乘积。 A4:字符左右排序 要求编制函数jsSort(),以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组中。 排序条件:将字符串从中间一分为二,左边部分按字符的ASCII码升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参与处理,仍放在原位置上。 例如,原字符串: dcbahgfe 432198765 则处理后字符串: hgfe abcd 876591234 A5:简单的文件操作 编程完成读出文件 sfile.txt 中的内容,反序写入另一个文件 dfile.txt 中去。 A6:有一个一维数组,内放10个学生成绩,输出各分数段人数、平均分、最高分和最低分,保留小数点后一位。 A7:编写程序求出555555的约数中最大的三位数是多少。 A8:编写程序,实现比较两个分数的大小。 比较方法是:先比较两个数的分母,分母相同比较分子;否则通分后比较。 A9:求这样一个三位数,该三位数等于其每位数字的阶乘之和。 A10:求兔子问题。第1年有1对兔子,每对兔子从出生后第3个年起,就可每年生1对兔子,兔子的寿命是6年,问第n年有多少对兔子? A11:用C实现时钟程序。 A12:有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3个人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。问第1个人多少岁,他说是10岁。请问第5个人多大? A13.用指针编写字符串函数strcpy,strcmp,strcat,strlen。并编写程序加以验证。 A14:给定某个年、月、日,计算出这一天为该年的第几天。要求写出计算闰年的函数和计算日期的函数。

vb程序设计实验教程习题答案

实验教材实验一 1:单项选择题: A A C C C D C B B C 2:填空题: (1).bas (2).vbp,.frm (3)视图工具箱 (4)对象 (5)属性对象事件方法 (6)Windows (7)事件行为 (8)窗体模块 实验二 1:单项选择题: A D C C A B A B D C B B C B C B A B D C 2:基本运算题: (1)27 (2)3.33333333333333 (3)3 (4)0 (5)-3 (6)2 (7)ab33 (8)类型不匹配 (9)3 (10)AB3 实验三 1:单项选择题: B C B D C 2:填空题: (1)300 (2)321456 (3)Shanghai (4)6 7 6 (5)True (6)2+3=5 (7)”area=” 12.56 (8)VISUAL 实验四 1:单项选择题: C A A C A 2:填空题: (1)7 (2)3 5

(3)输入的数小于0 (4)3 (5)False (6)2010 is not leap year. 试验五 1:单项选择题: A C C A B A C C C B 2:填空题: (1)9 (2)①n ②1 (3)①Len(a) ②n\2 ③Mid(a,(n-i+1),1) ④Mid(a,(n-i+1),1) (4)①n Mod 3=1 And n Mod 5=1 And n Mod 7=1 ②While CountN<5 (5)Mid(c1,1,i) 实验六 1:单项选择题: D B D C D A C A D D 2:填空题: (1)30 (2)3 (3)①a(2) ②a(3) ③a(1) (4)①1 ②2 ③a(i)=a(6-i) (5)①i+j ②0 ③a(i,j) (6)①Print ②k ③a(k,j)=a(j,k) ④a(k,j); 实验七 1:单项选择题: A B B A C B 2:填空题: (1)15 (2)①Preserve a(n+1) ②a(i+1)=a(i) ③Exit For ④a(i+1)=m⑤0 to n+1 (或LBound(a) to UBound(a)) (3)d,c,b,a 实验八 1:单项选择题: C A D B D C A C B 2:填空题: (1)a=9 b=4 (2) 36 25 16 9 4 1 (3)①a ②UBound(b) ③

VB程序设计教程(第3版)课后实验答案最新版2

1、完成实验A(P.259)中的第1、 2、 3、5题。 2、参照第2章例2.6,建立一个类似记事本的应用程序,提供:(1) 剪切、复制和粘贴的编辑操作;(2) 字体大小的格式设置;此外,再对记事本的应用程序的功能进行一点扩允。 1.完成在实验B 顺序结构程序。(P.262)中的第1、2 、4 、5.、6题 2.完成实验C 选择结构(P.266)中的第1、2、4、5题 3.用上面实验B的第二题和实验C的第二题完成下面的实验报告。 1、完成实验D循环结构(P.268)中的第1、3、4、6题,其中第1题利用单循环结构显示如图D.1(P.268)所示的界面,而后将图形改为倒三角形。 2、选做实验E数组(P.271)中的第1、2、3题中的任意二题 3、以实验D中的第4题和实验E中的做完的某一题完成下面的实验报告。 A.1 Private Sub Command1_Click() Label3 = Text1 End Sub A.2 Private Sub Form_Load() Timer1.Interval = 0 End Sub Private Sub Command1_Click() '自动 Timer1.Interval = 200 End Sub Private Sub Command2_Click() '手动 Timer1.Interval = 0 Call MyMove End Sub Private Sub Timer1_Timer() Call MyMove End Sub Sub MyMove() Label1.Move Label1.Left - 50 If Label1.Left < 0 Then Label1.Left = Form1.Width End Sub A.3 Private Sub Form_Click() Text1 = Val(Text1) + 1 End Sub Private Sub Form_Load() Text1 = 0 End Sub A.5

C语言程序设计实验实验指导书及答案

实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果:

项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果:

《面向过程程序设计实践》课题资料.doc

任务 18 课题名称 某航空公司飞机购票模拟系统(服务器端) 课题内容 文件信息: 航线信息:航线编码、起点、终点、公里数、飞行时间。 航班信息:航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)。 售票信息:航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s 以顺序存储结构设计程序能实现以下航空公司服务器端功能: (1)航线的维护(创建、修改、删除(不能删除已出票、售完航班)(2)航班的维护(创建、修改、删除(不能删除已出票、售完航班))。 ))。 (3)显示航班列表。 (4)显示指定航班的售票情况(明细和统计值)。 (5)显示各航班的销售情况。 int hbId; int userId; char userName[NUMBER]; char buytime[NUMBER]; 任务 19 课题名称 某航空公司飞机购票模拟系统(客户端) 课题内容 航班文件信息: 航线信息:航线编码、起点、终点、公里数、飞行时间。 航班信息:航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)。 售票信息:航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s )。 以链式存储结构设计程序能实现以下顾客端功能: (1)搜索指定航线、指定时间段的航班 (2)购票 (3)退票 (4)输入顾客 ID ,显示顾客的购票信息

主菜单 /****************************************/ /* 模块名称: Menu.c 功能描述:实现菜单功能*/ #include "stdio.h"/* 输入输出函数的头文件 */ #include "shoupiao.c" #include "hangban.c" #include "hangxian.c" void menu(); /* 菜单 */ // 航班 void init_hb(hbnum *hb);// 初始化列表 void create_hb(hbnum *hb);// 从文件中加载数据 void append_hb(hbnum *hb, hbinfo x);/* 添加数据 */ void display_hb(hbnum hb);/* 输出航班信息表 */ void display_xs(hbnum hb);/* 输出航班销售信息表 */ hbinfo search_hb(hbnum hb, int id);// 根据 id 查找航班的售票情况hbnum update_hb(hbnum hb,hbinfo x);// 根据 id 修改航班信息 void dele_hb(hbnum *hb, int id);// 删除航班信息 void InsertSort_hb(hbnum *r);// 排序 void save_hb(hbnum *hb);// 将数据保存到文件中 // 航线 void init_hx(hxnum *hx);// 初始化列表 void create_hx(hxnum *hx);// 从文件中加载数据 void append_hx(hxnum *hx, hxinfo x);/* 添加数据 */ void display_hx(hxnum hx);/* 输出航班信息表 */ hxinfo search_hx(hxnum hx, int id);// 根据 id 查找航班的售票情况hxnum update_hx(hxnum hb,hxinfo x);// 根据 id 修改航线信息 void dele_hx(hxnum *hx, int id);// 删除航班信息 void InsertSort_hx(hxnum *r);// 排序 void save_hx(hxnum *hx);// 将数据保存到文件中 // 售票 void init_sp(spnum *sp);// 初始化列表 void create_sp(spnum *sp);// 从文件中加载数据 void append_sp(spnum *sp, spinfo x);/* 添加数据 */ void display_sp(spnum sp);/* 输出航班信息表 */ spinfo search_sp(spnum sp, int id);// 根据 id 查找航班的售票情况void search_mx(spnum sp, int id); int search_tj(spnum sp, int id); void dele_sp(spnum *sp, int id);// 删除航班信息 void InsertSort_sp(spnum *r);// 排序 void save_sp(spnum *sp);// 将数据保存到文件中 /* 主函数 */ main(){ hbnum hb;

MATLAB程序设计教程课后答案

实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; a=n(1);

for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[]; for n=1:40

程序设计实践

程序设计实践-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

苏州科技学院 二○一四~二○一五学年第二学期电子与信息工程学院课程设计报告书 课程名称: 班级: 学号: 姓名: 指导教师: 二○一五年三月

1.题目 小型图书信息管理系统 2.功能 1、信息录入,包括记录的追加和插入; 2、信息删除; 3、信息修改; 4、信息排序和查询; 5、信息的保存和装载; 6、简单的帮助。 3.要求 (1)整个系统均用C语言实现; (2)利用指针、链表来实现图书馆的数据结构设计; (3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能; (4)系统的各个功能模块都用函数的形式来实现; (5)可以将图书信息保存在文件中。 (6)可以将图书信息从文件中读取出来。 4.设计内容 整个系统除了主函数外,另外还有6个函数,实现八大功能:输入功能,查找功能,插入功能,保存功能,删除功能,读取功能。各个函数的详细设计说明分别如下: 主函数 main() 利用无限次循环for(;;)实现各函数的调用,系统根据输入的数字选项来调用相应的函数。 初始化函数 book *create() 这是一个无参函数,它的作用是使链表初始化,使head的值为NULL。 输入函数 Insert(book *head) 这是一个无参函数,用来执行图书信息的输入。 算法:先声明一个首节点head,并将head->next设为NULL。每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。 N-S

修改函数 change(book *head) 用于修改图书信息。 算法:输入需修改图书的书名,判断是否有本书,若有,再进行修改。 N-S 显示记录函数 void Print(book *head) 这是一个不返回值的有参函数,将记录的输出。 算法:先将p结点的指针指向第一个结点,将p结点的数据输出,再将p结点的指针指向下一结点,将下一结点的数据输出。重复执行此步聚直到p指针指向NULL为止。 N-S 查找记录函数 void search(book *head) 这是一个不返回值的有参函数,形参为“链表头的指针”,实现按书名对某书进行查找,并显示所查找到的记录。 算法:采用线性查找法往下一个节点查找。输入所要查找的图书的名称,设一个指针变量p,先指向第一个结点,当strcmp(p->name,name1) && p != NULL 时,使p后移一个结点,如果p!=NULL,输出p所指的结点。 N-S

VB程序设计学习与实验指导答案

Visual Basic 程序设计学习与实验指导答案 上篇学习指导 第1章Visual Basic 概述 1.事件 2.查看对象 3.工程 4.视图属性窗口 5.窗体编辑器 第2章面向对象程序设计初步 1.控件 2.事件 3.类属性 4.属性 5.略 https://www.360docs.net/doc/a415062617.html, 第3章Visual Basic 语言基础 1.(a*sin(30/180*3.14)+c*(log(b)/log(10)))/((Abs(d)+1)*(e+f))+1

2.mod 3.X=Int(X) And Y=Int(Y) And X*Y>0 4. 4.Y Mod 4=0 And Y Mod 100<>0 Or Y Mod 400=0 5.x=Int((99-10+1)*Rnd+10) 6.0 “” 7.空格 8.6,845.30 9. (1)8 (2)1 (3)abcd (4)出错,类型不匹配 (5)False (6)2008-6-29 (7)I likeVB (8)4 (9)4 4 (10)3 4 (11)10 -10 (12)-1 (13)aa (14)3 (15)0 (16)1 (17)C (18)5 (19)8 (20)34.54 (21)中国 (22)上海 (23)VISUAL BASIC (24)visual basic 10. (1)x<-100 or x>100 (2)a=Int(a) And b =Int(b) Or a<0 And b<0 (3)x<=y or x>=z (4)a>0 And a<>Int(a) (5)a=0 xor b=0 (6)Len(S)<10 (7)UCase(S)=S (8)Left(S,1)=”a” And Right(S,1)=”a” (9)Instr(S,”@”)<>0 (10)Trim(S)=S (11)Date=#8/8/2008#

程序设计实践的题目和样例

1.Alice喜欢n位数,Bob喜欢能被m整除的数,请问被Alice和Bob都喜欢的数有多少个? 输入:第一行是一个整数K(K<= 10000),表示样例的个数 每一个样例是一行,两个整数n(1<=n<=18),m(2<=m<=1000000) 输出:每行输出一个样例的结果。 样例输入:4 样例输出 5 1 2 450 3 2 300 3 3 0 3 10000 2.给一个字符串,请判断字符串是否出现了所有的英文字母(不分大小写)。 输入:每行一个只含英文字母的字符串,长度不超过1000. 输出:每行输出一个样例的结果,如果出现了所有的字符串,输出“Yes”,否则输出“No”(不要引号)。 样例输入: ProgrammingPratice TheQuickBrownFoxJumpsOverLazyDog 输出:No Yes 提示:巨大输入量,请使用C风格的输入。 3.给你n个数,祛除其中的重复的数,并保持第一次出现的数原有的相对顺序。 比如{3, 2, 2, 3, 1},那么祛除重复元素以后为{3,2,1}。 输入:每一行是一个整数K, K表示样例的个数,不超过100; 每个样例的第一行是一个整数n(1<=n<=10000)表示数的个数;第二行是n个正整数,其值不超过10^9. 输出:每行输出一个样例的结果,每个整数之间用一个空格隔开; 样例输入:输出: 2 3 2 1 5 1 2 3 3 2 2 3 1 3 1 2 3 提示:巨大的输入输出,请使用C风格,避免超时 4、小明很喜欢钓鱼,现在有n个池塘可以钓鱼,第i个池塘首次内能钓到ai条鱼,第i个池塘如果被钓过k次,那么每次下一次能钓到的鱼的数目为max{0,ai - k * bi},现在小明能钓m次鱼,请问他最多能钓到多少条鱼? 输入:第一行是一个整数T(1<=T<=100),表示样例个数,每个样例第一行是n(1<=n<=1000), m(1<=m<=100000); 以后的n行,每行是ai(1<=ai<=10000),bi(0<=bi<=100) 输出:每行输出一个样例结果

C语言程序设计实验与习题指导课后程序设计答案,DOC

P18 (1) #include intmain(void) celsius=26; fahr=9*celsius/5+32; printf("celsius=%d,fahr=%d\n",celsius,fahr); return0; }

(3) #include intmain(void) { intaverage,math,eng,comp; intn,a,b,c; n=152; c=n%10; b=(n/10)%10; a=n/100;

printf("整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n",n,c,b,a); return0; } P27 (2) #include #include intmain(void) {

intmoney,year; doublerate,interest; printf("Entermoney,year,rate:"); scanf("%d%d%lf",&money,&year,&rate); interest=money*pow(1+rate,year)-money; y=pow(x+1,2)+2*x+1/x; } else{ y=sqrt(x); }

printf("y=f(%f)=%.2f\n",x,y); return0; } (4) #include return0; } 10的阶乘 #include intmain(void)

{ inti,n,product; printf("Entern:"); scanf("%d",&n); product=1;

程序设计实践课题

程序设计实践课题 ?课题要求: 每位同学选择以下4个课题中的任一课题独立完成,最后根据课题完成情况给出最终成绩。 程序设计要求: (1)采用面向对象程序设计思想。 (2)采用模块化程序设计。 (3)必须上机调试通过,生成可执行文件。 (4)程序代码必须具有可读性,关键性算法或者代码必须要有注释。 ?课程最后提交: 1、课程设计报告1份; 2、程序源代码1份。 ?最后评定: 1、按优、良、中、及格、不及格五个等级评定成绩。 2、根据学生日常纪律、源程序及运行结果、文档、答辩情况综合评定课程设计成绩。 3、程序雷同者,视情况扣分或记零分。 ?课题内容: 一、班级成绩管理 1、程序说明 该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。2、程序设计要求 (1)一个班级有N个学生,每个学生有M门课,每门课程有相应的成绩。(2)设置系统登陆密码,只有正确输入密码方可进入管理系统。 (3)成绩显示时,如果输入学号,则显示该学号学生的所有成绩,包括平均分;如果输入0,则显示所有学生的成绩,包括每个学生的平均分。 (4)根据学号和课程号修改成绩时,要求先输入密码,如果密码正确方可修改成绩,否则不予操作;在修改之前需要用户进一步确认,确认无误后再进行操

作。 (5)系统主菜单: a、密码重置 b、成绩录入 c、成绩显示 d、根据学号和课程号修改成绩 e、根据课程号统计平均分 f、根据班级号显示该班每位学生的平均分(按平均分从高到低排序) g、退出系统 (6)执行一个具体的功能之后,程序将重新显示菜单。 二、电话薄 1、程序说明 该程序是一个电话薄管理小程序。具有加入、删除、显示和查询联系人电话号码的功能。 2、程序设计要求 (1)在修改或删除之前需要用户进一步确认,确认无误后再进行操作。 (2)根据姓名首字母查询电话簿数据,即查询时只输入姓名的首字母,所有符合这一条件的电话资料均在屏幕上显示。 (3)系统主菜单: a、添加电话薄记录 b、显示电话薄内容 c、根据姓名查询电话薄数据 d、根据姓名首字母查询电话簿数据 e、根据姓名修改电话薄数据 f、根据姓名删除电话薄数据 g、退出系统 (4)执行一个具体的功能之后,程序将重新显示菜单。 三、个人财政管理 1、程序说明 管理您的财政支出。

C程序设计教程与实验实验答案

#include void main() { int i; static int a[8]={10,5,4,0,12,18,20,46}; void jhmaxmin(); printf("Original array:\n"); for(i=0;i<8;i++) printf("%5d",a[i]); printf("/n"); jhmaxmin(a,8); printf("Array after swapwing max and min: \n"); for(i=0;i<8;i++) printf("%5d",a[i]); printf("\n"); } void jhmaxmin(int p[],int n) { int t,*max,*min,*end,*q; end=p+n; max=min=p; for(q=p+1;q*max) max=q; if(*q<*min) min=q; } t=*max; *max=*min; *min=t; } Sy8-2 #include int len(char s[]) { char *p=s; while (*p!='\0')p++; return p-s; } main() { char s[80]; gets(s); printf("\"%s\"include %d characters.\n",s,len(s)); }

#include #include void main() { int i,a[26]; char ch,str[80],*p=str; gets(str); for(i=0;i<26;i++) a[i]=0; while(*p!='\0') { ch=*(p++); ch=ch>'A'&&ch<='Z'?ch+'a'-'A':ch; if('a' main() { int a[8],*p; int i,j,t,k; p=a; printf("Input the numbers:"); for(i=0;i<8;i++) scanf("%d",p+i); t=*p; for(i=0;i<8;i++) { for(j=i;j<8;j++) if(j==i||*(p+j)

《数据结构》程序设计实习题目

《数据结构》程序设计实习题目 1. 分别以顺序表和单链表作为存储结构,实现将线性表就地逆置的操作。(所谓“就地逆置”是指辅 助空间为0(1),即利用原表中的结点空间)。 2. 写一程序将单链表中值重复的结点删除,使得表中各结点值均不相同。 3. 已知一单链表中含有两类字符的数据元素(如:字母、数字),试编写程序将该单链表分成两个单链 表,使得每个链表中只含有同一类的字符。 4. 假设有两个按元素值递增有序的单链表A和B,试编写程序将A和B归并成一个按元素值递减有序的 单链表。 5. 利用线性结构(顺序表或链表)实现两个20位大整数的加法运算。 6. 已知两个以顺序结构存储的线性表A和B,试编写程序实现从A表中删除包含在B表中的元素。 7. 已知两个单链表A和B,试编写程序实现从A表中删除包含在B表中的元素。 8. 已知两个以顺序结构存储的线性表A和B,试编写程序实现:将在B表中但不在A表中的元素插入到 A表。 9. 已知两个单链表A和B,试编写程序实现:将在B表中但不在A表中的元素插入到A表。 10. 试编写程序,对任意输入的一个算术表达式,将式中的数字和运算符分成两类(一类是数字,一类是 运算符),并按逆序输出。(提示:利用栈来实现) 11. 利用栈结构,编写一个程序,对以逆波兰式表示的表达式求值。 12. 编写程序,求得所有包含在串S中而不包含在串T中的字符(S中重复的字符只选一个)构成的新串 R。 13. 编写程序,求任意输入的串S中所含不同字符的总数和每种字符的个数。 14. 一个文本串可用事先给定的字母映射表进行加密。例如:设字母映射表为: abcdefghijkl mn opqrstuvwxyz n g z q t c o b m u hel kpdawxfyi v r s j 则字符串“ encrypt ”被加密为“ tkzwsdf ”。试写一程序将输入的文本串进行加密后输出。 15. 假设两个10 X 10的稀疏矩阵A和B以三元组表的方式存储,试编写程序实现矩阵的相加运算,其结 果存放在三元组表C中。 16. 对给定的整数序列,建立一棵二叉排序树,并按中序遍历输出树中结点。 17. 编写按层次顺序(同一层自左至右)遍历二叉树的算法。 18. 编写一算法,计算二叉树中叶子结点的数目。

C#程序设计基础教程与实训习题答案

附录Ⅰ各章习题答案 第1章C#语言概述 一、判断题 1、√ 2、× 3、√ 4、× 5、√ 6、√ 7、× 8、× 二、选择题 1、C 2、B 3、C 4、A 5、A 6、B 7、B 8、B 三、填空题 1、最新的;面向对象 2、C和C++;JA V A 3、先进设计思想;安全性能 4、灵活性 5、集成开发环境(IDE)——Visual https://www.360docs.net/doc/a415062617.html, 6、Microsoft .NET Framework(微软.NET框架体系) 7、最基本的通用语言运行时库CLR(Common Language Runtime);一些提供了具体功能的类库 8、需要开发和设计的项目文件;应用程序或组件 四、简答题 1、①简洁易用的语法。②自动的资源回收机制。③与Web的紧密结合。④完整的安全性与错误处理。⑤版本处理技术。⑥灵活性和兼容性。 2、C#程序必须包含一个Main方法,Main方法是程序的入口点,程序控制在该方法中开始和结束。该方法用来执行任务,并在任务完成后返回信息。 第2章常用标准控件 一、判断题 1、× 2、× 3、√ 4、× 5、√ 6、× 7、√ 8、√ 二、选择题 1、A 2、C 3、B 4、D 5、A 6、B 7、B 8、D 三、填空题 1、输入/输出信息 2、属性 3、事件 4、TextAlign 5、Click 6、文本框(TextBox) 7、保证数据标准化 8、Show 四、简答题 1、简述生成控件的操作过程。 (1)单击工具箱中相应的工具按钮,这一按钮呈现被按下状态,表明被选定。 (2)移动鼠标到窗体上,这时鼠标的指针变成十字形,在需要放置控件的左上角位置按下鼠标左键。 (3)在窗体范围内向下向右拖动鼠标,这时窗体上会显示一个矩形框,当其大小合适时,松开鼠标左键,窗体上就会显示一个相应大小的这种控件。 另外一种快捷的方法是在工具箱中相应的工具按钮上双击此按钮,窗体上就会出现一个系统默认大小的所选按钮。 2、消息框有多少种Button参数设置? OK:只显示“确定”按钮 OKCancel:显示“确定”和“取消”按钮 AbortRetryIgnore:显示“终止”、“重试”和“忽略”按钮 YesNoCancel:显示“是”、“否”和“取消”

相关文档
最新文档