作者:老爷们白百合开在秋天 | 来源:互联网 | 2023-10-10 11:14
花了不少的时间去学习,整改。学习单片机,最重要的就是动手实践。内容此次分为三个内容来记录:1、简单的了解一下学习内容(一)2、制作一个小的点灯工程。这个芯片只有八个脚位。
整理笔记:初识dzdzc(单片机) 学习dzdzc单片机(一)题外话内容IO设置点灯工程容易出现的问题
学习dzdzc单片机(一)
学习dzdzc PMS132B系列 单片机的知识。这片文章用于记录学习该芯片的笔记。
题外话
先吐槽一下,由于一开始做的是视觉检测。但是后来发现自己不是那块料。又因为各种原因。最后选择了走这条路。当时直接上手的第一块单片机也就是dzdzc单片机。花了不少的时间去学习,整改。再加上没有系统的学习这类知识,都是在边学边做的情况下,开始了项目。
学习单片机,最重要的就是动手实践。最好的时间也是从大学开始。像我这种半路进场的。应该还不算少,特别是这几年的疫情,很多人失业,转行的不少。大家都是为了混口饭吃。那么一起努力吧。
老话题:网上的资料不是说没有,但是同种问题相同解答的不少。也可能是我不会找答案。
内容
此次分为三个内容来记录:
1、简单的了解一下学习内容(一)
2、制作一个小的点灯工程。可能也就几行代码
3、分析我之前遇到的问题以及解决办法
IO设置
设置IO脚位的不同输入或者输出状态。
这个芯片只有八个脚位。排除VDD(接电源)和GND(接地)的脚位,那么剩下的也就只有六个脚位可用。也就是(2、3、4、5、6、7)
(2)PA6脚位/外部晶振
(3)PA5脚位/可作为复位脚/11位计数器。
(4)PB7脚位/ADC/8位计数器/11位计数器
(5)PB1脚位/ADC/ADC外部参考电压
(6)PA3脚位/ADC/8位计数器/11位计数器
(7)PA4脚位/ADC/8位计数器/11位计数器
不同端口的脚位有着不同的功能,就像PA6只能拉高拉低,而不能作为8位的计数器以及11位的计数器。
详细的资料请参考:
https://download.csdn.net/download/weixin_45142802/15805758
值得一提的是,仅目前我所知的IO初始化写法就有三种
当前设置的是PA6端口的初始化。分别要设置数据寄存器、数据控制寄存器和上拉控制寄存器。
第一种写法比较常规,在设置多个端口的同时使用会比较方便一点,缺点是新手容易弄混。
第二种写法就比较简单,很简单就能看出这是什么脚位的初始化,以及它的属性。缺点是单一,无法同时控制其他脚位。我比较喜欢用这种方式,当然,在脚位多的情况下还是在用第一种方式。
第三种写法比较少见。它的原理同第一种写法类似。
第三种的写法现在已经很少看到了,而比较流行的写法也就是第一种的写法。一开始在不熟悉的情况下,每次都要把这种关系写在旁边。浪费了不少的时间。熟悉后,突然发现还有第二种的写法,发现更为简单。于是还是在用第二种写法,不过这只是在dzdzc当中可以使用的。不同商家的芯片还是有这不同的写法,像51单片机这些,还是注重的是第一种的写法。
点灯工程
编写一款由按键控制的打开,关闭的灯
首先,建立工程。dzdzc的工程不同于其他工程需要用到FPPA IDE,由dzdzc开发的一款编程软件,可用MINI-C和汇编语言。相对keil来讲就没有那么完美。
#include"extern.h"KEY equ PB.1 //设置PB1为按钮控制voidFPPA0 (void){.ADJUST_ICSYSCLK=IHRC/4//SYSCLK=IHRC/4while (1){if(!KEY){//由端口的拉高拉低来控制灯的亮、暗。拉高为亮。拉低为暗PA.6 OUT,HIGH;/*PA = 0B0100_0000;PAC = 0B0100_0000;PAPH = 0B0100_0000;*//*PA = 0x64;PAC = 0x64;PAPH = 0x64;*/}else{PA.6 OUT,LOW;/*PA = 0B0100_0000;PAC = 0B0100_0000;PAPH = 0B0000_0000;*//*PA = 0x64;PAC = 0x64;PAPH = 0x00;*/}}}voidInterrupt (void){pushaf;if (Intrq.T16){Intrq.T16=0;}popaf;} 容易出现的问题
1、端口的设置错误。一开始并没有接触过单片机。然后寄存器的写法资料也比较少。全都是自己实践后才整理清楚该如何设置。相对其他的商家的芯片,入门的话我更喜欢dzdzc的一点。
2、脚位的拉高拉低,输入输出模式。现在遇到的大部分灯脚位都是输出,上拉为打开。输出、下拉(或无)为关闭。需要明白到底是输出还是输入的模式。