演练 1——数据类型的长度
(1)实例说明
这个实例主要演练int和char数据类型的区别,具体实现的功能:开机后PA0 脚外接LED灯不断闪亮。
(2)源程序
(3)实验演练
① 打开IAR AVR软件,建立工程项目,再建立一个名为ch3_1.c的源程序文件,输入上面源程序。对源程序进行编译,产生ch3_1.hex目标文件。
② 将DD-900mini实验板JP1 的LED、V CC 两插针短接,为LED灯供电。
③ 将AVR-51 转换板插到DD-900mini实验板上,同时,将ISP下载线与DD-900mini连接好。
④ 将程序下载到Atmega16 单片机中,观察实验效果。
主函数中,有一行:#define LED_fan PORTA ^ = (1 << PA0)
用来定义将PA0 脚进行取反,取反完毕后还要使用赋值符号取反后的值再赋给PA0。这样,如果原来PA0 是低电平(LED灯亮),那么取反后,PA0 就是高电平(LED灯灭);反之,如果PA高电平,取反后,PA是低电平,这条指令被反复地执行,接着LED灯就会不断“亮”、“灭”。
实验中会发现,若将程序中的变量i、j改为char字型数据,则LED灯不会按要求闪烁。这是因为char数据类型的最大值为 255,而在参数传递中,传递的最大参数却是 1000(延时1000ms)。因此,将i、j定义为char数据类型是错误的,自然完成不了所要实现的功能。尽管这个程序实际意义不大,但它可以帮助理解int和char数据类型的区别。