00001
00002 #include "cat4016.h"
00003 #include "pic_serial.h"
00004
00005 void cat4016_setup_io() {
00006
00007 clear_pin(cat4016_clk_port, cat4016_clk_pin);
00008 clear_pin(cat4016_lat_port, cat4016_lat_pin);
00009 set_pin(cat4016_bl_port, cat4016_bl_pin);
00010
00011 make_output(cat4016_sin_port, cat4016_sin_pin);
00012 make_output(cat4016_clk_port, cat4016_clk_pin);
00013 make_output(cat4016_bl_port, cat4016_bl_pin);
00014 make_output(cat4016_lat_port, cat4016_lat_pin);
00015
00016 }
00017
00018
00019 void cat4016_write_data(uns8 d1, uns8 d2) {
00020
00021 uns8 count;
00022
00023 for (count=0; count<8; count++) {
00024
00025
00026 change_pin_var(cat4016_sin_port, cat4016_sin_pin, d1.7);
00027 if (d1.7) {
00028 serial_putc('1');
00029 } else {
00030 serial_putc('0');
00031 }
00032 d1 <<= 1;
00033
00034
00035 set_pin(cat4016_clk_port, cat4016_clk_pin);
00036 clear_pin(cat4016_clk_port, cat4016_clk_pin);
00037
00038 }
00039
00040 for (count=0; count<8; count++) {
00041
00042
00043 change_pin_var(cat4016_sin_port, cat4016_sin_pin, d2.7);
00044 if (d2.7) {
00045 serial_putc('1');
00046 } else {
00047 serial_putc('0');
00048 }
00049 d2 <<= 1;
00050
00051
00052 set_pin(cat4016_clk_port, cat4016_clk_pin);
00053 clear_pin(cat4016_clk_port, cat4016_clk_pin);
00054
00055 }
00056 }
00057
00058 void cat4016_enable_display(uns8 on){
00059
00060 if (on){
00061 clear_pin(cat4016_bl_port, cat4016_bl_pin);
00062 } else {
00063 set_pin(cat4016_bl_port, cat4016_bl_pin);
00064 }
00065
00066 }
00067
00068 void cat4016_latch_data() {
00069
00070 set_pin(cat4016_lat_port, cat4016_lat_pin);
00071 clear_pin(cat4016_lat_port, cat4016_lat_pin);
00072
00073 }