首页 理论教育零起点学习单片机多语言编程:LED灯流水灯效果执行及验证

零起点学习单片机多语言编程:LED灯流水灯效果执行及验证

【摘要】:键入时,要注意每一条语句的格式,例如,“{ }”、“;”等不能遗漏,所有标点符号用英文输入状态下的符号。②执行时,所有操作均采用“单步”,一步步地执行。将上面C51源程序编译后的HEX文件通过STC-ISP下载软件写入目标板(实验机)观察结果,应显示流水灯效果。也就是将灯的显示码存入芯片的ROM内,执行时可顺序调出,达到彩灯的效果。单击“单步”执行程序,核对P1口的输出状态,与数组的内容相同,证明程序正确。

1.【例4-31】 流水灯

(1)编辑C语言源程序

(2)编译

作为编程练习,“//”后面的注释部分无需输入。键入时,要注意每一条语句的格式,例如,“{ }”、“;”等不能遗漏,所有标点符号用英文输入状态下的符号。

(3)执行

1)软仿真。操作方法见前节。编译通过后,点“调试”进入软仿真状态。

①点击“外围设备”,调出P1状态。点击“W监视及堆栈”,调出变量窗口。

②执行时,所有操作均采用“单步”,一步步地执行。

变量i及a,P1口变化如下:

③跟随语句的执行,可以看到P1状态的变化。

2)将程序下载到实验机。将上面C51源程序编译后的HEX文件通过STC-ISP下载软件写入目标板(实验机)观察结果,应显示流水灯效果。

(4)程序点评

1)延时子函数的延时计算:t=6μs×167×100×5=500ms=0.5s

2)因为变量a左移1位后,最低位必须是1。用逻辑位或0x01来保证。

3)因为变量a右移1位后,最高位必须是1。用逻辑位或0x80来保证。

2.【例4-32】 广告灯

所谓广告灯,就是可以任意变化显示方案的灯。也就是将灯的显示码存入芯片的ROM内,执行时可顺序调出,达到彩灯的效果。显示码可以任意设置。(www.chuimin.cn)

(1)编辑C语言源程序

(2)编译

(3)执行

1)软仿真。实际上就是将显示码放入数组,每次调用数组内容输出到P1口。

2)下载到目标机,具体操作见第一章。

(4)程序点评

本例用数组a存储显示码,存储类型为code型,放在ROM区。用for循环调用数组内容输出到P1口,分时以灯的二进制码显示,形成广告灯效果。用存储代码的方法可以对编码进行任意编排,比用移位方法简单得多。

3.【例4-33】 用指针法显示广告灯

(1)编辑C语言源程序

(2)编译

(3)执行

1)软仿真。单击“单步”执行程序,核对P1口的输出状态,与数组的内容相同,证明程序正确。

2)下载到实验机,显示相同效果。

(4)程序点评

本例与例4-30相同,只不过调用方式改为指针。根据指针的定义pa=a等效于pa=&a[0],即数组a[0]的地址。若将数组的元素序号用变量i代表,则可以表示 pa+i=&a[i]。当然,*(pa+i)=a[i],取地址pa+i的内容就是数组的内容。所以P1=*(pa+i),P1就是数组a的内容,即