本帖最后由 gaoyang9992006 于 2020-9-22 13:19 编辑
用惯了库函数,或者图形化配置,你还经常看手册吗,还能记得多少个常用的寄存器?
接下来用这个例子怀旧一下。
在本教程中,我们将看到带PIC单片机的 LED闪烁的示例,LED闪烁是初学者的第一步。您将学习如何使用PIC微控制器的GPIO端口以及如何使用数据表访问GPIO寄存器。
所需材料
用于LED闪烁的PIC寄存器- OSCCON内部振荡器控制寄存器
- TRICx寄存器
- 使用PORTx寄存器和LATx寄存器
使用PIC单片机进行LED闪烁的编程步骤使用LATx寄存器- 将内部振荡器设置为8Mhz频率。
- 使用TRISx寄存器将PORTC的方向设置为输出。
- 在while循环中,使用LATx寄存器打开和关闭LED。
使用PORTx寄存器- 将内部振荡器设置为8Mhz频率。
- 使用TRISx寄存器将PORTC的方向设置为输出。
- 在while循环中,使用PORTx Reigister打开和关闭LED。
Using LATx Register
/*
Led blinking using PIC18F4550
*/
#include “Configurations_Header_File.h” //Header file for Configuration Bits
#include <pic18f4550.h> //Header file PIC18f4550 definitions
void MS_delay(unsigned int);
void main()
{
OSCCON=0x72; //SET internal oscillator of 8MHz Frequency
TRISC=0x00; //Set direction of PORTC as OUTPUT to which LED is connected using TRISC register
while(1)
{
LATC = 0xFF; //Turn ON LED for 200 ms
MS_delay (200); // 200 milisecond Delay
LATC = 0x00; //Turn OFF LED for 200 ms
MS_delay (200); // 200 milisecond Delay
}
}
void MS_delay(unsigned int val)
{
unsigned int i,j;
for(i=0;i<val;i++)
for(j=0;j<165;j++); //This loop Provide delay of 1 ms
}
Using PORTx Register
/*
Led blinking using PIC18F4550
*/
#include “Configurations_Header_File.h” //Header file for Configuration Bits
#include <pic18f4550.h> //Header file PIC18f4550 definitions
void MS_delay(unsigned int);
void main()
{
OSCCON=0x72; //SET internal oscillator of 8MHz Frequency
TRISCbits.TRISC0=0; //Set direction of PORTC as OUTPUT to which LED is connected
while(1)
{
PORTCbits.RC0=1; //Turn ON LED for 200 ms
MS_delay (200); // 200 milisecond Delay
LATC = 0x00; //Turn OFF LED for 200 ms
MS_delay (200); // 200 milisecond Delay
}
}
void MS_delay(unsigned int val)
{
unsigned int i,j;
for(i=0;i<val;i++)
for(j=0;j<165;j++); //This loop Provide Delay of 1 ms
}
使用了不同的寄存器,实现了同样的IO控制,你还知道他们的关系吗?
|