📄 sample.c
字号:
/* * Sample application using LCD interface (see lcd.c) and analog input * on a 16C71 (see adc.c) * * 1) Read channel 0 of the ADC and write it to the LCD * 2) Read serial data and write it to line 2 of the LCD * */#include <pic.h>#include <stdio.h>#include "delay.h"#include "lcd.h"#include "adc.h"main(){ unsigned int i, last; unsigned char diff; ADCON1 = 2; // 16C71 requires Port A reconfiguration - RA2/3 are digital // I/O, 0 and 1 are analog TRISA = 0xF3; // control lines are output TRISB = 0x00; // Make all Port B data lines output PORTB = 0b01010000; // Initialise interrupt-controlled lights (upper 4 bits). // Initialise & start timer0. T0CS = 0; // Select timer mode. lcd_init(); for(;;) { adc_read(0); // read channel 0 i = ADRES; adc_read(0); // read channel 0 again i += ADRES; adc_read(0); // read channel 0 again i += ADRES; adc_read(0); // read channel 0 again i += ADRES; if(i > last) diff = i-last; else diff = last - i; if(diff > 3) { // hysteresis diff = i/4; lcd_cursor(0); lcd_puts("Value = "); if(diff >= 100) lcd_putch(diff % 100); else lcd_putch(' '); if(diff >= 10) lcd_putch((diff/10) % 10); else lcd_putch(' '); lcd_putch(diff % 10); last = i; } DelayMs(250); // wait a while }}// This interrupt inverts the pattern on the upper// 4 bits of the LEDs on Port B.interrupt voidtimer0_overflow_isr( void){ PORTB = (PORTB&0x0f) | (~(PORTB&0xf0)); T0IF = 0; // Clear Timer 0 Interrupt Flag.}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -