Esempio n. 1
0
func (t *Timer) AddTo(em *emulator.Emulator) {
	t.em = em

	em.RegisterPortByName(fmt.Sprintf("TCCR%dA", t.digit), tccra{t})
	em.RegisterPortByName(fmt.Sprintf("TCCR%dB", t.digit), tccrb{t})
	em.RegisterPortByName(fmt.Sprintf("TCNT%d", t.digit), tcnt{t})
	em.RegisterPortByName(fmt.Sprintf("OCR%dA", t.digit), ocra{t})
	em.RegisterPortByName(fmt.Sprintf("OCR%dB", t.digit), ocrb{t})
	em.RegisterPortByName(fmt.Sprintf("TIMSK%d", t.digit), timsk{t})
	em.RegisterPortByName(fmt.Sprintf("TIFR%d", t.digit), tifr{t})
}
Esempio n. 2
0
// Load parses an IHEX file from r and loads the program data contained in
// it into em.
func Load(em *emulator.Emulator, r io.Reader) (err error) {
	dec := ihex.NewDecoder(r)
	buf := make([]uint16, 0, 8)

	for dec.Scan() {
		rec := dec.Record()
		if rec.Type == ihex.Data {
			buf = buf[:0]
			for i := 0; i+1 < len(rec.Data); i += 2 {
				lo := uint16(rec.Data[i])
				hi := uint16(rec.Data[i+1])
				buf = append(buf, (hi<<8)|lo)
			}

			em.WriteProg(rec.Address>>1, buf)
		}
	}

	return dec.Err()
}
Esempio n. 3
0
func (g *GPIO) AddTo(em *emulator.Emulator) {
	em.RegisterPortByName(fmt.Sprintf("PORT%c", g.letter), port{g})
	em.RegisterPortByName(fmt.Sprintf("DDR%c", g.letter), ddr{g})
	em.RegisterPortByName(fmt.Sprintf("PIN%c", g.letter), pin{g})
}