while(1)
{
if(sound>threshold)
{
LED_Close()
}
升粗else
{
LED_Open()
}
delay_second(10)
}
你的声音过来是指唯什么值,AD采集到的模拟量还是IIS之类的数字量,驱动那部分肯定要你自己写,官吵逗镇网里面肯定有例程,MPLAB里面应该也有驱动生成工具。
灯是开关量控制,IO口高低电平驱动三极管或者MOS或者继电器来驱动灯。
rg 0000h 开始ajmp loop
org 0080h 到0030h处亏弊羡避开00-30的敏感地址
loop:
mov p0,#0ffh 关闭所有灯卜告
clr p0.0 点销拍亮灯p0.0
lcall delay 延时一段时间?
clr p0.1 点亮灯p0.1
lcall delay
clr p0.2 点亮灯p0.2
lcall delay
clr p0.3 点亮灯p0.3
lcall delay
clr p0.4 点亮灯p0.4
lcall delay
clr p0.5 点亮灯p0.5
lcall delay
clr p0.6 点亮灯p0.6
lcall delay
clr p0.7 点亮灯p0.7
lcall delay
AJMP LOOP 到最开始loop处重新运行
delay: mov r5,#20 延时。
d1: mov r6,#40
d2: mov r7,#248
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
end
楼上没用过PIC的氏伏搜就不要胡乱猜测发言。PIC10、12、16、18、24、32虽然是Microchip公司的PIC系列单片机。但结构却是完全不相同的:首先,PIC10/PIC12/PIC16是pic八位中档单片机,汇编指令只有三十多条,没有乘法除法指令(用汇编写乘除,只能循环做移位计算),其芯片的引脚数从六个引脚的到六十四个引脚的不等,引脚多的所集成的外设功能也多……第二PIC18系列也是八位的PIC单片机,较前者高档点,集成的功能也多比如USB、CAN总线等等。汇编指令有八十多条,和前者不同,带乘法除法指令和硬件乘法器。
第三PIC24系列的是16位单片机, 近七十条汇编指令。有硬件乘法器和硬件除法器(有了它就可以在一个指令周期内完成一个17*17或32/16的算法)。内部集成的存储器较大。还有一种厅早芯片上面没提到,就是dsPIC系列,这其实就是集成了DSP(数字信号处理)功能的PIC24单片机,在进行某些信号控制的时候需要用到它,但它功耗较大。
第四种就是PIC32,它是三十二位的单片机,它出现的目的就是MICROCHIP公司为了用它来盒和ARM做市场竞争的。简单点说,它跟ARM是一个级别的。
虽然MICROCHIP公司的PIC芯片都是用RICS指令结构,但其内部结构不尽相同,如果你要学PIC单片机,建议先学PIC16F887,这款芯片几乎包括了PIC10~16系列中的大部分外设。推荐这个系列的最好先学汇编指令。先把这个学懂了,然后再用PIC10~16系列的其他芯片,你只需要从Microchip的网站上下载Datasheet仔细阅读以下和PIC16F887的区别就可以(指令都一样的)。而PIC18和PIC24和dsPIC系列的,你需要在原有的基础上,多看DATAHSEET,主要是看指令集的区别。这三个系列的可以直接学C,但也要了解一下汇编。
而PIC32,现在它还比不过ARM芯片,市场前景很难估计,也没有几个企业用这芯片的。不建议你现在学这个。
你的第一个问题,看门狗用了预分频的话,那定时器0就不能再用预分频了。有的PIC芯片还带有看门口自己独用的分频器,这样的话可以给TIMER0让出一个预分频来(比如PIC16F886)。 看门狗如何设成最优,那只能是从你的指令里计算了,还必须根据你的单片机所运行的环境来看,如果电磁环境很恶劣,最好是较短时间就设置一调喂狗指令。
啊,写了一大堆,如果有不明白的可以百度HI问我。 除了歼历PIC32和PIC10外,其他系列的我都用过一些芯片
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)